group db-related stuff in sfa/storage
[sfa.git] / sfa / methods / get_trusted_certs.py
index 2a80560..7a4e1c5 100644 (file)
@@ -1,38 +1,40 @@
-
-### $URL: https://svn.planet-lab.org/svn/sfa/trunk/sfa/methods/reset_slices.py $
-
-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.credential import Credential
 
+from sfa.storage.parameter import Parameter, Mixed
+
 class get_trusted_certs(Method):
     """
     @param cred credential string specifying the rights of the caller
-    @param request_hash hash of the request
-    @return 1 is successful, faults otherwise  
+    @return list of gid strings  
     """
 
-    interfaces = ['registry']
+    interfaces = ['registry', 'aggregate', 'slicemgr']
     
     accepts = [
-        Parameter(str, "Credential string"),
-        Mixed(Parameter(str, "Request hash"),
-              Parameter(None, "Request hash not specified"))
+        Mixed(Parameter(str, "Credential string"),
+              Parameter(None, "Credential not specified"))
         ]
 
-    returns = Parameter(int, "1 if successful")
+    returns = Parameter(type([str]), "List of GID strings")
     
-    def call(self, cred, request_hash=None):
+    def call(self, cred = None):
+        # If cred is not specified just return the gid for this interface.
+        # This is true when when a peer is attempting to initiate federation
+        # with this interface 
+        self.api.logger.debug("get_trusted_certs: %r"%cred)
+        if not cred:
+            gid_strings = []
+            for gid in self.api.auth.trusted_cert_list:
+                if gid.get_hrn() == self.api.config.SFA_INTERFACE_HRN:
+                    gid_strings.append(gid.save_to_string(save_parents=True))   
+            return gid_strings
+
         # authenticate the cred
-        client_gid = Credential(string=cred).get_gid_caller()
-        client_gid_str = client_gid.save_to_string(save_parents=True)
-        self.api.auth.authenticateGid(client_gid_str, [cred], request_hash) 
         self.api.auth.check(cred, 'gettrustedcerts')
-
-        trusted_cert_strings = [gid.save_to_string(save_parents=True) for \
+        gid_strings = [gid.save_to_string(save_parents=True) for \
                                 gid in self.api.auth.trusted_cert_list] 
         
-        return trusted_cert_strings 
+        return gid_strings