X-Git-Url: http://git.onelab.eu/?p=pcucontrol.git;a=blobdiff_plain;f=pcucontrol%2Fmodels%2FOpenIPMI.py;fp=pcucontrol%2Fmodels%2FOpenIPMI.py;h=f2bfc2d954c7458e53af62181533eb16a7ee9bdc;hp=38ca7d8c8d544e9ab40552629f608266adbe5228;hb=fec28d68cc164e581c476ee93fd4b4b68ef939fd;hpb=4c1af5526615cf1958b801176c802283d7d4d308 diff --git a/pcucontrol/models/OpenIPMI.py b/pcucontrol/models/OpenIPMI.py index 38ca7d8..f2bfc2d 100644 --- a/pcucontrol/models/OpenIPMI.py +++ b/pcucontrol/models/OpenIPMI.py @@ -1,23 +1,32 @@ from pcucontrol.reboot import * +import subprocess class OpenIPMI(PCUControl): supported_ports = [80,443,623] # TODO: get exit codes to determine success or failure... + def run_http(self, node_port, dryrun): + return self.run_ipmi(node_port, dryrun) + def run_https(self, node_port, dryrun): + return self.run_ipmi(node_port, dryrun) + def run_ipmi(self, node_port, dryrun): if not dryrun: - cmd = "ipmitool -I lanplus -H %s -U %s -P '%s' power cycle " - (i,p) = os.popen4(cmd % ( self.host, self.username, self.password) ) - result = p.read() - print "RESULT: ", result + ipmi_cmd = "power cycle" else: - cmd = "ipmitool -I lanplus -H %s -U %s -P '%s' user list " - (i,p) = os.popen4(cmd % ( self.host, self.username, self.password) ) - result = p.read() - print "RESULT: ", result + ipmi_cmd = "user list" + + cmd = "ipmitool -I lanplus -H %s -U %s -P '%s' %s" + cmd = cmd % ( self.host, self.username, self.password, ipmi_cmd ) + p = subprocess.Popen(cmd, shell=True, + stdin=subprocess.PIPE, stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, close_fds=True) + (i,p) = (p.stdin, p.stdout) + result = p.read() + #print "RESULT: ", result if "Error" in result: return result