X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=sfa%2Fplc%2Fplslices.py;fp=sfa%2Fplc%2Fplslices.py;h=2937d72a8dcf0aaf613fc7899f0930df4079d8a5;hb=013d9db0fd63345c1d24b2b15b59d3dc5036bc18;hp=4a88e224d720ab25bd0dbb696ba4dbe57c75a3b3;hpb=6cebf6bbc4b5a94e3530e5f43a61f7191ced7a1b;p=sfa.git diff --git a/sfa/plc/plslices.py b/sfa/plc/plslices.py index 4a88e224..2937d72a 100644 --- a/sfa/plc/plslices.py +++ b/sfa/plc/plslices.py @@ -2,13 +2,12 @@ from types import StringTypes from collections import defaultdict import sys +from sfa.util.sfatime import utcparse, datetime_to_epoch from sfa.util.sfalogging import logger from sfa.util.xrn import Xrn, get_leaf, get_authority, urn_to_hrn #from sfa.util.policy import Policy -from sfa.util.xrn import Xrn - +from sfa.util.plxrn import PlXrn from sfa.rspecs.rspec import RSpec - from sfa.plc.vlink import VLink from sfa.util.plxrn import hrn_to_pl_slicename @@ -344,8 +343,10 @@ class PlSlices: # unbind from peer so we can modify if necessary. Will bind back later self.driver.shell.UnBindObjectFromPeer('slice', slice['slice_id'], peer['shortname']) #Update existing record (e.g. expires field) it with the latest info. - if slice_record and slice['expires'] != slice_record['expires']: - self.driver.shell.UpdateSlice( slice['slice_id'], {'expires' : slice_record['expires']}) + if slice_record.get('expires'): + requested_expires = int(datetime_to_epoch(utcparse(slice_record['expires']))) + if requested_expires and slice['expires'] != requested_expires: + self.driver.shell.UpdateSlice( slice['slice_id'], {'expires' : requested_expires}) return slice @@ -357,7 +358,7 @@ class PlSlices: for user in users: hrn, type = urn_to_hrn(user['urn']) username = get_leaf(hrn) - login_base = get_leaf(get_authority(user['urn'])) + login_base = PlXrn(xrn=user['urn']).pl_login_base() user['username'] = username user['site'] = login_base @@ -409,6 +410,7 @@ class PlSlices: if login_base == site['login_base'] and \ existing_user['email'].startswith(requested_user['username']+'@'): existing_user_ids.append(existing_user['email']) + requested_user['email'] = existing_user['email'] users_dict[existing_user['email']] = requested_user user_found = True break @@ -417,6 +419,7 @@ class PlSlices: if user_found == False: fake_email = requested_user['username'] + '@geni.net' + requested_user['email'] = fake_email users_dict[fake_email] = requested_user # requested slice users @@ -440,7 +443,7 @@ class PlSlices: for removed_user_id in removed_user_ids: self.driver.shell.DeletePersonFromSlice(removed_user_id, slice_record['name']) # update_existing users - updated_users_list = [user for user in existing_slice_users if user['email'] in \ + 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) @@ -593,7 +596,7 @@ class PlSlices: self.driver.shell.DeleteSliceTag(attribute['slice_tag_id']) except Exception, e: logger.warn('Failed to remove sliver attribute. name: %s, value: %s, node_id: %s\nCause:%s'\ - % (name, value, node_id, str(e))) + % (slice['name'], attribute['value'], attribute.get('node_id'), str(e))) # add requested_attributes for attribute in added_slice_attributes: @@ -601,5 +604,5 @@ class PlSlices: self.driver.shell.AddSliceTag(slice['name'], attribute['name'], attribute['value'], attribute.get('node_id', None)) except Exception, e: logger.warn('Failed to add sliver attribute. name: %s, value: %s, node_id: %s\nCause:%s'\ - % (name, value, node_id, str(e))) + % (slice['name'], attribute['value'], attribute.get('node_id'), str(e)))