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
# 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 = {}
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 = []
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)
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]
- 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]
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
# 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
'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
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: