removed another bunch of references to geni
[sfa.git] / sfa / methods / get_gid.py
index 5a25b02..b3d7c6f 100644 (file)
@@ -6,13 +6,11 @@
 #            raise ConnectionKeyGIDMismatch(gid.get_subject())
 
 from sfa.util.faults import *
 #            raise ConnectionKeyGIDMismatch(gid.get_subject())
 
 from sfa.util.faults import *
-from sfa.util.misc import *
 from sfa.util.method import Method
 from sfa.util.parameter import Parameter, Mixed
 from sfa.trust.auth import Auth
 from sfa.trust.gid import GID
 from sfa.trust.certificate import Certificate
 from sfa.util.method import Method
 from sfa.util.parameter import Parameter, Mixed
 from sfa.trust.auth import Auth
 from sfa.trust.gid import GID
 from sfa.trust.certificate import Certificate
-from sfa.util.genitable import GeniTable
 
 class get_gid(Method):
     """
 
 class get_gid(Method):
     """
@@ -27,28 +25,30 @@ class get_gid(Method):
     accepts = [
         Parameter(str, "Certificate string"),
         Parameter(str, "Human readable name (hrn)"), 
     accepts = [
         Parameter(str, "Certificate string"),
         Parameter(str, "Human readable name (hrn)"), 
-        Mixed(Parameter(str, "Request hash"),
-              Parameter(None, "Request hash not specified")) 
+        Parameter(str, "Object type") 
         ]
 
         ]
 
-    returns = [Parameter(dict, "Aggregate interface information")]
+    returns = Parameter(str, "GID string")
     
     
-    def call(self, cert, hrn, type, request_hash=None):
+    def call(self, cert, hrn, type):
       
         self.api.auth.verify_object_belongs_to_me(hrn)
       
         self.api.auth.verify_object_belongs_to_me(hrn)
-        certificate = Certificate(string=cert) 
-        table = GeniTable()
-        records = table.find({'hrn': hrn, 'type': type})
+
+        # resolve the record
+        manager_base = 'sfa.managers'
+        mgr_type = self.api.config.SFA_REGISTRY_TYPE
+        manager_module = manager_base + ".registry_manager_%s" % mgr_type
+        manager = __import__(manager_module, fromlist=[manager_base])
+        records = manager.resolve(self.api, hrn, type, origin_hrn=hrn)
         if not records:
             raise RecordNotFound(hrn)
         record = records[0]
         if not records:
             raise RecordNotFound(hrn)
         record = records[0]
-        gidStr = record['gid']
-        gid = GID(string=gidStr)
-         
+
+        # make sure client's certificate is the gid's pub key 
+        gid = GID(string=record['gid'])
+        certificate = Certificate(string=cert) 
         if not certificate.is_pubkey(gid.get_pubkey()):
             raise ConnectionKeyGIDMismatch(gid.get_subject())
         if not certificate.is_pubkey(gid.get_pubkey()):
             raise ConnectionKeyGIDMismatch(gid.get_subject())
+
+        return record['gid'] 
         
         
-        # authenticate the gid
-        self.api.auth.authenticateGid(gidStr, [cert, hrn, type], request_hash)
-        
-        return gidStr