def test_find_in_list_by_condition(self): self.assertRaises(ValueError, utils.find_in_list_by_condition, None, None) self.assertRaises(ValueError, utils.find_in_list_by_condition, 'key', []) self.assertEqual(None, utils.find_in_list_by_condition({'key': 'val'}, [])) search_list = [{'key1': 'val1', 'key2': 'val2', 'key3': 'val3'}, {'key1': 'val11', 'key2': 'val22', 'key3': 'val33'}, {'key1': 'val1', 'key2': 'val2', 'key3': 'val333'}] search_condition = {'key2': 'val33'} expected = [] actual = utils.find_in_list_by_condition(search_condition, search_list) self.assertEqual(expected, actual) search_condition = {'key2': 'val22'} expected = {'key1': 'val11', 'key2': 'val22', 'key3': 'val33'} actual = utils.find_in_list_by_condition(search_condition, search_list) self.assertEqual(expected, actual[0]) search_condition = {'key1': 'val1', 'key3': 'val3'} expected = {'key1': 'val1', 'key2': 'val2', 'key3': 'val3'} actual = utils.find_in_list_by_condition(search_condition, search_list) self.assertEqual(expected, actual[0]) search_condition = {'key1': 'val1', 'key2': 'val2'} expected = [{'key1': 'val1', 'key2': 'val2', 'key3': 'val3'}, {'key1': 'val1', 'key2': 'val2', 'key3': 'val333'}] actual = utils.find_in_list_by_condition(search_condition, search_list) self.assertEqual(expected, actual)
def _find_mapping(self): session = self.context.session netview_id = None netview_name = None netview_shared = False # First check if mapping already exists network_id = self.subnet.get('network_id') subnet_id = self.subnet.get('id') netview_mappings = dbi.get_network_view_mappings(session, network_id=network_id, subnet_id=subnet_id) if netview_mappings: netview_id = netview_mappings[0].network_view_id netview_row = utils.find_one_in_list('id', netview_id, self.discovered_network_views) self.mapping.network_view_id = netview_id self.mapping.network_view = netview_row.network_view self.mapping.authority_member = self._get_authority_member( netview_row.authority_member_id) self.mapping.shared = netview_row.shared self.mapping.dns_view = self._get_dns_view() self._update_service_member_mapping() LOG.info( _LI("Network view %(netview)s mapping found for " "network %(network)s and subnet %(subnet)s"), dict(netview=netview_row.network_view, network=network_id, subnet=subnet_id)) return # No mapping so find mapping mapping_attrs = self._get_mapping_attributes() matching_netviews = [] # find mapping matches on common cases mapping_filters = self._get_mapping_filters(mapping_attrs) for mf in mapping_filters: if list(mf.values())[0] is None: continue matches = utils.find_in_list_by_condition( mf, self.discovered_mapping_conditions) if matches: netview_ids = [m.network_view_id for m in matches] matching_netviews += netview_ids # find network view id and name pair if matching_netviews: # get most matched network view id netview_id = Counter(matching_netviews).most_common(1)[0][0] netview_row = utils.find_one_in_list('id', netview_id, self.discovered_network_views) netview_name = netview_row.network_view netview_shared = netview_row.shared else: # no matching found; use default network view scope netview_scope = self.grid_config.default_network_view_scope netview_name = self._get_network_view_by_scope( netview_scope, mapping_attrs) netview_row = utils.find_one_in_list('network_view', netview_name, self.discovered_network_views) if netview_row: netview_id = netview_row.id netview_shared = netview_row.shared self.mapping.network_view_id = netview_id self.mapping.network_view = netview_name if self.mapping.network_view_id: self.mapping.authority_member = self._get_authority_member() self.mapping.shared = netview_shared self.mapping.dns_view = self._get_dns_view()
def _find_mapping(self): session = self.context.session netview_id = None netview_name = None netview_shared = False # First check if mapping already exists network_id = self.subnet.get('network_id') subnet_id = self.subnet.get('id') netview_mappings = dbi.get_network_view_mappings( session, network_id=network_id, subnet_id=subnet_id) if netview_mappings: netview_id = netview_mappings[0].network_view_id netview_row = utils.find_one_in_list( 'id', netview_id, self.discovered_network_views) self.mapping.network_view_id = netview_id self.mapping.network_view = netview_row.network_view self.mapping.authority_member = self._get_authority_member( netview_row.authority_member_id) self.mapping.shared = netview_row.shared self.mapping.dns_view = self._get_dns_view() self._update_service_member_mapping() LOG.info(_LI("Network view %(netview)s mapping found for " "network %(network)s and subnet %(subnet)s"), dict(netview=netview_row.network_view, network=network_id, subnet=subnet_id)) return # No mapping so find mapping mapping_attrs = self._get_mapping_attributes() matching_netviews = [] # find mapping matches on common cases mapping_filters = self._get_mapping_filters(mapping_attrs) for mf in mapping_filters: if mf.values()[0] is None: continue matches = utils.find_in_list_by_condition( mf, self.discovered_mapping_conditions) if matches: netview_ids = [m.network_view_id for m in matches] matching_netviews += netview_ids # find network view id and name pair if matching_netviews: # get most matched network view id netview_id = Counter(matching_netviews).most_common(1)[0][0] netview_row = utils.find_one_in_list('id', netview_id, self.discovered_network_views) netview_name = netview_row.network_view netview_shared = netview_row.shared else: # no matching found; use default network view scope netview_scope = self.grid_config.default_network_view_scope netview_name = self._get_network_view_by_scope(netview_scope, mapping_attrs) netview_row = utils.find_one_in_list('network_view', netview_name, self.discovered_network_views) if netview_row: netview_id = netview_row.id netview_shared = netview_row.shared self.mapping.network_view_id = netview_id self.mapping.network_view = netview_name if self.mapping.network_view_id: self.mapping.authority_member = self._get_authority_member() self.mapping.shared = netview_shared self.mapping.dns_view = self._get_dns_view()