fence-agents: v4.0.11 annotated tag has been created
by Marek Grác
Gitweb: http://git.fedorahosted.org/git/?p=fence-agents.git;a=commitdiff;h=28b2bd...
Commit: 28b2bdf4efba2d07bac212439ba2393834069f17
Parent: 0000000000000000000000000000000000000000
Author: Marek 'marx' Grac <mgrac(a)redhat.com>
AuthorDate: 2014-08-27 13:52 +0000
Committer: Marek 'marx' Grac <mgrac(a)redhat.com>
CommitterDate: 2014-08-27 13:52 +0000
annotated tag: v4.0.11 has been created
at 28b2bdf4efba2d07bac212439ba2393834069f17 (tag)
tagging f39e207a4672bcedc9d8ad1699de086db2c69334 (commit)
replaces v4.0.10
v4.0.11 release
Marek 'marx' Grac (13):
[build] Fix building of fence_scsi_check
fence_brocade: Add support for 'list' action
fencing: Monitor is not working correctly without 'list' or 'status'
fencing: Replace syslog.syslog() calls with new logging handler
fencing: 'nodename' should not be logged as ignored argument
Fix usage of non-existent function
fence_apc_snmp: Add support for firmware 6.x
fence_ilo_moonshot: New fence agent for HP Moonshot iLO
fence_zvm: Add support for "on" and "status"
fence_zvm: Add current XML metadata to test suite
fence_ilo_moonshot: Add current XML metadata to test suite
[build] Fix automake files, so 'make distcheck' works
[build] fence_scsi_check is generated during build time
9 years, 7 months
fence-agents: master - [build] Fix automake files, so 'make distcheck' works
by Marek Grác
Gitweb: http://git.fedorahosted.org/git/?p=fence-agents.git;a=commitdiff;h=6a0d0f...
Commit: 6a0d0f3c2dc3bb91107a4a84b734925af736332a
Parent: dddd66cd55d9607681d1a42da18c7b8cac0eab22
Author: Marek 'marx' Grac <mgrac(a)redhat.com>
AuthorDate: Wed Aug 27 15:18:01 2014 +0200
Committer: Marek 'marx' Grac <mgrac(a)redhat.com>
CommitterDate: Wed Aug 27 15:18:01 2014 +0200
[build] Fix automake files, so 'make distcheck' works
---
Makefile.am | 2 +-
fence/agents/Makefile.am | 3 +--
fence/agents/scsi/Makefile.am | 2 +-
3 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index e70dac5..5e2e22d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -15,7 +15,7 @@ noinst_HEADERS = make/copyright.cf
ACLOCAL_AMFLAGS = -I m4
-SUBDIRS = fence doc
+SUBDIRS = fence/agents/lib fence doc
install-exec-local:
$(INSTALL) -d $(DESTDIR)/$(LOGDIR)
diff --git a/fence/agents/Makefile.am b/fence/agents/Makefile.am
index c47f5d5..3b76b9a 100644
--- a/fence/agents/Makefile.am
+++ b/fence/agents/Makefile.am
@@ -1,4 +1,3 @@
MAINTAINERCLEANFILES = Makefile.in
-SUBDIRS = lib \
- $(AGENTS_LIST)
+SUBDIRS = $(AGENTS_LIST)
diff --git a/fence/agents/scsi/Makefile.am b/fence/agents/scsi/Makefile.am
index c82e043..b2a4fbf 100644
--- a/fence/agents/scsi/Makefile.am
+++ b/fence/agents/scsi/Makefile.am
@@ -24,4 +24,4 @@ include $(top_srcdir)/make/fenceman.mk
include $(top_srcdir)/make/agentpycheck.mk
clean-local: clean-man
- rm -f $(TARGET) $(SYMTARGET)
+ rm -f $(TARGET) $(SYMTARGET) fence_scsi_check
9 years, 7 months
fence-agents: master - fence_ilo_moonshot: Add current XML metadata to test suite
by Marek Grác
Gitweb: http://git.fedorahosted.org/git/?p=fence-agents.git;a=commitdiff;h=dddd66...
Commit: dddd66cd55d9607681d1a42da18c7b8cac0eab22
Parent: 7d6f45b3151edbe85a3220d4f8ca6cfda5db48f1
Author: Marek 'marx' Grac <mgrac(a)redhat.com>
AuthorDate: Wed Aug 27 13:45:25 2014 +0200
Committer: Marek 'marx' Grac <mgrac(a)redhat.com>
CommitterDate: Wed Aug 27 13:45:25 2014 +0200
fence_ilo_moonshot: Add current XML metadata to test suite
---
fence/agents/ilo_moonshot/Makefile.am | 2 +-
tests/data/metadata/fence_ilo_moonshot.xml | 136 ++++++++++++++++++++++++++++
2 files changed, 137 insertions(+), 1 deletions(-)
diff --git a/fence/agents/ilo_moonshot/Makefile.am b/fence/agents/ilo_moonshot/Makefile.am
index fe8c5da..b66c46b 100644
--- a/fence/agents/ilo_moonshot/Makefile.am
+++ b/fence/agents/ilo_moonshot/Makefile.am
@@ -10,7 +10,7 @@ sbin_SCRIPTS = $(TARGET)
man_MANS = $(TARGET).8
-FENCE_TEST_ARGS = -l test -p test -a test
+FENCE_TEST_ARGS = -l test -p test -a test -n 1
include $(top_srcdir)/make/fencebuild.mk
include $(top_srcdir)/make/fenceman.mk
diff --git a/tests/data/metadata/fence_ilo_moonshot.xml b/tests/data/metadata/fence_ilo_moonshot.xml
new file mode 100644
index 0000000..d7f2bc9
--- /dev/null
+++ b/tests/data/metadata/fence_ilo_moonshot.xml
@@ -0,0 +1,136 @@
+<?xml version="1.0" ?>
+<resource-agent name="fence_ilo_moonshot" shortdesc="Fence agent for HP Moonshot iLO" >
+<longdesc></longdesc>
+<vendor-url>http://www.hp.com</vendor-url>
+<parameters>
+ <parameter name="ipport" unique="0" required="0">
+ <getopt mixed="-u, --ipport=[port]" />
+ <content type="string" default="22" />
+ <shortdesc lang="en">TCP/UDP port to use for connection with device</shortdesc>
+ </parameter>
+ <parameter name="ipaddr" unique="0" required="1">
+ <getopt mixed="-a, --ip=[ip]" />
+ <content type="string" />
+ <shortdesc lang="en">IP Address or Hostname</shortdesc>
+ </parameter>
+ <parameter name="port" unique="0" required="1">
+ <getopt mixed="-n, --plug=[id]" />
+ <content type="string" />
+ <shortdesc lang="en">Physical plug number, name of virtual machine or UUID</shortdesc>
+ </parameter>
+ <parameter name="secure" unique="0" required="0">
+ <getopt mixed="-x, --ssh" />
+ <content type="boolean" default="1" />
+ <shortdesc lang="en">SSH connection</shortdesc>
+ </parameter>
+ <parameter name="cmd_prompt" unique="0" required="0">
+ <getopt mixed="-c, --command-prompt=[prompt]" />
+ <content type="string" default="['MP>', 'hpiLO->']" />
+ <shortdesc lang="en">Force Python regex for command prompt</shortdesc>
+ </parameter>
+ <parameter name="inet6_only" unique="0" required="0">
+ <getopt mixed="-6, --inet6-only" />
+ <content type="boolean" />
+ <shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc>
+ </parameter>
+ <parameter name="identity_file" unique="0" required="0">
+ <getopt mixed="-k, --identity-file=[filename]" />
+ <content type="string" />
+ <shortdesc lang="en">Identity file for ssh</shortdesc>
+ </parameter>
+ <parameter name="inet4_only" unique="0" required="0">
+ <getopt mixed="-4, --inet4-only" />
+ <content type="boolean" />
+ <shortdesc lang="en">Forces agent to use IPv4 addresses only</shortdesc>
+ </parameter>
+ <parameter name="passwd_script" unique="0" required="0">
+ <getopt mixed="-S, --password-script=[script]" />
+ <content type="string" />
+ <shortdesc lang="en">Script to retrieve password</shortdesc>
+ </parameter>
+ <parameter name="passwd" unique="0" required="0">
+ <getopt mixed="-p, --password=[password]" />
+ <content type="string" />
+ <shortdesc lang="en">Login password or passphrase</shortdesc>
+ </parameter>
+ <parameter name="ssh_options" unique="0" required="0">
+ <getopt mixed="--ssh-options=[options]" />
+ <content type="string" />
+ <shortdesc lang="en">SSH options to use</shortdesc>
+ </parameter>
+ <parameter name="action" unique="0" required="1">
+ <getopt mixed="-o, --action=[action]" />
+ <content type="string" default="reboot" />
+ <shortdesc lang="en">Fencing Action</shortdesc>
+ </parameter>
+ <parameter name="login" unique="0" required="1">
+ <getopt mixed="-l, --username=[name]" />
+ <content type="string" />
+ <shortdesc lang="en">Login Name</shortdesc>
+ </parameter>
+ <parameter name="verbose" unique="0" required="0">
+ <getopt mixed="-v, --verbose" />
+ <content type="boolean" />
+ <shortdesc lang="en">Verbose mode</shortdesc>
+ </parameter>
+ <parameter name="debug" unique="0" required="0">
+ <getopt mixed="-D, --debug-file=[debugfile]" />
+ <content type="string" />
+ <shortdesc lang="en">Write debug information to given file</shortdesc>
+ </parameter>
+ <parameter name="version" unique="0" required="0">
+ <getopt mixed="-V, --version" />
+ <content type="boolean" />
+ <shortdesc lang="en">Display version information and exit</shortdesc>
+ </parameter>
+ <parameter name="help" unique="0" required="0">
+ <getopt mixed="-h, --help" />
+ <content type="boolean" />
+ <shortdesc lang="en">Display help and exit</shortdesc>
+ </parameter>
+ <parameter name="separator" unique="0" required="0">
+ <getopt mixed="-C, --separator=[char]" />
+ <content type="string" default="," />
+ <shortdesc lang="en">Separator for CSV created by operation list</shortdesc>
+ </parameter>
+ <parameter name="power_wait" unique="0" required="0">
+ <getopt mixed="--power-wait=[seconds]" />
+ <content type="string" default="0" />
+ <shortdesc lang="en">Wait X seconds after issuing ON/OFF</shortdesc>
+ </parameter>
+ <parameter name="login_timeout" unique="0" required="0">
+ <getopt mixed="--login-timeout=[seconds]" />
+ <content type="string" default="5" />
+ <shortdesc lang="en">Wait X seconds for cmd prompt after login</shortdesc>
+ </parameter>
+ <parameter name="power_timeout" unique="0" required="0">
+ <getopt mixed="--power-timeout=[seconds]" />
+ <content type="string" default="20" />
+ <shortdesc lang="en">Test X seconds for status change after ON/OFF</shortdesc>
+ </parameter>
+ <parameter name="delay" unique="0" required="0">
+ <getopt mixed="--delay=[seconds]" />
+ <content type="string" default="0" />
+ <shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
+ </parameter>
+ <parameter name="shell_timeout" unique="0" required="0">
+ <getopt mixed="--shell-timeout=[seconds]" />
+ <content type="string" default="3" />
+ <shortdesc lang="en">Wait X seconds for cmd prompt after issuing command</shortdesc>
+ </parameter>
+ <parameter name="retry_on" unique="0" required="0">
+ <getopt mixed="--retry-on=[attempts]" />
+ <content type="string" default="1" />
+ <shortdesc lang="en">Count of attempts to retry power on</shortdesc>
+ </parameter>
+</parameters>
+<actions>
+ <action name="on" automatic="0"/>
+ <action name="off" />
+ <action name="reboot" />
+ <action name="status" />
+ <action name="list" />
+ <action name="monitor" />
+ <action name="metadata" />
+</actions>
+</resource-agent>
9 years, 7 months
fence-agents: master - fence_zvm: Add current XML metadata to test suite
by Marek Grác
Gitweb: http://git.fedorahosted.org/git/?p=fence-agents.git;a=commitdiff;h=7d6f45...
Commit: 7d6f45b3151edbe85a3220d4f8ca6cfda5db48f1
Parent: 32a2f80f5a44f00aaab57835a34f73345d9b127d
Author: Marek 'marx' Grac <mgrac(a)redhat.com>
AuthorDate: Wed Aug 27 13:23:21 2014 +0200
Committer: Marek 'marx' Grac <mgrac(a)redhat.com>
CommitterDate: Wed Aug 27 13:23:21 2014 +0200
fence_zvm: Add current XML metadata to test suite
---
tests/data/metadata/fence_zvmip.xml | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/tests/data/metadata/fence_zvmip.xml b/tests/data/metadata/fence_zvmip.xml
index e28bc1c..5a737ca 100644
--- a/tests/data/metadata/fence_zvmip.xml
+++ b/tests/data/metadata/fence_zvmip.xml
@@ -40,6 +40,8 @@
</parameters>
<actions>
<action name="off" />
+ <action name="on" />
<action name="metadata" />
+ <action name="status" />
</actions>
</resource-agent>
9 years, 7 months
fence-agents: master - fence_zvm: Add support for "on" and "status"
by Marek Grác
Gitweb: http://git.fedorahosted.org/git/?p=fence-agents.git;a=commitdiff;h=32a2f8...
Commit: 32a2f80f5a44f00aaab57835a34f73345d9b127d
Parent: 4fb2dd8eb8649942dd7fe180508a31f2f46beae3
Author: Marek 'marx' Grac <mgrac(a)redhat.com>
AuthorDate: Wed Aug 27 13:07:44 2014 +0200
Committer: Marek 'marx' Grac <mgrac(a)redhat.com>
CommitterDate: Wed Aug 27 13:07:44 2014 +0200
fence_zvm: Add support for "on" and "status"
Developed by: Neale Ferguson
---
fence/agents/zvm/fence_zvm.8 | 4 +-
fence/agents/zvm/fence_zvm.c | 286 ++++++++++++++++++++++++++++++++++---
fence/agents/zvm/fence_zvm.h | 1 +
fence/agents/zvm/fence_zvmip.8 | 5 +-
fence/agents/zvm/fence_zvmip.c | 309 ++++++++++++++++++++++++++++++++++++++--
5 files changed, 575 insertions(+), 30 deletions(-)
diff --git a/fence/agents/zvm/fence_zvm.8 b/fence/agents/zvm/fence_zvm.8
index 0b34e2c..359436e 100644
--- a/fence/agents/zvm/fence_zvm.8
+++ b/fence/agents/zvm/fence_zvm.8
@@ -22,7 +22,7 @@ Vendor URL: http://www.sinenomine.net
.SH OPTIONS
.TP
\fB-o --action\fP
-Fencing action: "off" - fence off device; "metadata" - display device metadata
+Fencing action: "off" - deactivate virtual machine; "on" - activate virtual machine; "metadata" - display device metadata" - describe fence agent parameters; "status" - state of virtual machine
.TP
\fB--delay\fP \fIseconds\fP
Time to delay fencing action in seconds
@@ -52,7 +52,7 @@ forcibly terminated. Currently, this option is ignored.
This option is used by fence_node(8) and is ignored by fence_zvm.
.TP
\fIaction = < action >\fP
-Fencing action: "off" - fence off device; "metadata" - display device metadata
+Fencing action: "off" - fence off device; "metadata" - display device metadata; "status" - state of device
.TP
\fIport = < target >\fP
Name of virtual machine to recycle.
diff --git a/fence/agents/zvm/fence_zvm.c b/fence/agents/zvm/fence_zvm.c
index d2fb4a9..2ec4be9 100644
--- a/fence/agents/zvm/fence_zvm.c
+++ b/fence/agents/zvm/fence_zvm.c
@@ -185,6 +185,240 @@ zvm_smapi_imageRecycle(zvm_driver_t *zvm)
}
/**
+ * zvm_smapi_imageDeactivate
+ * @zvm: z/VM driver information
+ *
+ * Deactivates a virtual image
+ */
+int
+zvm_smapi_imageDeactivate(zvm_driver_t *zvm)
+{
+ struct _inPlist {
+ int32_t lPlist;
+ int32_t lFName;
+ char fName[16];
+ int32_t lUser;
+ int32_t lPass;
+ int32_t lTarget;
+ char target[0];
+ } __attribute__ ((__packed__)) *inPlist;
+ struct _deactTime {
+ int32_t lForceTime;
+ char forceTime[5];
+ } __attribute__ ((__packed__)) *deactTime;
+ int32_t lInPlist;
+ struct _outPlist {
+ smapiOutHeader_t hdr;
+ int32_t nActive;
+ int32_t nInActive;
+ int32_t lFail;
+ char failArray[0];
+ } *outPlist = NULL;
+ void *pOut = NULL;
+ int32_t lRsp;
+ uint32_t reqId;
+ int rc;
+
+ /*
+ * Implement any delay
+ */
+ if (zvm->delay > 0)
+ sleep(zvm->delay);
+
+ lInPlist = sizeof(*inPlist) + strlen(zvm->target) + sizeof(*deactTime);
+ inPlist = malloc(lInPlist);
+ if (inPlist != NULL) {
+ inPlist->lPlist = lInPlist - sizeof(inPlist->lPlist);
+ inPlist->lFName = sizeof(inPlist->fName);
+ memcpy(inPlist->fName, Image_Deactivate, sizeof(inPlist->fName));
+ deactTime = (void *) ((intptr_t) inPlist + sizeof(*inPlist) + strlen(zvm->target));
+ deactTime->lForceTime = sizeof(deactTime->forceTime);
+ memcpy(deactTime->forceTime, "IMMED", sizeof(deactTime->forceTime));
+ inPlist->lUser = inPlist->lPass = 0;
+ inPlist->lTarget = strlen(zvm->target);
+ memcpy(inPlist->target, zvm->target, inPlist->lTarget);
+ if ((rc = zvm_smapi_send(zvm, inPlist, &reqId, lInPlist)) != -1) {
+ if ((rc = zvm_smapi_recv(zvm, &pOut, &lRsp)) != -1) {
+ outPlist = pOut;
+ if (outPlist->hdr.rc == 0) {
+ syslog(LOG_INFO, "Deactivation of %s successful",
+ zvm->target);
+ rc = 0;
+ } else {
+ if ((outPlist->hdr.rc == RCERR_IMAGEOP) &
+ ((outPlist->hdr.reason == RS_NOT_ACTIVE) |
+ (outPlist->hdr.reason == RS_BEING_DEACT))) {
+ syslog(LOG_INFO, "Deactivation of %s successful",
+ zvm->target);
+ rc = 0;
+ } else {
+ rc = outPlist->hdr.rc;
+ zvm->reason = outPlist->hdr.reason;
+ (void) zvm_smapi_reportError(inPlist, outPlist);
+ }
+ }
+ }
+ }
+ free(inPlist);
+ free(outPlist);
+ } else {
+ syslog(LOG_ERR, "%s - cannot allocate parameter list", __func__);
+ rc = -1;
+ }
+ return(rc);
+}
+
+/**
+ * zvm_smapi_imageActivate
+ * @zvm: z/VM driver information
+ *
+ * Deactivates a virtual image
+ */
+int
+zvm_smapi_imageActivate(zvm_driver_t *zvm)
+{
+ struct _inPlist {
+ int32_t lPlist;
+ int32_t lFName;
+ char fName[14];
+ int32_t lUser;
+ int32_t lPass;
+ int32_t lTarget;
+ char target[0];
+ } __attribute__ ((__packed__)) *inPlist;
+ int32_t lInPlist;
+ struct _outPlist {
+ smapiOutHeader_t hdr;
+ int32_t nActive;
+ int32_t nInActive;
+ int32_t lFail;
+ char failArray[0];
+ } *outPlist = NULL;
+ void *pOut = NULL;
+ int32_t lRsp;
+ uint32_t reqId;
+ int rc;
+
+ /*
+ * Implement any delay
+ */
+ if (zvm->delay > 0)
+ sleep(zvm->delay);
+
+ lInPlist = sizeof(*inPlist) + strlen(zvm->target);
+ inPlist = malloc(lInPlist);
+ if (inPlist != NULL) {
+ inPlist->lPlist = lInPlist - sizeof(inPlist->lPlist);
+ inPlist->lFName = sizeof(inPlist->fName);
+ memcpy(inPlist->fName, Image_Activate, sizeof(inPlist->fName));
+ inPlist->lUser = inPlist->lPass = 0;
+ inPlist->lTarget = strlen(zvm->target);
+ memcpy(inPlist->target, zvm->target, inPlist->lTarget);
+ if ((rc = zvm_smapi_send(zvm, inPlist, &reqId, lInPlist)) != -1) {
+ if ((rc = zvm_smapi_recv(zvm, &pOut, &lRsp)) != -1) {
+ outPlist = pOut;
+ if (outPlist->hdr.rc == 0) {
+ syslog(LOG_INFO, "Activation of %s successful",
+ zvm->target);
+ rc = 0;
+ } else {
+ if ((outPlist->hdr.rc == RCERR_IMAGEOP) &
+ ((outPlist->hdr.reason == RS_NOT_ACTIVE) |
+ (outPlist->hdr.reason == RS_BEING_DEACT))) {
+ syslog(LOG_INFO, "Activation of %s successful",
+ zvm->target);
+ rc = 0;
+ } else {
+ rc = outPlist->hdr.rc;
+ zvm->reason = outPlist->hdr.reason;
+ (void) zvm_smapi_reportError(inPlist, outPlist);
+ }
+ }
+ }
+ }
+ free(inPlist);
+ free(outPlist);
+ } else {
+ syslog(LOG_ERR, "%s - cannot allocate parameter list", __func__);
+ rc = -1;
+ }
+ return(rc);
+}
+
+/**
+ * zvm_smapi_imageQuery
+ * @zvm: z/VM driver information
+ *
+ * Queries the state of a virtual image
+ */
+int
+zvm_smapi_imageQuery(zvm_driver_t *zvm)
+{
+ struct _inPlist {
+ int32_t lPlist;
+ int32_t lFName;
+ char fName[18];
+ int32_t lUser;
+ int32_t lPass;
+ int32_t lTarget;
+ char target[0];
+ } __attribute__ ((__packed__)) *inPlist;
+ int32_t lInPlist;
+ struct _outPlist {
+ smapiOutHeader_t hdr;
+ int32_t lNames;
+ char nameArray[0];
+ } *outPlist = NULL;
+ void *pOut = NULL;
+ int32_t lRsp;
+ uint32_t reqId;
+ int rc;
+
+ /*
+ * Implement any delay
+ */
+ if (zvm->delay > 0)
+ sleep(zvm->delay);
+
+ lInPlist = sizeof(*inPlist) + strlen(zvm->target);
+ inPlist = malloc(lInPlist);
+ if (inPlist != NULL) {
+ inPlist->lPlist = lInPlist - sizeof(inPlist->lPlist);
+ inPlist->lFName = sizeof(inPlist->fName);
+ memcpy(inPlist->fName, Image_Status_Query, sizeof(inPlist->fName));
+ inPlist->lUser = inPlist->lPass = 0;
+ inPlist->lTarget = strlen(zvm->target);
+ memcpy(inPlist->target, zvm->target, inPlist->lTarget);
+ if ((rc = zvm_smapi_send(zvm, inPlist, &reqId, lInPlist)) != -1) {
+ if ((rc = zvm_smapi_recv(zvm, &pOut, &lRsp)) != -1) {
+ outPlist = pOut;
+ if (outPlist->hdr.rc == 0) {
+ if (outPlist->hdr.reason == 0) {
+ syslog(LOG_INFO, "Node %s is active",
+ zvm->target);
+ rc = 0;
+ } else {
+ syslog(LOG_INFO, "Node %s is inactive",
+ zvm->target);
+ rc = 2;
+ }
+ } else {
+ rc = 1;
+ zvm->reason = outPlist->hdr.reason;
+ (void) zvm_smapi_reportError(inPlist, outPlist);
+ }
+ }
+ }
+ free(inPlist);
+ free(outPlist);
+ } else {
+ syslog(LOG_ERR, "%s - cannot allocate parameter list", __func__);
+ rc = -1;
+ }
+ return(rc);
+}
+
+/**
* zvm_smapi_send:
* @zvm: z/VM driver information
* @reqid: Returned request id
@@ -414,7 +648,9 @@ zvm_metadata()
fprintf (stdout, "<actions>\n");
fprintf (stdout, "\t<action name=\"off\" />\n");
+ fprintf (stdout, "\t<action name=\"on\" />\n");
fprintf (stdout, "\t<action name=\"metadata\" />\n");
+ fprintf (stdout, "\t<action name=\"status\" />\n");
fprintf (stdout, "</actions>\n");
fprintf (stdout, "</resource-agent>\n");
@@ -463,10 +699,14 @@ get_options_stdin (zvm_driver_t *zvm)
if (!strcasecmp (opt, "action")) {
if (strcasecmp(arg, "off") == 0) {
fence = 0;
- } else if (strcasecmp(arg, "metadata") == 0) {
+ } else if (strcasecmp(arg, "on") == 0) {
fence = 1;
- } else {
+ } else if (strcasecmp(arg, "metadata") == 0) {
fence = 2;
+ } else if (strcasecmp(arg, "status") == 0) {
+ fence = 3;
+ } else {
+ fence = 4;
}
} else if (!strcasecmp (opt, "ipaddr")) {
lSrvName = MIN(strlen(arg), sizeof(zvm->smapiSrv));
@@ -497,7 +737,7 @@ get_options_stdin (zvm_driver_t *zvm)
zvm->delay = DEFAULT_DELAY;
}
} else if (!strcasecmp (opt, "help")) {
- fence = 2;
+ fence = 4;
}
}
return(fence);
@@ -529,10 +769,14 @@ get_options(int argc, char **argv, zvm_driver_t *zvm)
case 'o' :
if (strcasecmp(optarg, "off") == 0) {
fence = 0;
- } else if (strcasecmp(optarg, "metadata") == 0) {
+ } else if (strcasecmp(optarg, "on") == 0) {
fence = 1;
- } else {
+ } else if (strcasecmp(optarg, "metadata") == 0) {
fence = 2;
+ } else if (strcasecmp(optarg, "status") == 0) {
+ fence = 3;
+ } else {
+ fence = 4;
}
break;
case 'a' :
@@ -562,7 +806,7 @@ get_options(int argc, char **argv, zvm_driver_t *zvm)
memcpy(zvm->node, optarg, lSrvNode);
break;
default :
- fence = 2;
+ fence = 4;
}
}
return(fence);
@@ -577,13 +821,13 @@ usage()
{
fprintf(stderr,"Usage: fence_zvm [options]\n\n"
"\tWhere [options] =\n"
- "\t-o --action [action] - \"off\", \"metadata\"\n"
- "\t--delay [seconds] - Time to delay fencing action in seconds\n"
- "\t-n --plug [target] - Name of virtual machine to fence\n"
- "\t-a --ip [server] - Name of SMAPI IUCV Request server\n"
- "\t-T --timeout [secs] - Time to wait for fence in seconds - currently ignored\n"
- "\t--zvmsys [node] - z/VM Node on which SMAPI server lives\n"
- "\t-h --help - Display this usage information\n");
+ "\t-o --action [action] - \"off\", \"on\", \"metadata\", \"status\"\n"
+ "\t--delay [seconds] - Time to delay fencing action in seconds\n"
+ "\t-n --plug [target] - Name of virtual machine to fence\n"
+ "\t-a --ip [server] - Name of SMAPI IUCV Request server\n"
+ "\t-T --timeout [secs] - Time to wait for fence in seconds - currently ignored\n"
+ "\t--zvmsys [node] - z/VM Node on which SMAPI server lives\n"
+ "\t-h --help - Display this usage information\n");
return(1);
}
@@ -629,14 +873,22 @@ main(int argc, char **argv)
fence = get_options_stdin(&zvm);
switch(fence) {
- case 0 :
+ case 0 : // OFF
+ if ((rc = check_parm(&zvm)) == 0)
+ rc = zvm_smapi_imageDeactivate(&zvm);
+ break;
+ case 1 : // ON
if ((rc = check_parm(&zvm)) == 0)
- rc = zvm_smapi_imageRecycle(&zvm);
+ rc = zvm_smapi_imageActivate(&zvm);
break;
- case 1 :
+ case 2 : // METADATA
rc = zvm_metadata();
break;
- case 2 :
+ case 3 : // STATUS
+ if ((rc = check_parm(&zvm)) == 0)
+ rc = zvm_smapi_imageQuery(&zvm);
+ break;
+ case 4 :
rc = usage();
}
closelog();
diff --git a/fence/agents/zvm/fence_zvm.h b/fence/agents/zvm/fence_zvm.h
index 6178fa5..ca18e4d 100644
--- a/fence/agents/zvm/fence_zvm.h
+++ b/fence/agents/zvm/fence_zvm.h
@@ -578,5 +578,6 @@ int zvm_smapi_imageActivate(zvm_driver_t *);
int zvm_smapi_imageActiveQuery(zvm_driver_t *);
int zvm_smapi_imageDeactivate(zvm_driver_t *);
int zvm_smapi_imageRecycle(zvm_driver_t *);
+int zvm_smapi_imageQuery(zvm_driver_t *);
#endif /* FENCE_ZVM_H */
diff --git a/fence/agents/zvm/fence_zvmip.8 b/fence/agents/zvm/fence_zvmip.8
index 0bf91ae..8217d61 100644
--- a/fence/agents/zvm/fence_zvmip.8
+++ b/fence/agents/zvm/fence_zvmip.8
@@ -22,7 +22,7 @@ Vendor URL: http://www.sinenomine.net
.SH OPTIONS
.TP
\fB-o --action\fP
-Fencing action: "off" - fence off device; "metadata" - display device metadata
+Fencing action: "off" - deactivate virtual machine; "on" - activate virtual machine; "metadata" - display device metadata" - describe fence agent parameters; "status" - state of virtual machine
.TP
\fB--delay\fP \fIseconds\fP
Time to delay fencing action in seconds
@@ -54,6 +54,9 @@ Display usage information
\fIagent = < param >\fP
This option is used by fence_node(8) and is ignored by fence_zvmip.
.TP
+\fIaction = < action >\fP
+Fencing action: "off" - fence off device; "metadata" - display device metadata; "status" - state of device
+.TP
\fIplug = < plug >\fP
Name of virtual machine to recycle.
.TP
diff --git a/fence/agents/zvm/fence_zvmip.c b/fence/agents/zvm/fence_zvmip.c
index f4dcd1c..94c9e2e 100644
--- a/fence/agents/zvm/fence_zvmip.c
+++ b/fence/agents/zvm/fence_zvmip.c
@@ -201,6 +201,277 @@ zvm_smapi_imageRecycle(zvm_driver_t *zvm)
}
/**
+ * zvm_smapi_imageDeactivate
+ * @zvm: z/VM driver information
+ *
+ * Deactivates a virtual image
+ */
+int
+zvm_smapi_imageDeactivate(zvm_driver_t *zvm)
+{
+ struct _inPlist {
+ int32_t lPlist;
+ int32_t lFName;
+ char fName[16];
+ } __attribute__ ((packed)) *inPlist;
+ struct _authUser {
+ int32_t lAuthUser;
+ char userId[0];
+ } __attribute__ ((packed)) *authUser;
+ struct _authPass {
+ int32_t lAuthPass;
+ char password[0];
+ } __attribute__ ((packed)) *authPass;
+ struct _image {
+ int32_t lTarget;
+ char target[0];
+ } __attribute__ ((packed)) *image;
+ struct _deactTime {
+ int32_t lForceTime;
+ char forceTime[5];
+ } __attribute__ ((__packed__)) *deactTime;
+ int32_t lInPlist;
+ struct _outPlist {
+ smapiOutHeader_t hdr;
+ int32_t nActive;
+ int32_t nInActive;
+ int32_t lFail;
+ char failArray[0];
+ } *outPlist = NULL;
+ void *pOut = NULL;
+ int32_t lRsp;
+ uint32_t reqId;
+ int rc;
+
+ /*
+ * Implement any delay
+ */
+ if (zvm->delay > 0)
+ sleep(zvm->delay);
+
+ lInPlist = sizeof(*inPlist) + sizeof(*authUser) + strlen(zvm->authUser) +
+ sizeof(*authPass) + strlen(zvm->authPass) + sizeof(*image) +
+ sizeof(*deactTime) + strlen(zvm->target);
+ inPlist = malloc(lInPlist);
+ if (inPlist != NULL) {
+ authUser = (void *) ((uintptr_t) inPlist + sizeof(*inPlist));
+ authPass = (void *) ((uintptr_t) authUser + sizeof(*authUser) +
+ strlen(zvm->authUser));
+ image = (void *) ((uintptr_t) authPass + sizeof(*authPass) +
+ strlen(zvm->authPass));
+ deactTime = (void *) ((intptr_t) image + sizeof(*image) +
+ strlen(zvm->target));
+ inPlist->lPlist = lInPlist - sizeof(inPlist->lPlist);
+ inPlist->lFName = sizeof(inPlist->fName);
+ memcpy(inPlist->fName, Image_Deactivate, sizeof(inPlist->fName));
+ authUser->lAuthUser = strlen(zvm->authUser);
+ memcpy(authUser->userId, zvm->authUser, strlen(zvm->authUser));
+ authPass->lAuthPass = strlen(zvm->authPass);
+ memcpy(authPass->password, zvm->authPass, strlen(zvm->authPass));
+ image->lTarget = strlen(zvm->target);
+ memcpy(image->target, zvm->target, strlen(zvm->target));
+ deactTime->lForceTime = sizeof(deactTime->forceTime);
+ memcpy(deactTime->forceTime, "IMMED", sizeof(deactTime->forceTime));
+ if ((rc = zvm_smapi_send(zvm, inPlist, &reqId, lInPlist)) != -1) {
+ if ((rc = zvm_smapi_recv(zvm, &pOut, &lRsp)) != -1) {
+ outPlist = pOut;
+ if (outPlist->hdr.rc == 0) {
+ syslog(LOG_INFO, "Deactivation of %s successful",
+ zvm->target);
+ rc = 0;
+ } else {
+ if ((outPlist->hdr.rc == RCERR_IMAGEOP) &
+ ((outPlist->hdr.reason == RS_NOT_ACTIVE) |
+ (outPlist->hdr.reason == RS_BEING_DEACT))) {
+ syslog(LOG_INFO, "Deactivation of %s successful",
+ zvm->target);
+ rc = 0;
+ } else {
+ rc = outPlist->hdr.rc;
+ zvm->reason = outPlist->hdr.reason;
+ (void) zvm_smapi_reportError(inPlist, outPlist);
+ }
+ }
+ }
+ }
+ free(inPlist);
+ free(outPlist);
+ } else {
+ syslog(LOG_ERR, "%s - cannot allocate parameter list", __func__);
+ rc = -1;
+ }
+ return(rc);
+}
+
+/**
+ * zvm_smapi_imageActivate
+ * @zvm: z/VM driver information
+ *
+ * Deactivates a virtual image
+ */
+int
+zvm_smapi_imageActivate(zvm_driver_t *zvm)
+{
+ struct _inPlist {
+ int32_t lPlist;
+ int32_t lFName;
+ char fName[14];
+ } __attribute__ ((packed)) *inPlist;
+ struct _authUser {
+ int32_t lAuthUser;
+ char userId[0];
+ } __attribute__ ((packed)) *authUser;
+ struct _authPass {
+ int32_t lAuthPass;
+ char password[0];
+ } __attribute__ ((packed)) *authPass;
+ struct _image {
+ int32_t lTarget;
+ char target[0];
+ } __attribute__ ((packed)) *image;
+ int32_t lInPlist;
+ struct _outPlist {
+ smapiOutHeader_t hdr;
+ int32_t nActive;
+ int32_t nInActive;
+ int32_t lFail;
+ char failArray[0];
+ } *outPlist = NULL;
+ void *pOut = NULL;
+ int32_t lRsp;
+ uint32_t reqId;
+ int rc;
+
+ /*
+ * Implement any delay
+ */
+ if (zvm->delay > 0)
+ sleep(zvm->delay);
+
+ lInPlist = sizeof(*inPlist) + sizeof(*authUser) + strlen(zvm->authUser) +
+ sizeof(*authPass) + strlen(zvm->authPass) + sizeof(*image) +
+ strlen(zvm->target);
+ inPlist = malloc(lInPlist);
+ if (inPlist != NULL) {
+ authUser = (void *) ((uintptr_t) inPlist + sizeof(*inPlist));
+ authPass = (void *) ((uintptr_t) authUser + sizeof(*authUser) +
+ strlen(zvm->authUser));
+ image = (void *) ((uintptr_t) authPass + sizeof(*authPass) +
+ strlen(zvm->authPass));
+ inPlist->lPlist = lInPlist - sizeof(inPlist->lPlist);
+ inPlist->lFName = sizeof(inPlist->fName);
+ memcpy(inPlist->fName, Image_Activate, sizeof(inPlist->fName));
+ authUser->lAuthUser = strlen(zvm->authUser);
+ memcpy(authUser->userId, zvm->authUser, strlen(zvm->authUser));
+ authPass->lAuthPass = strlen(zvm->authPass);
+ memcpy(authPass->password, zvm->authPass, strlen(zvm->authPass));
+ image->lTarget = strlen(zvm->target);
+ memcpy(image->target, zvm->target, strlen(zvm->target));
+ if ((rc = zvm_smapi_send(zvm, inPlist, &reqId, lInPlist)) != -1) {
+ if ((rc = zvm_smapi_recv(zvm, &pOut, &lRsp)) != -1) {
+ outPlist = pOut;
+ if (outPlist->hdr.rc == 0) {
+ syslog(LOG_INFO, "Activation of %s successful",
+ zvm->target);
+ rc = 0;
+ } else {
+ if ((outPlist->hdr.rc == RCERR_IMAGEOP) &
+ ((outPlist->hdr.reason == RS_NOT_ACTIVE) |
+ (outPlist->hdr.reason == RS_BEING_DEACT))) {
+ syslog(LOG_INFO, "Activation of %s successful",
+ zvm->target);
+ rc = 0;
+ } else {
+ rc = outPlist->hdr.rc;
+ zvm->reason = outPlist->hdr.reason;
+ (void) zvm_smapi_reportError(inPlist, outPlist);
+ }
+ }
+ }
+ }
+ free(inPlist);
+ free(outPlist);
+ } else {
+ syslog(LOG_ERR, "%s - cannot allocate parameter list", __func__);
+ rc = -1;
+ }
+ return(rc);
+}
+
+/**
+ * zvm_smapi_imageQuery
+ * @zvm: z/VM driver information
+ *
+ * Queries the state of a virtual image
+ */
+int
+zvm_smapi_imageQuery(zvm_driver_t *zvm)
+{
+ struct _inPlist {
+ int32_t lPlist;
+ int32_t lFName;
+ char fName[18];
+ int32_t lUser;
+ int32_t lPass;
+ int32_t lTarget;
+ char target[0];
+ } __attribute__ ((__packed__)) *inPlist;
+ int32_t lInPlist;
+ struct _outPlist {
+ smapiOutHeader_t hdr;
+ int32_t lNames;
+ char nameArray[0];
+ } *outPlist = NULL;
+ void *pOut = NULL;
+ int32_t lRsp;
+ uint32_t reqId;
+ int rc;
+
+ /*
+ * Implement any delay
+ */
+ if (zvm->delay > 0)
+ sleep(zvm->delay);
+
+ lInPlist = sizeof(*inPlist) + strlen(zvm->target);
+ inPlist = malloc(lInPlist);
+ if (inPlist != NULL) {
+ inPlist->lPlist = lInPlist - sizeof(inPlist->lPlist);
+ inPlist->lFName = sizeof(inPlist->fName);
+ memcpy(inPlist->fName, Image_Status_Query, sizeof(inPlist->fName));
+ inPlist->lUser = inPlist->lPass = 0;
+ inPlist->lTarget = strlen(zvm->target);
+ memcpy(inPlist->target, zvm->target, inPlist->lTarget);
+ if ((rc = zvm_smapi_send(zvm, inPlist, &reqId, lInPlist)) != -1) {
+ if ((rc = zvm_smapi_recv(zvm, &pOut, &lRsp)) != -1) {
+ outPlist = pOut;
+ if (outPlist->hdr.rc == 0) {
+ if (outPlist->hdr.reason == 0) {
+ syslog(LOG_INFO, "Node %s is active",
+ zvm->target);
+ rc = 0;
+ } else {
+ syslog(LOG_INFO, "Node %s is inactive",
+ zvm->target);
+ rc = 2;
+ }
+ } else {
+ rc = 1;
+ zvm->reason = outPlist->hdr.reason;
+ (void) zvm_smapi_reportError(inPlist, outPlist);
+ }
+ }
+ }
+ free(inPlist);
+ free(outPlist);
+ } else {
+ syslog(LOG_ERR, "%s - cannot allocate parameter list", __func__);
+ rc = -1;
+ }
+ return(rc);
+}
+
+/**
* zvm_smapi_send:
* @zvm: z/VM driver information
* @reqid: Returned request id
@@ -407,10 +678,14 @@ get_options_stdin (zvm_driver_t *zvm)
if (!strcasecmp (opt, "action")) {
if (strcasecmp(arg, "off") == 0) {
fence = 0;
- } else if (strcasecmp(arg, "metadata") == 0) {
+ } else if (strcasecmp(arg, "on") == 0) {
fence = 1;
- } else {
+ } else if (strcasecmp(arg, "metadata") == 0) {
fence = 2;
+ } else if (strcasecmp(arg, "status") == 0) {
+ fence = 3;
+ } else {
+ fence = 4;
}
} else if (!strcasecmp (opt, "ipaddr")) {
lSrvName = MIN(strlen(arg), sizeof(zvm->smapiSrv)-1);
@@ -472,10 +747,14 @@ get_options(int argc, char **argv, zvm_driver_t *zvm)
case 'o' :
if (strcasecmp(optarg, "off") == 0) {
fence = 0;
- } else if (strcasecmp(optarg, "metadata") == 0) {
+ } else if (strcasecmp(optarg, "on") == 0) {
fence = 1;
- } else {
+ } else if (strcasecmp(optarg, "metadata") == 0) {
fence = 2;
+ } else if (strcasecmp(optarg, "status") == 0) {
+ fence = 3;
+ } else {
+ fence = 4;
}
break;
case 'p' :
@@ -505,7 +784,7 @@ get_options(int argc, char **argv, zvm_driver_t *zvm)
}
break;
default :
- fence = 2;
+ fence = 4;
}
}
return(fence);
@@ -581,7 +860,9 @@ zvm_metadata()
fprintf (stdout, "<actions>\n");
fprintf (stdout, "\t<action name=\"off\" />\n");
+ fprintf (stdout, "\t<action name=\"on\" />\n");
fprintf (stdout, "\t<action name=\"metadata\" />\n");
+ fprintf (stdout, "\t<action name=\"status\" />\n");
fprintf (stdout, "</actions>\n");
fprintf (stdout, "</resource-agent>\n");
@@ -599,7 +880,7 @@ usage()
{
fprintf(stderr,"Usage: fence_zvmip [options]\n\n"
"\tWhere [options] =\n"
- "\t-o --action [action] - \"off\", \"metadata\"\n"
+ "\t-o --action [action] - \"off\", \"on\", \"metadata\", \"status\"\n"
"\t--delay [seconds] - Time to delay fencing action in seconds\n"
"\t-n --plug [target] - Name of virtual machine to fence\n"
"\t-a --ip [server] - IP Name/Address of SMAPI Server\n"
@@ -662,14 +943,22 @@ main(int argc, char **argv)
fence = get_options_stdin(&zvm);
switch(fence) {
- case 0 :
+ case 0 : // OFF
+ if ((rc = check_parm(&zvm)) == 0)
+ rc = zvm_smapi_imageDeactivate(&zvm);
+ break;
+ case 1 : // ON
if ((rc = check_parm(&zvm)) == 0)
- rc = zvm_smapi_imageRecycle(&zvm);
+ rc = zvm_smapi_imageActivate(&zvm);
break;
- case 1 :
+ case 2 : // METADATA
rc = zvm_metadata();
break;
- case 2 :
+ case 3 : // STATUS
+ if ((rc = check_parm(&zvm)) == 0)
+ rc = zvm_smapi_imageQuery(&zvm);
+ break;
+ case 4 :
rc = usage();
}
closelog();
9 years, 7 months
fence-agents: master - fence_ilo_moonshot: New fence agent for HP Moonshot iLO
by Marek Grác
Gitweb: http://git.fedorahosted.org/git/?p=fence-agents.git;a=commitdiff;h=4fb2dd...
Commit: 4fb2dd8eb8649942dd7fe180508a31f2f46beae3
Parent: 55ccdd79f530092af06eea5b4ce6a24bd82c0875
Author: Marek 'marx' Grac <mgrac(a)redhat.com>
AuthorDate: Wed Aug 27 13:05:29 2014 +0200
Committer: Marek 'marx' Grac <mgrac(a)redhat.com>
CommitterDate: Wed Aug 27 13:05:29 2014 +0200
fence_ilo_moonshot: New fence agent for HP Moonshot iLO
Resolves: rhbz#1099551
---
configure.ac | 1 +
fence/agents/ilo_moonshot/Makefile.am | 20 +++++++
fence/agents/ilo_moonshot/fence_ilo_moonshot.py | 69 +++++++++++++++++++++++
3 files changed, 90 insertions(+), 0 deletions(-)
diff --git a/configure.ac b/configure.ac
index 3589bfa..0569dfe 100644
--- a/configure.ac
+++ b/configure.ac
@@ -276,6 +276,7 @@ AC_CONFIG_FILES([Makefile
fence/agents/ipdu/Makefile
fence/agents/ifmib/Makefile
fence/agents/ilo/Makefile
+ fence/agents/ilo_moonshot/Makefile
fence/agents/ilo_mp/Makefile
fence/agents/intelmodular/Makefile
fence/agents/ipmilan/Makefile
diff --git a/fence/agents/ilo_moonshot/Makefile.am b/fence/agents/ilo_moonshot/Makefile.am
new file mode 100644
index 0000000..fe8c5da
--- /dev/null
+++ b/fence/agents/ilo_moonshot/Makefile.am
@@ -0,0 +1,20 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+TARGET = fence_ilo_moonshot
+
+SRC = $(TARGET).py
+
+EXTRA_DIST = $(SRC)
+
+sbin_SCRIPTS = $(TARGET)
+
+man_MANS = $(TARGET).8
+
+FENCE_TEST_ARGS = -l test -p test -a test
+
+include $(top_srcdir)/make/fencebuild.mk
+include $(top_srcdir)/make/fenceman.mk
+include $(top_srcdir)/make/agentpycheck.mk
+
+clean-local: clean-man
+ rm -f $(TARGET)
diff --git a/fence/agents/ilo_moonshot/fence_ilo_moonshot.py b/fence/agents/ilo_moonshot/fence_ilo_moonshot.py
new file mode 100644
index 0000000..b9b4559
--- /dev/null
+++ b/fence/agents/ilo_moonshot/fence_ilo_moonshot.py
@@ -0,0 +1,69 @@
+#!/usr/bin/python -tt
+
+import sys
+import atexit
+sys.path.append("@FENCEAGENTSLIBDIR@")
+from fencing import *
+from fencing import fail, EC_STATUS
+
+#BEGIN_VERSION_GENERATION
+RELEASE_VERSION=""
+REDHAT_COPYRIGHT=""
+BUILD_DATE=""
+#END_VERSION_GENERATION
+
+def get_power_status(conn, options):
+ conn.send_eol("show node list")
+ conn.log_expect(options, options["--command-prompt"], int(options["--shell-timeout"]))
+
+ nodes = {}
+ for line in conn.before.splitlines():
+ if len(line.split()) == 10:
+ nodes[line.split()[1]] = ("", line.split()[8].lower().strip())
+
+ if ["list", "monitor"].count(options["--action"]) == 1:
+ return nodes
+ else:
+ try:
+ (_, status) = nodes[options["--plug"]]
+ return status.lower()
+ except KeyError:
+ fail(EC_STATUS)
+
+def set_power_status(conn, options):
+ if options["--action"] == "on":
+ conn.send_eol("set node power on %s" % (options["--plug"]))
+ else:
+ conn.send_eol("set node power off force %s" % (options["--plug"]))
+
+ conn.log_expect(options, options["--command-prompt"], int(options["--power-timeout"]))
+
+ return
+
+def main():
+ device_opt = ["ipaddr", "login", "passwd", "secure", "cmd_prompt", "port"]
+
+ atexit.register(atexit_handler)
+
+ all_opt["secure"]["default"] = "1"
+ all_opt["cmd_prompt"]["default"] = ["MP>", "hpiLO->"]
+
+ options = check_input(device_opt, process_input(device_opt))
+
+ docs = {}
+ docs["shortdesc"] = "Fence agent for HP Moonshot iLO"
+ docs["longdesc"] = ""
+ docs["vendorurl"] = "http://www.hp.com"
+ show_docs(options, docs)
+
+ conn = fence_login(options)
+
+ ##
+ ## Fence operations
+ ####
+ result = fence_action(conn, options, set_power_status, get_power_status, get_power_status)
+ fence_logout(conn, "exit")
+ sys.exit(result)
+
+if __name__ == "__main__":
+ main()
9 years, 7 months
fence-agents: master - fence_apc_snmp: Add support for firmware 6.x
by Marek Grác
Gitweb: http://git.fedorahosted.org/git/?p=fence-agents.git;a=commitdiff;h=55ccdd...
Commit: 55ccdd79f530092af06eea5b4ce6a24bd82c0875
Parent: d2503db9e7b1a9e63aed1983b5f701d5e094a83c
Author: Marek 'marx' Grac <mgrac(a)redhat.com>
AuthorDate: Mon Aug 4 16:29:09 2014 +0200
Committer: Marek 'marx' Grac <mgrac(a)redhat.com>
CommitterDate: Wed Aug 27 13:05:11 2014 +0200
fence_apc_snmp: Add support for firmware 6.x
Resolves: rhbz#1123897
---
fence/agents/apc_snmp/fence_apc_snmp.py | 13 +++++++++++++
1 files changed, 13 insertions(+), 0 deletions(-)
diff --git a/fence/agents/apc_snmp/fence_apc_snmp.py b/fence/agents/apc_snmp/fence_apc_snmp.py
index 918a9a7..878ac0a 100644
--- a/fence/agents/apc_snmp/fence_apc_snmp.py
+++ b/fence/agents/apc_snmp/fence_apc_snmp.py
@@ -88,6 +88,18 @@ class ApcMS(object):
turn_off = 2
has_switches = False
+class ApcMS6(object):
+ # Master Switch with 6.x firmware
+ status_oid = '.1.3.6.1.4.1.318.1.1.4.4.2.1.3.%d'
+ control_oid = '.1.3.6.1.4.1.318.1.1.12.3.3.1.1.4.%d'
+ outlet_table_oid = '1.3.6.1.4.1.318.1.1.4.4.2.1.4'
+ ident_str = "APC Master Switch with firmware v6.x"
+ state_on = 1
+ state_off = 2
+ turn_on = 1
+ turn_off = 2
+ has_switches = False
+
### FUNCTIONS ###
def apc_set_device(conn):
global device
@@ -95,6 +107,7 @@ def apc_set_device(conn):
agents_dir = {'.1.3.6.1.4.1.318.1.3.4.5':ApcRPDU,
'.1.3.6.1.4.1.318.1.3.4.4':ApcMSP,
'.1.3.6.1.4.1.850.1':TripplitePDU,
+ '.1.3.6.1.4.1.318.1.3.4.6':ApcMS6,
None:ApcMS}
# First resolve type of APC
9 years, 7 months
fence-agents: master - Fix usage of non-existent function
by Marek Grác
Gitweb: http://git.fedorahosted.org/git/?p=fence-agents.git;a=commitdiff;h=d2503d...
Commit: d2503db9e7b1a9e63aed1983b5f701d5e094a83c
Parent: 597e1607dbc9594954aa015ff05a279c22d35673
Author: Marek 'marx' Grac <mgrac(a)redhat.com>
AuthorDate: Mon Aug 4 16:06:39 2014 +0200
Committer: Marek 'marx' Grac <mgrac(a)redhat.com>
CommitterDate: Wed Aug 27 13:05:04 2014 +0200
Fix usage of non-existent function
---
fence/agents/apc_snmp/fence_apc_snmp.py | 3 ++-
fence/agents/eaton_snmp/fence_eaton_snmp.py | 3 ++-
fence/agents/ipdu/fence_ipdu.py | 3 ++-
3 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/fence/agents/apc_snmp/fence_apc_snmp.py b/fence/agents/apc_snmp/fence_apc_snmp.py
index cbb6856..918a9a7 100644
--- a/fence/agents/apc_snmp/fence_apc_snmp.py
+++ b/fence/agents/apc_snmp/fence_apc_snmp.py
@@ -14,6 +14,7 @@
import sys
import atexit
+import logging
sys.path.append("@FENCEAGENTSLIBDIR@")
from fencing import *
from fencing import fail_usage
@@ -104,7 +105,7 @@ def apc_set_device(conn):
device = agents_dir[apc_type[0][1]]
- conn.log_command("Trying %s"%(device.ident_str))
+ logging.debug("Trying %s"%(device.ident_str))
def apc_resolv_port_id(conn, options):
global port_id, switch_id
diff --git a/fence/agents/eaton_snmp/fence_eaton_snmp.py b/fence/agents/eaton_snmp/fence_eaton_snmp.py
index fd3bbd9..0934d48 100644
--- a/fence/agents/eaton_snmp/fence_eaton_snmp.py
+++ b/fence/agents/eaton_snmp/fence_eaton_snmp.py
@@ -8,6 +8,7 @@
import sys
import atexit
+import logging
sys.path.append("@FENCEAGENTSLIBDIR@")
from fencing import *
from fencing import fail_usage
@@ -81,7 +82,7 @@ def eaton_set_device(conn):
device = agents_dir[eaton_type[0][1]]
- conn.log_command("Trying %s"%(device.ident_str))
+ logging.debug("Trying %s"%(device.ident_str))
def eaton_resolv_port_id(conn, options):
global port_id, switch_id
diff --git a/fence/agents/ipdu/fence_ipdu.py b/fence/agents/ipdu/fence_ipdu.py
index abfbc26..351296b 100644
--- a/fence/agents/ipdu/fence_ipdu.py
+++ b/fence/agents/ipdu/fence_ipdu.py
@@ -7,6 +7,7 @@
import sys
import atexit
+import logging
sys.path.append("/usr/share/fence")
from fencing import *
from fencing import fail_usage
@@ -59,7 +60,7 @@ def ipdu_set_device(conn, options):
device = agents_dir[pdu_type[0][1]]
- conn.log_command("Trying %s"%(device.ident_str))
+ logging.debug("Trying %s"%(device.ident_str))
def ipdu_resolv_port_id(conn, options):
global port_id, switch_id
9 years, 7 months