added support for urn name format. urn is the default name format used over the wire
[sfa.git] / sfa / methods / create_gid.py
index 1b6a94b..c927204 100644 (file)
@@ -4,9 +4,11 @@
 from sfa.trust.certificate import Keypair 
 
 from sfa.util.faults import *
+from sfa.util.namespace import *
 from sfa.util.method import Method
 from sfa.util.parameter import Parameter, Mixed
-from sfa.util.auth import Auth
+from sfa.trust.gid import create_uuid
+from sfa.trust.auth import Auth
 
 class create_gid(Method):
     """
@@ -26,7 +28,7 @@ class create_gid(Method):
     
     accepts = [
         Parameter(str, "Credential string"),
-        Parameter(str, "Human readable name (hrn)"),
+        Parameter(str, "Human readable name (hrn or urn)"),
         Mixed(Parameter(str, "Unique identifier for new GID (uuid)"),
               Parameter(None, "Unique identifier (uuid) not specified")),   
         Parameter(str, "public-key string")
@@ -34,7 +36,12 @@ class create_gid(Method):
 
     returns = Parameter(str, "String represeneation of a GID object")
     
-    def call(self, cred, hrn, uuid, pubkey_str):
+    def call(self, cred, xrn, uuid, pubkey_str):
+        
+        # convert urn to hrn     
+        hrn, type = hrn_to_urn(xrn) 
+
+        # validate the credential
         self.api.auth.check(cred, "getcredential")
         self.api.auth.verify_object_belongs_to_me(hrn)
         self.api.auth.verify_object_permission(hrn)
@@ -44,6 +51,6 @@ class create_gid(Method):
 
         pkey = Keypair()
         pkey.load_pubkey_from_string(pubkey_str)
-        gid = self.api.auth.hierarchy.create_gid(hrn, uuid, pkey)
+        gid = self.api.auth.hierarchy.create_gid(xrn, uuid, pkey)
 
         return gid.save_to_string(save_parents=True)