X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fmanagers%2Fslice_manager_pl.py;h=c88de02f64117e2351f94adeb34bdbcccd1d76db;hb=5982c08ca1c1f4e248d6fbc161a07c5ef095902a;hp=a897f8d1338d8e38d7eb222f879f00042d903e37;hpb=11d02cbfd5e91784119bb9377fceb4fa6adae621;p=sfa.git diff --git a/sfa/managers/slice_manager_pl.py b/sfa/managers/slice_manager_pl.py index a897f8d1..c88de02f 100644 --- a/sfa/managers/slice_manager_pl.py +++ b/sfa/managers/slice_manager_pl.py @@ -55,11 +55,11 @@ def create_slice(api, xrn, rspec, origin_hrn=None): netspecs = spec.getDictsByTagName('NetSpec') for netspec in netspecs: net_hrn = netspec['name'] - resources = {'start_time': start_time, 'end_time': end_time, 'networks': netspec} + resources = {'start_time': start_time, 'end_time': end_time, 'networks': {'NetSpec' : netspec}} resourceDict = {'RSpec': resources} tempspec.parseDict(resourceDict) rspecs[net_hrn] = tempspec.toxml() - + #print "rspecs:", rspecs.keys() #print "aggregates:", aggregates.keys() # send each rspec to the appropriate aggregate/sm @@ -103,7 +103,7 @@ def get_ticket(api, xrn, rspec, origin_hrn=None): for netspec in netspecs: net_hrn = netspec['name'] resources = {'start_time': 0, 'end_time': 0 , - 'network': netspec} + 'network': {'NetSpec' : netspec}} resourceDict = {'RSpec': resources} temp_rspec.parseDict(resourceDict) rspecs[net_hrn] = temp_rspec.toxml() @@ -113,7 +113,7 @@ def get_ticket(api, xrn, rspec, origin_hrn=None): credential = api.getCredential() tickets = {} for net_hrn in rspecs: - net_urn = urn_to_hrn(net_hrn, 'authority') + net_urn = urn_to_hrn(net_hrn) try: # if we are directly connected to the aggregate then we can just # send them the request. if not, then we may be connected to an sm @@ -125,7 +125,7 @@ def get_ticket(api, xrn, rspec, origin_hrn=None): else: # lets forward this rspec to a sm that knows about the network for agg in aggregates: - network_found = aggregates[agg].get_aggregates(credential, )net_urn + network_found = aggregates[agg].get_aggregates(credential, net_urn) if network_found: ticket = aggregates[aggregate].get_ticket(credential, \ slice_hrn, rspecs[net_hrn], origin_hrn) @@ -137,28 +137,38 @@ def get_ticket(api, xrn, rspec, origin_hrn=None): # create a new ticket new_ticket = SfaTicket(subject = slice_hrn) new_ticket.set_gid_caller(api.auth.client_gid) + new_ticket.set_issuer(key=api.key, subject=api.hrn) tmp_rspec = RSpec() networks = [] - valid_data = {} + valid_data = { + 'timestamp': int(time.time()), + 'initscripts': [], + 'slivers': [] + } # merge data from aggregate ticket into new ticket for agg_ticket in tickets.values(): + # get data from this ticket agg_ticket = SfaTicket(string=agg_ticket) + attributes = agg_ticket.get_attributes() + valid_data['initscripts'].extend(attributes.get('initscripts', [])) + valid_data['slivers'].extend(attributes.get('slivers', [])) + + # set the object gid object_gid = agg_ticket.get_gid_object() new_ticket.set_gid_object(object_gid) - new_ticket.set_issuer(key=api.key, subject=api.hrn) new_ticket.set_pubkey(object_gid.get_pubkey()) - - #new_ticket.set_attributes(data) + + # build the rspec tmp_rspec.parseString(agg_ticket.get_rspec()) networks.extend([{'NetSpec': tmp_rspec.getDictsByTagName('NetSpec')}]) #new_ticket.set_parent(api.auth.hierarchy.get_auth_ticket(auth_hrn)) + new_ticket.set_attributes(valid_data) resources = {'networks': networks, 'start_time': 0, 'duration': 0} resourceDict = {'RSpec': resources} tmp_rspec.parseDict(resourceDict) new_ticket.set_rspec(tmp_rspec.toxml()) - new_ticket.encode() new_ticket.sign() return new_ticket.save_to_string(save_parents=True) @@ -204,7 +214,7 @@ def get_rspec(api, xrn=None, origin_hrn=None): from sfa.plc.nodes import Nodes nodes = Nodes(api, origin_hrn=origin_hrn) - if hrn: + if xrn: rspec = nodes.get_rspec(xrn) else: nodes.refresh() @@ -218,8 +228,8 @@ to refer to "contexts", which is the information that sfatables is requesting. B return the basic information needed in a dict. """ def fetch_context(slice_hrn, user_hrn, contexts): - slice_hrn = urn_to_hrn(slice_xrn)[0] - user_hrn = urn_to_hrn(user_xrn)[0] + #slice_hrn = urn_to_hrn(slice_xrn)[0] + #user_hrn = urn_to_hrn(user_xrn)[0] base_context = {'sfa':{'user':{'hrn':user_hrn}}} return base_context