Gitweb:
http://git.fedorahosted.org/git/?p=fence-agents.git;a=commitdiff;h=ed573e...
Commit: ed573e384055fe7f80e4bff393fcc1f091127ee3
Parent: 0967113e52b7a4ad1aa67c4bc0bd2ca40a760d03
Author: Marek 'marx' Grac <mgrac(a)redhat.com>
AuthorDate: Thu Feb 26 11:28:07 2015 +0100
Committer: Marek 'marx' Grac <mgrac(a)redhat.com>
CommitterDate: Thu Feb 26 11:28:07 2015 +0100
fencing_snmp: Path to snmp(walk|get|set) can be set at runtime
---
configure.ac | 9 ++-----
fence/agents/lib/fencing.py.py | 27 +++++++++++++++++++++++++-
fence/agents/lib/fencing_snmp.py.py | 8 +++---
make/fencebuild.mk | 4 ++-
tests/data/metadata/fence_apc_snmp.xml | 15 ++++++++++++++
tests/data/metadata/fence_cisco_mds.xml | 15 ++++++++++++++
tests/data/metadata/fence_eaton_snmp.xml | 15 ++++++++++++++
tests/data/metadata/fence_emerson.xml | 15 ++++++++++++++
tests/data/metadata/fence_ibmblade.xml | 15 ++++++++++++++
tests/data/metadata/fence_ifmib.xml | 15 ++++++++++++++
tests/data/metadata/fence_intelmodular.xml | 15 ++++++++++++++
tests/data/metadata/fence_ipdu.xml | 15 ++++++++++++++
tests/data/metadata/fence_tripplite_snmp.xml | 15 ++++++++++++++
13 files changed, 171 insertions(+), 12 deletions(-)
diff --git a/configure.ac b/configure.ac
index cbf9623..ce2ca46 100644
--- a/configure.ac
+++ b/configure.ac
@@ -108,12 +108,6 @@ AC_ARG_WITH([fenceagentslibdir],
[ FENCEAGENTSLIBDIR="$withval" ],
[ FENCEAGENTSLIBDIR="${datadir}/fence" ])
-AC_ARG_WITH([snmpbin],
- [ --with-snmpbin=PATH
- path to snmp binaries (snmpwalk/get). ],
- [ SNMPBIN="$withval" ],
- [ SNMPBIN="${bindir}" ])
-
AC_ARG_WITH([default-config-dir],
[ --with-default-config-dir=DIR
cluster config directory. ],
@@ -177,6 +171,9 @@ AC_PATH_PROG([SSH_PATH], [ssh], [/usr/bin/ssh])
AC_PATH_PROG([TELNET_PATH], [telnet], [/usr/bin/telnet])
AC_PATH_PROG([MPATH_PATH], [mpathpersist], [/usr/sbin/mpathpersist])
AC_PATH_PROG([SUDO_PATH], [sudo], [/usr/bin/sudo])
+AC_PATH_PROG([SNMPWALK_PATH], [snmpwalk], [/usr/bin/snmpwalk])
+AC_PATH_PROG([SNMPSET_PATH], [snmpset], [/usr/bin/snmpset])
+AC_PATH_PROG([SNMPGET_PATH], [snmpget], [/usr/bin/snmpget])
## do subst
diff --git a/fence/agents/lib/fencing.py.py b/fence/agents/lib/fencing.py.py
index 4e68879..1b87f21 100644
--- a/fence/agents/lib/fencing.py.py
+++ b/fence/agents/lib/fencing.py.py
@@ -418,6 +418,30 @@ all_opt = {
"shortdesc" : "Path to sudo binary",
"default" : "@SUDO_PATH@",
"order": 300},
+ "snmpwalk_path" : {
+ "getopt" : ":",
+ "longopt" : "snmpwalk-path",
+ "help" : "--snmpwalk-path=[path] Path to snmpwalk binary",
+ "required" : "0",
+ "shortdesc" : "Path to snmpwalk binary",
+ "default" : "@SNMPWALK_PATH@",
+ "order" : 300},
+ "snmpset_path" : {
+ "getopt" : ":",
+ "longopt" : "snmpset-path",
+ "help" : "--snmpset-path=[path] Path to snmpset binary",
+ "required" : "0",
+ "shortdesc" : "Path to snmpset binary",
+ "default" : "@SNMPSET_PATH@",
+ "order" : 300},
+ "snmpget_path" : {
+ "getopt" : ":",
+ "longopt" : "snmpget-path",
+ "help" : "--snmpget-path=[path] Path to snmpget binary",
+ "required" : "0",
+ "shortdesc" : "Path to snmpget binary",
+ "default" : "@SNMPGET_PATH@",
+ "order" : 300},
"snmp": {
"getopt" : "",
"help" : "",
@@ -440,7 +464,8 @@ DEPENDENCY_OPT = {
"port" : ["separator"],
"ssl" : ["ssl_secure", "ssl_insecure",
"gnutlscli_path"],
"snmp" : ["snmp_auth_prot", "snmp_sec_level",
"snmp_priv_prot", \
- "snmp_priv_passwd", "snmp_priv_passwd_script",
"community"]
+ "snmp_priv_passwd", "snmp_priv_passwd_script",
"community", \
+ "snmpset_path", "snmpget_path", "snmpwalk_path"]
}
class fspawn(pexpect.spawn):
diff --git a/fence/agents/lib/fencing_snmp.py.py b/fence/agents/lib/fencing_snmp.py.py
index 5c013d8..88700c4 100644
--- a/fence/agents/lib/fencing_snmp.py.py
+++ b/fence/agents/lib/fencing_snmp.py.py
@@ -51,7 +51,7 @@ class FencingSnmp:
exec(val[1])
def prepare_cmd(self, command):
- cmd = "@SNMPBIN@/%s -m '' -Oeqn "% (command)
+ cmd = "%s -m '' -Oeqn "% (command)
self.complete_missed_params()
@@ -105,7 +105,7 @@ class FencingSnmp:
return res_output
def get(self, oid, additional_timemout=0):
- cmd = "%s '%s'"% (self.prepare_cmd("snmpget"),
self.quote_for_run(oid))
+ cmd = "%s '%s'"%
(self.prepare_cmd(self.options["--snmpget-path"]), self.quote_for_run(oid))
output = self.run_command(cmd, additional_timemout).splitlines()
@@ -121,13 +121,13 @@ class FencingSnmp:
type_of_value = item[1]
break
- cmd = "%s '%s' %s '%s'" %
(self.prepare_cmd("snmpset"),
+ cmd = "%s '%s' %s '%s'" %
(self.prepare_cmd(self.options["--snmpset-path"]),
self.quote_for_run(oid), type_of_value, self.quote_for_run(str(value)))
self.run_command(cmd, additional_timemout)
def walk(self, oid, additional_timemout=0):
- cmd = "%s '%s'"% (self.prepare_cmd("snmpwalk"),
self.quote_for_run(oid))
+ cmd = "%s '%s'"%
(self.prepare_cmd(self.options["--snmpwalk-path"]), self.quote_for_run(oid))
output = self.run_command(cmd, additional_timemout).splitlines()
diff --git a/make/fencebuild.mk b/make/fencebuild.mk
index 874ebeb..3a035e9 100644
--- a/make/fencebuild.mk
+++ b/make/fencebuild.mk
@@ -5,7 +5,6 @@ $(TARGET): $(SRC)
$(abs_srcdir) $@ | \
sed \
-e 's#@''FENCEAGENTSLIBDIR@#${FENCEAGENTSLIBDIR}#g' \
- -e 's#@''SNMPBIN@#${SNMPBIN}#g' \
-e 's#@''LOGDIR@#${LOGDIR}#g' \
-e 's#@''SBINDIR@#${sbindir}#g' \
-e 's#@''LIBEXECDIR@#${libexecdir}#g' \
@@ -22,6 +21,9 @@ $(TARGET): $(SRC)
-e 's#@''MPATH_PATH@#${MPATH_PATH}#g' \
-e 's#@''STORE_PATH@#${CLUSTERVARRUN}#g' \
-e 's#@''SUDO_PATH@#${SUDO_PATH}#g' \
+ -e 's#@''SNMPWALK_PATH@#${SNMPWALK_PATH}#g' \
+ -e 's#@''SNMPSET_PATH@#${SNMPSET_PATH}#g' \
+ -e 's#@''SNMPGET_PATH@#${SNMPGET_PATH}#g' \
$@
if [ 0 -eq `echo "$(SRC)" | grep fence_ &> /dev/null; echo $$?` ]; then
\
diff --git a/tests/data/metadata/fence_apc_snmp.xml
b/tests/data/metadata/fence_apc_snmp.xml
index d09f851..3601194 100644
--- a/tests/data/metadata/fence_apc_snmp.xml
+++ b/tests/data/metadata/fence_apc_snmp.xml
@@ -152,6 +152,21 @@
<content type="string" default="1" />
<shortdesc lang="en">Count of attempts to retry power
on</shortdesc>
</parameter>
+ <parameter name="snmpget_path" unique="0"
required="0">
+ <getopt mixed="--snmpget-path=[path]" />
+ <content type="string" default="/usr/bin/snmpget" />
+ <shortdesc lang="en">Path to snmpget binary</shortdesc>
+ </parameter>
+ <parameter name="snmpset_path" unique="0"
required="0">
+ <getopt mixed="--snmpset-path=[path]" />
+ <content type="string" default="/usr/bin/snmpset" />
+ <shortdesc lang="en">Path to snmpset binary</shortdesc>
+ </parameter>
+ <parameter name="snmpwalk_path" unique="0"
required="0">
+ <getopt mixed="--snmpwalk-path=[path]" />
+ <content type="string" default="/usr/bin/snmpwalk" />
+ <shortdesc lang="en">Path to snmpwalk binary</shortdesc>
+ </parameter>
</parameters>
<actions>
<action name="on" automatic="0"/>
diff --git a/tests/data/metadata/fence_cisco_mds.xml
b/tests/data/metadata/fence_cisco_mds.xml
index 4adbf22..e5cfc4a 100644
--- a/tests/data/metadata/fence_cisco_mds.xml
+++ b/tests/data/metadata/fence_cisco_mds.xml
@@ -152,6 +152,21 @@
<content type="string" default="1" />
<shortdesc lang="en">Count of attempts to retry power
on</shortdesc>
</parameter>
+ <parameter name="snmpget_path" unique="0"
required="0">
+ <getopt mixed="--snmpget-path=[path]" />
+ <content type="string" default="/usr/bin/snmpget" />
+ <shortdesc lang="en">Path to snmpget binary</shortdesc>
+ </parameter>
+ <parameter name="snmpset_path" unique="0"
required="0">
+ <getopt mixed="--snmpset-path=[path]" />
+ <content type="string" default="/usr/bin/snmpset" />
+ <shortdesc lang="en">Path to snmpset binary</shortdesc>
+ </parameter>
+ <parameter name="snmpwalk_path" unique="0"
required="0">
+ <getopt mixed="--snmpwalk-path=[path]" />
+ <content type="string" default="/usr/bin/snmpwalk" />
+ <shortdesc lang="en">Path to snmpwalk binary</shortdesc>
+ </parameter>
</parameters>
<actions>
<action name="on" automatic="1"/>
diff --git a/tests/data/metadata/fence_eaton_snmp.xml
b/tests/data/metadata/fence_eaton_snmp.xml
index bfe05aa..cf1f6dd 100644
--- a/tests/data/metadata/fence_eaton_snmp.xml
+++ b/tests/data/metadata/fence_eaton_snmp.xml
@@ -152,6 +152,21 @@
<content type="string" default="1" />
<shortdesc lang="en">Count of attempts to retry power
on</shortdesc>
</parameter>
+ <parameter name="snmpget_path" unique="0"
required="0">
+ <getopt mixed="--snmpget-path=[path]" />
+ <content type="string" default="/usr/bin/snmpget" />
+ <shortdesc lang="en">Path to snmpget binary</shortdesc>
+ </parameter>
+ <parameter name="snmpset_path" unique="0"
required="0">
+ <getopt mixed="--snmpset-path=[path]" />
+ <content type="string" default="/usr/bin/snmpset" />
+ <shortdesc lang="en">Path to snmpset binary</shortdesc>
+ </parameter>
+ <parameter name="snmpwalk_path" unique="0"
required="0">
+ <getopt mixed="--snmpwalk-path=[path]" />
+ <content type="string" default="/usr/bin/snmpwalk" />
+ <shortdesc lang="en">Path to snmpwalk binary</shortdesc>
+ </parameter>
</parameters>
<actions>
<action name="on" automatic="0"/>
diff --git a/tests/data/metadata/fence_emerson.xml
b/tests/data/metadata/fence_emerson.xml
index 1aa5474..588d1fa 100644
--- a/tests/data/metadata/fence_emerson.xml
+++ b/tests/data/metadata/fence_emerson.xml
@@ -152,6 +152,21 @@
<content type="string" default="1" />
<shortdesc lang="en">Count of attempts to retry power
on</shortdesc>
</parameter>
+ <parameter name="snmpget_path" unique="0"
required="0">
+ <getopt mixed="--snmpget-path=[path]" />
+ <content type="string" default="/usr/bin/snmpget" />
+ <shortdesc lang="en">Path to snmpget binary</shortdesc>
+ </parameter>
+ <parameter name="snmpset_path" unique="0"
required="0">
+ <getopt mixed="--snmpset-path=[path]" />
+ <content type="string" default="/usr/bin/snmpset" />
+ <shortdesc lang="en">Path to snmpset binary</shortdesc>
+ </parameter>
+ <parameter name="snmpwalk_path" unique="0"
required="0">
+ <getopt mixed="--snmpwalk-path=[path]" />
+ <content type="string" default="/usr/bin/snmpwalk" />
+ <shortdesc lang="en">Path to snmpwalk binary</shortdesc>
+ </parameter>
</parameters>
<actions>
<action name="on" automatic="0"/>
diff --git a/tests/data/metadata/fence_ibmblade.xml
b/tests/data/metadata/fence_ibmblade.xml
index 42952da..f299e7a 100644
--- a/tests/data/metadata/fence_ibmblade.xml
+++ b/tests/data/metadata/fence_ibmblade.xml
@@ -152,6 +152,21 @@
<content type="string" default="1" />
<shortdesc lang="en">Count of attempts to retry power
on</shortdesc>
</parameter>
+ <parameter name="snmpget_path" unique="0"
required="0">
+ <getopt mixed="--snmpget-path=[path]" />
+ <content type="string" default="/usr/bin/snmpget" />
+ <shortdesc lang="en">Path to snmpget binary</shortdesc>
+ </parameter>
+ <parameter name="snmpset_path" unique="0"
required="0">
+ <getopt mixed="--snmpset-path=[path]" />
+ <content type="string" default="/usr/bin/snmpset" />
+ <shortdesc lang="en">Path to snmpset binary</shortdesc>
+ </parameter>
+ <parameter name="snmpwalk_path" unique="0"
required="0">
+ <getopt mixed="--snmpwalk-path=[path]" />
+ <content type="string" default="/usr/bin/snmpwalk" />
+ <shortdesc lang="en">Path to snmpwalk binary</shortdesc>
+ </parameter>
</parameters>
<actions>
<action name="on" automatic="0"/>
diff --git a/tests/data/metadata/fence_ifmib.xml b/tests/data/metadata/fence_ifmib.xml
index 523c510..ea05195 100644
--- a/tests/data/metadata/fence_ifmib.xml
+++ b/tests/data/metadata/fence_ifmib.xml
@@ -154,6 +154,21 @@ It was written with managed ethernet switches in mind, in order to
fence iSCSI S
<content type="string" default="1" />
<shortdesc lang="en">Count of attempts to retry power
on</shortdesc>
</parameter>
+ <parameter name="snmpget_path" unique="0"
required="0">
+ <getopt mixed="--snmpget-path=[path]" />
+ <content type="string" default="/usr/bin/snmpget" />
+ <shortdesc lang="en">Path to snmpget binary</shortdesc>
+ </parameter>
+ <parameter name="snmpset_path" unique="0"
required="0">
+ <getopt mixed="--snmpset-path=[path]" />
+ <content type="string" default="/usr/bin/snmpset" />
+ <shortdesc lang="en">Path to snmpset binary</shortdesc>
+ </parameter>
+ <parameter name="snmpwalk_path" unique="0"
required="0">
+ <getopt mixed="--snmpwalk-path=[path]" />
+ <content type="string" default="/usr/bin/snmpwalk" />
+ <shortdesc lang="en">Path to snmpwalk binary</shortdesc>
+ </parameter>
</parameters>
<actions>
<action name="on" automatic="1"/>
diff --git a/tests/data/metadata/fence_intelmodular.xml
b/tests/data/metadata/fence_intelmodular.xml
index 36b7284..2bd92f1 100644
--- a/tests/data/metadata/fence_intelmodular.xml
+++ b/tests/data/metadata/fence_intelmodular.xml
@@ -154,6 +154,21 @@ Note: Since firmware update version 2.7, SNMP v2 write support is
removed, and r
<content type="string" default="1" />
<shortdesc lang="en">Count of attempts to retry power
on</shortdesc>
</parameter>
+ <parameter name="snmpget_path" unique="0"
required="0">
+ <getopt mixed="--snmpget-path=[path]" />
+ <content type="string" default="/usr/bin/snmpget" />
+ <shortdesc lang="en">Path to snmpget binary</shortdesc>
+ </parameter>
+ <parameter name="snmpset_path" unique="0"
required="0">
+ <getopt mixed="--snmpset-path=[path]" />
+ <content type="string" default="/usr/bin/snmpset" />
+ <shortdesc lang="en">Path to snmpset binary</shortdesc>
+ </parameter>
+ <parameter name="snmpwalk_path" unique="0"
required="0">
+ <getopt mixed="--snmpwalk-path=[path]" />
+ <content type="string" default="/usr/bin/snmpwalk" />
+ <shortdesc lang="en">Path to snmpwalk binary</shortdesc>
+ </parameter>
</parameters>
<actions>
<action name="on" automatic="0"/>
diff --git a/tests/data/metadata/fence_ipdu.xml b/tests/data/metadata/fence_ipdu.xml
index 476e861..b6972e6 100644
--- a/tests/data/metadata/fence_ipdu.xml
+++ b/tests/data/metadata/fence_ipdu.xml
@@ -152,6 +152,21 @@
<content type="string" default="1" />
<shortdesc lang="en">Count of attempts to retry power
on</shortdesc>
</parameter>
+ <parameter name="snmpget_path" unique="0"
required="0">
+ <getopt mixed="--snmpget-path=[path]" />
+ <content type="string" default="/usr/bin/snmpget" />
+ <shortdesc lang="en">Path to snmpget binary</shortdesc>
+ </parameter>
+ <parameter name="snmpset_path" unique="0"
required="0">
+ <getopt mixed="--snmpset-path=[path]" />
+ <content type="string" default="/usr/bin/snmpset" />
+ <shortdesc lang="en">Path to snmpset binary</shortdesc>
+ </parameter>
+ <parameter name="snmpwalk_path" unique="0"
required="0">
+ <getopt mixed="--snmpwalk-path=[path]" />
+ <content type="string" default="/usr/bin/snmpwalk" />
+ <shortdesc lang="en">Path to snmpwalk binary</shortdesc>
+ </parameter>
</parameters>
<actions>
<action name="on" automatic="0"/>
diff --git a/tests/data/metadata/fence_tripplite_snmp.xml
b/tests/data/metadata/fence_tripplite_snmp.xml
index eb568d9..bc66dfd 100644
--- a/tests/data/metadata/fence_tripplite_snmp.xml
+++ b/tests/data/metadata/fence_tripplite_snmp.xml
@@ -152,6 +152,21 @@
<content type="string" default="1" />
<shortdesc lang="en">Count of attempts to retry power
on</shortdesc>
</parameter>
+ <parameter name="snmpget_path" unique="0"
required="0">
+ <getopt mixed="--snmpget-path=[path]" />
+ <content type="string" default="/usr/bin/snmpget" />
+ <shortdesc lang="en">Path to snmpget binary</shortdesc>
+ </parameter>
+ <parameter name="snmpset_path" unique="0"
required="0">
+ <getopt mixed="--snmpset-path=[path]" />
+ <content type="string" default="/usr/bin/snmpset" />
+ <shortdesc lang="en">Path to snmpset binary</shortdesc>
+ </parameter>
+ <parameter name="snmpwalk_path" unique="0"
required="0">
+ <getopt mixed="--snmpwalk-path=[path]" />
+ <content type="string" default="/usr/bin/snmpwalk" />
+ <shortdesc lang="en">Path to snmpwalk binary</shortdesc>
+ </parameter>
</parameters>
<actions>
<action name="on" automatic="0"/>