Gitweb:
http://git.fedorahosted.org/git/fence-agents.git?p=fence-agents.git;a=com...
Commit: 894b0332d8058742151e92f3c1f4c9086e214638
Parent: 3c931231267aa1030b0ee2a2cc1e95271f76ecd5
Author: Marek 'marx' Grac <mgrac(a)redhat.com>
AuthorDate: Wed Sep 23 17:19:01 2009 +0200
Committer: Marek 'marx' Grac <mgrac(a)redhat.com>
CommitterDate: Wed Sep 23 17:19:01 2009 +0200
fence_drac: Split fence agents drac/drac5 to separate directories
Fence agents fence_drac/fence_drac5 were only one that resides in same
directory. This patch creates new directory drac5/ were fence_drac5 was
moved.
---
configure.ac | 1 +
fence/agents/Makefile.am | 1 +
fence/agents/drac/Makefile.am | 4 +-
fence/agents/drac/fence_drac5.py | 131 -------------------------------------
fence/agents/drac5/Makefile.am | 12 ++++
fence/agents/drac5/fence_drac5.py | 131 +++++++++++++++++++++++++++++++++++++
6 files changed, 147 insertions(+), 133 deletions(-)
diff --git a/configure.ac b/configure.ac
index da47c76..b1b87ad 100644
--- a/configure.ac
+++ b/configure.ac
@@ -248,6 +248,7 @@ AC_CONFIG_FILES([Makefile
fence/agents/cisco_mds/Makefile
fence/agents/cpint/Makefile
fence/agents/drac/Makefile
+ fence/agents/drac5/Makefile
fence/agents/egenera/Makefile
fence/agents/eps/Makefile
fence/agents/ibmblade/Makefile
diff --git a/fence/agents/Makefile.am b/fence/agents/Makefile.am
index aea77ac..abf1397 100644
--- a/fence/agents/Makefile.am
+++ b/fence/agents/Makefile.am
@@ -10,6 +10,7 @@ SUBDIRS = alom \
cisco_mds \
cpint \
drac \
+ drac5 \
egenera \
eps \
ibmblade \
diff --git a/fence/agents/drac/Makefile.am b/fence/agents/drac/Makefile.am
index 92098fa..24e0464 100644
--- a/fence/agents/drac/Makefile.am
+++ b/fence/agents/drac/Makefile.am
@@ -1,8 +1,8 @@
MAINTAINERCLEANFILES = Makefile.in
-TARGET = fence_drac fence_drac5
+TARGET = fence_drac
-EXTRA_DIST = fence_drac.pl fence_drac5.py
+EXTRA_DIST = fence_drac.pl
sbin_SCRIPTS = $(TARGET)
diff --git a/fence/agents/drac/fence_drac5.py b/fence/agents/drac/fence_drac5.py
deleted file mode 100755
index 231fd06..0000000
--- a/fence/agents/drac/fence_drac5.py
+++ /dev/null
@@ -1,131 +0,0 @@
-#!/usr/bin/python
-
-#####
-##
-## The Following Agent Has Been Tested On:
-##
-## DRAC Version Firmware
-## +-----------------+---------------------------+
-## DRAC 5 1.0 (Build 06.05.12)
-## DRAC 5 1.21 (Build 07.05.04)
-##
-## @note: drac_version was removed
-#####
-
-import sys, re, pexpect, exceptions
-sys.path.append("@FENCEAGENTSLIBDIR@")
-from fencing import *
-
-#BEGIN_VERSION_GENERATION
-RELEASE_VERSION="New Drac5 Agent - test release on steroids"
-REDHAT_COPYRIGHT=""
-BUILD_DATE="March, 2008"
-#END_VERSION_GENERATION
-
-def get_power_status(conn, options):
- try:
- if options["model"] == "DRAC CMC":
- conn.sendline("racadm serveraction powerstatus -m " +
options["-m"])
- elif options["model"] == "DRAC 5":
- conn.sendline("racadm serveraction powerstatus")
-
- conn.log_expect(options, options["-c"], SHELL_TIMEOUT)
- except pexpect.EOF:
- fail(EC_CONNECTION_LOST)
- except pexpect.TIMEOUT:
- fail(EC_TIMED_OUT)
-
- status = re.compile("(^|: )(ON|OFF|Powering ON|Powering OFF)\s*$",
re.IGNORECASE | re.MULTILINE).search(conn.before).group(2)
- if status.lower().strip() in ["on", "powering on", "powering
off"]:
- return "on"
- else:
- return "off"
-
-def set_power_status(conn, options):
- action = {
- 'on' : "powerup",
- 'off': "powerdown"
- }[options["-o"]]
-
- try:
- if options["model"] == "DRAC CMC":
- conn.sendline("racadm serveraction " + action + " -m " +
options["-m"])
- elif options["model"] == "DRAC 5":
- conn.sendline("racadm serveraction " + action)
- conn.log_expect(options, options["-c"], POWER_TIMEOUT)
- except pexpect.EOF:
- fail(EC_CONNECTION_LOST)
- except pexpect.TIMEOUT:
- fail(EC_TIMED_OUT)
-
-def get_list_devices(conn, options):
- outlets = { }
-
- try:
- if options["model"] == "DRAC CMC":
- conn.sendline("getmodinfo")
-
- list_re = re.compile("^([^\s]*?)\s+Present\s*(ON|OFF)\s*.*$")
- for line in conn.before.splitlines():
- if (list_re.search(line)):
- outlets[list_re.search(line).group(1)] = ("",
list_re.search(line).group(2))
- conn.log_expect(options, options["-c"], POWER_TIMEOUT)
- elif options["model"] == "DRAC 5":
- ## DRAC 5 can be used only for one computer
- pass
- except pexpect.EOF:
- fail(EC_CONNECTION_LOST)
- except pexpect.TIMEOUT:
- fail(EC_TIMED_OUT)
-
- return outlets
-
-def main():
- device_opt = [ "help", "version", "agent",
"quiet", "verbose", "debug",
- "action", "ipaddr", "login", "passwd",
"passwd_script",
- "cmd_prompt", "secure", "drac_version",
"module_name",
- "separator", "inet4_only", "inet6_only",
"ipport" ]
-
- atexit.register(atexit_handler)
-
- options = check_input(device_opt, process_input(device_opt))
-
- ##
- ## Fence agent specific defaults
- #####
- if 0 == options.has_key("-c"):
- options["-c"] = "\$"
-
- show_docs(options)
-
- ##
- ## Operate the fencing device
- ######
- conn = fence_login(options)
-
- if conn.before.find("CMC") >= 0:
- if 0 == options.has_key("-m") and 0 == ["monitor",
"list"].count(option["-o"].lower()):
- fail_usage("Failed: You have to enter module name (-m)")
-
- options["model"]="DRAC CMC"
- elif conn.before.find("DRAC 5") >= 0:
- options["model"]="DRAC 5"
- else:
- ## Assume this is DRAC 5 by default as we don't want to break anything
- options["model"]="DRAC 5"
-
- fence_action(conn, options, set_power_status, get_power_status, get_list_devices)
-
- ##
- ## Logout from system
- ######
- try:
- conn.sendline("exit")
- conn.close()
- except exceptions.OSError:
- pass
- except pexpect.ExceptionPexpect:
- pass
-
-if __name__ == "__main__":
- main()
diff --git a/fence/agents/drac5/Makefile.am b/fence/agents/drac5/Makefile.am
new file mode 100644
index 0000000..e6b26f8
--- /dev/null
+++ b/fence/agents/drac5/Makefile.am
@@ -0,0 +1,12 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+TARGET = fence_drac5
+
+EXTRA_DIST = fence_drac5.py
+
+sbin_SCRIPTS = $(TARGET)
+
+include $(top_srcdir)/make/fencebuild.mk
+
+clean-local:
+ rm -f $(TARGET)
diff --git a/fence/agents/drac5/fence_drac5.py b/fence/agents/drac5/fence_drac5.py
new file mode 100644
index 0000000..231fd06
--- /dev/null
+++ b/fence/agents/drac5/fence_drac5.py
@@ -0,0 +1,131 @@
+#!/usr/bin/python
+
+#####
+##
+## The Following Agent Has Been Tested On:
+##
+## DRAC Version Firmware
+## +-----------------+---------------------------+
+## DRAC 5 1.0 (Build 06.05.12)
+## DRAC 5 1.21 (Build 07.05.04)
+##
+## @note: drac_version was removed
+#####
+
+import sys, re, pexpect, exceptions
+sys.path.append("@FENCEAGENTSLIBDIR@")
+from fencing import *
+
+#BEGIN_VERSION_GENERATION
+RELEASE_VERSION="New Drac5 Agent - test release on steroids"
+REDHAT_COPYRIGHT=""
+BUILD_DATE="March, 2008"
+#END_VERSION_GENERATION
+
+def get_power_status(conn, options):
+ try:
+ if options["model"] == "DRAC CMC":
+ conn.sendline("racadm serveraction powerstatus -m " +
options["-m"])
+ elif options["model"] == "DRAC 5":
+ conn.sendline("racadm serveraction powerstatus")
+
+ conn.log_expect(options, options["-c"], SHELL_TIMEOUT)
+ except pexpect.EOF:
+ fail(EC_CONNECTION_LOST)
+ except pexpect.TIMEOUT:
+ fail(EC_TIMED_OUT)
+
+ status = re.compile("(^|: )(ON|OFF|Powering ON|Powering OFF)\s*$",
re.IGNORECASE | re.MULTILINE).search(conn.before).group(2)
+ if status.lower().strip() in ["on", "powering on", "powering
off"]:
+ return "on"
+ else:
+ return "off"
+
+def set_power_status(conn, options):
+ action = {
+ 'on' : "powerup",
+ 'off': "powerdown"
+ }[options["-o"]]
+
+ try:
+ if options["model"] == "DRAC CMC":
+ conn.sendline("racadm serveraction " + action + " -m " +
options["-m"])
+ elif options["model"] == "DRAC 5":
+ conn.sendline("racadm serveraction " + action)
+ conn.log_expect(options, options["-c"], POWER_TIMEOUT)
+ except pexpect.EOF:
+ fail(EC_CONNECTION_LOST)
+ except pexpect.TIMEOUT:
+ fail(EC_TIMED_OUT)
+
+def get_list_devices(conn, options):
+ outlets = { }
+
+ try:
+ if options["model"] == "DRAC CMC":
+ conn.sendline("getmodinfo")
+
+ list_re = re.compile("^([^\s]*?)\s+Present\s*(ON|OFF)\s*.*$")
+ for line in conn.before.splitlines():
+ if (list_re.search(line)):
+ outlets[list_re.search(line).group(1)] = ("",
list_re.search(line).group(2))
+ conn.log_expect(options, options["-c"], POWER_TIMEOUT)
+ elif options["model"] == "DRAC 5":
+ ## DRAC 5 can be used only for one computer
+ pass
+ except pexpect.EOF:
+ fail(EC_CONNECTION_LOST)
+ except pexpect.TIMEOUT:
+ fail(EC_TIMED_OUT)
+
+ return outlets
+
+def main():
+ device_opt = [ "help", "version", "agent",
"quiet", "verbose", "debug",
+ "action", "ipaddr", "login", "passwd",
"passwd_script",
+ "cmd_prompt", "secure", "drac_version",
"module_name",
+ "separator", "inet4_only", "inet6_only",
"ipport" ]
+
+ atexit.register(atexit_handler)
+
+ options = check_input(device_opt, process_input(device_opt))
+
+ ##
+ ## Fence agent specific defaults
+ #####
+ if 0 == options.has_key("-c"):
+ options["-c"] = "\$"
+
+ show_docs(options)
+
+ ##
+ ## Operate the fencing device
+ ######
+ conn = fence_login(options)
+
+ if conn.before.find("CMC") >= 0:
+ if 0 == options.has_key("-m") and 0 == ["monitor",
"list"].count(option["-o"].lower()):
+ fail_usage("Failed: You have to enter module name (-m)")
+
+ options["model"]="DRAC CMC"
+ elif conn.before.find("DRAC 5") >= 0:
+ options["model"]="DRAC 5"
+ else:
+ ## Assume this is DRAC 5 by default as we don't want to break anything
+ options["model"]="DRAC 5"
+
+ fence_action(conn, options, set_power_status, get_power_status, get_list_devices)
+
+ ##
+ ## Logout from system
+ ######
+ try:
+ conn.sendline("exit")
+ conn.close()
+ except exceptions.OSError:
+ pass
+ except pexpect.ExceptionPexpect:
+ pass
+
+if __name__ == "__main__":
+ main()