X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fmanagers%2Faggregate_manager_vini.py;h=bcb272913f8fd61fe69d0a58c1af81f558b69228;hb=1e95f8a388325499564df5f8eb6eb1fd10ca2d42;hp=b1a7044ec8b3f596d2aa16ad8608a7bc0c7329c6;hpb=4ff67c801ceeb1d0c7ca2863c2b7bf8152182b8f;p=sfa.git diff --git a/sfa/managers/aggregate_manager_vini.py b/sfa/managers/aggregate_manager_vini.py index b1a7044e..bcb27291 100644 --- a/sfa/managers/aggregate_manager_vini.py +++ b/sfa/managers/aggregate_manager_vini.py @@ -6,17 +6,18 @@ import sys from types import StringTypes from sfa.util.xrn import urn_to_hrn, Xrn from sfa.util.plxrn import hrn_to_pl_slicename -from sfa.util.rspec import * from sfa.util.specdict import * from sfa.util.faults import * from sfa.util.record import SfaRecord from sfa.util.policy import Policy from sfa.util.record import * -from sfa.util.sfaticket import SfaTicket +from sfa.trust.sfaticket import SfaTicket from sfa.server.registry import Registries from sfa.plc.slices import Slices import sfa.plc.peers as peers from sfa.managers.vini.vini_network import * +from sfa.plc.vini_aggregate import ViniAggregate +from sfa.rspecs.version_manager import VersionManager from sfa.plc.api import SfaAPI from sfa.plc.slices import * from sfa.managers.aggregate_manager_pl import __get_registry_objects, __get_hostnames @@ -26,7 +27,7 @@ from sfa.util.callids import Callids # VINI aggregate is almost identical to PLC aggregate for many operations, # so lets just import the methods form the PLC manager from sfa.managers.aggregate_manager_pl import ( -start_slice, stop_slice, renew_slice, reset_slice, get_slices, get_ticket, slice_status) +start_slice, stop_slice, RenewSliver, reset_slice, ListSlices, get_ticket, SliverStatus) def GetVersion(api): @@ -36,8 +37,9 @@ def GetVersion(api): 'hrn':xrn.get_hrn(), }) -def delete_slice(api, xrn, creds): - hrn, type = urn_to_hrn(xrn) +def DeleteSliver(api, xrn, creds, call_id): + if Callids().already_handled(call_id): return "" + (hrn, type) = urn_to_hrn(xrn) slicename = hrn_to_pl_slicename(hrn) slices = api.plshell.GetSlices(api.plauth, {'name': slicename}) if not slices: @@ -52,7 +54,7 @@ def CreateSliver(api, xrn, creds, xml, users, call_id): Verify HRN and initialize the slice record in PLC if necessary. """ - if Callids().already_handled(call_id): return False + if Callids().already_handled(call_id): return "" hrn, type = urn_to_hrn(xrn) peer = None @@ -87,29 +89,30 @@ def CreateSliver(api, xrn, creds, xml, users, call_id): api.plshell.DeleteSliceFromNodes(api.plauth, slice.name, deleted_nodes) network.updateSliceTags() - # print network.toxml() - - return True + # xxx - check this holds enough data for the client to understand what's happened + return network.toxml() def ListResources(api, creds, options,call_id): if Callids().already_handled(call_id): return "" # get slice's hrn from options xrn = options.get('geni_slice_urn', '') hrn, type = urn_to_hrn(xrn) + + version_manager = VersionManager() + # get the rspec's return format from options + rspec_version = version_manager.get_version(options.get('rspec_version')) + version_string = "rspec_%s" % (rspec_version.to_string()) # look in cache first if api.cache and not xrn: - rspec = api.cache.get('nodes') + rspec = api.cache.get(version_string) if rspec: + api.logger.info("aggregate.ListResources: returning cached value for hrn %s"%hrn) return rspec - network = ViniNetwork(api) - if (hrn): - if network.get_slice(api, hrn): - network.addSlice() - - rspec = network.toxml() - + aggregate = ViniAggregate(api, options) + rspec = aggregate.get_rspec(slice_xrn=xrn, version=rspec_version) + # cache the result if api.cache and not xrn: api.cache.add('nodes', rspec)