5 from TestConfig import *
10 def __init__ (self,test_plc,site_spec):
11 self.test_plc=test_plc
12 self.site_spec=site_spec
13 self.timset=time.strftime("%H:%M:%S", time.localtime())
15 def create_site (self):
17 print self.test_plc.auth_root()
18 self.site_id = self.test_plc.server.AddSite(self.test_plc.auth_root(),
19 self.site_spec['site_fields'])
20 self.test_plc.server.AddSiteAddress(self.test_plc.auth_root(),self.site_id,
21 self.site_spec['site_address'])
30 def create_user (self, user_spec):
33 print '========>Adding user at '+self.timset+ ': ',user_spec
34 self.person_id=self.test_plc.server.AddPerson(self.test_plc.auth_root(),
36 self.test_plc.server.UpdatePerson(self.test_plc.auth_root(),
37 self.person_id,{'enabled': True})
38 for role in user_spec['roles']:
39 self.test_plc.server.AddRoleToPerson(self.test_plc.auth_root(),
40 role,user_spec['email'])
41 self.test_plc.server.AddPersonToSite(self.test_plc.auth_root(),
43 self.site_spec['site_fields']['login_base'])
47 def enable_user (self, user_spec):
49 persones=self.test_plc.server.GetPersons(self.test_plc.auth_root())
50 for person in persones:
51 if (person['enabled']!="True"):
52 self.test_plc.server.UpdatePerson(self.test_plc.auth_root(),
58 def add_key_user(self,user_spec):
61 for userspec in self.site_spec['users']:
62 if(user_spec == userspec):
63 for role in userspec['roles']:
66 self.test_plc.server.AddPersonKey(self.anyuser_auth(auth),
67 user_spec['email'], key)
71 def anyuser_auth (self,key):
72 for person in self.site_spec['users']:
73 if person['auth_meth']== key :
74 return {'Username':person['email'],
75 'AuthMethod':'password',
76 'AuthString':person['password'],
77 'Role':person['roles'][0],
80 def node_check_status(self,liste_nodes,bool):
84 bt={'boot_state':'boot'}
85 dbg={'boot_state':'dbg'}
87 start_time = datetime.datetime.now() ##geting the current time
88 dead_time=datetime.datetime.now()+ datetime.timedelta(minutes=10)##adding 10minutes
89 start=time.strftime("%H:%M:%S", time.localtime())
90 print "time in the begining is :",start
92 for l in liste_nodes :
94 node_status=self.test_plc.server.GetNodes(self.test_plc.auth_root(),
95 l['hostname'], filter)
96 timset=time.strftime("%H:%M:%S", time.localtime())
97 print 'the actual status for the node '+l['hostname']+' at '+str(timset)+' is :',node_status
99 if (node_status[0] == bt):
100 test_name='\nTest Installation Node hosted: '+l['hostname']
101 self.test_plc.affiche_results(test_name, 'Successful', '')##printing out the result
102 break ##for exsiting and renaming virtual file to just installed
103 elif (node_status[0] ==dbg):
104 test_name='\nTest Installation Node hosted: '+l['hostname']
105 self.test_plc.affiche_results(test_name, 'En Debug', '')##printing out the result
107 break ##for exsiting and renaming virtual file to just installed
108 elif ( start_time <= dead_time ) :
109 start_time=datetime.datetime.now()+ datetime.timedelta(minutes=2)
116 print "Node correctly instaled and booted "
118 print "Node not fully booted "##cheek if configuration file already exist
120 test_name='\nTest Installation Node Hosted: ',l['hostname']
121 self.test_plc.affiche_results(test_name, 'Failure', '')##printing out the result
123 end=time.strftime("%H:%M:%S", time.localtime())
124 print "time at the end is :",end ##converting time to secondes
128 print "vmware killed if problems occur "
130 self.kill_all_vmwares()
133 def kill_all_vmwares(self):
134 os.system('pgrep vmware | xargs -r kill')
135 os.system('pgrep vmplayer | xargs -r kill ')
136 os.system('pgrep vmware | xargs -r kill -9')
137 os.system('pgrep vmplayer | xargs -r kill -9')
139 def run_vmware(self,liste_nodes,display):
140 path=os.path.dirname(sys.argv[0])
142 print " kill last vmware before any new installation "
143 self.kill_all_vmwares()
144 print 'i will be displayed here========>', display
145 arg='< /dev/null &>/dev/null &'
146 for l in liste_nodes :
147 #os.system('set -x; vmplayer VirtualFile-%s/My_Virtual_Machine.vmx %s '%(l['hostname'],arg))
148 os.system('set -x; DISPLAY=%s vmplayer %s/VirtualFile-%s/My_Virtual_Machine.vmx %s '%(display,path,l['hostname'],arg))
150 def delete_known_hosts(self):
152 file1=open('/root/.ssh/known_hosts','r')
153 file2=open('/root/.ssh/known_hosts_temp','w')
155 txt = file1.readline()
160 if txt[0:4]!='test' :
164 os.system('mv -f /root/.ssh/known_hosts_temp /root/.ssh/known_hosts')
168 def slice_access(self,liste_nodes):
173 self.delete_known_hosts()
174 start_time = datetime.datetime.now()
175 dead_time=start_time + datetime.timedelta(minutes=3)##adding 3minutes
176 for slice in slices_specs:
177 for slicenode in slice['slice_nodes']:
178 timset=time.strftime("%H:%M:%S", time.localtime())
180 print '=========>Try to Restart the Node Manager on %s at %s:'%(slicenode['hostname'],str(timset))
181 access=os.system('set -x; ssh -i /etc/planetlab/root_ssh_key.rsa root@%s service nm restart'%slicenode['hostname'] )
183 print '=========>Node Manager Restarted on %s at %s:'%(slicenode['hostname'] ,str(timset))
185 print '=========>Try to connect to the %s@%s at %s '%(slice['slice_spec']['name'],slicenode['hostname'],str(time.strftime("%H:%M:%S", time.localtime())))
186 Date=os.system('set -x; ssh -i ~/.ssh/slices.rsa %s@%s echo "The Actual Time here is;" date'%(slice['slice_spec']['name'],slicenode['hostname']))
189 elif ( start_time <= dead_time ) :
190 start_time=datetime.datetime.now()+ datetime.timedelta(seconds=30)
195 print '=========>connected to the '+slice['slice_spec']['name']+'@'+slicenode['hostname'] +'--->'
197 print '=========>access to one slice is denied but last chance'
198 print '=========>Retry to Restart the Node Manager on %s at %s:'%(slicenode['hostname'],str(timset))
199 access=os.system('set -x; ssh -i /etc/planetlab/root_ssh_key.rsa root@%s service nm restart'%slicenode['hostname'] )
201 print '=========>Retry to connect to the %s@%s at %s '%(slice['slice_spec']['name'],slicenode['hostname'],str(time.strftime("%H:%M:%S", time.localtime())))
202 Date=os.system('set -x; ssh -i ~/.ssh/slices.rsa %s@%s echo "The Actual Time here is;" date'%(slice['slice_spec']['name'],slicenode['hostname'] ))
204 print '=========>connected to the '+slice['slice_spec']['name']+'@'+slicenode['hostname']+'--->'
206 print '=========>the Access is finaly denied'
208 else :"=========>Last try failed"
210 elif ( start_time <= dead_time ) :
211 start_time=datetime.datetime.now()+ datetime.timedelta(minutes=1)
217 print 'Node manager problems'