1 from pcucontrol.reboot import *
2 from distutils.sysconfig import get_python_lib;
4 class HPiLO(PCUControl):
5 supported_ports = [22,443]
6 def run(self, node_port, dryrun):
7 if self.type == Transport.SSH:
8 return self.run_ssh(node_port, dryrun)
9 elif self.type == Transport.HTTP or self.type == Transport.HTTPS:
10 return self.run_https(node_port, dryrun)
12 raise ExceptionNoTransport("Unimplemented Transport for HPiLO %s" % self.type)
14 def run_ssh(self, node_port, dryrun):
16 self.transport.open(self.host, self.username)
17 self.transport.sendPassword(self.password)
20 self.transport.ifThenSend("</>hpiLO->", "cd system1")
22 # Reboot Outlet N (Y/N)?
24 self.transport.ifThenSend("</system1>hpiLO->", "POWER")
27 self.transport.ifThenSend("</system1>hpiLO->", "reset")
29 self.transport.ifThenSend("</system1>hpiLO->", "exit")
31 self.transport.close()
34 def run_https(self, node_port, dryrun):
38 cmd_str = get_python_lib(1) + "/pcucontrol/models/hpilo/"
40 cmd = cmd_str + "locfg.pl -s %s -f %s -u %s -p '%s' | grep 'MESSAGE' | grep -v 'No error'" % (
41 self.host, cmd_str+"iloxml/Get_Network.xml",
42 self.username, self.password)
43 sout, serr = locfg.run_noexcept(cmd)
45 if sout.strip() != "" or serr.strip() != "":
46 print "sout: %s" % sout.strip()
47 return sout.strip() + serr.strip()
51 cmd = cmd_str + "locfg.pl -s %s -f %s -u %s -p '%s' | grep 'MESSAGE' | grep -v 'No error'" % (
52 self.host, cmd_str+"iloxml/Reset_Server.xml",
53 self.username, self.password)
54 sout, serr = locfg.run_noexcept(cmd)
56 if sout.strip() != "":
57 print "sout: %s" % sout.strip()