Verify expect versions of DRAC, HPiLO and updates to APCControl, & OpenIPMI
[pcucontrol.git] / pcucontrol / models / OpenIPMI.py
index 38ca7d8..f2bfc2d 100644 (file)
@@ -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