From ed16d55a2f364c83b2cd94fa70f9da3ba3fa4e2e Mon Sep 17 00:00:00 2001 From: Tony Mack Date: Thu, 31 Dec 2009 00:19:11 +0000 Subject: [PATCH] get caller's hrn from the credentials gid_origin_caller object --- sfa/managers/aggregate_manager_pl.py | 2 +- sfa/managers/slice_manager_pl.py | 11 ++++++----- sfa/methods/get_ticket.py | 17 +++++++++-------- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/sfa/managers/aggregate_manager_pl.py b/sfa/managers/aggregate_manager_pl.py index 9e17a51c..3dd860bd 100644 --- a/sfa/managers/aggregate_manager_pl.py +++ b/sfa/managers/aggregate_manager_pl.py @@ -43,7 +43,7 @@ def create_slice(api, hrn, rspec): slices = Slices(api) slices.create_slice(hrn, rspec) -def get_ticket(api, slice_hrn, rspec, origin_hrn=None): +def get_ticket(api, slice_hrn, rspec, gid_origin_caller=None): # the the slice record registries = Registries(api) registry = registries[api.hrn] diff --git a/sfa/managers/slice_manager_pl.py b/sfa/managers/slice_manager_pl.py index dda726af..78c110a2 100644 --- a/sfa/managers/slice_manager_pl.py +++ b/sfa/managers/slice_manager_pl.py @@ -129,7 +129,7 @@ def create_slice(api, hrn, rspec, gid_origin_caller=None): traceback.print_exc() return 1 -def get_ticket(api, slice_hrn, rspec, origin_hrn=None): +def get_ticket(api, slice_hrn, rspec, gid_origin_caller=None): # get the netspecs contained within the clients rspec client_rspec = RSpec(xml=rspec) @@ -149,6 +149,7 @@ def get_ticket(api, slice_hrn, rspec, origin_hrn=None): # send the rspec to the appropiate aggregate/sm aggregates = Aggregates(api) credential = api.getCredential() + credential.set_gid_origin_caller(gid_origin_caller) tickets = {} for net_hrn in rspecs: try: @@ -158,13 +159,13 @@ def get_ticket(api, slice_hrn, rspec, origin_hrn=None): if net_hrn in aggregates: try: ticket = aggregates[net_hrn].get_ticket(credential, slice_hrn, \ - rspecs[net_hrn], None, origin_hrn) + rspecs[net_hrn], None) tickets[net_hrn] = ticket except: arg_list = [credential,hrn,rspecs[net_hrn]] request_hash = api.key.compute_hash(arg_list) ticket = aggregates[net_hrn].get_ticket(credential, slice_hrn, \ - rspecs[net_hrn], request_hash, origin_hrn) + rspecs[net_hrn], request_hash) tickets[net_hrn] = ticket else: # lets forward this rspec to a sm that knows about the network @@ -180,13 +181,13 @@ def get_ticket(api, slice_hrn, rspec, origin_hrn=None): if network_found: try: ticket = aggregates[aggregate].get_ticket(credential, \ - slice_hrn, rspecs[net_hrn], None, origin_hrn) + slice_hrn, rspecs[net_hrn], None) tickets[aggregate] = ticket except: arg_list = [credential, hrn, rspecs[net_hrn]] request_hash = api.key.compute_hash(arg_list) aggregates[aggregate].get_ticket(credential, slice_hrn, \ - rspecs[net_hrn], request_hash, origin_hrn) + rspecs[net_hrn], request_hash) tickets[aggregate] = ticket except: print >> log, "Error getting ticket for %(slice_hrn)s at aggregate %(net_hrn)s" % \ diff --git a/sfa/methods/get_ticket.py b/sfa/methods/get_ticket.py index 62861e9b..62e0d30d 100644 --- a/sfa/methods/get_ticket.py +++ b/sfa/methods/get_ticket.py @@ -42,16 +42,17 @@ class get_ticket(Method): returns = Parameter(str, "String represeneation of a ticket object") - def call(self, cred, hrn, rspec, request_hash=None, origin_hrn=None): + def call(self, cred, hrn, rspec, request_hash=None): + user_cred = Credential(string=cred) + + #log the call + gid_origin_caller = user_cred.get_gid_origin_caller() + origin_hrn = gid_origin_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)) + self.api.auth.authenticateCred(cred, [cred, hrn, rspec], request_hash) self.api.auth.check(cred, "getticket") - if origin_hrn==None: - origin_hrn=Credential(string=cred).get_gid_caller().get_hrn() - - #log the call - self.api.logger.info("interface: %s\tcaller-hrn: %s\ttarget-hrn: %s\tmethod-name: %s"%(self.api.interface, origin_hrn, hrn, self.name)) - # set the right outgoing rules manager_base = 'sfa.managers' if self.api.interface in ['aggregate']: @@ -80,7 +81,7 @@ class get_ticket(Method): rspec_object = RSpec(xml=rspec) rspec_object.filter(tagname='NodeSpec', attribute='name', whitelist=valid_hostnames) rspec = rspec_object.toxml() - ticket = manager.get_ticket(self.api, hrn, rspec, origin_hrn) + ticket = manager.get_ticket(self.api, hrn, rspec, gid_origin_caller) return ticket -- 2.43.0