def _generate_events(self, update_events): gen_list = mock_driver.simple_aodh_alarm_notification_generators( 1, update_events=update_events) events = mock_driver.generate_sequential_events_list(gen_list) self.excepted_events = events self.actual_events = [] return events
def test_enrich_event(self): aodh_driver = MockAodhDriver(self.conf) # 1. alarm creation with 'ok' state # prepare data detail_data = {"type": "creation", AodhProps.DETAIL: self._extract_alarm_data()} generators = \ mock_driver.simple_aodh_alarm_notification_generators( alarm_num=1, update_events=1, update_vals=detail_data) alarm = mock_driver.generate_sequential_events_list(generators)[0] alarm_info = alarm.copy() # action entity = aodh_driver.enrich_event(alarm, AodhEventType.CREATION) # Test assertions # alarm with status OK should not be handled self.assertIsNone(entity) # 2.alarm state transition from 'ok' to 'alarm' detail_data = {"type": "state transition", AodhProps.DETAIL: {AodhProps.STATE: "alarm"}} alarm.update(detail_data) entity = aodh_driver.enrich_event(alarm, AodhEventType.STATE_TRANSITION) # Test assertions # alarm state change: ok->alarm, need to be added self.assertIsNotNone(entity) self._validate_aodh_entity_comm_props(entity, alarm_info) self.assertEqual(entity[AodhProps.STATE], alarm[AodhProps.DETAIL][AodhProps.STATE]) self.assertEqual(entity[AodhProps.SEVERITY], alarm[AodhProps.SEVERITY]) self.assertEqual(entity[DSProps.EVENT_TYPE], AodhEventType.STATE_TRANSITION) # 3. delete alarm which is 'alarm' state # prepare data detail_data = {"type": "deletion"} alarm.update(detail_data) # action entity = aodh_driver.enrich_event(alarm, AodhEventType.DELETION) # Test assertions self.assertIsNotNone(entity) self._validate_aodh_entity_comm_props(entity, alarm_info) self.assertEqual(entity[DSProps.EVENT_TYPE], AodhEventType.DELETION) # 4. alarm creation with 'alarm' state # prepare data detail_data = {"type": "creation", AodhProps.DETAIL: self._extract_alarm_data(state="alarm")} generators = \ mock_driver.simple_aodh_alarm_notification_generators( alarm_num=1, update_events=1, update_vals=detail_data) alarm = mock_driver.generate_sequential_events_list(generators)[0] alarm_info = alarm.copy() # action entity = aodh_driver.enrich_event(alarm, AodhEventType.CREATION) # Test assertions # alarm with status 'alarm' need to be added self.assertIsNotNone(entity) self._validate_aodh_entity_comm_props(entity, alarm_info) self.assertEqual(entity[AodhProps.STATE], alarm[AodhProps.DETAIL][AodhProps.STATE]) self.assertEqual(entity[AodhProps.SEVERITY], alarm[AodhProps.SEVERITY]) self.assertIsNone(entity[AodhProps.RESOURCE_ID]) self.assertEqual("*", entity[AodhProps.EVENT_TYPE]) self.assertEqual(entity[DSProps.EVENT_TYPE], AodhEventType.CREATION) # 5. alarm rule change # prepare data detail_data = {"type": "rule change", AodhProps.DETAIL: { "severity": "critical", AodhProps.RULE: {"query": [{"field": "traits.resource_id", "type": "", "value": "1", "op": "eq"}], "event_type": "instance.update"}}} alarm.update(detail_data) # action entity = aodh_driver.enrich_event(alarm, AodhEventType.RULE_CHANGE) # Test assertions # alarm rule change: need to be update self.assertIsNotNone(entity) self._validate_aodh_entity_comm_props(entity, alarm_info) self.assertEqual(entity[AodhProps.SEVERITY], alarm[AodhProps.DETAIL][AodhProps.SEVERITY]) self.assertEqual( entity[AodhProps.EVENT_TYPE], alarm[AodhProps.DETAIL][AodhProps.RULE][AodhProps.EVENT_TYPE]) self.assertEqual("1", entity[AodhProps.RESOURCE_ID]) self.assertEqual(entity[DSProps.EVENT_TYPE], AodhEventType.RULE_CHANGE) # 6. alarm state change from 'alarm' to 'ok' # prepare data detail_data = {"type": "state transition", AodhProps.DETAIL: {AodhProps.STATE: "ok"}} alarm.update(detail_data) # action entity = aodh_driver.enrich_event(alarm, AodhEventType.STATE_TRANSITION) # Test assertions # alarm state change: alarm->OK, need to be deleted self.assertIsNotNone(entity) self._validate_aodh_entity_comm_props(entity, alarm_info) self.assertEqual(entity[DSProps.EVENT_TYPE], AodhEventType.STATE_TRANSITION) # 7. delete alarm which is 'ok' state # prepare data detail_data = {"type": "deletion"} alarm.update(detail_data) # action entity = aodh_driver.enrich_event(alarm, AodhEventType.DELETION) # Test assertions self.assertIsNone(entity)
def test_gnocchi_threshold_alarm_notifications(self): aodh_driver = MockAodhDriver(self.conf) # 1. alarm creation with 'ok' state # prepare data detail_data = { "type": "gnocchi_resources_threshold", AodhProps.DETAIL: self._create_alarm_data_gnocchi() } generators = \ mock_driver.simple_aodh_alarm_notification_generators( alarm_num=1, update_events=1, update_vals=detail_data) alarm = mock_driver.generate_sequential_events_list(generators)[0] alarm_info = alarm.copy() # action entity = aodh_driver.enrich_event(alarm, AodhEventType.CREATION) # Test assertions # alarm with status OK should not be handled self.assertIsNone(entity) # 2.alarm state transition from 'ok' to 'alarm' detail_data = { "type": "state transition", AodhProps.DETAIL: { AodhProps.STATE: "alarm" } } alarm.update(detail_data) entity = aodh_driver.enrich_event(alarm, AodhEventType.STATE_TRANSITION) # Test assertions # alarm state change: ok->alarm, need to be added self.assertIsNotNone(entity) self._validate_aodh_entity_comm_props(entity, alarm_info) self.assertEqual(entity[AodhProps.STATE], alarm[AodhProps.DETAIL][AodhProps.STATE]) self.assertEqual(entity[AodhProps.SEVERITY], alarm[AodhProps.SEVERITY]) # 3. delete alarm which is 'alarm' state # prepare data detail_data = {"type": "deletion"} alarm.update(detail_data) # action entity = aodh_driver.enrich_event(alarm, AodhEventType.DELETION) # Test assertions self.assertIsNotNone(entity) self._validate_aodh_entity_comm_props(entity, alarm_info) self.assertEqual(entity[DSProps.EVENT_TYPE], AodhEventType.DELETION) # 4. alarm creation with 'alarm' state # prepare data detail_data = { "type": "gnocchi_resources_threshold", AodhProps.DETAIL: self._create_alarm_data_gnocchi(state="alarm") } generators = \ mock_driver.simple_aodh_alarm_notification_generators( alarm_num=1, update_events=1, update_vals=detail_data) alarm = mock_driver.generate_sequential_events_list(generators)[0] alarm_info = alarm.copy() # action entity = aodh_driver.enrich_event(alarm, AodhEventType.CREATION) # Test assertions # alarm with status 'alarm' need to be added self.assertIsNotNone(entity) self._validate_aodh_entity_comm_props(entity, alarm_info) self.assertEqual(entity[AodhProps.STATE], alarm[AodhProps.DETAIL][AodhProps.STATE]) self.assertEqual(entity[AodhProps.SEVERITY], alarm[AodhProps.SEVERITY]) self.assertEqual(entity[DSProps.EVENT_TYPE], AodhEventType.CREATION) # 5. alarm rule change # prepare data detail_data = { "type": "rule change", AodhProps.DETAIL: { "severity": "critical", AodhProps.RULE: { "granularity": "300", "threshold": "0.0123", "comparison_operator": "eq" } } } alarm.update(detail_data) # action entity = aodh_driver.enrich_event(alarm, AodhEventType.RULE_CHANGE) # Test assertions # alarm rule change: need to be update self.assertIsNotNone(entity) self._validate_aodh_entity_comm_props(entity, alarm_info) self.assertEqual(entity[AodhProps.SEVERITY], alarm[AodhProps.DETAIL][AodhProps.SEVERITY]) self.assertEqual(entity[DSProps.EVENT_TYPE], AodhEventType.RULE_CHANGE) # 6. alarm state change from 'alarm' to 'ok' # prepare data detail_data = { "type": "state transition", AodhProps.DETAIL: { AodhProps.STATE: "ok" } } alarm.update(detail_data) # action entity = aodh_driver.enrich_event(alarm, AodhEventType.STATE_TRANSITION) # Test assertions # alarm state change: alarm->OK, need to be deleted self.assertIsNotNone(entity) self._validate_aodh_entity_comm_props(entity, alarm_info) self.assertEqual(entity[DSProps.EVENT_TYPE], AodhEventType.STATE_TRANSITION) # 7. delete alarm which is 'ok' state # prepare data detail_data = {"type": "deletion"} alarm.update(detail_data) # action entity = aodh_driver.enrich_event(alarm, AodhEventType.DELETION) # Test assertions self.assertIsNone(entity)