from sfa.util.parameter import Parameter, Mixed
from sfa.util.record import SfaRecord
from sfa.util.debug import log
+from sfa.trust.certificate import Certificate
-class get_self_credential(Method):
+class GetSelfCredential(Method):
"""
Retrive a credential for an object
@param cert certificate string
accepts = [
Parameter(str, "certificate"),
Parameter(str, "Human readable name (hrn or urn)"),
- Mixed(Parameter(str, "Request hash"),
- Parameter(None, "Request hash not specified"))
+ Parameter(str, "Object type"),
]
returns = Parameter(str, "String representation of a credential object")
- def call(self, cert, type, xrn, origin_hrn=None):
+ def call(self, cert, xrn, type):
"""
get_self_credential a degenerate version of get_credential used by a client
to get his initial credential when de doesnt have one. This is the same as
hrn, type = urn_to_hrn(xrn)
self.api.auth.verify_object_belongs_to_me(hrn)
- #log the call
- if not origin_hrn:
- origin_hrn = hrn
- self.api.logger.info("interface: %s\tcaller-hrn: %s\ttarget-hrn: %s\tmethod-name: %s"%(self.api.interface, origin_hrn, hrn, self.name))
+ 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))
- # send the call to the right manager
- 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])
-
+ manager = self.api.get_interface_manager()
+
# authenticate the gid
records = manager.resolve(self.api, xrn, type)
if not records: