From 6591397c6aa3dff5183681233fc8f643549715b2 Mon Sep 17 00:00:00 2001 From: Thierry Parmentelat Date: Thu, 7 Feb 2008 13:15:09 +0000 Subject: [PATCH] real nodes -> warning only - review (wrongly) multiple loop on slices --- system/TestNode.py | 18 +++++++++---- system/TestPlc.py | 10 ++++--- system/TestSlice.py | 65 ++++++++++++++++++++++++--------------------- 3 files changed, 54 insertions(+), 39 deletions(-) diff --git a/system/TestNode.py b/system/TestNode.py index a79c7c3..9d3da8e 100644 --- a/system/TestNode.py +++ b/system/TestNode.py @@ -14,16 +14,24 @@ class TestNode: def name(self): return self.node_spec['node_fields']['hostname'] + @staticmethod + def is_vmware_model(model): + return model.find("vmware") >= 0 def is_vmware (self): - model=self.node_spec['node_fields']['model'] - return model.find("vmware") >= 0 + return TestNode.is_vmware_model(self.node_spec['node_fields']['model']) - def is_qemu (self): - model=self.node_spec['node_fields']['model'] + @staticmethod + def is_qemu_model (model): return model.find("qemu") >= 0 + def is_qemu (self): + return TestNode.is_qemu_model(self.node_spec['node_fields']['model']) + @staticmethod + def is_real_model (model): + return (not TestNode.is_vmware_model(model)) \ + and (not TestNode.is_qemu_model(model)) def is_real (self): - return (not self.is_vmware()) and (not self.is_qemu()) + return TestNode.is_real_model (self.node_spec['node_fields']['model']) def host_box (self): try: diff --git a/system/TestPlc.py b/system/TestPlc.py index fd061a3..cbb3ded 100644 --- a/system/TestPlc.py +++ b/system/TestPlc.py @@ -380,8 +380,7 @@ class TestPlc: else: # if it's a real node, never mind (site_spec,node_spec)=self.locate_node(hostname) - test_node = TestNode(self,site_spec,node_spec) - if test_node.is_real(): + if TestNode.is_real_model(node_spec['node_fields']['model']): utils.header("WARNING - Real node %s in %s - ignored"%(hostname,boot_state)) # let's cheat boot_state = 'boot' @@ -436,6 +435,11 @@ class TestPlc: utils.header('The node %s is sshable -->'%hostname) # refresh tocheck tocheck.remove(hostname) + else: + (site_spec,node_spec)=self.locate_node(hostname) + if TestNode.is_real_model(node_spec['node_fields']['model']): + utils.header ("WARNING : check ssh access into real node %s - skipped"%hostname) + tocheck.remove(hostname) if not tocheck: return True if datetime.datetime.now() > timeout: @@ -496,7 +500,7 @@ class TestPlc: site_spec = self.locate_site (slice_spec['sitename']) test_site = TestSite(self,site_spec) test_slice=TestSlice(self,test_site,slice_spec) - status=test_slice.do_check_slices(options) + status=test_slice.do_check_slice(options) return status def start_nodes (self, options): diff --git a/system/TestSlice.py b/system/TestSlice.py index a3a4568..f4eb9c5 100644 --- a/system/TestSlice.py +++ b/system/TestSlice.py @@ -79,45 +79,48 @@ class TestSlice: return (found,remote_privatekey) - def do_check_slices(self,options): + def do_check_slice(self,options): bool=True self.clear_known_hosts() start_time = datetime.datetime.now() dead_time=start_time + datetime.timedelta(minutes=15) - for slice_spec in self.test_plc.plc_spec['slices']: - for hostname in slice_spec['nodenames']: - slicename=slice_spec['slice_fields']['name'] - (found,remote_privatekey)=self.locate_key(slice_spec) - if( not found): - raise Exception,"Cannot find a valid key for slice %s"%slicename - break - while(bool): - utils.header('trying to connect to %s@%s'%(slicename,hostname)) - Date=self.test_plc.run_in_guest('ssh -i %s %s@%s date'%(remote_privatekey,slicename,hostname)) - if (Date==0): + slice_spec = self.slice_spec + for hostname in slice_spec['nodenames']: + (site_spec,node_spec) = self.test_plc.locate_node(hostname) + if TestNode.is_real_model(node_spec['node_fields']['model']): + utils.header("WARNING : Checking slice %s on real node %s skipped"%(self.name(),hostname)) + continue + (found,remote_privatekey)=self.locate_key(slice_spec) + if not found : + raise Exception,"Cannot find a valid key for slice %s"%self.name() + break + while (bool): + utils.header('trying to connect to %s@%s'%(self.name(),hostname)) + Date=self.test_plc.run_in_guest('ssh -i %s %s@%s date'%(remote_privatekey,self.name(),hostname)) + if (Date==0): + break + elif ( start_time <= dead_time ) : + start_time=datetime.datetime.now()+ datetime.timedelta(seconds=45) + time.sleep(45) + elif (options.forcenm): + utils.header('%s@%s : restarting nm in case is in option on %s'%(self.name(),hostname,hostname)) + access=self.test_plc.run_in_guest('ssh -i /etc/planetlab/root_ssh_key.rsa root@%s service nm restart'%hostname) + if (access==0): + utils.header('nm restarted on %s'%hostname) + else: + utils.header('%s@%s : Failed to restart the NM on %s'%(self.name(),hostname,hostname)) + utils.header('Try to reconnect to %s@%s after the tentative of restarting NM'%(self.name(),hostname)) + connect=self.test_plc.run_in_guest('ssh -i %s %s@%s date'%(remote_privatekey,self.name(),hostname)) + if (not connect): + utils.header('connected to %s@%s -->'%(self.name(),hostname)) break - elif ( start_time <= dead_time ) : - start_time=datetime.datetime.now()+ datetime.timedelta(seconds=45) - time.sleep(45) - elif (options.forcenm): - utils.header('%s@%s : restarting nm in case is in option on %s'%(slicename,hostname,hostname)) - access=self.test_plc.run_in_guest('ssh -i /etc/planetlab/root_ssh_key.rsa root@%s service nm restart'%hostname) - if (access==0): - utils.header('nm restarted on %s'%hostname) - else: - utils.header('%s@%s : Failed to restart the NM on %s'%(slicename,hostname,hostname)) - utils.header('Try to reconnect to %s@%s after the tentative of restarting NM'%(slicename,hostname)) - connect=self.test_plc.run_in_guest('ssh -i %s %s@%s date'%(remote_privatekey,slicename,hostname)) - if (not connect): - utils.header('connected to %s@%s -->'%(slicename,hostname)) - break - else: - utils.header('giving up with to %s@%s -->'%(slicename,hostname)) - bool=False - break else: + utils.header('giving up with to %s@%s -->'%(self.name(),hostname)) bool=False break + else: + bool=False + break return bool -- 2.43.0