X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fmanagers%2Faggregate_manager_vini.py;h=d961443590d024c3c453ff3307443f3a077007cf;hb=5307e4e09dd0a7982f0c6dfdd13065425c802005;hp=2ec4999aecdf2792df54d3c4aef115cb9c845015;hpb=eababa96fb603cdd552bc03091813544b099befd;p=sfa.git diff --git a/sfa/managers/aggregate_manager_vini.py b/sfa/managers/aggregate_manager_vini.py index 2ec4999a..d9614435 100644 --- a/sfa/managers/aggregate_manager_vini.py +++ b/sfa/managers/aggregate_manager_vini.py @@ -1,13 +1,11 @@ -### $Id: slices.py 15842 2009-11-22 09:56:13Z anil $ -### $URL: https://svn.planet-lab.org/svn/sfa/trunk/sfa/plc/slices.py $ - import datetime import time import traceback import sys from types import StringTypes -from sfa.util.namespace import * +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 * @@ -22,30 +20,25 @@ from sfa.managers.vini.vini_network import * from sfa.plc.api import SfaAPI from sfa.plc.slices import * from sfa.managers.aggregate_manager_pl import __get_registry_objects, __get_hostnames +from sfa.util.version import version_core +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) - - -def get_version(): - version = {} - version['geni_api'] = 1 - version['sfa'] = 1 - return version +start_slice, stop_slice, renew_slice, reset_slice, get_slices, get_ticket, slice_status) -def slice_status(api, slice_xrn, creds): - result = {} - result['geni_urn'] = slice_xrn - result['geni_status'] = 'unknown' - result['geni_resources'] = {} - return result +def GetVersion(api): + xrn=Xrn(api.hrn) + return version_core({'interface':'aggregate', + 'testbed':'myplc.vini', + '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: @@ -55,14 +48,16 @@ def delete_slice(api, xrn, creds): api.plshell.DeleteSliceFromNodes(api.plauth, slicename, slice['node_ids']) return 1 -def create_slice(api, xrn, creds, xml, users): +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 "" + hrn, type = urn_to_hrn(xrn) peer = None - reg_objects = __get_registry_objects(slice_xrn, creds, users) + reg_objects = __get_registry_objects(xrn, creds, users) slices = Slices(api) peer = slices.get_peer(hrn) sfa_peer = slices.get_sfa_peer(hrn) @@ -93,13 +88,13 @@ def create_slice(api, xrn, creds, xml, users): 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 get_rspec(api, creds, options): +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', None) + xrn = options.get('geni_slice_urn', '') hrn, type = urn_to_hrn(xrn) # look in cache first @@ -124,14 +119,14 @@ def get_rspec(api, creds, options): def main(): api = SfaAPI() """ - #rspec = get_rspec(api, None, None) - rspec = get_rspec(api, "plc.princeton.iias", None) + #rspec = ListResources(api, None, None,) + rspec = ListResources(api, "plc.princeton.iias", None, 'vini_test') print rspec """ f = open(sys.argv[1]) xml = f.read() f.close() - create_slice(api, "plc.princeton.iias", xml) + CreateSliver(api, "plc.princeton.iias", xml, 'call-id-iias') if __name__ == "__main__": main()