addressing some of the remaining occurrences of SfaRecord
[sfa.git] / sfa / methods / GetSelfCredential.py
index 647e636..b8eb18a 100644 (file)
@@ -1,12 +1,11 @@
 
-from sfa.util.faults import *
-from sfa.util.namespace import urn_to_hrn
+from sfa.util.faults import RecordNotFound, ConnectionKeyGIDMismatch
+from sfa.util.xrn import urn_to_hrn
 from sfa.util.method import Method
-from sfa.util.parameter import Parameter, Mixed
-from sfa.util.record import SfaRecord
-from sfa.trust.credential import Credential
+
 from sfa.trust.certificate import Certificate
-from sfa.trust.rights import Right, Rights
+
+from sfa.storage.parameter import Parameter, Mixed
 
 class GetSelfCredential(Method):
     """
@@ -54,14 +53,26 @@ class GetSelfCredential(Method):
         origin_hrn = Certificate(string=cert).get_subject()
         self.api.logger.info("interface: %s\tcaller-hrn: %s\ttarget-hrn: %s\tmethod-name: %s"%(self.api.interface, origin_hrn, hrn, self.name))
         
-        manager = self.api.get_interface_manager()
  
-        # authenticate the gid
-        records = manager.resolve(self.api, xrn, type)
+        ### authenticate the gid
+        # import here so we can load this module at build-time for sfa2wsdl
+        #from sfa.storage.alchemy import dbsession
+        from sfa.storage.persistentobjs import RegRecord
+
+        # xxx-local - the current code runs Resolve, which would forward to 
+        # another registry if needed
+        # I wonder if this is truly the intention, or shouldn't we instead 
+        # only look in the local db ?
+        records = self.api.manager.Resolve(self.api, xrn, type)
         if not records:
             raise RecordNotFound(hrn)
-        record = SfaRecord(dict=records[0])
-        gid = record.get_gid_object()
+
+        record_obj = RegRecord ('unknown')
+        record_obj.set_from_dict (records[0])
+        # xxx-local the local-only version would read 
+        #record_obj = dbsession.query(RegRecord).filter_by(hrn=hrn).first()
+        #if not record_obj: raise RecordNotFound(hrn)
+        gid = record_obj.get_gid_object()
         gid_str = gid.save_to_string(save_parents=True)
         self.api.auth.authenticateGid(gid_str, [cert, type, hrn])
         # authenticate the certificate against the gid in the db
@@ -74,4 +85,4 @@ class GetSelfCredential(Method):
                     self.api.logger.debug("ConnectionKeyGIDMismatch, %s filename: %s"%(name,obj.filename))
             raise ConnectionKeyGIDMismatch(gid.get_subject())
         
-        return manager.get_credential(self.api, xrn, type, is_self=True)
+        return self.api.manager.GetCredential(self.api, xrn, type, is_self=True)