diff --git a/docs/en/docs/dev/reference/api/datastream/alarm.md b/docs/en/docs/dev/reference/api/datastream/alarm.md index a880cc1f3ea54ba309caec8f3ad77d4bfe9a1f36..97410f8a93409d47ecd34120231894e6e434a81c 100644 --- a/docs/en/docs/dev/reference/api/datastream/alarm.md +++ b/docs/en/docs/dev/reference/api/datastream/alarm.md @@ -25,6 +25,7 @@ | {{ tab }} name | String | Alarm Class' Name | | vars | Object {{ complex }} | Key-value dictionary of alarm's variables | | reopens | Integer | Number of alarm's reopens | +| tags | Object {{ complex }} | Alarm tags | | escalation | Object {{ complex }} | Escalation data (if escalated) | | {{ tab }} timestamp | String | Escalation timestamp in ISO 8601 format | | {{ tab }} tt_system | Object {{ complex }} | TT System to escalate | diff --git a/docs/en/docs/user/reference/mx/alarm.md b/docs/en/docs/user/reference/mx/alarm.md index a5fbd6b1bb37146e7f8e06edd6d9fa6bfb02b534..7d0236ecfdb69993caf34c507c3722083ff41290 100644 --- a/docs/en/docs/user/reference/mx/alarm.md +++ b/docs/en/docs/user/reference/mx/alarm.md @@ -45,6 +45,7 @@ Message contains JSON with following fields: | {{ tab }} name | String | Alarm Class' Name | | vars | Object {{ complex }} | Key-value dictionary of alarm's variables | | reopens | Integer | Number of alarm's reopens | +| tags | Object {{ complex }} | Alarm tags | | escalation | Object {{ complex }} | Escalation data (if escalated) | | {{ tab }} timestamp | String | Escalation timestamp in ISO 8601 format | | {{ tab }} tt_system | Object {{ complex }} | TT System to escalate | diff --git a/fm/models/activealarm.py b/fm/models/activealarm.py index 6115bdf603b69b399a776e87ee2719ca9b9be354..a04d8e864d7e0807085d52c33d253fd4762f1e59 100644 --- a/fm/models/activealarm.py +++ b/fm/models/activealarm.py @@ -133,6 +133,8 @@ class ActiveAlarm(Document): dlm_windows = ListField(IntField()) # RCA_* enums rca_type = IntField(default=RCA_NONE) + # tags + tags = ListField(StringField()) def __str__(self): return "%s" % self.id @@ -152,6 +154,10 @@ class ActiveAlarm(Document): self.uplinks = data.uplinks self.rca_neighbors = data.rca_neighbors self.dlm_windows = data.dlm_windows + if not self.id: + tags = set(self.managed_object.tags or []) + tags |= set(self.managed_object.object_profile.tags or []) + self.tags = list(tags) def safe_save(self, **kwargs): """ @@ -279,6 +285,7 @@ class ActiveAlarm(Document): uplinks=self.uplinks, rca_neighbors=self.rca_neighbors, rca_type=self.rca_type, + tags=self.tags, ) ct = self.alarm_class.get_control_time(self.reopens) if ct: diff --git a/fm/models/archivedalarm.py b/fm/models/archivedalarm.py index 5d6716a3f8e5f7c1b27b12958b1b08e793809d52..85cf3188d0f79861fff7bfa4dd306387a7b72226 100644 --- a/fm/models/archivedalarm.py +++ b/fm/models/archivedalarm.py @@ -104,6 +104,8 @@ class ArchivedAlarm(Document): rca_neighbors = ListField(IntField()) # RCA_* enums rca_type = IntField(default=RCA_NONE) + # tags + tags = ListField(StringField()) def __str__(self): return "%s" % self.id diff --git a/services/datastream/streams/alarm.py b/services/datastream/streams/alarm.py index 9cc11893b5965ef7dc3b8b4dd0f06519733bfcd8..9aa8f5a513a27e051ed301eb4f7999b1e2da14e8 100644 --- a/services/datastream/streams/alarm.py +++ b/services/datastream/streams/alarm.py @@ -35,6 +35,7 @@ class AlarmDataStream(DataStream): "timestamp": cls.qs(alarm.timestamp), "severity": alarm.severity, "reopens": alarm.reopens, + "tags": alarm.tags, } if alarm.root: r["root"] = str(alarm.root)