From: Tony Mack Date: Wed, 7 Sep 2011 19:48:25 +0000 (-0400) Subject: fix bug when importing vini internet2 sites X-Git-Tag: sfa-1.0-36~18^2 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=403296ed76bd93c453e08d153256925e43174997;p=sfa.git fix bug when importing vini internet2 sites --- diff --git a/sfa/plc/sfa-import-plc.py b/sfa/plc/sfa-import-plc.py index 3dd12d15..19c6acdf 100755 --- a/sfa/plc/sfa-import-plc.py +++ b/sfa/plc/sfa-import-plc.py @@ -29,7 +29,7 @@ from sfa.trust.hierarchy import * from sfa.util.xrn import Xrn from sfa.plc.api import * from sfa.trust.gid import create_uuid -from sfa.plc.sfaImport import sfaImport +from sfa.plc.sfaImport import sfaImport, _cleanup_string def process_options(): @@ -55,6 +55,16 @@ def save_keys(filename, keys): f.write("keys = %s" % str(keys)) f.close() +def _get_site_hrn(interface_hrn, site): + # Hardcode 'internet2' into the hrn for sites hosting + # internet2 nodes. This is a special operation for some vini + # sites only + hrn = ".".join([interface_hrn, site['login_base']]) + if ".vini" in interface_hrn and interface_hrn.endswith('vini'): + if site['login_base'].startswith("i2") or site['login_base'].startswith("nlr"): + hrn = ".".join([interface_hrn, "internet2", site['login_base']]) + return hrn + def main(): process_options() @@ -145,21 +155,23 @@ def main(): slices_dict[slice['slice_id']] = slice # start importing for site in sites: - site_hrn = interface_hrn + "." + site['login_base'] + site_hrn = _get_site_hrn(interface_hrn, site) sfaImporter.logger.info("Importing site: %s" % site_hrn) # import if hrn is not in list of existing hrns or if the hrn exists # but its not a site record if site_hrn not in existing_hrns or \ (site_hrn, 'authority') not in existing_records: - site_hrn = sfaImporter.import_site(interface_hrn, site) + sfaImporter.import_site(site_hrn, site) # import node records for node_id in site['node_ids']: if node_id not in nodes_dict: continue node = nodes_dict[node_id] - hrn = hostname_to_hrn(interface_hrn, site['login_base'], node['hostname']) + root_auth = get_authority(site_hrn) + site_name = get_leaf(site_hrn) + hrn = hostname_to_hrn(root_auth, site_name, node['hostname']) if hrn not in existing_hrns or \ (hrn, 'node') not in existing_records: sfaImporter.import_node(hrn, node) diff --git a/sfa/plc/sfaImport.py b/sfa/plc/sfaImport.py index e9d0940e..167ef60a 100644 --- a/sfa/plc/sfaImport.py +++ b/sfa/plc/sfaImport.py @@ -213,23 +213,9 @@ class sfaImport: table.update(node_record) - def import_site(self, parent_hrn, site): + def import_site(self, hrn, site): shell = self.shell plc_auth = self.plc_auth - sitename = site['login_base'] - sitename = _cleanup_string(sitename) - hrn = parent_hrn + "." + sitename - # Hardcode 'internet2' into the hrn for sites hosting - # internet2 nodes. This is a special operation for some vini - # sites only - if ".vini" in parent_hrn and parent_hrn.endswith('vini'): - if sitename.startswith("i2"): - #sitename = sitename.replace("ii", "") - hrn = ".".join([parent_hrn, "internet2", sitename]) - elif sitename.startswith("nlr"): - #sitename = sitename.replace("nlr", "") - hrn = ".".join([parent_hrn, "internet2", sitename]) - urn = hrn_to_urn(hrn, 'authority') self.logger.info("Import: site %s"%hrn)