#MONITOR_USER_ID = 11142
import logging
-verbose = 1
+verbose = 0
#dryrun = 0;
class ExceptionNoTransport(Exception): pass
raise Exception("No such Node ID: %d" % node_id)
- def catcherror(self, function, node_port):
+ def catcherror(self, function, node_port, dryrun):
try:
- return function(node_port)
+ return function(node_port, dryrun)
except ExceptionNotFound, err:
return "Not found: " + str(err)
except ExceptionPassword, err:
if self.transport != None:
output = self.transport.read_until(expected, self.TELNET_TIMEOUT)
if output.find(expected) == -1:
- print "OUTPUT: --%s--" % output
+ #print "OUTPUT: --%s--" % output
raise ErrorClass, "'%s' not found: Got: %s" % (expected, output)
else:
self.transport.write(buffer + "\r\n")
if port_list == []:
raise ExceptionPort("No Open Port: No transport from open ports")
- print port_list
+ #print port_list
ret = "No implementation for open ports on selected PCU model"
for port in port_list:
type = Transport.porttypemap[port]
self.transport = Transport(type, verbose)
- print "checking for run_%s" % type
+ #print "checking for run_%s" % type
if hasattr(self, "run_%s" % type):
- print "found run_%s" % type
+ #print "found run_%s" % type
fxn = getattr(self, "run_%s" % type)
ret = self.catcherror(fxn, node_port, dryrun)
if ret == 0: # NOTE: success!, so stop
PCUModel.__init__(self, plc_pcu_record)
def run_expect_script(self, scriptname, **args):
+ #print "Running EXPECT: %s" % scriptname
locfg = command.CMD()
+ if 'ip' in args:
+ host = self.ip
+ else:
+ host = self.host
+
+ #print args
+ if 'sequence' in args:
+ seq = " ".join(args['sequence'])
+ seq = "'%s'" % seq
+ else:
+ seq = ""
+
cmd_str = get_python_lib(1) + "/pcucontrol/models/exp/"
- cmd = cmd_str + "%s %s %s '%s' %s %s " % (
- scriptname, self.host, self.username,
- self.password, args['dryrun'], args['model'])
- cmd_out, cmd_err = locfg.run_noexcept(cmd)
+ cmd = cmd_str + "%s %s %s '%s' %s %s %s" % (
+ scriptname, host, self.username,
+ self.password, args['dryrun'], args['model'], seq)
+ #print cmd
+ cmd_out, cmd_err = locfg.run_noexcept("expect " + cmd)
return cmd_out.strip() + cmd_err.strip()
def reboot(self, node_port, dryrun):
if not hasattr(self, looking_for_fxn):
raise Exception("This model (%s) does not implement %s" % (self.model, looking_for_fxn))
- print "found function %s in model %s" % (looking_for_fxn, self.model)
+ #print "found function %s in model %s" % (looking_for_fxn, self.model)
reboot_fxn = getattr(self, looking_for_fxn)
- ret = self.catcherror(reboot_fxn, node_port)
+ ret = self.catcherror(reboot_fxn, node_port, dryrun)
return ret
return rb_ret
+def reboot_simple(nodeid, values, verbose, dryrun):
+ rb_ret = ""
+ try:
+ # Find the index of the given nodeid; use the same index in the ports list
+ port = values['ports'][values['node_ids'].index(nodeid)]
+ object = eval('%s(values, verbose)' % values['model'])
+ rb_ret = object.reboot(port, dryrun)
+ # TODO: how to handle the weird, georgetown pcus, the drac faults, and ilo faults?
+ except ExceptionPort, err:
+ rb_ret = str(err)
+ except NameError, err:
+ rb_ret = str(err)
+
+ return rb_ret
+
def main():
print "this does not work."