From 524457658288c015f6c446095d4c645e6d802b5d Mon Sep 17 00:00:00 2001 From: Josh Karlin Date: Tue, 11 May 2010 19:33:45 +0000 Subject: [PATCH] merged in trunk -r 17998:18006 --- sfa/methods/get_aggregates.py | 4 ++-- sfa/methods/get_geni_aggregates.py | 13 +++++++------ sfa/methods/get_registries.py | 4 ++-- sfa/plc/sfaImport.py | 14 +++++++++----- sfa/server/interface.py | 11 ++++++++++- 5 files changed, 30 insertions(+), 16 deletions(-) diff --git a/sfa/methods/get_aggregates.py b/sfa/methods/get_aggregates.py index 421dcf83..2a4cf101 100644 --- a/sfa/methods/get_aggregates.py +++ b/sfa/methods/get_aggregates.py @@ -40,9 +40,9 @@ class get_aggregates(Method): hrn_list = hrn if not hrn_list: - interfaces = aggregates.interfaces + interfaces = aggregates.interfaces.keys() else: - interfaces = [interface for interface in aggregates.interfaces if interface['hrn'] in hrn_list] + interfaces = [interface for interface in aggregates.interfaces if interface in hrn_list] return interfaces diff --git a/sfa/methods/get_geni_aggregates.py b/sfa/methods/get_geni_aggregates.py index e556c6e8..d09505f6 100644 --- a/sfa/methods/get_geni_aggregates.py +++ b/sfa/methods/get_geni_aggregates.py @@ -34,6 +34,8 @@ class get_geni_aggregates(Method): geni_aggs = Aggregates(self.api, '/etc/sfa/geni_aggregates.xml') + geni_aggs = geni_aggs.interfaces.values() + hrn_list = [] if hrn: if isinstance(hrn, StringTypes): @@ -42,16 +44,15 @@ class get_geni_aggregates(Method): hrn_list = hrn if not hrn_list: - interfaces = geni_aggs.interfaces + interfaces = geni_aggs else: - interfaces = [interface for interface in geni_aggs.interfaces if interface['hrn'] in hrn_list] - + interfaces = [interface for interface in geni_aggs if interface['hrn'] in hrn_list] + + # Remove Aggregate's default sfa-aggregate interfaces = interfaces[:-1] - # Remove empty interfaces - interfaces = [interface for interface in interfaces if interface['hrn'] != ''] - + # Add urns for interface in interfaces: interface['urn'] = hrn_to_urn(interface['hrn'], 'authority') diff --git a/sfa/methods/get_registries.py b/sfa/methods/get_registries.py index 9cbba391..082c5df8 100644 --- a/sfa/methods/get_registries.py +++ b/sfa/methods/get_registries.py @@ -39,8 +39,8 @@ class get_registries(Method): hrn_list = hrn if not hrn_list: - interfaces = registries.interfaces + interfaces = registries.interfaces.keys() else: - interfaces = [interface for interface in registries.interfaces if interface['hrn'] in hrn_list] + interfaces = [interface for interface in registries.interfaces if interface in hrn_list] return interfaces diff --git a/sfa/plc/sfaImport.py b/sfa/plc/sfaImport.py index 84c00c74..b95bc5a6 100644 --- a/sfa/plc/sfaImport.py +++ b/sfa/plc/sfaImport.py @@ -68,18 +68,22 @@ class sfaImport: def create_top_level_auth_records(self, hrn): - # create the authority if it doesnt already exist AuthHierarchy = self.AuthHierarchy urn = hrn_to_urn(hrn, 'authority') - if not AuthHierarchy.auth_exists(urn): - trace("Import: creating top level authorites", self.logger) - AuthHierarchy.create_auth(urn) + # make sure parent exists parent_hrn = get_authority(hrn) if not parent_hrn: parent_hrn = hrn - auth_info = AuthHierarchy.get_auth_info(parent_hrn) + if not parent_hrn == hrn: + self.create_top_level_auth_records(parent_hrn) + + # create the authority if it doesnt already exist + if not AuthHierarchy.auth_exists(urn): + trace("Import: creating top level authorites", self.logger) + AuthHierarchy.create_auth(urn) # create the db record if it doesnt already exist + auth_info = AuthHierarchy.get_auth_info(hrn) table = SfaTable() auth_record = table.find({'type': 'authority', 'hrn': hrn}) diff --git a/sfa/server/interface.py b/sfa/server/interface.py index bbcebb0d..65b8d835 100644 --- a/sfa/server/interface.py +++ b/sfa/server/interface.py @@ -61,8 +61,17 @@ class Interfaces(dict): if not isinstance(interfaces, list): interfaces = [self.interfaces] self.interfaces = {} + required_fields = self.default_fields.keys() for interface in interfaces: - self.interfaces[interface['hrn']] = interface + valid = True + # skp any interface definition that has a null hrn, + # address or port + for field in required_fields: + if field not in interface or not interface[field]: + valid = False + break + if valid: + self.interfaces[interface['hrn']] = interface def sync_interfaces(self): -- 2.47.0