X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fmethods%2Fregister.py;h=294b71237a981e195aa70009d5c69bfd23e2804d;hb=af331734b08993f76d3734e1965dc2e54fadebbc;hp=bf4bac61bdebbaf643089911e41c482e017d521e;hpb=0617bf203bd582103e7f45633cd320b1f80d1fb0;p=sfa.git diff --git a/sfa/methods/register.py b/sfa/methods/register.py index bf4bac61..294b7123 100644 --- a/sfa/methods/register.py +++ b/sfa/methods/register.py @@ -38,7 +38,7 @@ class register(Method): returns = Parameter(int, "String representation of gid object") - def call(self, cred, record_dict, request_hash=None, caller_cred=None): + def call(self, cred, record_dict, request_hash=None, origin_hrn=None): # This cred will be an authority cred, not a user, so we cant use it to # authenticate the caller's request_hash. Let just get the caller's gid # from the cred and authenticate using that @@ -46,11 +46,11 @@ class register(Method): client_gid_str = client_gid.save_to_string(save_parents=True) self.api.auth.authenticateGid(client_gid_str, [cred], request_hash) self.api.auth.check(cred, "register") - if caller_cred==None: - caller_cred=cred + if origin_hrn==None: + origin_hrn=Credential(string=cred).get_gid_caller().get_hrn() #log the call - self.api.logger.info("interface: %s\tcaller-hrn: %s\ttarget-hrn: %s\tmethod-name: %s"%(self.api.interface, Credential(string=caller_cred).get_gid_caller().get_hrn(), None, self.name)) + self.api.logger.info("interface: %s\tcaller-hrn: %s\ttarget-hrn: %s\tmethod-name: %s"%(self.api.interface, origin_hrn, None, self.name)) record = GeniRecord(dict = record_dict) record['authority'] = get_authority(record['hrn']) type = record['type'] @@ -104,7 +104,11 @@ class register(Method): record['pointer'] = pointer elif (type == "slice"): + acceptable_fields=['url', 'instantiation', 'name', 'description'] pl_record = self.api.geni_fields_to_pl_fields(type, hrn, record) + for key in pl_record.keys(): + if key not in acceptable_fields: + pl_record.pop(key) slices = self.api.plshell.GetSlices(self.api.plauth, [pl_record['name']]) if not slices: pointer = self.api.plshell.AddSlice(self.api.plauth, pl_record) @@ -118,7 +122,7 @@ class register(Method): if not persons: pointer = self.api.plshell.AddPerson(self.api.plauth, dict(record)) else: - pointer = persons[0]['person_id'] + raise ExistingRecord(record['email']) if 'enabled' in record and record['enabled']: self.api.plshell.UpdatePerson(self.api.plauth, pointer, {'enabled': record['enabled']})