X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=system%2FTestSlice.py;h=a72c6806a8bfeecb0519304f973ce1f708af9108;hb=5abc2125f8a5aeb58783affd6a3b532f02acd216;hp=02d6caa9e1feb7fa28f021c9c491b81319aa7925;hpb=eb4d7e9f9e7f77d6f2e49aab70dd715a43708230;p=tests.git diff --git a/system/TestSlice.py b/system/TestSlice.py index 02d6caa..a72c680 100644 --- a/system/TestSlice.py +++ b/system/TestSlice.py @@ -29,7 +29,7 @@ class TestSlice: auth = TestUser(self,self.test_site,owner_spec).auth() slice_fields = self.slice_spec['slice_fields'] slice_name = slice_fields['name'] - self.test_plc.server.DeleteSlice(auth,slice_fields['name']) + self.test_plc.apiserver.DeleteSlice(auth,slice_fields['name']) utils.header("Deleted slice %s"%slice_fields['name']) @@ -39,11 +39,11 @@ class TestSlice: slice_fields = self.slice_spec['slice_fields'] slice_name = slice_fields['name'] - self.test_plc.server.AddSlice(auth,slice_fields) + self.test_plc.apiserver.AddSlice(auth,slice_fields) for username in self.slice_spec['usernames']: user_spec=self.test_site.locate_user(username) test_user=TestUser(self,self.test_site,user_spec) - self.test_plc.server.AddPersonToSlice(auth, test_user.name(), slice_name) + self.test_plc.apiserver.AddPersonToSlice(auth, test_user.name(), slice_name) hostnames=[] for nodename in self.slice_spec['nodenames']: @@ -51,27 +51,19 @@ class TestSlice: test_node=TestNode(self,self.test_site,node_spec) hostnames += [test_node.name()] utils.header("Adding %r in %s"%(hostnames,slice_name)) - self.test_plc.server.AddSliceToNodes(auth, slice_name, hostnames) + self.test_plc.apiserver.AddSliceToNodes(auth, slice_name, hostnames) if self.slice_spec.has_key('initscriptname'): isname=self.slice_spec['initscriptname'] utils.header("Adding initscript %s in %s"%(isname,slice_name)) - self.test_plc.server.AddSliceAttribute(self.test_plc.auth_root(), slice_name,'initscript',isname) + self.test_plc.apiserver.AddSliceAttribute(self.test_plc.auth_root(), slice_name,'initscript',isname) + if self.slice_spec.has_key ('vref'): + vref_value=self.slice_spec['vref'] + self.test_plc.apiserver.AddSliceAttribute(self.test_plc.auth_root(), slice_name,'vref',vref_value) -# def clear_known_hosts (self): -# utils.header("Messing with known_hosts for slice %s"%self.name()) -# hostnames=[] -# # scan nodenames -# for nodename in self.slice_spec['nodenames']: -# (site_spec,node_spec) = self.test_plc.locate_node(nodename) -# hostnames.append(node_spec['node_fields']['hostname']) -# self.test_plc.run_in_guest("sed -i -e /^%s/d /root/.ssh/known_hosts"%node_spec['node_fields']['hostname']) -# #scan public key and update the known_host file in the root image -# self.test_plc.scan_publicKeys(hostnames) - - def locate_key(self,slice_spec): + def locate_key(self): # locate the first avail. key found=False - for username in slice_spec['usernames']: + for username in self.slice_spec['usernames']: user_spec=self.test_site.locate_user(username) for keyname in user_spec['keynames']: key_spec=self.test_plc.locate_key(keyname) @@ -81,26 +73,19 @@ class TestSlice: keyname=test_key.name() if os.path.isfile(publickey) and os.path.isfile(privatekey): found=True - #create dir in plc root image - remote_privatekey="/root/keys/%s.rsa"%keyname - if not os.path.isfile(remote_privatekey): - self.test_plc.run_in_guest("mkdir -p /root/keys" ) - self.test_plc.copy_in_guest(privatekey,remote_privatekey,True) + return (found,privatekey) - return (found,remote_privatekey) - - def do_check_slice(self,minutes,options): -# self.clear_known_hosts() + def check_slice(self,options,minutes=10,gracetime=4,period=15): timeout = datetime.datetime.now()+datetime.timedelta(minutes=minutes) - + graceout = datetime.datetime.now()+datetime.timedelta(minutes=gracetime) # locate a key - slice_spec = self.slice_spec - (found,remote_privatekey)=self.locate_key(slice_spec) + (found,remote_privatekey)=self.locate_key() if not found : utils.header("WARNING: Cannot find a valid key for slice %s"%self.name()) return False # convert nodenames to real hostnames + slice_spec = self.slice_spec restarted=[] tocheck=[] for nodename in slice_spec['nodenames']: @@ -109,13 +94,14 @@ class TestSlice: while tocheck: for hostname in tocheck: - (site_spec,node_spec) = self.test_plc.locate_host(hostname) + (site_spec,node_spec) = self.test_plc.locate_hostname(hostname) date_test_ssh = TestSsh (hostname,key=remote_privatekey,username=self.name()) + if datetime.datetime.now() >= graceout: + utils.header('Trying to enter into slice %s@%s'%(self.name(),hostname)) # this can be ran locally as we have the key - utils.header('Trying to enter into slice %s@%s'%(self.name(),hostname)) - date = date_test_ssh.run("date") - if not date: - utils.header("Successfuly entered slice %s on %s"%self.name(),hostname) + date = date_test_ssh.run("id;hostname")==0 + if date: + utils.header("Successfuly entered slice %s on %s"%(self.name(),hostname)) tocheck.remove(hostname) else: # real nodes will have been checked once in case they're up - skip if not @@ -139,6 +125,8 @@ class TestSlice: for hostname in tocheck: utils.header("FAILURE to ssh into %s@%s"%(self.name(),hostname)) return False - time.sleep (15) + # wait for the period + time.sleep (period) # for an empty slice return True +