From a878485119105d254976667c30e885a8a1eabbfc Mon Sep 17 00:00:00 2001 From: Tony Mack Date: Tue, 3 Aug 2010 22:30:18 +0000 Subject: [PATCH] added slice_status() --- sfa/managers/aggregate_manager_pl.py | 55 ++++++++++------------ sfa/managers/component_manager_pl.py | 12 +++-- sfa/managers/slice_manager_pl.py | 69 ++++++++++++++++++---------- 3 files changed, 77 insertions(+), 59 deletions(-) diff --git a/sfa/managers/aggregate_manager_pl.py b/sfa/managers/aggregate_manager_pl.py index fc45551c..4b5679fe 100644 --- a/sfa/managers/aggregate_manager_pl.py +++ b/sfa/managers/aggregate_manager_pl.py @@ -28,22 +28,12 @@ def get_version(): version['geni_api'] = 1 return version -def delete_slice(api, xrn): - hrn, type = urn_to_hrn(xrn) - slicename = hrn_to_pl_slicename(hrn) - slices = api.plshell.GetSlices(api.plauth, {'name': slicename}) - if not slices: - return 1 - slice = slices[0] - - # determine if this is a peer slice - peer = peers.get_peer(api, hrn) - if peer: - api.plshell.UnBindObjectFromPeer(api.plauth, 'slice', slice['slice_id'], peer) - api.plshell.DeleteSliceFromNodes(api.plauth, slicename, slice['node_ids']) - if peer: - api.plshell.BindObjectToPeer(api.plauth, 'slice', slice['slice_id'], peer, slice['peer_slice_id']) - return 1 +def slice_status(api, slice_xrn, creds): + result = {} + result['geni_urn'] = slice_xrn + result['geni_status'] = 'unknown' + result['geni_resources'] = {} + return result def __get_hostnames(nodes): hostnames = [] @@ -86,8 +76,6 @@ def create_slice(api, slice_xrn, creds, rspec, users): # add nodes from rspec added_nodes = list(set(request).difference(current)) - - if peer: api.plshell.UnBindObjectFromPeer(api.plauth, 'slice', slice.id, peer) @@ -223,7 +211,7 @@ def start_slice(api, xrn): return 1 -def stop_slice(api, xrn): +def stop_slice(api, xrn, creds): hrn, type = urn_to_hrn(xrn) slicename = hrn_to_pl_slicename(hrn) slices = api.plshell.GetSlices(api.plauth, {'name': slicename}, ['slice_id']) @@ -239,6 +227,23 @@ def reset_slice(api, xrn): # XX not implemented at this interface return 1 +def delete_slice(api, xrn, creds): + hrn, type = urn_to_hrn(xrn) + slicename = hrn_to_pl_slicename(hrn) + slices = api.plshell.GetSlices(api.plauth, {'name': slicename}) + if not slices: + return 1 + slice = slices[0] + + # determine if this is a peer slice + peer = peers.get_peer(api, hrn) + if peer: + api.plshell.UnBindObjectFromPeer(api.plauth, 'slice', slice['slice_id'], peer) + api.plshell.DeleteSliceFromNodes(api.plauth, slicename, slice['node_ids']) + if peer: + api.plshell.BindObjectToPeer(api.plauth, 'slice', slice['slice_id'], peer, slice['peer_slice_id']) + return 1 + def get_slices(api): # look in cache first if api.cache: @@ -287,18 +292,6 @@ def get_rspec(api, creds, options): return rspec -""" -Returns the request context required by sfatables. At some point, this -mechanism should be changed to refer to "contexts", which is the -information that sfatables is requesting. But for now, we just return -the basic information needed in a dict. -""" -def fetch_context(slice_xrn, user_xrn, contexts): - slice_hrn, type = urn_to_hrn(slice_xrn) - user_hrn, type = urn_to_hrn(user_xrn) - base_context = {'sfa':{'user':{'hrn':user_hrn}, 'slice':{'hrn':slice_hrn}}} - return base_context - def main(): api = SfaAPI() """ diff --git a/sfa/managers/component_manager_pl.py b/sfa/managers/component_manager_pl.py index 12c73601..879daf16 100644 --- a/sfa/managers/component_manager_pl.py +++ b/sfa/managers/component_manager_pl.py @@ -20,18 +20,24 @@ def get_version(): version['geni_api'] = 1 return version +def slice_status(api, slice_xrn, creds): + result = {} + result['geni_urn'] = slice_xrn + result['geni_status'] = 'unknown' + result['geni_resources'] = {} + return result -def start_slice(api, xrn): +def start_slice(api, xrn, creds): hrn, type = urn_to_hrn(xrn) slicename = hrn_to_pl_slicename(hrn) api.nodemanger.Start(slicename) -def stop_slice(api, xrn): +def stop_slice(api, xrn, creds): hrn, type = urn_to_hrn(xrn) slicename = hrn_to_pl_slicename(hrn) api.nodemanager.Stop(slicename) -def delete_slice(api, xrn): +def delete_slice(api, xrn, creds): hrn, type = urn_to_hrn(xrn) slicename = hrn_to_pl_slicename(hrn) api.nodemanager.Destroy(slicename) diff --git a/sfa/managers/slice_manager_pl.py b/sfa/managers/slice_manager_pl.py index 66681763..08d3e189 100644 --- a/sfa/managers/slice_manager_pl.py +++ b/sfa/managers/slice_manager_pl.py @@ -29,14 +29,12 @@ def get_version(): version['geni_api'] = 1 return version -def delete_slice(api, xrn, origin_hrn=None): - credential = api.getCredential() - threads = ThreadManager() - for aggregate in api.aggregates: - server = api.aggregates[aggregate] - threads.run(server.delete_slice, credential, xrn, origin_hrn) - threads.get_results() - return 1 +def slice_status(api, slice_xrn, creds ): + result = {} + result['geni_urn'] = slice_xrn + result['geni_status'] = 'unknown' + result['geni_resources'] = {} + return result def create_slice(api, xrn, creds, rspec, users): hrn, type = urn_to_hrn(xrn) @@ -138,26 +136,59 @@ def get_ticket(api, xrn, rspec, origin_hrn=None): ticket.sign() return ticket.save_to_string(save_parents=True) -def start_slice(api, xrn): + +def delete_slice(api, xrn, origin_hrn=None): + # XX + # XX TODO: Should try to use delegated credential first + # XX credential = api.getCredential() threads = ThreadManager() for aggregate in api.aggregates: server = api.aggregates[aggregate] - threads.run(server.stop_slice, credential, xrn) + threads.run(server.DeleteSliver, xrn, credential) + threads.get_results() + return 1 + +def start_slice(api, xrn, creds): + # XX + # XX TODO: Should try to use delegated credential first + # XX + credential = api.getCredential() + threads = ThreadManager() + for aggregate in api.aggregates: + server = api.aggregates[aggregate] + threads.run(server.Start, xrn, credential) threads.get_results() return 1 -def stop_slice(api, xrn): +def stop_slice(api, xrn, creds): + # XX + # XX TODO: Should try to use delegated credential first + # XX credential = api.getCredential() threads = ThreadManager() for aggregate in api.aggregates: server = api.aggregates[aggregate] - threads.run(server.stop_slice, credential, xrn) + threads.run(server.Stop, xrn, credential) threads.get_results() return 1 def reset_slice(api, xrn): - # XX not implemented at this interface + """ + Not implemented + """ + return 1 + +def shutdown(api, xrn, creds): + """ + Not implemented + """ + return 1 + +def status(api, xrn, creds): + """ + Not implemented + """ return 1 def get_slices(api): @@ -245,18 +276,6 @@ def get_rspec(api, creds, options): return rspec -""" -Returns the request context required by sfatables. At some point, this -mechanism should be changed to refer to "contexts", which is the -information that sfatables is requesting. But for now, we just 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] - base_context = {'sfa':{'user':{'hrn':user_hrn}, 'slice':{'hrn':slice_hrn}}} - return base_context - def main(): r = RSpec() r.parseFile(sys.argv[1]) -- 2.43.0