9 from TestNode import TestNode
10 from TestUser import TestUser
14 def __init__ (self,test_plc,site_spec):
15 self.test_plc=test_plc
16 self.site_spec=site_spec
19 return self.site_spec['site_fields']['login_base']
21 def create_site (self):
22 print self.test_plc.auth_root()
23 self.site_id = self.test_plc.server.AddSite(self.test_plc.auth_root(),
24 self.site_spec['site_fields'])
25 self.test_plc.server.AddSiteAddress(self.test_plc.auth_root(),self.site_id,
26 self.site_spec['address_fields'])
30 def create_users (self):
31 for user_spec in self.site_spec['users']:
32 test_user=TestUser(self.test_plc,self,user_spec)
33 test_user.create_user()
37 def delete_site (self):
38 print self.test_plc.auth_root()
39 self.test_plc.server.DeleteSite(self.test_plc.auth_root(),self.name())
42 def delete_users(self):
43 for user_spec in self.site_spec['users']:
44 test_user=TestUser(self.test_plc,self,user_spec)
45 test_user.delete_user()
47 def locate_user (self,username):
48 for user in self.site_spec['users']:
49 if user['name'] == username:
51 if user['user_fields']['email'] == username:
53 raise Exception,"Cannot locate user %s"%username
55 def locate_node (self,nodename):
56 for node in self.site_spec['nodes']:
57 if node['node_fields']['hostname'] == nodename:
59 raise Exception,"Cannot locate node %s"%nodename
61 # left as-is, i.e. crappy
62 def check_nodes(self):
63 # should filter out nodes not under vmware not qemu
64 node_specs=self.site_spec['nodes']
69 bt={'boot_state':'boot'}
70 dbg={'boot_state':'dbg'}
72 start_time = datetime.datetime.now() ##geting the current time
73 dead_time=datetime.datetime.now()+ datetime.timedelta(minutes=5)
74 utils.header("Starting checking for nodes in site %s"%self.name())
76 for node_spec in node_specs :
77 hostname=node_spec['node_fields']['hostname']
79 node_status=self.test_plc.server.GetNodes(self.test_plc.auth_root(),hostname, filter)
80 utils.header('Actual status for node %s is [%s]'%(hostname,node_status))
82 if (node_status[0] == bt):
83 test_name='Test Installation Node hosted: '+hostname
84 self.test_plc.display_results(test_name, 'Successful', '')
85 break ##for existing and renaming virtual file to just installed
86 elif (node_status[0] ==dbg):
87 test_name='Test Installation Node hosted: '+hostname
88 self.test_plc.display_results(test_name, 'En Debug', '')
90 break ##for existing and renaming virtual file to just installed
91 elif ( start_time <= dead_time ) :
92 start_time=datetime.datetime.now()+ datetime.timedelta(minutes=2)
99 utils.header("Node %s correctly installed and booted"%hostname)
101 utils.header("Node %s not fully booted"%hostname)
103 test_name='Test Installation Node Hosted: ',hostname
104 self.test_plc.display_results(test_name, 'Failure', '')
106 utils.header("End checking for nodes in site %s"%self.name())
109 traceback.print_exc()
110 utils.header("will kill vmware in 10 seconds")
112 self.tst_plc.kill_all_vmwares()
115 def start_nodes (self,options):
116 for node_spec in self.site_spec['nodes']:
117 TestNode(self.test_plc, self, node_spec).start_node(options)
120 def delete_known_hosts(self):
121 utils.header("Messing with known_hosts (cleaning hostnames starting with 'test[0-9]')")
122 sed_command="sed -i -e '/^test[0-9]/d' /root/.ssh/known_hosts"
123 os.system("set -x ; " + sed_command)
125 # xxx should be attached to TestPlc
126 def check_slices(self):
131 self.delete_known_hosts()
132 start_time = datetime.datetime.now()
133 dead_time=start_time + datetime.timedelta(minutes=3)##adding 3minutes
134 for slice_spec in self.test_plc.plc_spec['slices']:
135 for hostname in slice_spec['nodenames']:
136 slicename=slice_spec['slice_fields']['name']
138 utils.header('restarting nm on %s'%hostname)
139 access=os.system('set -x; ssh -i /etc/planetlab/root_ssh_key.rsa root@%s service nm restart'%hostname )
141 utils.header('nm restarted on %s'%hostname)
143 utils.header('trying to connect to %s@%s'%(slicename,hostname))
144 Date=os.system('set -x; ssh -i ~/.ssh/slices.rsa %s@%s date'%(slicename,hostname))
147 elif ( start_time <= dead_time ) :
148 start_time=datetime.datetime.now()+ datetime.timedelta(seconds=30)
153 utils.header('connected to %s@%s -->'%(slicename,hostname))
155 utils.header('%s@%s : last chance - restarting nm on %s'%(slicename,hostname,hostname))
156 access=os.system('set -x; ssh -i /etc/planetlab/root_ssh_key.rsa root@%s service nm restart'%hostname)
158 utils.header('trying to connect (2) to %s@%s'%(slicename,hostname))
159 Date=os.system('set -x; ssh -i ~/.ssh/slices.rsa %s@%s date'%(slicename,hostname))
161 utils.header('connected to %s@%s -->'%(slicename,hostname))
163 utils.header('giving up with to %s@%s -->'%(slicename,hostname))
166 utils.header('Last chance failed on %s@%s -->'%(slicename,hostname))
168 elif ( start_time <= dead_time ) :
169 start_time=datetime.datetime.now()+ datetime.timedelta(minutes=1)