summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.server.scripts
diff options
context:
space:
mode:
authorTim <timothyasir@gluster.com>2011-05-30 19:54:13 +0530
committerTim <timothyasir@gluster.com>2011-05-30 19:54:13 +0530
commit2851c82cc1cd2771602044404a54a64605ece7e2 (patch)
treea8bae4c387510329b55a427655a6ab39b71429d4 /src/com.gluster.storage.management.server.scripts
parentea79ff5d088c25ad07203fd2e8f9f396d031bb21 (diff)
Added rrd_update_memory_details.py to update memory details into rrd
Diffstat (limited to 'src/com.gluster.storage.management.server.scripts')
-rwxr-xr-xsrc/com.gluster.storage.management.server.scripts/src/rrd_update_memory_details.py93
-rwxr-xr-xsrc/com.gluster.storage.management.server.scripts/src/vmware-discover-servers.py83
2 files changed, 176 insertions, 0 deletions
diff --git a/src/com.gluster.storage.management.server.scripts/src/rrd_update_memory_details.py b/src/com.gluster.storage.management.server.scripts/src/rrd_update_memory_details.py
new file mode 100755
index 00000000..23054769
--- /dev/null
+++ b/src/com.gluster.storage.management.server.scripts/src/rrd_update_memory_details.py
@@ -0,0 +1,93 @@
+#!/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 syslog
+from XmlHandler import ResponseXml
+import Utils
+import Common
+
+def createMemData(file, step):
+ rs = ResponseXml()
+ command = ["rrdtool", "create", file, "--step=%s" % step,
+ "DS:memused:ABSOLUTE:600:0:U",
+ "DS:memfree:ABSOLUTE:600:0:U",
+ "DS:memcache:ABSOLUTE:600:0:U",
+ "DS:swapused:ABSOLUTE:600:0:U",
+ "DS:swapfree:ABSOLUTE:600:0:U",
+ "RRA:AVERAGE:0.5:1:576",
+ "RRA:AVERAGE:0.5:6:672",
+ "RRA:AVERAGE:0.5:24:732",
+ "RRA:AVERAGE:0.5:144:1460"]
+
+ rv = Utils.runCommandFG(command, stdout=True, root=True)
+ message = Common.stripEmptyLines(rv["Stdout"])
+ if rv["Stderr"]:
+ error = Common.stripEmptyLines(rv["Stderr"])
+ message += "Error: [%s]" % (error)
+ Common.log(syslog.LOG_ERR, "failed to create RRD file for memory usages %s" % file)
+ rs.appendTagRoute("status.code", rv["Status"])
+ rs.appendTagRoute("status.message", message)
+ return rs.toxml()
+ return None
+
+def updateMemData(file):
+ rs = ResponseXml()
+ command = ["free", "-b", "-o"]
+ rv = Utils.runCommandFG(command, stdout=True, root=True)
+ if rv["Stderr"]:
+ error = Common.stripEmptyLines(rv["Stderr"])
+ message += "Error: [%s]" % (error)
+ Common.log(syslog.LOG_ERR, "failed to retrieve memory details")
+ rs.appendTagRoute("status.code", rv["Status"])
+ rs.appendTagRoute("status.message", message)
+ return rs.toxml()
+
+ message = rv["Stdout"].split()
+ command = ["rrdtool", "update", file, "-t", "memused:memfree:memcache:swapused:swapfree",
+ "N:%s:%s:%s:%s:%s" % (message[8], message[9], message[12], message[14], message[15])]
+ rv = Utils.runCommandFG(command, stdout=True, root=True)
+ if rv["Stderr"]:
+ error = Common.stripEmptyLines(rv["Stderr"])
+ print error, command
+ message += "Error: [%s]" % (error)
+ Common.log(syslog.LOG_ERR, "failed to update memory usage into rrd file %s" % file)
+ rs.appendTagRoute("status.code", rv["Status"])
+ rs.appendTagRoute("status.message", message)
+ return rs.toxml()
+ return None
+
+
+def main():
+ #if len(sys.argv) != 2:
+ # print >> sys.stderr, "usage: %s <step>" % sys.argv[0]
+ # sys.exit(-1)
+ #step = sys.argv[1]
+
+ memRrdFile = "mem.rrd"
+ if not os.path.exists(memRrdFile):
+ status = createMemData(memRrdFile, 100)
+ if status:
+ print status
+ status = updateMemData(memRrdFile)
+ if status:
+ print status
+ sys.exit(0)
+
+if __name__ == "__main__":
+ main()
diff --git a/src/com.gluster.storage.management.server.scripts/src/vmware-discover-servers.py b/src/com.gluster.storage.management.server.scripts/src/vmware-discover-servers.py
new file mode 100755
index 00000000..6ac15fed
--- /dev/null
+++ b/src/com.gluster.storage.management.server.scripts/src/vmware-discover-servers.py
@@ -0,0 +1,83 @@
+#!/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()