-
-### $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