X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fmanagers%2Faggregate_manager.py;h=827b2d9e8ce02b022951331195870cfe75fe4835;hb=f11dae03d2dc79be445c9a604c9c7fc4b222d98d;hp=923b94f151f5b6e8c6b9dbb3a0d11e1136f2d200;hpb=41c41945e7cfdcfb92a3fce70764a714f5bc8086;p=sfa.git diff --git a/sfa/managers/aggregate_manager.py b/sfa/managers/aggregate_manager.py index 923b94f1..827b2d9e 100644 --- a/sfa/managers/aggregate_manager.py +++ b/sfa/managers/aggregate_manager.py @@ -5,7 +5,6 @@ import sys from sfa.util.faults import RecordNotFound, SliverDoesNotExist from sfa.util.xrn import get_authority, hrn_to_urn, urn_to_hrn, Xrn, urn_to_sliver_id from sfa.util.plxrn import slicename_to_hrn, hrn_to_pl_slicename -#from sfa.util.record import * from sfa.util.version import version_core from sfa.util.sfatime import utcparse from sfa.util.callids import Callids @@ -16,12 +15,9 @@ from sfa.rspecs.version_manager import VersionManager from sfa.rspecs.rspec import RSpec import sfa.plc.peers as peers -from sfa.plc.api import SfaAPI +from sfa.plc.plcsfaapi import PlcSfaApi from sfa.plc.aggregate import Aggregate from sfa.plc.slices import Slices -#unused? -#from sfa.plc.network import * -#from sfa.plc.slices import * def GetVersion(api): @@ -192,6 +188,10 @@ def CreateSliver(api, slice_xrn, creds, rspec_string, users, call_id): requested_slivers = [str(host) for host in rspec.version.get_nodes_with_slivers()] slices.verify_slice_nodes(slice, requested_slivers, peer) + aggregate.prepare_nodes({'hostname': requested_slivers}) + aggregate.prepare_interfaces({'node_id': aggregate.nodes.keys()}) + slices.verify_slice_links(slice, rspec.version.get_link_requests(), aggregate) + # hanlde MyPLC peer association. # only used by plc and ple. slices.handle_peer(site, slice, persons, peer) @@ -326,31 +326,17 @@ def ListResources(api, creds, options, call_id): def get_ticket(api, xrn, creds, rspec, users): -#unused -# reg_objects = __get_registry_objects(xrn, creds, users) - (slice_hrn, _) = urn_to_hrn(xrn) -#unused -# slices = Slices(api) -# peer = slices.get_peer(slice_hrn) -# sfa_peer = slices.get_sfa_peer(slice_hrn) + slices = Slices(api) + peer = slices.get_peer(slice_hrn) + sfa_peer = slices.get_sfa_peer(slice_hrn) # get the slice record - registry = api.registries[api.hrn] credential = api.getCredential() + interface = api.registries[api.hrn] + registry = api.get_server(interface, credential) records = registry.Resolve(xrn, credential) - # similar to CreateSliver, we must verify that the required records exist - # at this aggregate before we can issue a ticket -#Error (E1121, get_ticket): Too many positional arguments for function call -#unused anyway -# site_id, remote_site_id = slices.verify_site(registry, credential, slice_hrn, -# peer, sfa_peer, reg_objects) -#Error (E1121, get_ticket): Too many positional arguments for function call -#unused anyway -# slice = slices.verify_slice(registry, credential, slice_hrn, site_id, -# remote_site_id, peer, sfa_peer, reg_objects) - # make sure we get a local slice record record = None for tmp_record in records: @@ -360,9 +346,25 @@ def get_ticket(api, xrn, creds, rspec, users): record = SliceRecord(dict=tmp_record) if not record: raise RecordNotFound(slice_hrn) + + # similar to CreateSliver, we must verify that the required records exist + # at this aggregate before we can issue a ticket + # parse rspec + rspec = RSpec(rspec_string) + requested_attributes = rspec.version.get_slice_attributes() + # ensure site record exists + site = slices.verify_site(hrn, slice_record, peer, sfa_peer) + # ensure slice record exists + slice = slices.verify_slice(hrn, slice_record, peer, sfa_peer) + # ensure person records exists + persons = slices.verify_persons(hrn, slice, users, peer, sfa_peer) + # ensure slice attributes exists + slices.verify_slice_attributes(slice, requested_attributes) + # get sliver info - slivers = Slices(api).get_slivers(slice_hrn) + slivers = slices.get_slivers(slice_hrn) + if not slivers: raise SliverDoesNotExist(slice_hrn) @@ -398,7 +400,7 @@ def main(): #rspec = ListResources(api, "plc.pl.sirius", None, 'pl_test_sirius') print rspec """ - api = SfaAPI() + api = PlcSfaApi() f = open(sys.argv[1]) xml = f.read() f.close()