diff options
| author | Tim <timothyasir@gluster.com> | 2011-05-30 19:35:12 +0530 |
|---|---|---|
| committer | Tim <timothyasir@gluster.com> | 2011-05-30 19:35:12 +0530 |
| commit | ea79ff5d088c25ad07203fd2e8f9f396d031bb21 (patch) | |
| tree | f0b90f0541b2013ddb607889577a11bb7a2d0796 /src/com.gluster.storage.management.server.scripts | |
| parent | 572c7c82b2fa160ae1b5095b1d7df847479077a1 (diff) | |
Removed nodes, common, server folders and moved the python files to com.gluster.storage.management.server.script directory
Diffstat (limited to 'src/com.gluster.storage.management.server.scripts')
| -rw-r--r-- | src/com.gluster.storage.management.server.scripts/src/Commands.py (renamed from src/com.gluster.storage.management.server.scripts/src/common/Commands.py) | 0 | ||||
| -rw-r--r-- | src/com.gluster.storage.management.server.scripts/src/Common.py (renamed from src/com.gluster.storage.management.server.scripts/src/common/Common.py) | 0 | ||||
| -rwxr-xr-x | src/com.gluster.storage.management.server.scripts/src/Disk.py (renamed from src/com.gluster.storage.management.server.scripts/src/nodes/Disk.py) | 0 | ||||
| -rw-r--r-- | src/com.gluster.storage.management.server.scripts/src/DiskUtils.py (renamed from src/com.gluster.storage.management.server.scripts/src/common/DiskUtils.py) | 0 | ||||
| -rw-r--r-- | src/com.gluster.storage.management.server.scripts/src/GetServerNetworkConfig.py (renamed from src/com.gluster.storage.management.server.scripts/src/nodes/GetServerNetworkConfig.py) | 0 | ||||
| -rw-r--r-- | src/com.gluster.storage.management.server.scripts/src/Globals.py (renamed from src/com.gluster.storage.management.server.scripts/src/common/Globals.py) | 0 | ||||
| -rw-r--r-- | src/com.gluster.storage.management.server.scripts/src/GlusterdUtils.py (renamed from src/com.gluster.storage.management.server.scripts/src/nodes/GlusterdUtils.py) | 0 | ||||
| -rwxr-xr-x | src/com.gluster.storage.management.server.scripts/src/NetworkUtils.py (renamed from src/com.gluster.storage.management.server.scripts/src/common/NetworkUtils.py) | 0 | ||||
| -rw-r--r-- | src/com.gluster.storage.management.server.scripts/src/Protocol.py (renamed from src/com.gluster.storage.management.server.scripts/src/common/Protocol.py) | 0 | ||||
| -rw-r--r-- | src/com.gluster.storage.management.server.scripts/src/ServerUtils.py (renamed from src/com.gluster.storage.management.server.scripts/src/nodes/ServerUtils.py) | 0 | ||||
| -rw-r--r-- | src/com.gluster.storage.management.server.scripts/src/Utils.py (renamed from src/com.gluster.storage.management.server.scripts/src/common/Utils.py) | 0 | ||||
| -rw-r--r-- | src/com.gluster.storage.management.server.scripts/src/VolumeUtils.py (renamed from src/com.gluster.storage.management.server.scripts/src/nodes/VolumeUtils.py) | 0 | ||||
| -rw-r--r-- | src/com.gluster.storage.management.server.scripts/src/XmlHandler.py (renamed from src/com.gluster.storage.management.server.scripts/src/nodes/XmlHandler.py) | 0 | ||||
| -rwxr-xr-x | src/com.gluster.storage.management.server.scripts/src/clear_volume_directory.py (renamed from src/com.gluster.storage.management.server.scripts/src/nodes/clear_volume_directory.py) | 0 | ||||
| -rw-r--r-- | src/com.gluster.storage.management.server.scripts/src/common/system-config-network-tui-1.3.99.18-1.el5.noarch.rpm | bin | 1915520 -> 0 bytes | |||
| -rwxr-xr-x | src/com.gluster.storage.management.server.scripts/src/create_volume_directory.py (renamed from src/com.gluster.storage.management.server.scripts/src/nodes/create_volume_directory.py) | 0 | ||||
| -rwxr-xr-x | src/com.gluster.storage.management.server.scripts/src/get_disk_mount_point.py (renamed from src/com.gluster.storage.management.server.scripts/src/nodes/get_disk_mount_point.py) | 0 | ||||
| -rwxr-xr-x | src/com.gluster.storage.management.server.scripts/src/get_disk_name_by_path.py (renamed from src/com.gluster.storage.management.server.scripts/src/nodes/get_disk_name_by_path.py) | 0 | ||||
| -rwxr-xr-x | src/com.gluster.storage.management.server.scripts/src/get_file.py (renamed from src/com.gluster.storage.management.server.scripts/src/nodes/get_file.py) | 0 | ||||
| -rwxr-xr-x | src/com.gluster.storage.management.server.scripts/src/get_server_details.py (renamed from src/com.gluster.storage.management.server.scripts/src/nodes/get_server_details.py) | 0 | ||||
| -rwxr-xr-x | src/com.gluster.storage.management.server.scripts/src/get_volume_brick_log.py (renamed from src/com.gluster.storage.management.server.scripts/src/nodes/get_volume_brick_log.py) | 0 | ||||
| -rwxr-xr-x | src/com.gluster.storage.management.server.scripts/src/get_volume_log.py (renamed from src/com.gluster.storage.management.server.scripts/src/nodes/get_volume_log.py) | 0 | ||||
| -rw-r--r-- | src/com.gluster.storage.management.server.scripts/src/multicast_response.py (renamed from src/com.gluster.storage.management.server.scripts/src/nodes/multicast_response.py) | 0 | ||||
| -rw-r--r-- | src/com.gluster.storage.management.server.scripts/src/nodes/Agent.py | 118 | ||||
| -rwxr-xr-x | src/com.gluster.storage.management.server.scripts/src/nodes/PeerAgent.py | 212 | ||||
| -rwxr-xr-x | src/com.gluster.storage.management.server.scripts/src/nodes/ServerAgent.py | 179 | ||||
| -rw-r--r-- | src/com.gluster.storage.management.server.scripts/src/nodes/ServerRequestHandler.py | 76 | ||||
| -rw-r--r-- | src/com.gluster.storage.management.server.scripts/src/nodes/Socket.py | 47 | ||||
| -rw-r--r-- | src/com.gluster.storage.management.server.scripts/src/server/RemoteExecute.py | 287 | ||||
| -rw-r--r-- | src/com.gluster.storage.management.server.scripts/src/server/RequestHandler.py | 58 | ||||
| -rw-r--r-- | src/com.gluster.storage.management.server.scripts/src/server/TransportAgent.py | 26 | ||||
| -rwxr-xr-x | src/com.gluster.storage.management.server.scripts/src/server/transport.py | 94 | ||||
| -rwxr-xr-x | src/com.gluster.storage.management.server.scripts/src/server/vmware-discover-servers.py | 83 |
33 files changed, 0 insertions, 1180 deletions
diff --git a/src/com.gluster.storage.management.server.scripts/src/common/Commands.py b/src/com.gluster.storage.management.server.scripts/src/Commands.py index c728b565..c728b565 100644 --- a/src/com.gluster.storage.management.server.scripts/src/common/Commands.py +++ b/src/com.gluster.storage.management.server.scripts/src/Commands.py diff --git a/src/com.gluster.storage.management.server.scripts/src/common/Common.py b/src/com.gluster.storage.management.server.scripts/src/Common.py index 99c2f440..99c2f440 100644 --- a/src/com.gluster.storage.management.server.scripts/src/common/Common.py +++ b/src/com.gluster.storage.management.server.scripts/src/Common.py diff --git a/src/com.gluster.storage.management.server.scripts/src/nodes/Disk.py b/src/com.gluster.storage.management.server.scripts/src/Disk.py index a1ab9264..a1ab9264 100755 --- a/src/com.gluster.storage.management.server.scripts/src/nodes/Disk.py +++ b/src/com.gluster.storage.management.server.scripts/src/Disk.py diff --git a/src/com.gluster.storage.management.server.scripts/src/common/DiskUtils.py b/src/com.gluster.storage.management.server.scripts/src/DiskUtils.py index 0e42bba2..0e42bba2 100644 --- a/src/com.gluster.storage.management.server.scripts/src/common/DiskUtils.py +++ b/src/com.gluster.storage.management.server.scripts/src/DiskUtils.py diff --git a/src/com.gluster.storage.management.server.scripts/src/nodes/GetServerNetworkConfig.py b/src/com.gluster.storage.management.server.scripts/src/GetServerNetworkConfig.py index 3311eb56..3311eb56 100644 --- a/src/com.gluster.storage.management.server.scripts/src/nodes/GetServerNetworkConfig.py +++ b/src/com.gluster.storage.management.server.scripts/src/GetServerNetworkConfig.py diff --git a/src/com.gluster.storage.management.server.scripts/src/common/Globals.py b/src/com.gluster.storage.management.server.scripts/src/Globals.py index 9ae53491..9ae53491 100644 --- a/src/com.gluster.storage.management.server.scripts/src/common/Globals.py +++ b/src/com.gluster.storage.management.server.scripts/src/Globals.py diff --git a/src/com.gluster.storage.management.server.scripts/src/nodes/GlusterdUtils.py b/src/com.gluster.storage.management.server.scripts/src/GlusterdUtils.py index 7c0e899c..7c0e899c 100644 --- a/src/com.gluster.storage.management.server.scripts/src/nodes/GlusterdUtils.py +++ b/src/com.gluster.storage.management.server.scripts/src/GlusterdUtils.py diff --git a/src/com.gluster.storage.management.server.scripts/src/common/NetworkUtils.py b/src/com.gluster.storage.management.server.scripts/src/NetworkUtils.py index 7a854564..7a854564 100755 --- a/src/com.gluster.storage.management.server.scripts/src/common/NetworkUtils.py +++ b/src/com.gluster.storage.management.server.scripts/src/NetworkUtils.py diff --git a/src/com.gluster.storage.management.server.scripts/src/common/Protocol.py b/src/com.gluster.storage.management.server.scripts/src/Protocol.py index ff073593..ff073593 100644 --- a/src/com.gluster.storage.management.server.scripts/src/common/Protocol.py +++ b/src/com.gluster.storage.management.server.scripts/src/Protocol.py diff --git a/src/com.gluster.storage.management.server.scripts/src/nodes/ServerUtils.py b/src/com.gluster.storage.management.server.scripts/src/ServerUtils.py index 1fec994c..1fec994c 100644 --- a/src/com.gluster.storage.management.server.scripts/src/nodes/ServerUtils.py +++ b/src/com.gluster.storage.management.server.scripts/src/ServerUtils.py diff --git a/src/com.gluster.storage.management.server.scripts/src/common/Utils.py b/src/com.gluster.storage.management.server.scripts/src/Utils.py index 5140b641..5140b641 100644 --- a/src/com.gluster.storage.management.server.scripts/src/common/Utils.py +++ b/src/com.gluster.storage.management.server.scripts/src/Utils.py diff --git a/src/com.gluster.storage.management.server.scripts/src/nodes/VolumeUtils.py b/src/com.gluster.storage.management.server.scripts/src/VolumeUtils.py index a19ccd62..a19ccd62 100644 --- a/src/com.gluster.storage.management.server.scripts/src/nodes/VolumeUtils.py +++ b/src/com.gluster.storage.management.server.scripts/src/VolumeUtils.py diff --git a/src/com.gluster.storage.management.server.scripts/src/nodes/XmlHandler.py b/src/com.gluster.storage.management.server.scripts/src/XmlHandler.py index 72164ffb..72164ffb 100644 --- a/src/com.gluster.storage.management.server.scripts/src/nodes/XmlHandler.py +++ b/src/com.gluster.storage.management.server.scripts/src/XmlHandler.py diff --git a/src/com.gluster.storage.management.server.scripts/src/nodes/clear_volume_directory.py b/src/com.gluster.storage.management.server.scripts/src/clear_volume_directory.py index 3bd0ab6f..3bd0ab6f 100755 --- a/src/com.gluster.storage.management.server.scripts/src/nodes/clear_volume_directory.py +++ b/src/com.gluster.storage.management.server.scripts/src/clear_volume_directory.py diff --git a/src/com.gluster.storage.management.server.scripts/src/common/system-config-network-tui-1.3.99.18-1.el5.noarch.rpm b/src/com.gluster.storage.management.server.scripts/src/common/system-config-network-tui-1.3.99.18-1.el5.noarch.rpm Binary files differdeleted file mode 100644 index 4b07c4e4..00000000 --- a/src/com.gluster.storage.management.server.scripts/src/common/system-config-network-tui-1.3.99.18-1.el5.noarch.rpm +++ /dev/null diff --git a/src/com.gluster.storage.management.server.scripts/src/nodes/create_volume_directory.py b/src/com.gluster.storage.management.server.scripts/src/create_volume_directory.py index b8fb2166..b8fb2166 100755 --- a/src/com.gluster.storage.management.server.scripts/src/nodes/create_volume_directory.py +++ b/src/com.gluster.storage.management.server.scripts/src/create_volume_directory.py diff --git a/src/com.gluster.storage.management.server.scripts/src/nodes/get_disk_mount_point.py b/src/com.gluster.storage.management.server.scripts/src/get_disk_mount_point.py index b2274b4d..b2274b4d 100755 --- a/src/com.gluster.storage.management.server.scripts/src/nodes/get_disk_mount_point.py +++ b/src/com.gluster.storage.management.server.scripts/src/get_disk_mount_point.py diff --git a/src/com.gluster.storage.management.server.scripts/src/nodes/get_disk_name_by_path.py b/src/com.gluster.storage.management.server.scripts/src/get_disk_name_by_path.py index 72eb80dd..72eb80dd 100755 --- a/src/com.gluster.storage.management.server.scripts/src/nodes/get_disk_name_by_path.py +++ b/src/com.gluster.storage.management.server.scripts/src/get_disk_name_by_path.py diff --git a/src/com.gluster.storage.management.server.scripts/src/nodes/get_file.py b/src/com.gluster.storage.management.server.scripts/src/get_file.py index 826ade6e..826ade6e 100755 --- a/src/com.gluster.storage.management.server.scripts/src/nodes/get_file.py +++ b/src/com.gluster.storage.management.server.scripts/src/get_file.py diff --git a/src/com.gluster.storage.management.server.scripts/src/nodes/get_server_details.py b/src/com.gluster.storage.management.server.scripts/src/get_server_details.py index 2253ff30..2253ff30 100755 --- a/src/com.gluster.storage.management.server.scripts/src/nodes/get_server_details.py +++ b/src/com.gluster.storage.management.server.scripts/src/get_server_details.py diff --git a/src/com.gluster.storage.management.server.scripts/src/nodes/get_volume_brick_log.py b/src/com.gluster.storage.management.server.scripts/src/get_volume_brick_log.py index 7c912412..7c912412 100755 --- a/src/com.gluster.storage.management.server.scripts/src/nodes/get_volume_brick_log.py +++ b/src/com.gluster.storage.management.server.scripts/src/get_volume_brick_log.py diff --git a/src/com.gluster.storage.management.server.scripts/src/nodes/get_volume_log.py b/src/com.gluster.storage.management.server.scripts/src/get_volume_log.py index 826ade6e..826ade6e 100755 --- a/src/com.gluster.storage.management.server.scripts/src/nodes/get_volume_log.py +++ b/src/com.gluster.storage.management.server.scripts/src/get_volume_log.py diff --git a/src/com.gluster.storage.management.server.scripts/src/nodes/multicast_response.py b/src/com.gluster.storage.management.server.scripts/src/multicast_response.py index dba65c07..dba65c07 100644 --- a/src/com.gluster.storage.management.server.scripts/src/nodes/multicast_response.py +++ b/src/com.gluster.storage.management.server.scripts/src/multicast_response.py diff --git a/src/com.gluster.storage.management.server.scripts/src/nodes/Agent.py b/src/com.gluster.storage.management.server.scripts/src/nodes/Agent.py deleted file mode 100644 index 6d867d9e..00000000 --- a/src/com.gluster.storage.management.server.scripts/src/nodes/Agent.py +++ /dev/null @@ -1,118 +0,0 @@ -# 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 xmpp -import sys -import syslog - -class Agent: - def __init__(self, jidString, jidResource, password, proxySettings=None): - if jidString and jidResource and password: - self.password = password - self.proxySettings = proxySettings - self.jid = xmpp.protocol.JID(jid=jidString) - self.jid.setResource(jidResource) - self.xmppClient = xmpp.Client(self.jid.getDomain(), debug=[]) - self.presenceHandler = None - self.messageHandler = None - return - raise ValueError("jid, resource and password should not be empty") - - def registerPresenceHandler(self, function): - self.presenceHandler = function - - def registerMessageHandler(self, function): - self.messageHandler = function - - def __defaultMessageHandler(self, connection, event): - syslog.syslog(syslog.LOG_DEBUG, - "[Received]: from_jid=%s, type=%s, message=%s, error=%s\n" % - (event.getFrom(), event.getType(), event.getBody(), event.getError())) - if self.messageHandler: - self.messageHandler(connection, event) - else: - sys.stderr.write("[Message]: from_jid=%s, type=%s, message=%s, error=%s\n" % - (event.getFrom(), event.getType(), event.getBody(), event.getError())) - - def __defaultPresenceHandler(self, connection, event): - syslog.syslog(syslog.LOG_DEBUG, - "[Presence]: from_jid=%s, type=%s, status=%s, error=%s\n" % - (event.getFrom(), event.getType(), event.getShow(), event.getError())) - if self.presenceHandler: - self.presenceHandler(connection, event) - else: - sys.stderr.write("[Presence]: from_jid=%s, type=%s, status=%s, error=%s\n" % - (event.getFrom(), event.getType(), event.getShow(), event.getError())) - - def connect(self): - syslog.syslog("Connecting to server %s\n" % self.jid.getDomain()) - connection = self.xmppClient.connect() - if not connection: - syslog.syslog("failed\n") - if not self.proxySettings: - return False - syslog.syslog("Connecting to server %s through proxy server %s, port %s, username %s\n" % - (self.jid.getDomain(), - self.proxySettings["host"], - self.proxySettings["port"], - self.proxySettings["user"])) - connection = self.xmppClient.connect(proxy=self.proxySettings) - if not connection: - syslog.syslog("failed\n") - return False - - syslog.syslog("Authenticating with username %s\n" % self.jid) - auth = self.xmppClient.auth(self.jid.getNode(), - self.password, - self.jid.getResource()) - if not auth: - syslog.syslog("failed\n") - return False - syslog.syslog("done\n") - syslog.syslog("connection type is %s. authentication type is %s\n" % (connection, auth)) - - self.xmppClient.RegisterHandler("presence", self.__defaultPresenceHandler) - self.xmppClient.RegisterHandler("message", self.__defaultMessageHandler) - - self.xmppClient.sendInitPresence() - return True - - def disconnect(self): - self.xmppClient.disconnect() - - def processMessage(self, timeout=1): - return self.xmppClient.Process(timeout) - #if not self.xmppClient.isConnected(): - # self.xmppClient.reconnectAndReauth() - - def sendMessage(self, jidString, message, messageType="chat"): - syslog.syslog(syslog.LOG_DEBUG, - "[send]: from_jid=%s, type=%s, message=%s\n" % - (jidString, messageType, message)) - self.xmppClient.send(xmpp.protocol.Message(to=jidString, - body=message, - typ=messageType)) - - def getNetworkSocket(self): - return self.xmppClient.Connection._sock; - - def getRoster(self): - return self.xmppClient.getRoster() - - def isConnected(self): - return self.xmppClient.isConnected() -##--end of Agent diff --git a/src/com.gluster.storage.management.server.scripts/src/nodes/PeerAgent.py b/src/com.gluster.storage.management.server.scripts/src/nodes/PeerAgent.py deleted file mode 100755 index 6218e921..00000000 --- a/src/com.gluster.storage.management.server.scripts/src/nodes/PeerAgent.py +++ /dev/null @@ -1,212 +0,0 @@ -#!/usr/bin/python -# Copyright (C) 2010 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 os -import sys -import signal -import atexit -import socket -import syslog -import pwd -from optparse import OptionParser - -import Globals -import Socket -import Utils -from XmlHandler import ResponseXml - - -ME = os.path.basename(sys.argv[0]) -PID_FILE = "/var/run/serveragent.pid" -serverSocket = None -clientSocket = None -clientAddress = None -clientInputStream = None -clientOutputStream = None - - -def sigTermHandler(signal, frame): - sys.exit(0) - - -def cleanup(): - try: - if os.path.exists(PID_FILE): - os.unlink(PID_FILE) - except OSError, e: - Utils.log("Failed to remove PID file %s: %s" % (PID_FILE, str(e))) - - try: - if clientSocket: - clientSocket.close() - except socket.error, e: - Utils.log("Failed to close client socket: %s" % str(e)) - - try: - if serverSocket: - serverSocket.close() - except socket.error, e: - Utils.log("Failed to close server socket: " % str(e)) - -def stripEmptyLines(content): - ret = "" - for line in content.split("\n"): - if line.strip() != "": - ret += line - return ret - -def executeCommand(command): - rv = Utils.runCommandFG(command, stdout=True, root=True) - statusCode = rv["Status"] - if statusCode != 0: - output = "output: [" + stripEmptyLines(rv["Stdout"]) + "] error: [" + stripEmptyLines(rv["Stderr"]) + "]"; - rs = ResponseXml() - rs.appendTagRoute("status.code", statusCode); - rs.appendTagRoute("status.message", output); - return rs.toprettyxml() - else: - return rv["Stdout"] - -def main(): - global PID_FILE - global serverSocket - global clientSocket - global clientAddress - global clientInputStream - global clientOutputStream - - username = Globals.SERVER_AGENT_RUN_USERNAME - - Utils.openLog(Globals.PEER_AGENT_LOG_FILE) - - parser = OptionParser(version="%s %s" % (ME, Globals.GLUSTER_PLATFORM_VERSION)) - - parser.add_option("-N", "--no-daemon", - action="store_false", dest="daemonMode", default=True, - help="Run in foreground") - parser.add_option("-r", "--run-as", dest="username", - help="Run the daemon as USERNAME (default: %s)" % Globals.SERVER_AGENT_RUN_USERNAME, - metavar="USERNAME") - (options, args) = parser.parse_args() - - if options.username: - username = options.username - try: - userInfo = pwd.getpwnam(username) - except KeyError, e: - sys.stderr.write("%s\n" % str(e)) - serverSocket.close() - sys.exit(-1) - uid = userInfo.pw_uid - gid = userInfo.pw_gid - - try: - Utils.log("__DEBUG__ Opening server socket on port %s" % Globals.SERVER_AGENT_PORT) - serverSocket = Socket.openServerSocket() - except socket.error, e: - sys.stderr.write("Failed to open server socket: %s\n" % str(e)) - sys.exit(-1) - - if options.daemonMode: - if os.path.exists(PID_FILE): - sys.stderr.write("fatal: %s file exists\n" % PID_FILE) - serverSocket.close() - sys.exit(-1) - - if not Utils.daemonize(): - sys.stderr.write("fatal: unable to run as daemon\n") - serverSocket.close() - sys.exit(-1) - try: - fp = open(PID_FILE, "w") - fp.write("%s\n" % os.getpid()) - fp.close() - except IOError, e: - Utils.log("Pid file %s: %s" % (PID_FILE, str(e))) - serverSocket.close() - sys.exit(-1) - try: - os.chown(PID_FILE, uid, gid) - except OSError, e: - Utils.log("Pid file %s: %s" % (PID_FILE, str(e))) - serverSocket.close() - try: - os.unlink(PID_FILE) - except OSError, ex: - Utils.log("Failed to remove PID file %s: %s" % (PID_FILE, str(ex))) - sys.exit(-1) - else: - Globals.GLUSTER_DEBUG = True - - try: - os.setregid(gid, gid) - except OSError, e: - Utils.log("Failed to set effective and real gid to %s: %s" % (gid, str(e))) - cleanup() - sys.exit(-1) - try: - os.setreuid(uid, uid) - except OSError, e: - Utils.log("Failed to set effective and real uid to %s: %s" % (uid, str(e))) - cleanup() - sys.exit(-1) - - atexit.register(cleanup) - signal.signal(signal.SIGTERM, sigTermHandler) - - while True: - Utils.log("__DEBUG__ Waiting for new connection on port %s" % Globals.SERVER_AGENT_PORT) - try: - clientSocket, clientAddress, clientInputStream, clientOutputStream = Socket.acceptClient(serverSocket) - except socket.error, e: - Utils.log("Failed to accept new connection: %s" % str(e)) - sys.exit(-1) - - Utils.log('__DEBUG__ Connected by %s' % str(clientAddress)) - try: - requestString = Socket.readPacket(clientInputStream) - Utils.log('__DEBUG__ Received %s' % repr(requestString)) - requestParts = requestString.split(None, 3) - - if "get_file" == requestParts[0]: - if len(requestParts) != 2: - rs = ResponseXml() - rs.appendTagRoute("status.code", "-1") - rs.appendTagRoute("status.message", "File path not passed") - Socket.writePacket(clientOutputStream, rs.toprettyxml()) - else: - filePath = requestParts[1] - fp = open(filePath) - clientSocket.sendall(fp.read()) - fp.close() - clientOutputStream.flush() - else: - responseString = executeCommand(requestString) - if responseString: - Socket.writePacket(clientOutputStream, responseString) - clientOutputStream.flush() - else: - Utils.log('__DEBUG__ empty response string') - Utils.log('__DEBUG__ Closing client %s' % str(clientAddress)) - clientSocket.close() - except socket.error, e: - Utils.log("Socket error on client: %s" % str(e)) - sys.exit(0) - -if __name__ == "__main__": - main() diff --git a/src/com.gluster.storage.management.server.scripts/src/nodes/ServerAgent.py b/src/com.gluster.storage.management.server.scripts/src/nodes/ServerAgent.py deleted file mode 100755 index bcb2bac1..00000000 --- a/src/com.gluster.storage.management.server.scripts/src/nodes/ServerAgent.py +++ /dev/null @@ -1,179 +0,0 @@ -#!/usr/bin/python -# Copyright (C) 2010 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 os -import sys -import signal -import atexit -import socket -import syslog -import pwd -from optparse import OptionParser - -import Globals -import Socket -import Utils -import ServerRequestHandler - - -ME = os.path.basename(sys.argv[0]) -PID_FILE = "/var/run/serveragent.pid" -serverSocket = None -clientSocket = None -clientAddress = None -clientInputStream = None -clientOutputStream = None - - -def sigTermHandler(signal, frame): - sys.exit(0) - - -def cleanup(): - try: - if os.path.exists(PID_FILE): - os.unlink(PID_FILE) - except OSError, e: - Utils.log("Failed to remove PID file %s: %s" % (PID_FILE, str(e))) - - try: - if clientSocket: - clientSocket.close() - except socket.error, e: - Utils.log("Failed to close client socket: %s" % str(e)) - - try: - if serverSocket: - serverSocket.close() - except socket.error, e: - Utils.log("Failed to close server socket: " % str(e)) - - -def main(): - global PID_FILE - global serverSocket - global clientSocket - global clientAddress - global clientInputStream - global clientOutputStream - - username = Globals.SERVER_AGENT_RUN_USERNAME - - Utils.openLog(Globals.SERVER_AGENT_LOG_FILE) - - parser = OptionParser(version="%s %s" % (ME, Globals.GLUSTER_PLATFORM_VERSION)) - - parser.add_option("-N", "--no-daemon", - action="store_false", dest="daemonMode", default=True, - help="Run in foreground") - parser.add_option("-r", "--run-as", dest="username", - help="Run the daemon as USERNAME (default: %s)" % Globals.SERVER_AGENT_RUN_USERNAME, - metavar="USERNAME") - (options, args) = parser.parse_args() - - if options.username: - username = options.username - try: - userInfo = pwd.getpwnam(username) - except KeyError, e: - sys.stderr.write("%s\n" % str(e)) - serverSocket.close() - sys.exit(-1) - uid = userInfo.pw_uid - gid = userInfo.pw_gid - - try: - Utils.log("__DEBUG__ Opening server socket on port %s" % Globals.SERVER_AGENT_PORT) - serverSocket = Socket.openServerSocket() - except socket.error, e: - sys.stderr.write("Failed to open server socket: %s\n" % str(e)) - sys.exit(-1) - - if options.daemonMode: - if os.path.exists(PID_FILE): - sys.stderr.write("fatal: %s file exists\n" % PID_FILE) - serverSocket.close() - sys.exit(-1) - - if not Utils.daemonize(): - sys.stderr.write("fatal: unable to run as daemon\n") - serverSocket.close() - sys.exit(-1) - try: - fp = open(PID_FILE, "w") - fp.write("%s\n" % os.getpid()) - fp.close() - except IOError, e: - Utils.log("Pid file %s: %s" % (PID_FILE, str(e))) - serverSocket.close() - sys.exit(-1) - try: - os.chown(PID_FILE, uid, gid) - except OSError, e: - Utils.log("Pid file %s: %s" % (PID_FILE, str(e))) - serverSocket.close() - try: - os.unlink(PID_FILE) - except OSError, ex: - Utils.log("Failed to remove PID file %s: %s" % (PID_FILE, str(ex))) - sys.exit(-1) - else: - Globals.GLUSTER_DEBUG = True - - try: - os.setregid(gid, gid) - except OSError, e: - Utils.log("Failed to set effective and real gid to %s: %s" % (gid, str(e))) - cleanup() - sys.exit(-1) - try: - os.setreuid(uid, uid) - except OSError, e: - Utils.log("Failed to set effective and real uid to %s: %s" % (uid, str(e))) - cleanup() - sys.exit(-1) - - atexit.register(cleanup) - signal.signal(signal.SIGTERM, sigTermHandler) - - while True: - Utils.log("__DEBUG__ Waiting for new connection on port %s" % Globals.SERVER_AGENT_PORT) - try: - clientSocket, clientAddress, clientInputStream, clientOutputStream = Socket.acceptClient(serverSocket) - except socket.error, e: - Utils.log("Failed to accept new connection: %s" % str(e)) - sys.exit(-1) - - Utils.log('__DEBUG__ Connected by %s' % str(clientAddress)) - try: - requestString = Socket.readPacket(clientInputStream) - Utils.log('__DEBUG__ Received %s' % repr(requestString)) - responseString = ServerRequestHandler.handleRequest(requestString) - if responseString: - Socket.writePacket(clientOutputStream, responseString) - clientOutputStream.flush() - else: - Utils.log('__DEBUG__ empty response string') - Utils.log('__DEBUG__ Closing client %s' % str(clientAddress)) - clientSocket.close() - except socket.error, e: - Utils.log("Socket error on client: %s" % str(e)) - sys.exit(0) - -if __name__ == "__main__": - main() diff --git a/src/com.gluster.storage.management.server.scripts/src/nodes/ServerRequestHandler.py b/src/com.gluster.storage.management.server.scripts/src/nodes/ServerRequestHandler.py deleted file mode 100644 index 31d4eb8c..00000000 --- a/src/com.gluster.storage.management.server.scripts/src/nodes/ServerRequestHandler.py +++ /dev/null @@ -1,76 +0,0 @@ -# Copyright (C) 2010 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 os - -import Commands -from Protocol import * -from Globals import * -from GetServerNetworkConfig import * - -def handleRequestGetServerNetworkConfig(requestDom): - return getServerNetworkConfig(requestDom) - -def handleRequest(requestString): - log("Received request %s" % repr(requestString)) - - requestDom = XDOM() - requestDom.parseString(requestString) - if not requestDom: - log("Invalid request") - return None - - preRequestMap = {} - - postRequestMap = {} - - cleanupRequestMap = {} - - requestMap = { Commands.COMMAND_GET_SERVER_NETWORK_CONFIG : handleRequestGetServerNetworkConfig } - - messageId = requestDom.getMessageId() - if not messageId: - log("Invalid message Id") - return None - - requestCommand = requestDom.getRequestCommand() - if not requestCommand: - log("invalid request command") - return None - - requestAction = requestDom.getRequestAction() - version = requestDom.getVersion() - #if not isSupportedVersion(version): - # log("Unsupported version request %s" % requestDom.toxml()) - # return ResponseXml(requestCommand, "Unsupported version request", messageId, version).toxml() - - try: - if not requestAction: - responseDom = requestMap[requestCommand](requestDom) - elif requestAction.upper() == "PRE": - responseDom = preRequestMap[requestCommand](requestDom) - elif requestAction.upper() == "POST": - responseDom = postRequestMap[requestCommand](requestDom) - elif requestAction.upper() == "CLEANUP": - responseDom = cleanupRequestMap[requestCommand](requestDom) - else: - log("Unknown request action %s" % requestAction) - return None - return responseDom.toxml() - except KeyError: - log("No handler found for command %s for action %s" % (requestCommand, requestAction)) - return ResponseXml(requestCommand, "Invalid command", messageId, version).toxml() diff --git a/src/com.gluster.storage.management.server.scripts/src/nodes/Socket.py b/src/com.gluster.storage.management.server.scripts/src/nodes/Socket.py deleted file mode 100644 index ba6b6ad0..00000000 --- a/src/com.gluster.storage.management.server.scripts/src/nodes/Socket.py +++ /dev/null @@ -1,47 +0,0 @@ -import socket -import sys -import Globals - -def openServerSocket(bindAddress="", port=Globals.SERVER_AGENT_PORT): - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - sock.bind((bindAddress, port)) - sock.listen(1) - return sock - - -def connectToServer(serverName, port=Globals.SERVER_AGENT_PORT): - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sock.connect((serverName, port)) - print "__DEBUG__ connected to ", serverName, " on port ", port - inputStream = sock.makefile("r") - outputStream = sock.makefile("w") - return sock, inputStream, outputStream - - -def acceptClient(serverSocket): - clientSocket, clientAddress = serverSocket.accept() - clientInputStream = clientSocket.makefile("r") - clientOutputStream = clientSocket.makefile("w") - return clientSocket, clientAddress, clientInputStream, clientOutputStream - - -def readPacket(inputStream): - packetString = "" - while True: - line = inputStream.readline() - print "__DEBUG__", line - if not line: - break - if line.strip() == "": - # end of input received - return packetString - packetString += line - return packetString - - -def writePacket(outputStream, packetString): - rv = outputStream.write(packetString.strip() + "\n\n") - outputStream.flush() - - diff --git a/src/com.gluster.storage.management.server.scripts/src/server/RemoteExecute.py b/src/com.gluster.storage.management.server.scripts/src/server/RemoteExecute.py deleted file mode 100644 index 1800234f..00000000 --- a/src/com.gluster.storage.management.server.scripts/src/server/RemoteExecute.py +++ /dev/null @@ -1,287 +0,0 @@ -# Copyright (C) 2010 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 os -import socket -#import paramiko -import syslog -import sys -import Socket -import Globals -from copy import deepcopy -from ServerUtils import * - -SERVER_AGENT_COMMAND = "/usr/sbin/server-agent" -SERVER_AGENT_CLEANUP_COMMAND = SERVER_AGENT_COMMAND + " --cleanup" -SERVER_AGENT_PRE_COMMAND = SERVER_AGENT_COMMAND + " --pre" -SERVER_AGENT_POST_COMMAND = SERVER_AGENT_COMMAND + " --post" -TRANSPORT_USER_NAME = "transport" -TRANSPORT_PRIVATE_KEY_FILE = Globals.TRANSPORT_HOME_DIR + "/.ssh/id_rsa" - -def remoteExecute(serverList, command, commandInput=None): - print "REMOTE:", serverList - statusDict = {} - ssh = paramiko.SSHClient() - ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) - try: - privateKey = paramiko.RSAKey.from_private_key_file(TRANSPORT_PRIVATE_KEY_FILE) - except IOError: - log(syslog.LOG_ERR, "Private key file %s not found" % TRANSPORT_PRIVATE_KEY_FILE) - return None - print "STAGE1" - for serverName in serverList.keys(): - serverStatus = {} - serverStatus["ConnectionStatus"] = None - serverStatus["ExecutionStatus"] = None - serverStatus["StdOutString"] = None - serverStatus["StdErrString"] = None - serverStatus["ConnectedIp"] = None - serverStatus["Error"] = None - - isConnected = False - for serverIp in serverList[serverName]: - try: - ssh.connect(serverIp, username=TRANSPORT_USER_NAME, pkey=privateKey) - isConnected = True - break - except socket.error: - log(syslog.LOG_ERR, "Server %s:%s is inaccessible" % (serverName, serverIp)) - continue - if not isConnected: - serverStatus["ConnectionStatus"] = "inaccessible" - statusDict[serverName] = serverStatus - continue - - try: - transport = ssh.get_transport() - channel = transport.open_session() - serverStatus["ConnectionStatus"] = True - channel.exec_command(command) - stdin = channel.makefile('wb') - stdout = channel.makefile('rb') - stderr = channel.makefile_stderr('rb') - if commandInput: - stdin.write(commandInput) - channel.shutdown_write() - - returnValue = channel.recv_exit_status() ## this is blocking call - serverStatus["ExecutionStatus"] = returnValue - print "RRRRRRRRRRRRRRRR:", returnValue - errorString = "" - if -1 == returnValue: - errorString = stderr.read() - serverStatus["StdErrString"] = errorString - if "bash: " + command.split()[0] + ": command not found\n" == errorString: - log(syslog.LOG_ERR, "command %s not found in server %s" % (command, serverName)) - serverStatus["Error"] = "Command not found" - else: - serverStatus["StdErrString"] = stderr.read() - serverStatus["StdOutString"] = stdout.read() - ssh.close() - except paramiko.SSHException: - # Channel error (channel not open) - log(syslog.LOG_ERR, "Server %s:%s connection aborted" % (serverName, serverIp)) - serverStatus["ConnectionStatus"] = "aborted" - except socket.error: - log(syslog.LOG_ERR, "Server %s:%s is inaccessible" % (serverName, serverIp)) - serverStatus["ConnectionStatus"] = "inaccessible" - except paramiko.AuthenticationException: - log(syslog.LOG_ERR, "Authentication error on server %s:%s of user %s" % - (serverName, serverIp, TRANSPORT_USER_NAME)) - serverStatus["ConnectionStatus"] = "authentication error" - serverStatus["ConnectedIp"] = serverIp - statusDict[serverName] = serverStatus - return statusDict - -def cleanupExecuteSsh(serverList, requestDom): - return remoteExecute(serverList, SERVER_AGENT_CLEANUP_COMMAND, requestDom.toxml()) - -def executeRequestCommandSsh(serverList, command, requestDom, cleanupFlag): - cleanupStatusDict = {} - successStatusDict = {} - failureServerList = {} - cleanupServerList = {} - serverList = deepcopy(serverList) - statusDict = remoteExecute(serverList, command, requestDom.toxml()) - for serverName in statusDict.keys(): - statusDict["Response"] = None - if statusDict[serverName]["ConnectionStatus"] == True: - setLastAccessedNetwork(serverName, statusDict[serverName]["ConnectedIp"]) - if statusDict[serverName]["ConnectedIp"]: - ipList = serverList[serverName] - ipList.remove(statusDict[serverName]["ConnectedIp"]) - cleanupServerList[serverName] = [statusDict[serverName]["ConnectedIp"]] + ipList - if statusDict[serverName]["ExecutionStatus"] != 0: - failureServerList[serverName] = statusDict[serverName] - continue - responseDom = XDOM() - if not responseDom.parseString(statusDict[serverName]["StdOutString"]): - failureServerList[serverName] = statusDict[serverName] - continue - statusDict["Response"] = responseDom - if "OK" != responseDom.getAttribute("response-code"): - failureServerList[serverName] = statusDict[serverName] - continue - successStatusDict[serverName] = statusDict[serverName] - if cleanupFlag and failureServerList: - cleanupStatusDict = remoteExecute(cleanupServerList, SERVER_AGENT_CLEANUP_COMMAND, requestDom.toxml()) - return successStatusDict, failureServerList, cleanupStatusDict - -def preExecuteSsh(serverList, requestDom, cleanupFlag=True): - return executeRequestCommandSsh(serverList, SERVER_AGENT_PRE_COMMAND, requestDom, cleanupFlag) - -def executeSsh(serverList, requestDom, cleanupFlag=True): - return executeRequestCommandSsh(serverList, SERVER_AGENT_COMMAND, requestDom, cleanupFlag) - -def postExecuteSsh(serverList, requestDom, cleanupFlag=True): - return executeRequestCommandSsh(serverList, SERVER_AGENT_POST_COMMAND, requestDom, cleanupFlag) - -def runPullUpdatesDir(sourceServerIp, destServerIpList): - command = "/usr/sbin/pull-dir.sh %s %s %s" % (sourceServerIp, - Globals.UPDATES_DIR[1:], - Globals.UPDATES_DIR) - statusDict = remoteExecute(destServerIpList, command) - status = True - for serverName in statusDict.keys(): - if statusDict[serverName]["ExecutionStatus"] != 0: - log(syslog.LOG_ERR, "Failed to execute [%s] in server %s" % (command, serverName)) - status = False - return status - -def runPullGlusterDir(sourceServerIp, destServerIpList): - command = "/usr/sbin/pull-dir.sh %s %s %s" % (sourceServerIp, - Globals.GLUSTER_BASE_DIR[1:], - Globals.GLUSTER_BASE_DIR) - statusDict = remoteExecute(destServerIpList, command) - status = True - for serverName in statusDict.keys(): - if statusDict[serverName]["ExecutionStatus"] != 0: - log(syslog.LOG_ERR, "Failed to execute [%s] in server %s" % (command, serverName)) - status = False - return status - -def syncConfiguration(syncToInstaller=False, sourceServerIpList=None): - thisServerName = getCurrentServerName() - serverList = getAllServerList() - serverList.remove(thisServerName) - serverIpList = getExecuteServerList(serverList) - if syncToInstaller: - installerIp = getInstallerIp() - if not installerIp: - log(syslog.LOG_ERR, "Installer IP address is not found") - return False - serverIpList[Globals.INSTALLER_SERVER_NAME] = [installerIp] - - if not serverIpList: - log(syslog.LOG_ERR, "No servers found for sync configuration") - return False - - signature = generateSignature() - if not storeSignature(signature, Globals.SIGNATURE_FILE): - log(syslog.LOG_ERR, "failed to store signature %s to %s file" % - (signature, Globals.SIGNATURE_FILE)) - return False - - thisServerIpList = getExecuteServerList([thisServerName]) - if sourceServerIpList: - thisServerIpList = sourceServerIpList - return runPullGlusterDir(thisServerIpList[thisServerName][0], serverIpList) - -def remoteExecuteTcp(serverIpList, requestString): - serverStatus = {} - serverStatus["ConnectionStatus"] = False - serverStatus["ExecutionStatus"] = -1 - serverStatus["StdOutString"] = None - serverStatus["StdErrString"] = None - serverStatus["ConnectedIp"] = None - serverStatus["Error"] = None - - for ipAddress in serverIpList.values()[0]: - try: - sock, inputStream, outputStream = Socket.connectToServer(ipAddress) - Socket.writePacket(outputStream, requestString) - packetString = Socket.readPacket(inputStream) - log('__DEBUG__ Received: %s' % repr(packetString)) - sock.close() - serverStatus["ConnectionStatus"] = True - serverStatus["ExecutionStatus"] = 0 - serverStatus["StdOutString"] = packetString - serverStatus["StdErrString"] = None - serverStatus["ConnectedIp"] = ipAddress - serverStatus["Error"] = None - return serverStatus - except socket.error, e: - log("socket error on [%s:%s]: %s" % (serverIpList.keys()[0], ipAddress, str(e))) - return serverStatus - -def executeRequestCommand(serverList, command, requestDom, cleanupFlag): - cleanupStatusDict = {} - successStatusDict = {} - failureServerList = {} - cleanupServerList = {} - serverList = deepcopy(serverList) - - statusDict = {} - for serverName in serverList.keys(): - serverStatus = remoteExecuteTcp({serverName : serverList[serverName]}, requestDom.toxml()) - statusDict[serverName] = serverStatus - for serverName in statusDict.keys(): - statusDict["Response"] = None - if statusDict[serverName]["ConnectionStatus"] == True: - setLastAccessedNetwork(serverName, statusDict[serverName]["ConnectedIp"]) - if statusDict[serverName]["ConnectedIp"]: - ipList = serverList[serverName] - ipList.remove(statusDict[serverName]["ConnectedIp"]) - cleanupServerList[serverName] = [statusDict[serverName]["ConnectedIp"]] + ipList - if statusDict[serverName]["ExecutionStatus"] != 0: - failureServerList[serverName] = statusDict[serverName] - continue - responseDom = XDOM() - if not responseDom.parseString(statusDict[serverName]["StdOutString"]): - failureServerList[serverName] = statusDict[serverName] - continue - statusDict["Response"] = responseDom - if "OK" != responseDom.getResponseCode(): - failureServerList[serverName] = statusDict[serverName] - continue - successStatusDict[serverName] = statusDict[serverName] - if cleanupFlag and failureServerList: - rq = deepcopy(requestDom) - rq.setRequestAction("cleanup") - cleanupStatusDict = {} - for serverName in cleanupServerList.keys(): - serverStatus = remoteExecuteTcp({serverName : cleanupServerList[serverName]}, rq.toxml()) - cleanupStatusDict[serverName] = serverStatus - return successStatusDict, failureServerList, cleanupStatusDict - -def preExecute(serverList, requestDom, cleanupFlag=True): - rq = deepcopy(requestDom) - rq.setRequestAction("pre") - return executeRequestCommand(serverList, SERVER_AGENT_PRE_COMMAND, rq, cleanupFlag) - -def execute(serverList, requestDom, cleanupFlag=True): - return executeRequestCommand(serverList, SERVER_AGENT_COMMAND, requestDom, cleanupFlag) - -def postExecute(serverList, requestDom, cleanupFlag=True): - rq = deepcopy(requestDom) - rq.setRequestAction("post") - return executeRequestCommand(serverList, SERVER_AGENT_POST_COMMAND, rq, cleanupFlag) - -def cleanupExecute(serverList, requestDom): - rq = deepcopy(requestDom) - rq.setRequestAction("cleanup") - return executeRequestCommand(serverList, SERVER_AGENT_CLEANUP_COMMAND, rq, False) diff --git a/src/com.gluster.storage.management.server.scripts/src/server/RequestHandler.py b/src/com.gluster.storage.management.server.scripts/src/server/RequestHandler.py deleted file mode 100644 index e6fe88ff..00000000 --- a/src/com.gluster.storage.management.server.scripts/src/server/RequestHandler.py +++ /dev/null @@ -1,58 +0,0 @@ -import os -import glob -#import paramiko -import tempfile -#import uuid -import socket -import tarfile -import time -import Globals -import Commands -from Protocol import * -from RemoteExecute import * -from NetworkUtils import * - -def handleRequestGetServerNetworkConfig(requestDom): - messageId = requestDom.getAttribute("id") - serverName = requestDom.getTextByTagRoute("command.server-name") - version = requestDom.getVersion() - request = requestDom.getAttribute("request") - - if not serverName: - responseDom = ResponseXml(Commands.COMMAND_GET_SERVER_NETWORK_CONFIG, "No server name given", messageId, version) - responseDom.appendTagRoute("server.name", serverName) - return responseDom - - #serverIpList = getExecuteServerList([serverName]) - #if not serverIpList: - # responseDom = ResponseXml(Commands.COMMAND_GET_SERVER_NETWORK_CONFIG, "Unable to get server ip", messageId, version) - # responseDom.appendTagRoute("server.name", serverName) - # return responseDom - - successStatusDict, failureServerList, cleanupStatusDict = \ - execute({serverName:[serverName]}, requestDom, Globals.REQUEST_MAP[request]["cleanup"]) - if failureServerList: - response = failureServerList[serverName]["StdOutString"] - if not response: - return ResponseXml(Commands.COMMAND_GET_SERVER_NETWORK_CONFIG, - "Failed to execute get server network config", messageId, version) - responseDom = XDOM() - if responseDom.parseString(response): - return responseDom - errorResponseDom = ResponseXml(Commands.COMMAND_GET_SERVER_NETWORK_CONFIG, - "Invalid response of get server network config", messageId, version) - errorResponseDom.appendTagRoute("server.name", serverName) - return errorResponseDom - - responseDom = XDOM() - if not responseDom.parseString(successStatusDict[serverName]["StdOutString"]): - errorResponseDom = ResponseXml(Commands.COMMAND_GET_SERVER_NETWORK_CONFIG, - "Invalid response of get server network config", messageId, version) - errorResponseDom.appendTagRoute("server.name", serverName) - return errorResponseDom - - #configDom = getServerNetworkConfigFromLocalFile(serverName) - #if not (configDom and compareServerNetworkDom(configDom, responseDom)): - # updateServerNetworkConfigXmlFile(serverName, responseDom) - # syncConfiguration() - return responseDom diff --git a/src/com.gluster.storage.management.server.scripts/src/server/TransportAgent.py b/src/com.gluster.storage.management.server.scripts/src/server/TransportAgent.py deleted file mode 100644 index 5f39b585..00000000 --- a/src/com.gluster.storage.management.server.scripts/src/server/TransportAgent.py +++ /dev/null @@ -1,26 +0,0 @@ -import Commands -#from Common import log -from Protocol import * -from RequestHandler import * - -def processRequest(requestDom): - Globals.REQUEST_MAP = { - Commands.COMMAND_GET_SERVER_NETWORK_CONFIG : {"handle":handleRequestGetServerNetworkConfig, - "pre-run":False, "run":True, "post-run":False, \ - "cleanup":False, "sync-config":False, "safemode":False}} - - messageId = requestDom.getMessageId() - if not messageId: - log("invalid message from web agent") - return None - - requestCommand = requestDom.getRequestCommand() - if not requestCommand: - log("invalid request from web agent") - return None - - try: - requestCommand = Globals.REQUEST_MAP[requestCommand]['handle'] - except KeyError: # Handler not found! - return ResponseXml(requestCommand, "Invalid command", messageId, version) - return requestCommand(requestDom) diff --git a/src/com.gluster.storage.management.server.scripts/src/server/transport.py b/src/com.gluster.storage.management.server.scripts/src/server/transport.py deleted file mode 100755 index 9255ff40..00000000 --- a/src/com.gluster.storage.management.server.scripts/src/server/transport.py +++ /dev/null @@ -1,94 +0,0 @@ -#!/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 syslog -import signal -import datetime -from Globals import * -from Protocol import * -from TransportAgent import * -from optparse import OptionParser - -class TimeoutException(Exception): - pass - -def timeoutSignal(signum, frame): - raise TimeoutException, "Timed out" - -def main(): - openLog(Globals.TRANSPORT_AGENT_LOG_FILE) - parser = OptionParser(version="%transport " + Globals.GLUSTER_PLATFORM_VERSION) - parser.add_option("-f", "--force", - action="store_true", dest="force", default=False, - help="Execute command forcefully") - - parser.add_option("-t", "--timeout", - type="int", nargs=1, dest="timeout", - help="Session time-out") - - parser.add_option("--debug", - action="store_true", dest="debug", default=False, - help="Enable debug mode") - (options, args) = parser.parse_args() - Globals.GLUSTER_DEBUG = options.debug - - if len(args) != 1: - #print "usage: Transport.py [-f | --force] [-t N | --timeout=N] [--debug] <input-file>" - log(syslog.LOG_ERR, "invalid arguments") - sys.exit(-1) - - signal.signal(signal.SIGALRM, timeoutSignal) - signal.alarm(options.timeout) - inputFile = args[0] - #outputFile = args[1] - try: - requestString = open(inputFile).read() - if not requestString: - sys.exit(-1) - fp = open("/tmp/transport.log", "a") - fp.write("\n%s: Send: %s\n" % (str(datetime.now()), requestString)) - fp.close() - except IOError: - log(syslog.LOG_ERR, "Unable to read input xml file %s" % inputFile) - sys.exit(-1) - - requestDom = RequestXml(requestString) - if not requestDom: - log(syslog.LOG_ERR, "error: invalid request: %s" % requestString) - sys.exit(-1) - - responseDom = processRequest(requestDom) - if not responseDom: - log(syslog.LOG_ERR, "command execution failed") - sys.exit(-1) - - #fp = open("/tmp/transport.log", "a") - #fp.write("%s: Receive: %s\n" % (str(datetime.now()), responseDom.toxml())) - #fp.close() - - #responseDom.writexml(outputFile) - print responseDom.toxml() - sys.exit(0) - -if __name__ == "__main__": - try: - main() - except TimeoutException: - log(syslog.LOG_ERR, "session timed out") - sys.exit(-1) diff --git a/src/com.gluster.storage.management.server.scripts/src/server/vmware-discover-servers.py b/src/com.gluster.storage.management.server.scripts/src/server/vmware-discover-servers.py deleted file mode 100755 index 6ac15fed..00000000 --- a/src/com.gluster.storage.management.server.scripts/src/server/vmware-discover-servers.py +++ /dev/null @@ -1,83 +0,0 @@ -#!/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]) - 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() - for server in servers: - print server - 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() |
