X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=pcucontrol%2Fmodels%2FOpenIPMI.py;h=f2bfc2d954c7458e53af62181533eb16a7ee9bdc;hb=fec28d68cc164e581c476ee93fd4b4b68ef939fd;hp=f52ea3946284334a766c8f7c4d4b5f3ffa37ddcf;hpb=c40d1a5b09026d2c7b52dfd029326bcaa23dff82;p=pcucontrol.git diff --git a/pcucontrol/models/OpenIPMI.py b/pcucontrol/models/OpenIPMI.py index f52ea39..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