fence-agents: master - fence_sanbox2: Support operation 'list' for sanbox2
Marek Grác
marx at fedoraproject.org
Fri Oct 9 09:48:38 UTC 2009
Gitweb: http://git.fedorahosted.org/git/fence-agents.git?p=fence-agents.git;a=commitdiff;h=a456efcf471711f20dd80db5150da7f0ecf937c7
Commit: a456efcf471711f20dd80db5150da7f0ecf937c7
Parent: f534acd99ad0bacdb85a1580d5c3c25997927957
Author: Marek 'marx' Grac <mgrac at redhat.com>
AuthorDate: Fri Oct 9 11:46:33 2009 +0200
Committer: Marek 'marx' Grac <mgrac at redhat.com>
CommitterDate: Fri Oct 9 11:48:41 2009 +0200
fence_sanbox2: Support operation 'list' for sanbox2
---
fence/agents/sanbox2/fence_sanbox2.py | 50 +++++++++++++++++++++++++++++++-
1 files changed, 48 insertions(+), 2 deletions(-)
diff --git a/fence/agents/sanbox2/fence_sanbox2.py b/fence/agents/sanbox2/fence_sanbox2.py
index 79d1f02..d7b5335 100644
--- a/fence/agents/sanbox2/fence_sanbox2.py
+++ b/fence/agents/sanbox2/fence_sanbox2.py
@@ -29,6 +29,12 @@ def get_power_status(conn, options):
except pexpect.EOF:
fail(EC_CONNECTION_LOST)
except pexpect.TIMEOUT:
+ try:
+ conn.send("admin end\n")
+ conn.send("exit\n")
+ conn.close()
+ except:
+ pass
fail(EC_TIMED_OUT)
status = re.compile(".*AdminState\s+(online|offline)\s+", re.IGNORECASE | re.MULTILINE).search(conn.before).group(1)
@@ -50,6 +56,12 @@ def set_power_status(conn, options):
except pexpect.EOF:
fail(EC_CONNECTION_LOST)
except pexpect.TIMEOUT:
+ try:
+ conn.send("admin end\n")
+ conn.send("exit\n")
+ conn.close()
+ except:
+ pass
fail(EC_TIMED_OUT)
try:
@@ -58,12 +70,46 @@ def set_power_status(conn, options):
except pexpect.EOF:
fail(EC_CONNECTION_LOST)
except pexpect.TIMEOUT:
+ try:
+ conn.send("admin end\n")
+ conn.send("exit\n")
+ conn.close()
+ except:
fail(EC_TIMED_OUT)
+def get_list_devices(conn, options):
+ outlets = { }
+
+ try:
+ conn.send("show port" + "\n")
+ conn.log_expect(options, options["-c"], SHELL_TIMEOUT)
+
+ list_re = re.compile("^\s+(\d+?)\s+(Online|Offline)\s+", re.IGNORECASE)
+ for line in conn.before.splitlines():
+ if (list_re.search(line)):
+ status = {
+ 'online' : "ON",
+ 'offline' : "OFF"
+ }[list_re.search(line).group(2).lower()]
+ outlets[list_re.search(line).group(1)] = ("", status)
+
+ except pexpect.EOF:
+ fail(EC_CONNECTION_LOST)
+ except pexpect.TIMEOUT:
+ try:
+ conn.send("admin end\n")
+ conn.send("exit\n")
+ conn.close()
+ except:
+ pass
+ fail(EC_TIMED_OUT)
+
+ return outlets
+
def main():
device_opt = [ "help", "version", "agent", "quiet", "verbose", "debug",
"io_fencing", "ipaddr", "login", "passwd", "passwd_script",
- "cmd_prompt", "port", "ipport", "login_eol_lf" ]
+ "cmd_prompt", "port", "ipport", "login_eol_lf", "separator" ]
atexit.register(atexit_handler)
@@ -91,7 +137,7 @@ def main():
sys.stderr.write("Failed: Unable to switch to admin section\n")
sys.exit(EC_GENERIC_ERROR)
- fence_action(conn, options, set_power_status, get_power_status)
+ fence_action(conn, options, set_power_status, get_power_status, get_list_devices)
##
## Logout from system
More information about the cluster-commits
mailing list