From: Tony Mack Date: Wed, 2 Mar 2011 19:47:46 +0000 (-0500) Subject: modifications to slice_status X-Git-Tag: sfa-1.0-15~1^2~3 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=31b7f74a8aa673591ee2106cc9c2d7bb226f66b4;p=sfa.git modifications to slice_status --- diff --git a/sfa/managers/aggregate_manager_vini.py b/sfa/managers/aggregate_manager_vini.py index e79dcf42..7b0a28c0 100644 --- a/sfa/managers/aggregate_manager_vini.py +++ b/sfa/managers/aggregate_manager_vini.py @@ -25,21 +25,13 @@ from sfa.util.version import version_core # 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) +start_slice, stop_slice, renew_slice, reset_slice, get_slices, get_ticket, slice_status) def GetVersion(api): return version_core({'interface':'aggregate', 'testbed':'myplc.vini'}) -def slice_status(api, slice_xrn, creds): - result = {} - result['geni_urn'] = slice_xrn - result['geni_status'] = 'unknown' - result['geni_resources'] = {} - return result - - def delete_slice(api, xrn, creds): hrn, type = urn_to_hrn(xrn) slicename = hrn_to_pl_slicename(hrn) diff --git a/sfa/managers/registry_manager_pl.py b/sfa/managers/registry_manager_pl.py index d0998ddc..135fd8da 100644 --- a/sfa/managers/registry_manager_pl.py +++ b/sfa/managers/registry_manager_pl.py @@ -13,6 +13,7 @@ from sfa.trust.credential import Credential from sfa.trust.certificate import Certificate, Keypair from sfa.trust.gid import create_uuid from sfa.util.version import version_core +from sfa.managers.aggregate_manager_pl import slice_status # The GENI GetVersion call def GetVersion(api): diff --git a/sfa/managers/slice_manager_pl.py b/sfa/managers/slice_manager_pl.py index 0cee6523..d8977e3c 100644 --- a/sfa/managers/slice_manager_pl.py +++ b/sfa/managers/slice_manager_pl.py @@ -24,6 +24,10 @@ import sfa.util.xmlrpcprotocol as xmlrpcprotocol import sfa.plc.peers as peers from sfa.util.version import version_core +# XX FIX ME: should merge result from multiple aggregates instead of +# calling aggregate implementation +from sfa.managers.aggregate_manager_pl import slice_status + def GetVersion(api): peers =dict ([ (peername,v._ServerProxy__host) for (peername,v) in api.aggregates.items() if peername != api.hrn]) @@ -34,46 +38,6 @@ def GetVersion(api): 'peers': peers, }) -def slice_status(api, slice_xrn, creds ): - hrn, type = urn_to_hrn(slice_xrn) - # find out where this slice is currently running - api.logger.info(hrn) - slicename = hrn_to_pl_slicename(hrn) - api.logger.info("Checking status for %s" % slicename) - slices = api.plshell.GetSlices(api.plauth, [slicename], ['node_ids','person_ids','name','expires']) - if len(slices) == 0: - raise Exception("Slice %s not found (used %s as slicename internally)" % (slice_xrn, slicename)) - slice = slices[0] - - nodes = api.plshell.GetNodes(api.plauth, slice['node_ids'], - ['hostname', 'boot_state', 'last_contact']) - api.logger.info(slice) - api.logger.info(nodes) - - result = {} - result['geni_urn'] = Xrn(slice_xrn, 'slice').get_urn() - result['geni_status'] = 'unknown' - result['pl_login'] = slice['name'] - result['pl_expires'] = datetime.datetime.fromtimestamp(slice['expires']).ctime() - - resources = [] - - for node in nodes: - res = {} - res['pl_hostname'] = node['hostname'] - res['pl_boot_state'] = node['boot_state'] - res['pl_last_contact'] = node['last_contact'] - if not node['last_contact'] is None: - res['pl_last_contact'] = datetime.datetime.fromtimestamp(node['last_contact']).ctime() - res['geni_urn'] = '' - res['geni_status'] = 'unknown' - res['geni_error'] = '' - - resources.append(res) - - result['geni_resources'] = resources - return result - def create_slice(api, xrn, creds, rspec, users): hrn, type = urn_to_hrn(xrn)