check sfa slice right away with plcapi
authorThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Fri, 25 Mar 2011 06:15:28 +0000 (07:15 +0100)
committerThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Fri, 25 Mar 2011 06:15:28 +0000 (07:15 +0100)
system/TestApiserver.py
system/TestPlc.py
system/TestSliceSfa.py

index d0cdc8c..29bdebc 100644 (file)
@@ -41,6 +41,7 @@ server_methods = [ ('GetNodes' ,  []),
                    ('AddPersonKey' , True),
                    ('GetPlcRelease', {'build': {'target-arch':'i386'}}),
                    ('GetSites', []),
+                   ('GetSlices', [{'name':'dry_run_slice'}]),
                    ('GetLeaseGranularity', 180),
                    ('AddLeases', True),
                    ('GetLeases', []),
index ff24c3b..020ac25 100644 (file)
@@ -92,7 +92,8 @@ class TestPlc:
         'initscripts', 'sites', 'nodes', 'slices', 'nodegroups', 'leases', SEP,
         'nodestate_reinstall', 'qemu_local_init','bootcd', 'qemu_local_config', 'qemu_export', 'qemu_kill_all', 'qemu_start', SEP,
        'sfa_install', 'sfa_configure', 'cross_sfa_configure', 'sfa_import', 'sfa_start', SEPSFA,
-        'sfi_configure@1', 'sfa_add_user@1', 'sfa_add_slice@1', 'sfa_discover@1', 'sfa_create_slice@1', SEPSFA, 
+        'sfi_configure@1', 'sfa_add_user@1', 'sfa_add_slice@1', 'sfa_discover@1', SEPSFA,
+        'sfa_create_slice@1', 'sfa_check_slice_plc', SEPSFA, 
         'sfa_update_user@1', 'sfa_update_slice@1', 'sfa_view@1', 'sfa_utest@1',SEPSFA,
         # we used to run plcsh_stress_test, and then ssh_node_debug and ssh_node_boot
         # but as the stress test might take a while, we sometimes missed the debug mode..
@@ -1204,7 +1205,7 @@ class TestPlc:
         return True
 
     def aggregate_xml_line(self):
-        return '<aggregate addr="%s" hrn="%s" port="12346"/>' % \
+        return '<aggregate addr="%s" hrn="%s" port="12347"/>' % \
             (self.vserverip,self.plc_spec['sfa']['SFA_REGISTRY_ROOT_AUTH'])
 
     def registry_xml_line(self):
@@ -1332,6 +1333,11 @@ class TestPlc:
         "run sfi.py create (on SM) - 1st time"
         pass
 
+    @slice_sfa_mapper
+    def sfa_check_slice_plc(self):
+        "check sfa_create_slice at the plcs - all local nodes should be in slice"
+        pass
+
     @slice_sfa_mapper
     def sfa_update_slice(self):
         "run sfi.py create (on SM) on existing object"
index bfef852..43161d6 100644 (file)
@@ -43,28 +43,42 @@ class TestSliceSfa:
        return self.test_plc.run_in_guest("sfi.py -d /root/.sfi/ add slice.xml")==0
 
     def sfa_discover(self,options):
-       auth=self.test_plc.plc_spec['sfa']['SFA_REGISTRY_ROOT_AUTH']
         return self.test_plc.run_in_guest("sfi.py -d /root/.sfi/ resources -o /root/.sfi/resources_in.rspec")==0
 
     def sfa_create_slice(self,options):
-       auth=self.test_plc.plc_spec['sfa']['SFA_REGISTRY_ROOT_AUTH']
+       root_auth=self.test_plc.plc_spec['sfa']['SFA_REGISTRY_ROOT_AUTH']
         commands=[
             "sfiListNodes.py -i /root/.sfi/resources_in.rspec -o /root/.sfi/all_nodes.txt",
             "sfiAddSliver.py -i /root/.sfi/resources_in.rspec -n /root/.sfi/all_nodes.txt -o /root/.sfi/resources_out.rspec",
-            "sfi.py -d /root/.sfi/ create %s.%s.%s resources_out.rspec"%(auth,self.login_base,self.slicename),
+            "sfi.py -d /root/.sfi/ create %s.%s.%s resources_out.rspec"%(root_auth,self.login_base,self.slicename),
             ]
         for command in commands:
             if self.test_plc.run_in_guest(command)!=0: return False
         return True
 
+    # all local nodes in slice ?
+    def sfa_check_slice_plc (self,options):
+        slice_fields = self.slice_spec['slice_fields']
+        slice_name = slice_fields['name']
+        slice=self.test_plc.apiserver.GetSlices(self.test_plc.auth_root(), slice_name)[0]
+        nodes=self.test_plc.apiserver.GetNodes(self.test_plc.auth_root(), {'peer_id':None})
+        result=True
+        for node in nodes: 
+            if node['node_id'] in slice['node_ids']:
+                utils.header("local node %s found in slice %s"%(node['hostname'],slice['name']))
+            else:
+                utils.header("ERROR - local node %s NOT FOUND in slice %s"%(node['hostname'],slice['name']))
+                result=False
+        return result
+
     # actually the same for now
     def sfa_update_slice(self,options):
         return self.sfa_create_slice(options)
 
     def sfa_delete_slice(self,options):
-       auth=self.test_plc.plc_spec['sfa']['SFA_REGISTRY_ROOT_AUTH']
-       self.test_plc.run_in_guest("sfi.py -d /root/.sfi/ delete %s.%s.%s"%(auth,self.login_base,self.slicename))
-       return self.test_plc.run_in_guest("sfi.py -d /root/.sfi/ remove -t slice %s.%s.%s"%(auth,self.login_base,self.slicename))==0
+       root_auth=self.test_plc.plc_spec['sfa']['SFA_REGISTRY_ROOT_AUTH']
+       self.test_plc.run_in_guest("sfi.py -d /root/.sfi/ delete %s.%s.%s"%(root_auth,self.login_base,self.slicename))
+       return self.test_plc.run_in_guest("sfi.py -d /root/.sfi/ remove -t slice %s.%s.%s"%(root_auth,self.login_base,self.slicename))==0
 
     # check the resulting sliver
     def ssh_slice_sfa(self,options,timeout_minutes=40,silent_minutes=30,period=15):