X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fmanagers%2Faggregate_manager_pl.py;h=f890a6971023fbf2c3e9ee29f7e3e1622f60bac3;hb=3d7237fa0b5f2b4a60cb97c7fb3b6aecfd94558a;hp=68fd9f5dd804803c05e8d38769e03caef9353056;hpb=1c9f3f90bd27c8a914c0d9357cfbfa9063ee7e5f;p=sfa.git diff --git a/sfa/managers/aggregate_manager_pl.py b/sfa/managers/aggregate_manager_pl.py index 68fd9f5d..f890a697 100644 --- a/sfa/managers/aggregate_manager_pl.py +++ b/sfa/managers/aggregate_manager_pl.py @@ -7,15 +7,17 @@ import traceback import sys from types import StringTypes -from sfa.util.misc import * +from sfa.util.namespace import * from sfa.util.rspec import * from sfa.util.specdict import * from sfa.util.faults import * -from sfa.util.record import GeniRecord +from sfa.util.record import SfaRecord from sfa.util.policy import Policy -from sfa.util.prefixTree import prefixTree -from sfa.util.debug import log +from sfa.util.record import * +from sfa.util.sfaticket import SfaTicket from sfa.server.registry import Registries +from sfa.util.debug import log +from sfa.plc.slices import Slices import sfa.plc.peers as peers def delete_slice(api, hrn): @@ -39,7 +41,51 @@ def create_slice(api, hrn, rspec): # we transition the code to this module from sfa.plc.slices import Slices slices = Slices(api) - slices.create_slice(hrn, rspec) + slices.create_slice_aggregate(hrn, rspec) + +def get_ticket(api, slice_hrn, rspec, origin_hrn=None): + # the the slice record + registries = Registries(api) + registry = registries[api.hrn] + credential = api.getCredential() + records = registry.resolve(credential, slice_hrn) + + # make sure we get a local slice record + record = None + for tmp_record in records: + if tmp_record['type'] == 'slice' and \ + not tmp_record['peer_authority']: + record = SliceRecord(dict=tmp_record) + if not record: + raise RecordNotFound(slice_hrn) + + # get sliver info + slivers = Slices(api).get_slivers(slice_hrn) + if not slivers: + raise SliverDoesNotExist(slice_hrn) + + # get initscripts + initscripts = None + data = { + 'timestamp': int(time.time()), + 'initscripts': initscripts, + 'slivers': slivers + } + + # create the ticket + object_gid = record.get_gid_object() + new_ticket = SfaTicket(subject = object_gid.get_subject()) + new_ticket.set_gid_caller(api.auth.client_gid) + 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) + new_ticket.set_rspec(rspec) + #new_ticket.set_parent(api.auth.hierarchy.get_auth_ticket(auth_hrn)) + new_ticket.encode() + new_ticket.sign() + + return new_ticket.save_to_string(save_parents=True) def start_slice(api, hrn): slicename = hrn_to_pl_slicename(hrn) @@ -77,9 +123,9 @@ def get_slices(api): return slices['hrn'] -def get_rspec(api, hrn=None): +def get_rspec(api, hrn=None, origin_hrn=None): from sfa.plc.nodes import Nodes - nodes = Nodes(api) + nodes = Nodes(api, origin_hrn=origin_hrn) if hrn: rspec = nodes.get_rspec(hrn) else: