7 from TestConfig import *
12 def __init__ (self,test_plc,site_spec):
13 self.test_plc=test_plc
14 self.site_spec=site_spec
15 self.timset=time.strftime("%H:%M:%S", time.localtime())
17 def create_site (self):
19 print self.test_plc.auth_root()
20 self.site_id = self.test_plc.server.AddSite(self.test_plc.auth_root(),
21 self.site_spec['site_fields'])
22 self.test_plc.server.AddSiteAddress(self.test_plc.auth_root(),self.site_id,
23 self.site_spec['site_address'])
32 def create_user (self, user_spec):
35 utils.header('Adding user %s'%user_spec['email'])
36 self.person_id=self.test_plc.server.AddPerson(self.test_plc.auth_root(),
38 self.test_plc.server.UpdatePerson(self.test_plc.auth_root(),
39 self.person_id,{'enabled': True})
40 for role in user_spec['roles']:
41 self.test_plc.server.AddRoleToPerson(self.test_plc.auth_root(),
42 role,user_spec['email'])
43 self.test_plc.server.AddPersonToSite(self.test_plc.auth_root(),
45 self.site_spec['site_fields']['login_base'])
49 def enable_user (self, user_spec):
51 persones=self.test_plc.server.GetPersons(self.test_plc.auth_root())
52 for person in persones:
53 if (person['enabled']!="True"):
54 self.test_plc.server.UpdatePerson(self.test_plc.auth_root(),
60 def add_key_user(self,user_spec):
63 for userspec in self.site_spec['users']:
64 if(user_spec == userspec):
65 for role in userspec['roles']:
68 self.test_plc.server.AddPersonKey(self.anyuser_auth(auth),
69 user_spec['email'], key)
73 def anyuser_auth (self,key):
74 for person in self.site_spec['users']:
75 if person['auth_meth']== key :
76 return {'Username':person['email'],
77 'AuthMethod':'password',
78 'AuthString':person['password'],
79 'Role':person['roles'][0],
82 def node_check_status(self,liste_nodes,bool):
86 bt={'boot_state':'boot'}
87 dbg={'boot_state':'dbg'}
89 start_time = datetime.datetime.now() ##geting the current time
90 dead_time=datetime.datetime.now()+ datetime.timedelta(minutes=10)##adding 10minutes
91 start=time.strftime("%H:%M:%S", time.localtime())
92 print "time in the begining is :",start
94 for l in liste_nodes :
96 node_status=self.test_plc.server.GetNodes(self.test_plc.auth_root(),
97 l['hostname'], filter)
98 timset=time.strftime("%H:%M:%S", time.localtime())
99 print 'the actual status for the node '+l['hostname']+' at '+str(timset)+' is :',node_status
101 if (node_status[0] == bt):
102 test_name='\nTest Installation Node hosted: '+l['hostname']
103 self.test_plc.display_results(test_name, 'Successful', '')##printing out the result
104 break ##for exsiting and renaming virtual file to just installed
105 elif (node_status[0] ==dbg):
106 test_name='\nTest Installation Node hosted: '+l['hostname']
107 self.test_plc.display_results(test_name, 'En Debug', '')##printing out the result
109 break ##for exsiting and renaming virtual file to just installed
110 elif ( start_time <= dead_time ) :
111 start_time=datetime.datetime.now()+ datetime.timedelta(minutes=2)
118 print "Node correctly instaled and booted "
120 print "Node not fully booted "
122 test_name='\nTest Installation Node Hosted: ',l['hostname']
123 self.test_plc.display_results(test_name, 'Failure', '')
125 end=time.strftime("%H:%M:%S", time.localtime())
126 print "time at the end is :",end ##converting time to secondes
130 utils.header("will kill vmware in 10 seconds")
132 self.kill_all_vmwares()
135 def kill_all_vmwares(self):
136 utils.header('Killing any running vmware or vmplayer instance')
137 os.system('pgrep vmware | xargs -r kill')
138 os.system('pgrep vmplayer | xargs -r kill ')
139 os.system('pgrep vmware | xargs -r kill -9')
140 os.system('pgrep vmplayer | xargs -r kill -9')
142 def run_vmware(self,node_specs,display):
143 path=os.path.dirname(sys.argv[0])
144 self.kill_all_vmwares()
145 utils.header('Displaying vmplayer on DISPLAY=%s'%display)
146 for spec in node_specs :
147 hostname=spec['hostname']
148 utils.header('Starting vmplayer for node %s -- see vmplayer.log'%hostname)
149 os.system('set -x; cd %s/vmplayer-%s ; DISPLAY=%s vmplayer node.vmx < /dev/null 2>&1 >> vmplayer.log &'%(path,hostname,display))
151 def delete_known_hosts(self):
152 utils.header("messing with known_hosts (cleaning hostnames starting with 'test'")
154 file1=open('/root/.ssh/known_hosts','r')
155 file2=open('/root/.ssh/known_hosts_temp','w')
157 txt = file1.readline()
162 if txt[0:4]!='test' :
166 os.system('set -x ; mv -f /root/.ssh/known_hosts_temp /root/.ssh/known_hosts')
170 def slice_access(self):
175 self.delete_known_hosts()
176 start_time = datetime.datetime.now()
177 dead_time=start_time + datetime.timedelta(minutes=3)##adding 3minutes
178 for slice in slices_specs:
179 for slicenode in slice['slice_nodes']:
180 hostname=slicenode['hostname']
181 slicename=slice['slice_spec']['name']
183 utils.header('restarting nm on %s'%hostname)
184 access=os.system('set -x; ssh -i /etc/planetlab/root_ssh_key.rsa root@%s service nm restart'%hostname )
186 utils.header('nm restarted on %s'%hostname)
188 utils.header('trying to connect to %s@%s'%(slicename,hostname))
189 Date=os.system('set -x; ssh -i ~/.ssh/slices.rsa %s@%s date'%(slicename,hostname))
192 elif ( start_time <= dead_time ) :
193 start_time=datetime.datetime.now()+ datetime.timedelta(seconds=30)
198 utils.header('connected to %s@%s -->'%(slicename,hostname))
200 utils.header('%s@%s : last chance - restarting nm on %s'%(slicename,hostname,hostname))
201 access=os.system('set -x; ssh -i /etc/planetlab/root_ssh_key.rsa root@%s service nm restart'%hostname)
203 utils.header('trying to connect (2) to %s@%s'%(slicename,hostname))
204 Date=os.system('set -x; ssh -i ~/.ssh/slices.rsa %s@%s date'%(slicename,hostname))
206 utils.header('connected to %s@%s -->'%(slicename,hostname))
208 utils.header('giving up with to %s@%s -->'%(slicename,hostname))
211 utils.header('Last chance failed on %s@%s -->'%(slicename,hostname))
213 elif ( start_time <= dead_time ) :
214 start_time=datetime.datetime.now()+ datetime.timedelta(minutes=1)
220 print 'Node manager problems'