def _validate_deduce_alarms(self, alarms, instances): """Validate alarm existence """ self.assertNotEqual(len(alarms), 0, 'The alarms list is empty') LOG.info("The alarms list is : " + str(json.dumps(alarms))) deduce_alarms_1 = self._filter_list_by_pairs_parameters( alarms, [VProps.VITRAGE_TYPE, VProps.NAME, 'resource_type', 'resource_id'], [ VITRAGE_DATASOURCE, VITRAGE_ALARM_NAME, NOVA_INSTANCE_DATASOURCE, utils.uni2str(instances[0].id) ]) deduce_alarms_2 = self._filter_list_by_pairs_parameters( alarms, [VProps.VITRAGE_TYPE, VProps.NAME, 'resource_type', 'resource_id'], [ VITRAGE_DATASOURCE, VITRAGE_ALARM_NAME, NOVA_INSTANCE_DATASOURCE, utils.uni2str(instances[1].id) ]) self.assertEqual(3, len(alarms)) self.assertEqual(1, len(deduce_alarms_1)) self.assertEqual(1, len(deduce_alarms_2))
def _validate_set_state(self, topology, instances): self.assertNotEqual(len(topology), 0, 'The topology graph is empty') host = self._filter_list_by_pairs_parameters( topology, [VProps.TYPE, VProps.ID, VProps.VITRAGE_STATE, VProps.AGGREGATED_STATE], [NOVA_HOST_DATASOURCE, self._get_hostname(), OperationalResourceState.ERROR, OperationalResourceState.ERROR]) vm1 = self._filter_list_by_pairs_parameters( topology, [VProps.TYPE, VProps.ID, VProps.VITRAGE_STATE, VProps.AGGREGATED_STATE], [NOVA_INSTANCE_DATASOURCE, utils.uni2str(instances[0].id), OperationalResourceState.SUBOPTIMAL, OperationalResourceState.SUBOPTIMAL]) vm2 = self._filter_list_by_pairs_parameters( topology, [VProps.TYPE, VProps.ID, VProps.VITRAGE_STATE, VProps.AGGREGATED_STATE], [NOVA_INSTANCE_DATASOURCE, utils.uni2str(instances[1].id), OperationalResourceState.SUBOPTIMAL, OperationalResourceState.SUBOPTIMAL]) self.assertEqual(len(host), 1) self.assertEqual(len(vm1), 1) self.assertEqual(len(vm2), 1)
def _validate_set_state(self, topology, instances): self.assertNotEqual(len(topology), 0, 'The topology graph is empty') host = self._filter_list_by_pairs_parameters(topology, [ VProps.TYPE, VProps.ID, VProps.VITRAGE_STATE, VProps.AGGREGATED_STATE ], [ NOVA_HOST_DATASOURCE, self._get_hostname(), OperationalResourceState.ERROR, OperationalResourceState.ERROR ]) vm1 = self._filter_list_by_pairs_parameters(topology, [ VProps.TYPE, VProps.ID, VProps.VITRAGE_STATE, VProps.AGGREGATED_STATE ], [ NOVA_INSTANCE_DATASOURCE, utils.uni2str( instances[0].id), OperationalResourceState.SUBOPTIMAL, OperationalResourceState.SUBOPTIMAL ]) vm2 = self._filter_list_by_pairs_parameters(topology, [ VProps.TYPE, VProps.ID, VProps.VITRAGE_STATE, VProps.AGGREGATED_STATE ], [ NOVA_INSTANCE_DATASOURCE, utils.uni2str( instances[1].id), OperationalResourceState.SUBOPTIMAL, OperationalResourceState.SUBOPTIMAL ]) self.assertEqual(len(host), 1) self.assertEqual(len(vm1), 1) self.assertEqual(len(vm2), 1)
def _validate_deduce_alarms(self, alarms, resources): """Validate alarm existence """ if not alarms: LOG.error("The alarms list is empty") return False LOG.debug("The alarms list is : %s", json.dumps(alarms)) deduce_alarms_1 = self._filter_alarms_by_parameter( alarms, ['type', 'name', 'resource_type', 'resource_id'], [VITRAGE_DATASOURCE, VITRAGE_ALARM_NAME, NOVA_INSTANCE_DATASOURCE, utils.uni2str(resources[0].id)]) deduce_alarms_2 = self._filter_alarms_by_parameter( alarms, ['type', 'name', 'resource_type', 'resource_id'], [VITRAGE_DATASOURCE, VITRAGE_ALARM_NAME, NOVA_INSTANCE_DATASOURCE, utils.uni2str(resources[1].id)]) return (len(deduce_alarms_1) == 1 and len(deduce_alarms_2) == 1)
def _filter_alarms_by_parameter(alarms_list, keys, values): filtered_alarms_list = [] for item in alarms_list: verification = 0 category = utils.uni2str(item[VertexProperties.CATEGORY]) for index in range(len(keys)): key = utils.uni2str(item[keys[index]]) if category == EntityCategory.ALARM \ and key == values[index]: verification += 1 else: break if verification == len(keys): filtered_alarms_list.append(item) return filtered_alarms_list
def _get_alarm_id(self, resource_type, alarm_name, unic): if resource_type is NOVA_INSTANCE_DATASOURCE: resource = self._create_instances(num_instances=1) resource_id = utils.uni2str(resource[0].id) else: resource = self._get_host() resource_id = utils.uni2str(resource[VertexProperties.ID]) self._create_ceilometer_alarm(resource_id=resource_id, name=alarm_name, unic=unic) list_alarms = self.vitrage_client.alarms.list(vitrage_id=None) expected_alarm = self._filter_alarms_by_parameter( list_alarms, ['resource_id', 'type'], [resource_id, AODH_DATASOURCE]) return utils.uni2str(expected_alarm[0][VertexProperties.VITRAGE_ID])
def _get_alarm_id(self, resource_type, alarm_name, unic): if resource_type is NOVA_INSTANCE_DATASOURCE: resource = self._create_instances(num_instances=1) resource_id = utils.uni2str(resource[0].id) else: resource = self._get_host() resource_id = utils.uni2str(resource[VertexProperties.ID]) self._create_ceilometer_alarm(resource_id=resource_id, name=alarm_name, unic=unic) list_alarms = self.vitrage_client.alarms.list(vitrage_id=None) expected_alarm = self._filter_alarms_by_parameter( list_alarms, ['resource_id', 'type'], [resource_id, AODH_DATASOURCE]) return utils.uni2str( expected_alarm[0][VertexProperties.VITRAGE_ID])
def _filter_list_by_pairs_parameters(origin_list, keys, values): filtered_list = [] for item in origin_list: verification = 0 for index in range(len(keys)): if utils.uni2str(item[keys[index]]) == values[index]: verification += 1 else: break if verification == len(keys): filtered_list.append(item) return filtered_list
def _validate_deduce_alarms(self, alarms, resources): """Validate alarm existence """ if not alarms: LOG.error("The alarms list is empty") return False LOG.debug("The alarms list is : %s", json.dumps(alarms)) deduce_alarms_1 = self._filter_alarms_by_parameter( alarms, ['type', 'name', 'resource_type', 'resource_id'], [ VITRAGE_DATASOURCE, VITRAGE_ALARM_NAME, NOVA_INSTANCE_DATASOURCE, utils.uni2str(resources[0].id) ]) deduce_alarms_2 = self._filter_alarms_by_parameter( alarms, ['type', 'name', 'resource_type', 'resource_id'], [ VITRAGE_DATASOURCE, VITRAGE_ALARM_NAME, NOVA_INSTANCE_DATASOURCE, utils.uni2str(resources[1].id) ]) return (len(deduce_alarms_1) == 1 and len(deduce_alarms_2) == 1)
def _validate_deduce_alarms(self, alarms, instances): """Validate alarm existence """ self.assertNotEqual(len(alarms), 0, 'The alarms list is empty') LOG.debug("The alarms list is : %s", json.dumps(alarms)) deduce_alarms_1 = self._filter_list_by_pairs_parameters( alarms, [VProps.TYPE, VProps.NAME, 'resource_type', 'resource_id'], [VITRAGE_TYPE, VITRAGE_ALARM_NAME, NOVA_INSTANCE_DATASOURCE, utils.uni2str(instances[0].id)]) deduce_alarms_2 = self._filter_list_by_pairs_parameters( alarms, [VProps.TYPE, VProps.NAME, 'resource_type', 'resource_id'], [VITRAGE_TYPE, VITRAGE_ALARM_NAME, NOVA_INSTANCE_DATASOURCE, utils.uni2str(instances[1].id)]) self.assertEqual(len(alarms), 3) self.assertEqual(len(deduce_alarms_1), 1) self.assertEqual(len(deduce_alarms_2), 1)
def test_compare_cli_vs_api_alarms(self): """Wrapper that returns a test graph.""" try: resources = self._create_instances(num_instances=1) self._create_ceilometer_alarm(resource_id=resources[0].id, name='tempest_aodh_test') api_alarms = self.vitrage_client.alarms.list(vitrage_id=None) cli_alarms = utils.run_vitrage_command( 'vitrage alarms list', self.conf) self.assertTrue(self._compare_alarms_lists( api_alarms, cli_alarms, AODH_DATASOURCE, utils.uni2str(resources[0].id))) finally: self._delete_ceilometer_alarms() self._delete_instances()
def test_compare_cli_vs_api_alarms(self): """Wrapper that returns a test graph.""" try: instances = self._create_instances(num_instances=1) self.assertNotEqual(len(instances), 0, 'The instances list is empty') self._create_ceilometer_alarm(resource_id=instances[0].id, name='tempest_aodh_test') api_alarms = self.vitrage_client.alarms.list(vitrage_id=None) cli_alarms = utils.run_vitrage_command('vitrage alarm list', self.conf) self._compare_alarms_lists(api_alarms, cli_alarms, AODH_DATASOURCE, utils.uni2str(instances[0].id)) finally: self._delete_ceilometer_alarms() self._delete_instances()
def test_compare_cli_vs_api_alarms(self): """Wrapper that returns a test graph.""" try: instances = self._create_instances(num_instances=1) self.assertNotEqual(len(instances), 0, 'The instances list is empty') self._create_ceilometer_alarm(resource_id=instances[0].id, name='tempest_aodh_test') api_alarms = self.vitrage_client.alarms.list(vitrage_id=None) cli_alarms = utils.run_vitrage_command( 'vitrage alarm list', self.conf) self._compare_alarms_lists( api_alarms, cli_alarms, AODH_DATASOURCE, utils.uni2str(instances[0].id)) except Exception as e: LOG.exception(e) raise e finally: self._delete_ceilometer_alarms() self._delete_instances()
def _get_value(item, key): return utils.uni2str(item[key])