X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fmanagers%2Faggregate_manager_pl.py;h=6546c69f3e5a162ed5368e6edd7bad56affc9af8;hb=676c77806a1a2fdde35c0161eb79056cc86cbea1;hp=e3b7ddeba1455b6a8d4b413b81e81f883ba8547e;hpb=47a7e0908b640739528a8ceed823db25d2f6802c;p=sfa.git diff --git a/sfa/managers/aggregate_manager_pl.py b/sfa/managers/aggregate_manager_pl.py index e3b7ddeb..6546c69f 100644 --- a/sfa/managers/aggregate_manager_pl.py +++ b/sfa/managers/aggregate_manager_pl.py @@ -6,8 +6,8 @@ import re from types import StringTypes from sfa.util.faults import * -from sfa.util.xrn import get_authority, hrn_to_urn, urn_to_hrn -from sfa.util.plxrn import slicename_to_hrn, hrn_to_pl_slicename +from sfa.util.xrn import get_authority, hrn_to_urn, urn_to_hrn, Xrn +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 * from sfa.util.record import SfaRecord @@ -24,8 +24,11 @@ from sfa.util.version import version_core from sfa.util.sfatime import utcparse def GetVersion(api): + xrn=Xrn(api.hrn) return version_core({'interface':'aggregate', - 'testbed':'myplc'}) + 'testbed':'myplc', + 'hrn':xrn.get_hrn(), + }) def __get_registry_objects(slice_xrn, creds, users): """ @@ -78,7 +81,7 @@ def __get_registry_objects(slice_xrn, creds, users): for user in users: user['key_ids'] = [] hrn, _ = urn_to_hrn(user['urn']) - user['email'] = "geniuser@geni.net" + user['email'] = hrn_to_pl_slicename(hrn) + "@geni.net" user['first_name'] = hrn user['last_name'] = hrn reg_objects['users'][user['email']] = user @@ -103,18 +106,28 @@ def slice_status(api, slice_xrn, creds): 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) - + ['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 = {} + for site in sites: + sites_dict[site['site_id']] = site['login_base'] + + # XX remove me + #api.logger.info(slice_xrn) + #api.logger.info(slice) + #api.logger.info(nodes) + # XX remove me + result = {} - result['geni_urn'] = slice_xrn - result['geni_status'] = 'unknown' + top_level_status = 'unknown' + if nodes: + top_level_status = 'ready' + result['geni_urn'] = Xrn(slice_xrn, 'slice').get_urn() 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'] @@ -122,13 +135,22 @@ def slice_status(api, slice_xrn, creds): 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_urn'] = hostname_to_urn(api.hrn, sites_dict[node['site_id']], node['hostname']) + if node['boot_state'] == 'boot': + res['geni_status'] = 'ready' + else: + res['geni_status'] = 'failed' + top_level_staus = failed + res['geni_error'] = '' resources.append(res) + result['geni_status'] = top_level_status result['geni_resources'] = resources + # XX remove me + #api.logger.info(result) + # XX remove me return result def create_slice(api, slice_xrn, creds, rspec, users):