25d433150fbefd5d36abe4567cdad5ae0e8f2acf
[monitor.git] / pcucontrol / models / HPiLO.py
1 from pcucontrol.reboot import *
2
3 class HPiLO(PCUControl):
4         supported_ports = [22,443]
5         def run(self, node_port, dryrun):
6                 if self.type == Transport.SSH:
7                         return self.run_ssh(node_port, dryrun)
8                 elif self.type == Transport.HTTP or self.type == Transport.HTTPS:
9                         return self.run_https(node_port, dryrun)
10                 else:
11                         raise ExceptionNoTransport("Unimplemented Transport for HPiLO %s" % self.type)
12
13         def run_ssh(self, node_port, dryrun):
14
15                 self.transport.open(self.host, self.username)
16                 self.transport.sendPassword(self.password)
17
18                 # </>hpiLO-> 
19                 self.transport.ifThenSend("</>hpiLO->", "cd system1")
20
21                 # Reboot Outlet  N        (Y/N)?
22                 if dryrun:
23                         self.transport.ifThenSend("</system1>hpiLO->", "POWER")
24                 else:
25                         # Reset this machine
26                         self.transport.ifThenSend("</system1>hpiLO->", "reset")
27
28                 self.transport.ifThenSend("</system1>hpiLO->", "exit")
29
30                 self.transport.close()
31                 return 0
32                 
33         def run_https(self, node_port, dryrun):
34
35                 locfg = command.CMD()
36
37                 cmd_str = config.MONITOR_SCRIPT_ROOT + "/pcucontrol/models/hpilo/"
38                 
39                 cmd = cmd_str + "locfg.pl -s %s -f %s -u %s -p '%s' | grep 'MESSAGE' | grep -v 'No error'" % (
40                                         self.host, cmd_str+"iloxml/Get_Network.xml", 
41                                         self.username, self.password)
42                 sout, serr = locfg.run_noexcept(cmd)
43
44                 if sout.strip() != "" or serr.strip() != "":
45                         print "sout: %s" % sout.strip()
46                         return sout.strip() + serr.strip()
47
48                 if not dryrun:
49                         locfg = command.CMD()
50                         cmd = cmd_str + "locfg.pl -s %s -f %s -u %s -p '%s' | grep 'MESSAGE' | grep -v 'No error'" % (
51                                                 self.host, cmd_str+"iloxml/Reset_Server.xml", 
52                                                 self.username, self.password)
53                         sout, serr = locfg.run_noexcept(cmd)
54
55                         if sout.strip() != "":
56                                 print "sout: %s" % sout.strip()
57                                 #return sout.strip()
58
59                 return 0