diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 06:50:17 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 06:50:17 +0000 |
commit | 86ed03f8adee56c050c73018537371c230a664a6 (patch) | |
tree | eae3d04cdf1c49848e5a671327ab38297f4acb0d /agents/rsa/fence_rsa.py | |
parent | Initial commit. (diff) | |
download | fence-agents-upstream/4.12.1.tar.xz fence-agents-upstream/4.12.1.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/rsa/fence_rsa.py')
-rw-r--r-- | agents/rsa/fence_rsa.py | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/agents/rsa/fence_rsa.py b/agents/rsa/fence_rsa.py new file mode 100644 index 0000000..44fdd9d --- /dev/null +++ b/agents/rsa/fence_rsa.py @@ -0,0 +1,63 @@ +#!@PYTHON@ -tt + +##### +## +## The Following Agent Has Been Tested On: +## Main GFEP25A & Boot GFBP25A +## +##### + +import sys, re +import atexit +sys.path.append("@FENCEAGENTSLIBDIR@") +from fencing import * + +def get_power_status(conn, options): + conn.send_eol("power state") + conn.log_expect(options["--command-prompt"], int(options["--shell-timeout"])) + + match = re.compile("Power: (.*)", re.IGNORECASE).search(conn.before) + if match != None: + status = match.group(1) + else: + status = "undefined" + + return status.lower().strip() + +def set_power_status(conn, options): + conn.send_eol("power " + options["--action"]) + conn.log_expect(options["--command-prompt"], int(options["--power-timeout"])) + +def main(): + device_opt = ["ipaddr", "login", "passwd", "cmd_prompt", "secure", "telnet"] + + atexit.register(atexit_handler) + + all_opt["login_timeout"]["default"] = 10 + all_opt["cmd_prompt"]["default"] = [">"] + # This device will not allow us to login even with LANG=C + all_opt["ssh_options"]["default"] = "-F /dev/null" + + options = check_input(device_opt, process_input(device_opt)) + + docs = {} + docs["shortdesc"] = "Fence agent for IBM RSA" + docs["longdesc"] = "fence_rsa is an I/O Fencing agent \ +which can be used with the IBM RSA II management interface. It \ +logs into an RSA II device via telnet and reboots the associated \ +machine. Lengthy telnet connections to the RSA II device should \ +be avoided while a GFS cluster is running because the connection \ +will block any necessary fencing actions." + docs["vendorurl"] = "http://www.ibm.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, "exit") + sys.exit(result) + +if __name__ == "__main__": + main() |