Gitweb: http://git.fedorahosted.org/git/fence-agents.git?p=fence-agents.git;a=commitdiff;h=7ba70e33140d9346d98f78a93dc97c37e065bf8f Commit: 7ba70e33140d9346d98f78a93dc97c37e065bf8f Parent: 4fa914ea8252924d607c663f113a11e4dc362aa3 Author: Marek 'marx' Grac <mgrac@redhat.com> AuthorDate: Thu Jul 30 13:07:00 2009 +0200 Committer: Marek 'marx' Grac <mgrac@redhat.com> CommitterDate: Thu Jul 30 13:07:00 2009 +0200 fencing: #508722 - Fence agent for HP iLO 2 MP New fence agent for HP iLO2 MP used in Blade Servers. It uses SMASH interface over telnet/ssh. fence_ilo uses RIBCL over SSL what is not supported on these machines. --- fence/agents/Makefile.am | 1 + fence/agents/ilo_mp/Makefile.am | 12 ++++++ fence/agents/ilo_mp/fence_ilo_mp.py | 66 +++++++++++++++++++++++++++++++++++ 3 files changed, 79 insertions(+), 0 deletions(-) diff --git a/fence/agents/Makefile.am b/fence/agents/Makefile.am index 453993f..aea77ac 100644 --- a/fence/agents/Makefile.am +++ b/fence/agents/Makefile.am @@ -15,6 +15,7 @@ SUBDIRS = alom \ ibmblade \ ifmib \ ilo \ + ilo_mp \ intelmodular \ ipmilan \ ldom \ diff --git a/fence/agents/ilo_mp/Makefile.am b/fence/agents/ilo_mp/Makefile.am new file mode 100644 index 0000000..c961ba3 --- /dev/null +++ b/fence/agents/ilo_mp/Makefile.am @@ -0,0 +1,12 @@ +MAINTAINERCLEANFILES = Makefile.in + +TARGET = fence_ilo_mp + +EXTRA_DIST = $(TARGET).py + +sbin_SCRIPTS = $(TARGET) + +include $(top_srcdir)/make/fencebuild.mk + +clean-local: + rm -f $(TARGET) diff --git a/fence/agents/ilo_mp/fence_ilo_mp.py b/fence/agents/ilo_mp/fence_ilo_mp.py new file mode 100644 index 0000000..511ff4b --- /dev/null +++ b/fence/agents/ilo_mp/fence_ilo_mp.py @@ -0,0 +1,66 @@ +#!/usr/bin/python + +## +## Copyright (C) 2008 Red Hat, Inc. All Rights Reserved. +## +##### + +import sys, re, pexpect, socket +sys.path.append("@FENCEAGENTSLIBDIR@") +from fencing import * + +#BEGIN_VERSION_GENERATION +FENCE_RELEASE_NAME="" +REDHAT_COPYRIGHT="" +BUILD_DATE="" +#END_VERSION_GENERATION + +def get_power_status(conn, options): + conn.send("show /system1\n") + conn.log_expect(options, "EnabledState=(.*)", POWER_TIMEOUT) + + status = conn.match.group(1) + + if status.startswith("Enabled"): + return "on" + else: + return "off" + +def set_power_status(conn, options): + if options["-o"] == "on": + conn.send("start /system1\n") + else: + conn.send("stop -f /system1\n") + return + +def main(): + device_opt = [ "help", "version", "agent", "quiet", "verbose", "debug", + "action", "ipaddr", "login", "passwd", "passwd_script", + "secure", "cmd_prompt", "ipport", "login_eol_lf", + "separator", "inet4_only", "inet6_only" ] + + atexit.register(atexit_handler) + + options = check_input(device_opt, process_input(device_opt)) + if 0 == options.has_key("-c"): + options["-c"] = "MP>" + + show_docs(options) + + conn = fence_login(options) + conn.send("SMCLP\n") + + ## + ## Fence operations + #### + fence_action(conn, options, set_power_status, get_power_status) + + try: + conn.send("exit\n") + except exceptions.OSError: + pass + except pexpect.ExceptionPexpect: + pass + +if __name__ == "__main__": + main()