diff options
| author | Shireesh Anjal <shireesh@gluster.com> | 2011-03-14 17:56:52 +0530 |
|---|---|---|
| committer | Shireesh Anjal <shireesh@gluster.com> | 2011-03-14 17:56:52 +0530 |
| commit | d20cf95b122f7b08614da2e4e14267e34b8262dd (patch) | |
| tree | 7f6c052704f49a2bffd25ee68423178506f260a9 /com.gluster.storage.management.server.scripts | |
| parent | fa113e22d419fcd16f5eb8c579131ffa65ed4b5e (diff) | |
Audo discovery changes
Diffstat (limited to 'com.gluster.storage.management.server.scripts')
| -rwxr-xr-x[-rw-r--r--] | com.gluster.storage.management.server.scripts/src/multicast_request.py | 163 |
1 files changed, 82 insertions, 81 deletions
diff --git a/com.gluster.storage.management.server.scripts/src/multicast_request.py b/com.gluster.storage.management.server.scripts/src/multicast_request.py index c6ae469c..e0dd1e24 100644..100755 --- a/com.gluster.storage.management.server.scripts/src/multicast_request.py +++ b/com.gluster.storage.management.server.scripts/src/multicast_request.py @@ -1,81 +1,82 @@ -#!/usr/bin/python
-# Copyright (C) 2009 Gluster, Inc. <http://www.gluster.com>
-# This file is part of Gluster Storage Platform.
-#
-# Gluster Storage Platform is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 3 of
-# the License, or (at your option) any later version.
-#
-# Gluster Storage Platform is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see
-# <http://www.gnu.org/licenses/>.
-
-import sys
-import socket
-import signal
-import struct
-import syslog
-import Globals
-import Common
-
-class TimeoutException(Exception):
- pass
-
-def timeoutSignal(signum, frame):
- raise TimeoutException, "Timed out"
-
-def serverDiscoveryRequest(multiCastGroup, port):
- servers = []
- # Sending request to all the servers
- socketSend = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
- socketSend.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 2)
- socketSend.sendto("ServerDiscovery", (multiCastGroup, port))
-
- # Waiting for the response
- socketReceive = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
- socketReceive.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
- socketReceive.bind(('', port))
- mreq = struct.pack("4sl", socket.inet_aton(multiCastGroup), socket.INADDR_ANY)
-
- socketReceive.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
- socketSend.sendto("ServerDiscovery", (multiCastGroup, port))
-
- try:
- while True:
- response = socketReceive.recvfrom(200)
- if response and response[0].upper() != "SERVERDISCOVERY":
- servers.append(response[0] + "\n")
- signal.signal(signal.SIGALRM, timeoutSignal)
- signal.alarm(3)
- except TimeoutException:
- return servers
- return None
-
-def main():
- syslog.openlog("discovery server request")
- servers = serverDiscoveryRequest(Globals.MULTICAST_GROUP, Globals.MULTICAST_PORT)
- if not servers:
- Common.log(syslog.LOG_ERR, "Failed to discover new servers")
- sys.exit(-1)
-
- servers = set(servers)
- try:
- fp = open(Globals.DISCOVERED_SERVER_LIST_FILENAME, "w")
- fp.writelines(list(servers))
- fp.close()
- except IOError:
- Common.log(syslog.LOG_ERR, "Unable to open file %s" % Globals.DISCOVERED_SERVER_LIST_FILENAME)
- sys.exit(-1)
-
- #for serverName in servers:
- # print serverName
- sys.exit(0)
-
-if __name__ == "__main__":
- main()
+#!/usr/bin/python +# Copyright (C) 2009 Gluster, Inc. <http://www.gluster.com> +# This file is part of Gluster Storage Platform. +# +# Gluster Storage Platform is free software; you can redistribute it +# and/or modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 3 of +# the License, or (at your option) any later version. +# +# Gluster Storage Platform is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty +# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see +# <http://www.gnu.org/licenses/>. + +import sys +import socket +import signal +import struct +import syslog +import Globals +import Common + +class TimeoutException(Exception): + pass + +def timeoutSignal(signum, frame): + raise TimeoutException, "Timed out" + +def serverDiscoveryRequest(multiCastGroup, port): + servers = [] + # Sending request to all the servers + socketSend = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) + socketSend.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 2) + socketSend.sendto("ServerDiscovery", (multiCastGroup, port)) + + # Waiting for the response + socketReceive = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) + socketReceive.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + socketReceive.bind(('', port)) + mreq = struct.pack("4sl", socket.inet_aton(multiCastGroup), socket.INADDR_ANY) + + socketReceive.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq) + socketSend.sendto("ServerDiscovery", (multiCastGroup, port)) + + try: + while True: + response = socketReceive.recvfrom(200) + if response and response[0].upper() != "SERVERDISCOVERY": + servers.append(response[0] + "\n") + signal.signal(signal.SIGALRM, timeoutSignal) + signal.alarm(3) + except TimeoutException: + return servers + return None + +def main(): + syslog.openlog("discovery server request") + servers = serverDiscoveryRequest(Globals.MULTICAST_GROUP, Globals.MULTICAST_PORT) + if not servers: + Common.log(syslog.LOG_ERR, "Failed to discover new servers") + sys.exit(-1) + + servers = set(servers) + try: + fp = open(Globals.DISCOVERED_SERVER_LIST_FILENAME, "w") + print(list(servers)) + fp.writelines(list(servers)) + fp.close() + except IOError: + Common.log(syslog.LOG_ERR, "Unable to open file %s" % Globals.DISCOVERED_SERVER_LIST_FILENAME) + sys.exit(-1) + + #for serverName in servers: + # print serverName + sys.exit(0) + +if __name__ == "__main__": + main() |
