geni v3 updates
[sfa.git] / sfa / managers / registry_manager.py
index 03a9043..f6277ed 100644 (file)
@@ -42,7 +42,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:
@@ -311,6 +317,7 @@ class RegistryManager:
                 api.auth.hierarchy.create_auth(hrn_to_urn(hrn,'authority'))
     
             # get the GID from the newly created authority
+            auth_info = api.auth.get_auth_info(hrn)
             gid = auth_info.get_gid_object()
             record.gid=gid.save_to_string(save_parents=True)
 
@@ -390,11 +397,11 @@ class RegistryManager:
             dbsession.commit()
         
         # update the PLC information that was specified with the record
-        # xxx oddly enough, without this statement, record.__dict__ as received by 
-        # the driver seems to be off
+        # xxx oddly enough, without this useless statement, 
+        # record.__dict__ as received by the driver seems to be off
         # anyway the driver should receive an object 
         # (and then extract __dict__ itself if needed)
-        print "before driver.update, record=%s"%record
+        print "DO NOT REMOVE ME before driver.update, record=%s"%record
         if not self.driver.update (record.__dict__, new_record.__dict__, hrn, new_key):
             logger.warning("driver.update failed")