Beispiel #1
0
    def update_current_alarm(self, alarm, new_value, tags=None):
        """
        Update alarm's history and tags.

        :param alarm: Alarm to update
        :type alarm: dict

        :param new_value: New history to set on alarm
        :type new_value: dict

        :param tags: Tags to add on alarm (optional)
        :type tags: str or list
        """
        storage = self.alerts_storage

        alarm_id = alarm[storage.DATA_ID]
        alarm_ts = alarm[storage.TIMESTAMP]

        if AlarmField.display_name.value not in new_value:
            display_name = gen_id()
            while self.check_if_display_name_exists(display_name):
                display_name = gen_id()
            new_value[AlarmField.display_name.value] = display_name

        if tags is not None:
            for tag in ensure_iterable(tags):
                if tag not in new_value[AlarmField.tags.value]:
                    new_value[AlarmField.tags.value].append(tag)

        storage.put(alarm_id, new_value, alarm_ts)

        self.watcher_manager.alarm_changed(alarm['data_id'])
Beispiel #2
0
    def update_current_alarm(self, alarm, new_value, tags=None):
        """
        Update alarm's history and tags.

        :param alarm: Alarm to update
        :type alarm: dict

        :param new_value: New history to set on alarm
        :type new_value: dict

        :param tags: Tags to add on alarm (optional)
        :type tags: str or list
        """
        storage = self.alerts_storage

        alarm_id = alarm[storage.DATA_ID]
        alarm_ts = alarm[storage.TIMESTAMP]

        if AlarmField.display_name.value not in new_value:
            display_name = gen_id()
            while self.check_if_display_name_exists(display_name):
                display_name = gen_id()
            new_value[AlarmField.display_name.value] = display_name

        if tags is not None:
            for tag in ensure_iterable(tags):
                if tag not in new_value[AlarmField.tags.value]:
                    new_value[AlarmField.tags.value].append(tag)

        storage.put(alarm_id, new_value, alarm_ts)

        self.watcher_manager.alarm_changed(alarm['data_id'])
Beispiel #3
0
    def make_alarm(self, alarm_id, event):
        """
        Create a new alarm from event if not already existing.

        :param str alarm_id: Alarm entity ID
        :param dict event: Associated event
        :return alarm document:
        :rtype: dict
        """
        display_name = gen_id()
        while self.check_if_display_name_exists(display_name):
            display_name = gen_id()

        return {
            self.alerts_storage.DATA_ID: alarm_id,
            self.alerts_storage.TIMESTAMP: event['timestamp'],
            self.alerts_storage.VALUE: {
                AlarmField.display_name.value: display_name,
                'connector': event['connector'],
                'connector_name': event['connector_name'],
                'component': event['component'],
                'resource': event.get('resource', None),
                AlarmField.initial_output.value: event.get('output', ''),
                AlarmField.creation_date.value: int(time()),
                AlarmField.last_update_date.value: int(time()),
                AlarmField.state.value: None,
                AlarmField.status.value: None,
                AlarmField.ack.value: None,
                AlarmField.canceled.value: None,
                AlarmField.snooze.value: None,
                AlarmField.hard_limit.value: None,
                AlarmField.ticket.value: None,
                AlarmField.resolved.value: None,
                AlarmField.steps.value: [],
                AlarmField.tags.value: [],
                AlarmField.extra.value: {
                    field: event[field]
                    for field in self.extra_fields
                    if field in event
                },
                AlarmField.initial_long_output.value:
                event.get("long_output", "")
            }
        }
Beispiel #4
0
    def make_alarm(self, alarm_id, event):
        """
        Create a new alarm from event if not already existing.

        :param str alarm_id: Alarm entity ID
        :param dict event: Associated event
        :return alarm document:
        :rtype: dict
        """
        display_name = gen_id()
        while self.check_if_display_name_exists(display_name):
            display_name = gen_id()

        return {
            self.alerts_storage.DATA_ID: alarm_id,
            self.alerts_storage.TIMESTAMP: event['timestamp'],
            self.alerts_storage.VALUE: {
                AlarmField.display_name.value: display_name,
                'connector': event['connector'],
                'connector_name': event['connector_name'],
                'component': event['component'],
                'resource': event.get('resource', None),
                AlarmField.initial_output.value: event.get('output', ''),
                AlarmField.creation_date.value: int(time()),
                AlarmField.last_update_date.value: int(time()),
                AlarmField.state.value: None,
                AlarmField.status.value: None,
                AlarmField.ack.value: None,
                AlarmField.canceled.value: None,
                AlarmField.snooze.value: None,
                AlarmField.hard_limit.value: None,
                AlarmField.ticket.value: None,
                AlarmField.resolved.value: None,
                AlarmField.steps.value: [],
                AlarmField.tags.value: [],
                AlarmField.extra.value: {
                    field: event[field]
                    for field in self.extra_fields
                    if field in event
                },
                AlarmField.initial_long_output.value:
                event.get("long_output", "")
            }
        }