X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fmanagers%2Fregistry_manager.py;h=c24c1f51b1f261b029e44fbedcd46ca9b64aa132;hb=e3dfbbc08aee7acaf3aedaeb9771cccd677cd647;hp=95b4ed258a1c26bc4023308294017f812bb518c0;hpb=e89c6b17be62bfcd8a39299409d96e417dac156e;p=sfa.git diff --git a/sfa/managers/registry_manager.py b/sfa/managers/registry_manager.py index 95b4ed25..c24c1f51 100644 --- a/sfa/managers/registry_manager.py +++ b/sfa/managers/registry_manager.py @@ -46,7 +46,13 @@ class RegistryManager: hrn = urn_to_hrn(xrn)[0] else: hrn, type = urn_to_hrn(xrn) - + + # Slivers don't have credentials but users should be able to + # specify a sliver xrn and receive the slice's credential + if type == 'sliver' or '-' in Xrn(hrn).leaf: + slice_xrn = self.driver.sliver_to_slice_xrn(hrn) + hrn = slice_xrn.hrn + # Is this a root or sub authority auth_hrn = api.auth.get_authority(hrn) if not auth_hrn or hrn == api.config.SFA_INTERFACE_HRN: @@ -400,12 +406,16 @@ class RegistryManager: # anyway the driver should receive an object # (and then extract __dict__ itself if needed) print "DO NOT REMOVE ME before driver.update, record=%s"%record - (pointer, new_key_pointer) = self.driver.update (record.__dict__, new_record.__dict__, hrn, new_key) - if new_key and new_key_pointer: + new_key_pointer = -1 + try: + (pointer, new_key_pointer) = self.driver.update (record.__dict__, new_record.__dict__, hrn, new_key) + except: + pass + if new_key and new_key_pointer: record.reg_keys=[ RegKey (new_key, new_key_pointer)] record.gid = gid - dbsession.commit(); + dbsession.commit() # update membership for researchers, pis, owners, operators self.update_driver_relations (record, new_record)