summaryrefslogtreecommitdiffstats
path: root/agents/alom/fence_alom.py
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 06:50:17 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 06:50:17 +0000
commit86ed03f8adee56c050c73018537371c230a664a6 (patch)
treeeae3d04cdf1c49848e5a671327ab38297f4acb0d /agents/alom/fence_alom.py
parentInitial commit. (diff)
downloadfence-agents-upstream.tar.xz
fence-agents-upstream.zip
Adding upstream version 4.12.1.upstream/4.12.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'agents/alom/fence_alom.py')
-rw-r--r--agents/alom/fence_alom.py53
1 files changed, 53 insertions, 0 deletions
diff --git a/agents/alom/fence_alom.py b/agents/alom/fence_alom.py
new file mode 100644
index 0000000..7b03dc2
--- /dev/null
+++ b/agents/alom/fence_alom.py
@@ -0,0 +1,53 @@
+#!@PYTHON@ -tt
+
+# The Following Agent Has Been Tested On:
+#
+# Sun(tm) Advanced Lights Out Manager CMT v1.6.1
+# as found on SUN T2000 Niagara
+
+import sys, re, time
+import atexit
+sys.path.append("@FENCEAGENTSLIBDIR@")
+from fencing import *
+
+def get_power_status(conn, options):
+ conn.send_eol("showplatform")
+ conn.log_expect(options["--command-prompt"], int(options["--shell-timeout"]))
+ status = re.search("standby", conn.before.lower())
+ result = (status != None and "off" or "on")
+
+ return result
+
+def set_power_status(conn, options):
+ cmd_line = (options["--action"] == "on" and "poweron" or "poweroff -f -y")
+ conn.send_eol(cmd_line)
+ conn.log_expect(options["--command-prompt"], int(options["--power-timeout"]))
+ # Get the machine some time between poweron and poweroff
+ time.sleep(int(options["--power-timeout"]))
+
+def main():
+ device_opt = ["ipaddr", "login", "passwd", "cmd_prompt", "secure"]
+
+ atexit.register(atexit_handler)
+
+ all_opt["secure"]["default"] = "1"
+ all_opt["cmd_prompt"]["default"] = [r"sc\>\ "]
+
+ options = check_input(device_opt, process_input(device_opt))
+ options["telnet_over_ssh"] = 1
+
+ docs = {}
+ docs["shortdesc"] = "Fence agent for Sun ALOM"
+ docs["longdesc"] = "fence_alom is an I/O Fencing \
+agent which can be used with ALOM connected machines."
+ docs["vendorurl"] = "http://www.sun.com"
+ show_docs(options, docs)
+
+ # Operate the fencing device
+ conn = fence_login(options)
+ result = fence_action(conn, options, set_power_status, get_power_status, None)
+ fence_logout(conn, "logout")
+ sys.exit(result)
+
+if __name__ == "__main__":
+ main()