Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(320)

Unified Diff: conmux/drivers/fence_apc_snmp.py

Issue 6124004: Revert "Merge remote branch 'cros/upstream' into autotest-rebase" (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/autotest.git@master
Patch Set: Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « conmux/drivers/dli-lpc ('k') | conmux/drivers/module.mk » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: conmux/drivers/fence_apc_snmp.py
diff --git a/conmux/drivers/fence_apc_snmp.py b/conmux/drivers/fence_apc_snmp.py
deleted file mode 100755
index 3595071f94c9d6aa0f482f41b05b964f290c332f..0000000000000000000000000000000000000000
--- a/conmux/drivers/fence_apc_snmp.py
+++ /dev/null
@@ -1,370 +0,0 @@
-#!/usr/bin/python
-
-#############################################################################
-#############################################################################
-##
-## Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved.
-## Copyright (C) 2004-2006 Red Hat, Inc. All rights reserved.
-##
-## This copyrighted material is made available to anyone wishing to use,
-## modify, copy, or redistribute it subject to the terms and conditions
-## of the GNU General Public License v.2.
-##
-#############################################################################
-## This APC Fence script uses snmp to control the APC power
-## switch. This script requires that net-snmp-utils be installed
-## on all nodes in the cluster, and that the powernet369.mib file be
-## located in /usr/share/snmp/mibs/
-#############################################################################
-#############################################################################
-
-
-
-import getopt, sys
-import os
-import time
-import select
-import signal
-from glob import glob
-
-#BEGIN_VERSION_GENERATION
-FENCE_RELEASE_NAME=""
-REDHAT_COPYRIGHT=""
-BUILD_DATE=""
-#END_VERSION_GENERATION
-
-POWER_ON="outletOn"
-POWER_OFF="outletOff"
-POWER_REBOOT="outletReboot"
-
-def usage():
- print "Usage:";
- print "";
- print "Options:";
- print " -a <ip> IP address or hostname of MasterSwitch";
- print " -h usage";
- print " -l <name> Login name";
- print " -n <num> Outlet number to change";
- print " -o <string> Action: Reboot (default), Off or On";
- print " -p <string> Login password";
- print " -q quiet mode";
- print " -V version";
- print " -v Log to file /tmp/apclog";
-
- print sys.argv
- sys.exit(0);
-
-
-
-def main():
- apc_base = "enterprises.apc.products.hardware."
- apc_outletctl = "masterswitch.sPDUOutletControl.sPDUOutletControlTable.sPDUOutletControlEntry.sPDUOutletCtl."
- apc_outletstatus = "masterswitch.sPDUOutletStatus.sPDUOutletStatusMSPTable.sPDUOutletStatusMSPEntry.sPDUOutletStatusMSP."
-
- address = ""
- output = ""
- port = ""
- action = "outletReboot"
- status_check = False
- verbose = False
-
- if not glob('/usr/share/snmp/mibs/powernet*.mib'):
- sys.stderr.write('This APC Fence script uses snmp to control the APC power switch. This script requires that net-snmp-utils be installed on all nodes in the cluster, and that the powernet369.mib file be located in /usr/share/snmp/mibs/\n')
- sys.exit(1)
-
- if len(sys.argv) > 1:
- try:
- opts, args = getopt.getopt(sys.argv[1:], "a:hl:p:n:o:vV", ["help", "output="])
- except getopt.GetoptError:
- #print help info and quit
- usage()
- sys.exit(2)
-
- for o, a in opts:
- if o == "-v":
- verbose = True
- if o == "-V":
- print "%s\n" % FENCE_RELEASE_NAME
- print "%s\n" % REDHAT_COPYRIGHT
- print "%s\n" % BUILD_DATE
- sys.exit(0)
- if o in ("-h", "--help"):
- usage()
- sys.exit(0)
- if o == "-n":
- port = a
- if o == "-o":
- lcase = a.lower() #Lower case string
- if lcase == "off":
- action = "outletOff"
- elif lcase == "on":
- action = "outletOn"
- elif lcase == "reboot":
- action = "outletReboot"
- elif lcase == "status":
- #action = "sPDUOutletStatusMSPOutletState"
- action = ""
- status_check = True
- else:
- usage()
- sys.exit()
- if o == "-a":
- address = a
-
- if address == "":
- usage()
- sys.exit(1)
-
- if port == "":
- usage()
- sys.exit(1)
-
- else: #Get opts from stdin
- params = {}
- #place params in dict
- for line in sys.stdin:
- val = line.split("=")
- if len(val) == 2:
- params[val[0].strip()] = val[1].strip()
-
- try:
- address = params["ipaddr"]
- except KeyError, e:
- sys.stderr.write("FENCE: Missing ipaddr param for fence_apc...exiting")
- sys.exit(1)
- try:
- login = params["login"]
- except KeyError, e:
- sys.stderr.write("FENCE: Missing login param for fence_apc...exiting")
- sys.exit(1)
-
- try:
- passwd = params["passwd"]
- except KeyError, e:
- sys.stderr.write("FENCE: Missing passwd param for fence_apc...exiting")
- sys.exit(1)
-
- try:
- port = params["port"]
- except KeyError, e:
- sys.stderr.write("FENCE: Missing port param for fence_apc...exiting")
- sys.exit(1)
-
-
- try:
- a = params["option"]
- if a == "Off" or a == "OFF" or a == "off":
- action = POWER_OFF
- elif a == "On" or a == "ON" or a == "on":
- action = POWER_ON
- elif a == "Reboot" or a == "REBOOT" or a == "reboot":
- action = POWER_REBOOT
- except KeyError, e:
- action = POWER_REBOOT
-
- ####End of stdin section
-
- apc_command = apc_base + apc_outletctl + port
-
- args_status = list()
- args_off = list()
- args_on = list()
-
- args_status.append("/usr/bin/snmpget")
- args_status.append("-Oqu") #sets printing options
- args_status.append("-v")
- args_status.append("1")
- args_status.append("-c")
- args_status.append("private")
- args_status.append("-m")
- args_status.append("ALL")
- args_status.append(address)
- args_status.append(apc_command)
-
- args_off.append("/usr/bin/snmpset")
- args_off.append("-Oqu") #sets printing options
- args_off.append("-v")
- args_off.append("1")
- args_off.append("-c")
- args_off.append("private")
- args_off.append("-m")
- args_off.append("ALL")
- args_off.append(address)
- args_off.append(apc_command)
- args_off.append("i")
- args_off.append("outletOff")
-
- args_on.append("/usr/bin/snmpset")
- args_on.append("-Oqu") #sets printing options
- args_on.append("-v")
- args_on.append("1")
- args_on.append("-c")
- args_on.append("private")
- args_on.append("-m")
- args_on.append("ALL")
- args_on.append(address)
- args_on.append(apc_command)
- args_on.append("i")
- args_on.append("outletOn")
-
- cmdstr_status = ' '.join(args_status)
- cmdstr_off = ' '.join(args_off)
- cmdstr_on = ' '.join(args_on)
-
-##This section issues the actual commands. Reboot is split into
-##Off, then On to make certain both actions work as planned.
-##
-##The status command just dumps the outlet status to stdout.
-##The status checks that are made when turning an outlet on or off, though,
-##use the execWithCaptureStatus so that the stdout from snmpget can be
-##examined and the desired operation confirmed.
-
- if status_check:
- if verbose:
- fd = open("/tmp/apclog", "w")
- fd.write("Attempting the following command: %s\n" % cmdstr_status)
- strr = os.system(cmdstr_status)
- print strr
- if verbose:
- fd.write("Result: %s\n" % strr)
- fd.close()
-
- else:
- if action == POWER_OFF:
- if verbose:
- fd = open("/tmp/apclog", "w")
- fd.write("Attempting the following command: %s\n" % cmdstr_off)
- strr = os.system(cmdstr_off)
- time.sleep(1)
- strr,code = execWithCaptureStatus("/usr/bin/snmpget",args_status)
- if verbose:
- fd.write("Result: %s\n" % strr)
- fd.close()
- if strr.find(POWER_OFF) >= 0:
- print "Success. Outlet off"
- sys.exit(0)
- else:
- if verbose:
- fd.write("Unable to power off apc outlet")
- fd.close()
- sys.exit(1)
-
- elif action == POWER_ON:
- if verbose:
- fd = open("/tmp/apclog", "w")
- fd.write("Attempting the following command: %s\n" % cmdstr_on)
- strr = os.system(cmdstr_on)
- time.sleep(1)
- strr,code = execWithCaptureStatus("/usr/bin/snmpget",args_status)
- #strr = os.system(cmdstr_status)
- if verbose:
- fd.write("Result: %s\n" % strr)
- if strr.find(POWER_ON) >= 0:
- if verbose:
- fd.close()
- print "Success. Outlet On."
- sys.exit(0)
- else:
- print "Unable to power on apc outlet"
- if verbose:
- fd.write("Unable to power on apc outlet")
- fd.close()
- sys.exit(1)
-
- elif action == POWER_REBOOT:
- if verbose:
- fd = open("/tmp/apclog", "w")
- fd.write("Attempting the following command: %s\n" % cmdstr_off)
- strr = os.system(cmdstr_off)
- time.sleep(1)
- strr,code = execWithCaptureStatus("/usr/bin/snmpget",args_status)
- #strr = os.system(cmdstr_status)
- if verbose:
- fd.write("Result: %s\n" % strr)
- if strr.find(POWER_OFF) < 0:
- print "Unable to power off apc outlet"
- if verbose:
- fd.write("Unable to power off apc outlet")
- fd.close()
- sys.exit(1)
-
- if verbose:
- fd.write("Attempting the following command: %s\n" % cmdstr_on)
- strr = os.system(cmdstr_on)
- time.sleep(1)
- strr,code = execWithCaptureStatus("/usr/bin/snmpget",args_status)
- #strr = os.system(cmdstr_status)
- if verbose:
- fd.write("Result: %s\n" % strr)
- if strr.find(POWER_ON) >= 0:
- if verbose:
- fd.close()
- print "Success: Outlet Rebooted."
- sys.exit(0)
- else:
- print "Unable to power on apc outlet"
- if verbose:
- fd.write("Unable to power on apc outlet")
- fd.close()
- sys.exit(1)
-
-def execWithCaptureStatus(command, argv, searchPath = 0, root = '/', stdin = 0,
- catchfd = 1, closefd = -1):
-
- if not os.access (root + command, os.X_OK):
- raise RuntimeError, command + " cannot be run"
-
- (read, write) = os.pipe()
-
- childpid = os.fork()
- if (not childpid):
- if (root and root != '/'): os.chroot (root)
- if isinstance(catchfd, tuple):
- for fd in catchfd:
- os.dup2(write, fd)
- else:
- os.dup2(write, catchfd)
- os.close(write)
- os.close(read)
-
- if closefd != -1:
- os.close(closefd)
-
- if stdin:
- os.dup2(stdin, 0)
- os.close(stdin)
-
- if (searchPath):
- os.execvp(command, argv)
- else:
- os.execv(command, argv)
-
- sys.exit(1)
-
- os.close(write)
-
- rc = ""
- s = "1"
- while (s):
- select.select([read], [], [])
- s = os.read(read, 1000)
- rc = rc + s
-
- os.close(read)
-
- pid = -1
- status = -1
- try:
- (pid, status) = os.waitpid(childpid, 0)
- except OSError, (errno, msg):
- print __name__, "waitpid:", msg
-
- if os.WIFEXITED(status) and (os.WEXITSTATUS(status) == 0):
- status = os.WEXITSTATUS(status)
- else:
- status = -1
-
- return (rc, status)
-
-if __name__ == "__main__":
- main()
« no previous file with comments | « conmux/drivers/dli-lpc ('k') | conmux/drivers/module.mk » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698