From 623749ec5256507437ef644d33be10fbd185559d Mon Sep 17 00:00:00 2001 From: Tony Mack Date: Thu, 7 Jul 2011 17:14:46 -0400 Subject: [PATCH] fix slices geni_urn in SliverStatus --- sfa/managers/aggregate_manager_pl.py | 12 +++++++----- sfa/util/xrn.py | 1 + 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/sfa/managers/aggregate_manager_pl.py b/sfa/managers/aggregate_manager_pl.py index 428b7a0d..b6ac34dc 100644 --- a/sfa/managers/aggregate_manager_pl.py +++ b/sfa/managers/aggregate_manager_pl.py @@ -8,7 +8,7 @@ import re from types import StringTypes from sfa.util.faults import * -from sfa.util.xrn import get_authority, hrn_to_urn, urn_to_hrn, Xrn +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, hostname_to_urn from sfa.util.rspec import * from sfa.util.specdict import * @@ -117,14 +117,14 @@ def SliverStatus(api, slice_xrn, creds, call_id): api.logger.info(hrn) slicename = hrn_to_pl_slicename(hrn) - slices = api.plshell.GetSlices(api.plauth, [slicename], ['node_ids','person_ids','name','expires']) + slices = api.plshell.GetSlices(api.plauth, [slicename], ['slice_id', '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] # report about the local nodes only nodes = api.plshell.GetNodes(api.plauth, {'node_id':slice['node_ids'],'peer_id':None}, - ['hostname', 'site_id', 'boot_state', 'last_contact']) + ['node_id', 'hostname', 'site_id', 'boot_state', 'last_contact']) site_ids = [node['site_id'] for node in nodes] sites = api.plshell.GetSites(api.plauth, site_ids, ['site_id', 'login_base']) sites_dict = dict ( [ (site['site_id'],site['login_base'] ) for site in sites ] ) @@ -133,7 +133,8 @@ def SliverStatus(api, slice_xrn, creds, call_id): top_level_status = 'unknown' if nodes: top_level_status = 'ready' - result['geni_urn'] = Xrn(slice_xrn, 'slice').get_urn() + slice_urn = Xrn(slice_xrn, 'slice').get_urn() + result['geni_urn'] = slice_urn result['pl_login'] = slice['name'] result['pl_expires'] = datetime.datetime.fromtimestamp(slice['expires']).ctime() @@ -145,7 +146,8 @@ def SliverStatus(api, slice_xrn, creds, call_id): res['pl_last_contact'] = node['last_contact'] if node['last_contact'] is not None: res['pl_last_contact'] = datetime.datetime.fromtimestamp(node['last_contact']).ctime() - res['geni_urn'] = hostname_to_urn(api.hrn, sites_dict[node['site_id']], node['hostname']) + sliver_id = urn_to_sliver_id(slice_urn, slice['slice_id'], node['node_id']) + res['geni_urn'] = sliver_id if node['boot_state'] == 'boot': res['geni_status'] = 'ready' else: diff --git a/sfa/util/xrn.py b/sfa/util/xrn.py index 31f77f23..c166400e 100644 --- a/sfa/util/xrn.py +++ b/sfa/util/xrn.py @@ -9,6 +9,7 @@ def urn_to_hrn(urn): xrn=Xrn(urn); return (xrn.hrn, xrn.type) def hrn_to_urn(hrn,type): return Xrn(hrn, type=type).urn def urn_to_sliver_id(urn, slice_id, node_id, index=0): + urn = urn.replace('+slice+', '+sliver+') return ":".join([urn, str(slice_id), str(node_id), str(index)]) class Xrn: -- 2.43.0