Dummy driver bug fixing again
authorMohamed Larabi <mohamed.larabi@inria.fr>
Wed, 16 Jan 2013 18:30:40 +0000 (19:30 +0100)
committerMohamed Larabi <mohamed.larabi@inria.fr>
Wed, 16 Jan 2013 18:30:40 +0000 (19:30 +0100)
sfa/dummy/dummy_testbed_api.py
sfa/dummy/dummyaggregate.py
sfa/dummy/dummydriver.py
sfa/dummy/dummyslices.py
sfa/dummy/dummyxrn.py

index 350b488..f37e52c 100644 (file)
@@ -29,9 +29,12 @@ def FilterList(myfilter, mylist):
     result.extend(mylist)
     for item in mylist:
          for key in myfilter.keys():
-             if myfilter[key] != item[key]:
-                result.remove(item)
-                break
+             if 'ids' in key:
+                 pass
+             else:
+                 if myfilter[key] != item[key]:
+                     result.remove(item)
+                     break
     return result
 
 
index 53f3de9..4441d85 100644 (file)
@@ -43,7 +43,8 @@ class DummyAggregate:
         slice = slices[0]
         
         # sort slivers by node id 
-        slice_nodes = self.driver.shell.GetNodes({'node_ids': slice['node_ids']})   
+        if 'node_ids' in slice.keys():
+            slice_nodes = self.driver.shell.GetNodes({'node_ids': slice['node_ids']}) 
         for node in slice_nodes:
             slivers[node['node_id']] = node  
 
@@ -53,7 +54,7 @@ class DummyAggregate:
         # if we are dealing with a slice that has no node just return 
         # and empty list    
         if slice_xrn:
-            if not slice or not slice['node_ids']:
+            if not slice or 'node_ids' not in slice.keys() or not slice['node_ids']:
                 return []
 
         filter = {}
index 2ac2b73..5f3138f 100644 (file)
@@ -489,9 +489,9 @@ class DummyDriver (Driver):
         requested_attributes = rspec.version.get_slice_attributes()
         
         # ensure slice record exists
-        slice = slices.verify_slice(slice_hrn, slice_record, peer, sfa_peer, options=options)
+        slice = slices.verify_slice(slice_hrn, slice_record, sfa_peer, options=options)
         # ensure user records exists
-        users = slices.verify_users(slice_hrn, slice, users, peer, sfa_peer, options=options)
+        #users = slices.verify_users(slice_hrn, slice, users, sfa_peer, options=options)
         
         # add/remove slice from nodes
         requested_slivers = []
@@ -503,7 +503,11 @@ class DummyDriver (Driver):
                 hostname = xrn_to_hostname(node.get('component_id').strip())
             if hostname:
                 requested_slivers.append(hostname)
-        nodes = slices.verify_slice_nodes(slice, requested_slivers, peer) 
+        requested_slivers_ids = []
+        for hostname in requested_slivers:
+            node_id = self.shell.GetNodes({'hostname': hostname})[0]['node_id']
+            requested_slivers_ids.append(node_id) 
+        nodes = slices.verify_slice_nodes(slice, requested_slivers_ids) 
     
         return aggregate.get_rspec(slice_xrn=slice_urn, version=rspec.version)
 
index a0ff74a..e65dddc 100644 (file)
@@ -68,8 +68,9 @@ class DummySlices:
         return sfa_peer
 
 
-    def verify_slice_nodes(self, slice, requested_slivers, peer):
-        
+    def verify_slice_nodes(self, slice, requested_slivers):
+        if 'node_ids' not in slice.keys():
+            slice['node_ids']=[] 
         nodes = self.driver.shell.GetNodes({'node_ids': slice['node_ids']})
         current_slivers = [node['hostname'] for node in nodes]
 
@@ -89,7 +90,7 @@ class DummySlices:
 
         
 
-    def verify_slice(self, slice_hrn, slice_record, peer, sfa_peer, options={}):
+    def verify_slice(self, slice_hrn, slice_record, sfa_peer, options={}):
         slicename = hrn_to_dummy_slicename(slice_hrn)
         parts = slicename.split("_")
         login_base = parts[0]
@@ -109,14 +110,15 @@ class DummySlices:
        
         return slice
 
-    def verify_users(self, slice_hrn, slice_record, users, peer, sfa_peer, options={}):
+    def verify_users(self, slice_hrn, slice_record, users, sfa_peer, options={}):
         users_by_email = {}
         users_dict = {} 
+        users_by_site = {}
         for user in users:
             user['urn'] = user['urn'].lower()
             hrn, type = urn_to_hrn(user['urn'])
             username = get_leaf(hrn)
-            login_base = PlXrn(xrn=user['urn']).pl_login_base()
+            login_base = DummyXrn(xrn=user['urn']).dummy_login_base()
             user['username'] = username
             user['site'] = login_base
 
@@ -204,7 +206,7 @@ class DummySlices:
         # update_existing users
         updated_users_list = [user for user in users_dict.values() if user['email'] in \
           updated_user_ids]
-        self.verify_keys(existing_slice_users, updated_users_list, peer, options)
+        self.verify_keys(existing_slice_users, updated_users_list, options)
 
         added_persons = []
         # add new users
@@ -220,8 +222,6 @@ class DummySlices:
                 'key_ids': added_user.get('key_ids', []),
             }
             person['person_id'] = self.driver.shell.AddPerson(person)
-            if peer:
-                person['peer_person_id'] = added_user['person_id']
             added_persons.append(person)
            
             # enable the account 
@@ -250,7 +250,7 @@ class DummySlices:
         return added_persons
             
 
-    def verify_keys(self, old_users, new_users, peer, options={}):
+    def verify_keys(self, old_users, new_users, options={}):
         # existing keys 
         existing_keys = []
         for user in old_users:
index d410135..05c3681 100644 (file)
@@ -71,7 +71,7 @@ class DummyXrn (Xrn):
         self._normalize()
         return self.leaf
 
-    def pl_login_base (self):
+    def dummy_login_base (self):
         self._normalize()
         if self.type and self.type.startswith('authority'):
             base = self.leaf