X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fmethods%2Fget_resources.py;h=6e93926fe8bdc2f97bf05f28b41a54420db8357d;hb=11d02cbfd5e91784119bb9377fceb4fa6adae621;hp=f5870a1937fcd6bcb74275020ad59146803d4f21;hpb=91132a3428c74e43ab0ddb8e8f679afa1638b411;p=sfa.git diff --git a/sfa/methods/get_resources.py b/sfa/methods/get_resources.py index f5870a19..6e93926f 100644 --- a/sfa/methods/get_resources.py +++ b/sfa/methods/get_resources.py @@ -2,6 +2,7 @@ ### $URL$ from sfa.util.faults import * +from sfa.util.namespace import * from sfa.util.method import Method from sfa.util.parameter import Parameter, Mixed from sfa.trust.auth import Auth @@ -26,28 +27,24 @@ class get_resources(Method): accepts = [ Parameter(str, "Credential string"), - Mixed(Parameter(str, "Human readable name (hrn)"), + Mixed(Parameter(str, "Human readable name (hrn or urn)"), Parameter(None, "hrn not specified")), - Mixed(Parameter(str, "Request hash"), - Parameter(None, "Request hash not specified")) + Mixed(Parameter(str, "Human readable name of the original caller"), + Parameter(None, "Origin hrn not specified")) ] returns = Parameter(str, "String representatin of an rspec") - def call(self, cred, hrn=None, request_hash = None): + def call(self, cred, xrn=None, origin_hrn=None): + hrn, type = urn_to_hrn(xrn) user_cred = Credential(string=cred) #log the call - gid_origin_caller = user_cred.get_gid_origin_caller() - origin_hrn = gid_origin_caller.get_hrn() + if not origin_hrn: + origin_hrn = user_cred.get_gid_caller().get_hrn() self.api.logger.info("interface: %s\tcaller-hrn: %s\ttarget-hrn: %s\tmethod-name: %s"%(self.api.interface, origin_hrn, hrn, self.name)) - # This cred will be an authority cred, not a user, so we cant use it to - # authenticate the caller's request_hash. Let just get the caller's gid - # from the cred and authenticate using that - client_gid = user_cred.get_gid_caller() - client_gid_str = client_gid.save_to_string(save_parents=True) - self.api.auth.authenticateGid(client_gid_str, [cred,hrn], request_hash) + # validate the cred self.api.auth.check(cred, 'listnodes') # send the call to the right manager @@ -56,13 +53,13 @@ class get_resources(Method): mgr_type = self.api.config.SFA_AGGREGATE_TYPE manager_module = manager_base + ".aggregate_manager_%s" % mgr_type manager = __import__(manager_module, fromlist=[manager_base]) - rspec = manager.get_rspec(self.api, hrn, gid_origin_caller) + rspec = manager.get_rspec(self.api, xrn, origin_hrn) outgoing_rules = SFATablesRules('OUTGOING') elif self.api.interface in ['slicemgr']: mgr_type = self.api.config.SFA_SM_TYPE manager_module = manager_base + ".slice_manager_%s" % mgr_type manager = __import__(manager_module, fromlist=[manager_base]) - rspec = manager.get_rspec(self.api, hrn, gid_origin_caller) + rspec = manager.get_rspec(self.api, xrn, origin_hrn) outgoing_rules = SFATablesRules('FORWARD-OUTGOING') filtered_rspec = rspec