def test_find_in_list(self): self.assertRaises(ValueError, utils.find_in_list, None, None, None) self.assertRaises(ValueError, utils.find_in_list, 'key', 'val', []) self.assertEqual(None, utils.find_in_list('key', ['val'], [])) key = 'key' value = ['val1'] search_list = [{'key': 'val'}] self.assertEqual([], utils.find_in_list(key, value, search_list)) key = 'key' value = ['val1'] search_list = [{'key': 'val1'}] expected = [{'key': 'val1'}] self.assertEqual(expected, utils.find_in_list(key, value, search_list)) key = 'key' value = ['val1', 'val3'] search_list = [{'key': 'val1'}, {'key': 'val2'}, {'key': 'val3'}] expected = [{'key': 'val1'}, {'key': 'val3'}] self.assertEqual(expected, utils.find_in_list(key, value, search_list))
def test_find_in_list(self): self.assertRaises(ValueError, utils.find_in_list, None, None, None) self.assertRaises(ValueError, utils.find_in_list, 'key', 'val', []) self.assertEqual(None, utils.find_in_list('key', ['val'], [])) key = 'key' value = ['val1'] search_list = [{'key': 'val'}] self.assertEqual([], utils.find_in_list(key, value, search_list)) key = 'key' value = ['val1'] search_list = [{'key': 'val1'}] expected = [{'key': 'val1'}] self.assertEqual(expected, utils.find_in_list(key, value, search_list)) key = 'key' value = ['val1', 'val3'] search_list = [{'key': 'val1'}, {'key': 'val2'}, {'key': 'val3'}] expected = [{'key': 'val1'}, {'key': 'val3'}] self.assertEqual(expected, utils.find_in_list(key, value, search_list))
def _update_mapping_conditions(self, discovered_netview, netview_id, participated): session = self._context.session mapping_conditions = dict() if participated: mapping_conditions = self._get_mapping_conditions( discovered_netview) discovered_condition_rows = [] for condition_name in mapping_conditions: conditions = [netview_id + DELIMITER + condition_name + DELIMITER + value for value in mapping_conditions[condition_name]] discovered_condition_rows += conditions mapping_condition_rows = utils.find_in_list( 'network_view_id', [netview_id], self.db_mapping_conditions) condition_rows = utils.get_composite_values_from_records( ['network_view_id', 'neutron_object_name', 'neutron_object_value'], mapping_condition_rows, DELIMITER) persisted_set = set(condition_rows) discovered_set = set(discovered_condition_rows) addable_set = discovered_set.difference(persisted_set) removable_set = persisted_set.difference(discovered_set) for condition_attr in addable_set: condition = condition_attr.split(DELIMITER) network_view_id = condition[0] neutron_object_name = condition[1] neutron_object_value = condition[2] dbi.add_mapping_condition(session, network_view_id, neutron_object_name, neutron_object_value) for condition_attr in removable_set: condition = condition_attr.split(DELIMITER) network_view_id = condition[0] neutron_object_name = condition[1] neutron_object_value = condition[2] dbi.remove_mapping_condition(session, network_view_id, neutron_object_name, neutron_object_value)
def _update_mapping_conditions(self, discovered_netview, netview_id, participated): session = self._context.session mapping_conditions = dict() if participated: mapping_conditions = self._get_mapping_conditions( discovered_netview) discovered_condition_rows = [] for condition_name in mapping_conditions: conditions = [ netview_id + DELIMITER + condition_name + DELIMITER + value for value in mapping_conditions[condition_name] ] discovered_condition_rows += conditions mapping_condition_rows = utils.find_in_list('network_view_id', [netview_id], self.db_mapping_conditions) condition_rows = utils.get_composite_values_from_records( ['network_view_id', 'neutron_object_name', 'neutron_object_value'], mapping_condition_rows, DELIMITER) persisted_set = set(condition_rows) discovered_set = set(discovered_condition_rows) addable_set = discovered_set.difference(persisted_set) removable_set = persisted_set.difference(discovered_set) for condition_attr in addable_set: condition = condition_attr.split(DELIMITER) network_view_id = condition[0] neutron_object_name = condition[1] neutron_object_value = condition[2] dbi.add_mapping_condition(session, network_view_id, neutron_object_name, neutron_object_value) for condition_attr in removable_set: condition = condition_attr.split(DELIMITER) network_view_id = condition[0] neutron_object_name = condition[1] neutron_object_value = condition[2] dbi.remove_mapping_condition(session, network_view_id, neutron_object_name, neutron_object_value)
def test_sync_member_with_cloud_support_with_member_licenses(self): member_mgr = member.GridMemberManager(self.test_grid_config) member_mgr.sync_grid() member_json = self.connector_fixture.get_object( base.FixtureResourceMap.FAKE_MEMBERS_WITH_CLOUD) license_json = self.connector_fixture.get_object( base.FixtureResourceMap.FAKE_MEMBER_LICENSES) self._mock_member_mgr(member_mgr, discover_members=member_json, discover_member_licenses=license_json) member_mgr.sync_members() # member_type is computed base on member licenses. To prove correctness # of member types, we need to first figure out which member has # 'CLOUD_API' license. A member with 'CLOUD_API' is CPM; otherwise # 'REGULAR'. Grid master member is 'GM' cloud_member_list = [] cloud_lecensed_members = utils.find_in_list('type', ['CLOUD_API'], license_json) member_hwids = utils.get_values_from_records('hwid', cloud_lecensed_members) for m in member_json: member_id_arg = str(self.test_grid_config.grid_id) + m['host_name'] member_id = utils.get_hash(member_id_arg) member_hwid = m['node_info'][0].get('hwid') if member_hwid in member_hwids: cloud_member_list.append(member_id) # now we know member licenses so get members in db members = dbi.get_members(self.ctx.session) self.assertEqual(len(member_json), len(members)) # verify member types for m in members: if self.test_grid_config.grid_master_host == m['member_ip']: self.assertEqual('GM', m['member_type']) else: if m['member_id'] in cloud_member_list: self.assertEqual('CPM', m['member_type']) else: self.assertEqual('REGULAR', m['member_type'])
def test_sync_member_with_cloud_support_with_member_licenses(self): member_mgr = member.GridMemberManager(self.test_grid_config) member_mgr.sync_grid() member_json = self.connector_fixture.get_object( base.FixtureResourceMap.FAKE_MEMBERS_WITH_CLOUD) license_json = self.connector_fixture.get_object( base.FixtureResourceMap.FAKE_MEMBER_LICENSES) self._mock_member_mgr(member_mgr, discover_members=member_json, discover_member_licenses=license_json) member_mgr.sync_members() # member_type is computed base on member licenses. To prove correctness # of member types, we need to first figure out which member has # 'CLOUD_API' license. A member with 'CLOUD_API' is CPM; otherwise # 'REGULAR'. Grid master member is 'GM' cloud_member_list = [] cloud_lecensed_members = utils.find_in_list('type', ['CLOUD_API'], license_json) member_hwids = utils.get_values_from_records('hwid', cloud_lecensed_members) for m in member_json: member_id_arg = str(self.test_grid_config.grid_id) + m['host_name'] member_id = utils.get_hash(member_id_arg) member_hwid = m['node_info'][0].get('hwid') if member_hwid in member_hwids: cloud_member_list.append(member_id) # now we know member licenses so get members in db members = dbi.get_members(self.ctx.session) self.assertEqual(len(member_json), len(members)) # verify member types for m in members: if self.test_grid_config.grid_master_host == m['member_ip']: self.assertEqual('GM', m['member_type']) else: if m['member_id'] in cloud_member_list: self.assertEqual('CPM', m['member_type']) else: self.assertEqual('REGULAR', m['member_type'])