source: ProjectBuilder/projects/proliantusbkey/0.9.6/customized/usr/bin/etreeiloclean.py@ 1436

Last change on this file since 1436 was 1436, checked in by Bruno Cornec, 12 years ago
  • Upload the 0.9.6 version of the PUSK (ProLiant USB Setup Key)
  • Property svn:executable set to *
File size: 2.6 KB
Line 
1#!/usr/bin/python
2
3import getopt, sys, os
4import xml.etree.ElementTree as ET
5from xml.etree.ElementTree import Element
6
7def cleanILOConf (tree):
8 for userInfo in tree.findall(".//USER_INFO"):
9 for user in userInfo.getiterator ("ADD_USER"):
10 userInfo.remove (user)
11 login = tree.find (".//LOGIN")
12 sso = login.find ("./SSO_INFO")
13 if not sso is None:
14 login.remove (sso)
15 return tree
16
17def createUserInfo (tree):
18 login = tree.find (".//LOGIN")
19 return ET.SubElement (login, "USER_INFO", {"MODE": "write"})
20
21def modAdminUser (tree, passwd):
22 userInfo = tree.find (".//USER_INFO")
23 if userInfo is None:
24 userInfo = createUserInfo (tree)
25 modUser = ET.SubElement (userInfo, "MOD_USER", { "USER_LOGIN": "Administrator"})
26 ET.SubElement (modUser, "PASSWORD", { "value": passwd })
27 ET.SubElement (modUser, "ADMIN_PRIV", { "value": "Yes" })
28 ET.SubElement (modUser, "REMOTE_CONS_PRIV", { "value": "Yes" })
29 ET.SubElement (modUser, "RESET_SERVER_PRIV", { "value": "Yes" })
30 ET.SubElement (modUser, "VIRTUAL_MEDIA_PRIV", { "value": "Yes" })
31 ET.SubElement (modUser, "CONFIG_ILO_PRIV", { "value": "Yes" })
32 return tree
33
34def modIP (tree, ip):
35 ipAddr = tree.find (".//MOD_NETWORK_SETTINGS/IP_ADDRESS")
36 ipAddr.set ("VALUE", ip)
37 return tree
38
39def modNetMask (tree, mask):
40 netMask = tree.find (".//MOD_NETWORK_SETTINGS/SUBNET_MASK")
41 netMask.set ("VALUE", mask)
42 return tree
43
44def modGateway (tree, gw):
45 gwIP = tree.find (".//MOD_NETWORK_SETTINGS/GATEWAY_IP_ADDRESS")
46 gwIP.set ("VALUE", gw)
47 return tree
48
49def addLicense (tree, key):
50 ribInfo = tree.find (".//RIB_INFO")
51 license = ET.SubElement (ribInfo, "LICENSE")
52 ET.SubElement (license, "ACTIVATE", {"KEY": key})
53 return tree
54
55def forceReset (tree):
56 login = tree.find ("./LOGIN")
57 ribInfo = ET.SubElement (login, "RIB_INFO", {"MODE": "write"})
58 ET.SubElement (ribInfo, "RESET_RIB")
59 return tree
60
61def main ():
62 try:
63 opts, args = getopt.getopt (sys.argv [1:], "p:l:", ["password=", "license=", "ip=", "netmask=", "gw="])
64 except getopt.GetoptError, err:
65 print str (err)
66 sys.exit (2)
67 password = key = ip = netmask = gw = None
68 for o, a in opts:
69 if o in ("-p", "--password"):
70 password = a
71 elif o in ("-l", "--license"):
72 key = a
73 elif o == "--ip":
74 ip = a
75 elif o == "--netmask":
76 netmask = a
77 elif o == "--gw":
78 gw = a
79 assert os.path.isfile (args [0])
80 tree = ET.parse (args [0])
81 cleanILOConf (tree)
82 if password:
83 modAdminUser (tree, password)
84 if key:
85 addLicense (tree, key)
86 if ip:
87 modIP (tree, ip)
88 if netmask:
89 modNetMask (tree, netmask)
90 if gw:
91 modGateway (tree, gw)
92
93 # Force the iLO to reset
94 forceReset (tree)
95
96 print ET.tostring (tree.getroot ())
97
98
99if __name__ == "__main__":
100 main ()
Note: See TracBrowser for help on using the repository browser.