Page MenuHomeClusterLabs Projects

No OneTemporary

diff --git a/fence/agents/lib/fencing_snmp.py.py b/fence/agents/lib/fencing_snmp.py.py
index 9285703f..3709ec84 100644
--- a/fence/agents/lib/fencing_snmp.py.py
+++ b/fence/agents/lib/fencing_snmp.py.py
@@ -1,139 +1,141 @@
#!/usr/bin/python
# For example of use please see fence_cisco_mds
import re, pexpect
import logging
from fencing import *
from fencing import fail, fail_usage, EC_TIMED_OUT, LOG_MODE_VERBOSE
+__all__ = [ 'FencingSnmp', 'snmp_define_defaults' ]
+
## do not add code here.
#BEGIN_VERSION_GENERATION
RELEASE_VERSION = ""
REDHAT_COPYRIGHT = ""
BUILD_DATE = ""
#END_VERSION_GENERATION
# Fix for RHBZ#527844
def snmp_define_defaults ():
all_opt["ipport"]["default"] = "161"
class FencingSnmp:
def __init__(self, options):
self.options = options
# Log message if user set verbose option
def log_command(self, message):
logging.debug("%s\n" % message)
def quote_for_run(self, string):
return ''.join(map(lambda x:x==r"'" and "'\\''" or x, string))
def complete_missed_params(self):
mapping = [[
['snmp-priv-passwd','password','!snmp-sec-level'],
'self.options["--snmp-sec-level"]="authPriv"'
],[
['!snmp-version','community','!username','!snmp-priv-passwd','!password'],
'self.options["--snmp-version"]="2c"'
]]
for val in mapping:
e = val[0]
res = True
for item in e:
if ((item[0]=='!') and (self.options.has_key("--"+item[1:]))):
res = False
break
if ((item[0]!='!') and (not self.options.has_key("--"+item[0:]))):
res = False
break
if res:
exec(val[1])
def prepare_cmd(self, command):
cmd = "@SNMPBIN@/%s -m '' -Oeqn "% (command)
self.complete_missed_params()
#mapping from our option to snmpcmd option
mapping = (('snmp-version', 'v'),('community', 'c'))
for item in mapping:
if (self.options.has_key("--" + item[0])):
cmd += " -%s '%s'"% (item[1], self.quote_for_run(self.options["--" + item[0]]))
# Some options make sense only for v3 (and for v1/2c can cause "problems")
if (self.options.has_key("--snmp-version")) and (self.options["--snmp-version"] == "3"):
# Mapping from our options to snmpcmd options for v3
mapping_v3 = (('snmp-auth-prot','a'), ('snmp-sec-level','l'), ('snmp-priv-prot','x'), \
('snmp-priv-passwd','X'),('password','A'),('username','u'))
for item in mapping_v3:
if (self.options.has_key("--"+item[0])):
cmd += " -%s '%s'"% (item[1], self.quote_for_run(self.options["--" + item[0]]))
force_ipvx = ""
if (self.options.has_key("--inet6-only")):
force_ipvx = "udp6:"
if (self.options.has_key("--inet4-only")):
force_ipvx = "udp:"
cmd += " '%s%s%s'"% (force_ipvx, self.quote_for_run(self.options["--ip"]),
self.options.has_key("--ipport") and self.quote_for_run(":" + str (self.options["--ipport"])) or "")
return cmd
def run_command(self, command, additional_timemout=0):
try:
self.log_command(command)
(res_output, res_code) = pexpect.run(command,
int(self.options["--shell-timeout"]) +
int(self.options["--login-timeout"]) +
additional_timemout, True)
if (res_code==None):
fail(EC_TIMED_OUT)
self.log_command(res_output)
if (res_code!=0) or (re.search("^Error ", res_output, re.MULTILINE) != None):
fail_usage("Returned %d: %s"% (res_code, res_output))
except pexpect.ExceptionPexpect:
fail_usage("Cannot run command %s"%(command))
return res_output
def get(self, oid, additional_timemout=0):
cmd = "%s '%s'"% (self.prepare_cmd("snmpget"), self.quote_for_run(oid))
output = self.run_command(cmd, additional_timemout).splitlines()
return output[len(output)-1].split(None, 1)
def set(self, oid, value, additional_timemout=0):
mapping = ((int, 'i'), (str, 's'))
type_of_value = ''
for item in mapping:
if (isinstance(value, item[0])):
type_of_value = item[1]
break
cmd = "%s '%s' %s '%s'" % (self.prepare_cmd("snmpset"),
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))
output = self.run_command(cmd, additional_timemout).splitlines()
return map(lambda x:x.split(None, 1), filter(lambda y:len(y)>0 and y[0]=='.', output))

File Metadata

Mime Type
text/x-diff
Expires
Thu, Jun 26, 5:50 PM (17 h, 19 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1959273
Default Alt Text
(4 KB)

Event Timeline