From ebe5391dbd5e8382cfabdc12c0de3d0cc54f9a68 Mon Sep 17 00:00:00 2001 From: Mohamed Larabi Date: Wed, 16 Jan 2013 19:30:40 +0100 Subject: [PATCH] Dummy driver bug fixing again --- sfa/dummy/dummy_testbed_api.py | 9 ++++++--- sfa/dummy/dummyaggregate.py | 5 +++-- sfa/dummy/dummydriver.py | 10 +++++++--- sfa/dummy/dummyslices.py | 18 +++++++++--------- sfa/dummy/dummyxrn.py | 2 +- 5 files changed, 26 insertions(+), 18 deletions(-) diff --git a/sfa/dummy/dummy_testbed_api.py b/sfa/dummy/dummy_testbed_api.py index 350b4887..f37e52c5 100644 --- a/sfa/dummy/dummy_testbed_api.py +++ b/sfa/dummy/dummy_testbed_api.py @@ -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 diff --git a/sfa/dummy/dummyaggregate.py b/sfa/dummy/dummyaggregate.py index 53f3de9d..4441d858 100644 --- a/sfa/dummy/dummyaggregate.py +++ b/sfa/dummy/dummyaggregate.py @@ -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 = {} diff --git a/sfa/dummy/dummydriver.py b/sfa/dummy/dummydriver.py index 2ac2b73a..5f3138fd 100644 --- a/sfa/dummy/dummydriver.py +++ b/sfa/dummy/dummydriver.py @@ -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) diff --git a/sfa/dummy/dummyslices.py b/sfa/dummy/dummyslices.py index a0ff74a6..e65dddc9 100644 --- a/sfa/dummy/dummyslices.py +++ b/sfa/dummy/dummyslices.py @@ -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: diff --git a/sfa/dummy/dummyxrn.py b/sfa/dummy/dummyxrn.py index d4101356..05c36816 100644 --- a/sfa/dummy/dummyxrn.py +++ b/sfa/dummy/dummyxrn.py @@ -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 -- 2.43.0