Feature 10339 - Enhanced Alarm Mgmt. (SOL005 FM Interface)
[osm/MON.git] / osm_mon / core / models.py
index 1810c9b..48fe8c4 100644 (file)
@@ -24,9 +24,18 @@ import uuid
 
 
 class Alarm:
-
-    def __init__(self, name: str = None, severity: str = None, threshold: float = None, operation: str = None,
-                 statistic: str = None, metric: str = None, tags: dict = {}):
+    def __init__(
+        self,
+        name: str = None,
+        severity: str = None,
+        threshold: float = None,
+        operation: str = None,
+        statistic: str = None,
+        metric: str = None,
+        action: str = None,
+        tags: dict = {},
+        alarm_status: str = "ok",
+    ):
         self.uuid = str(uuid.uuid4())
         self.name = name
         self.severity = severity
@@ -34,28 +43,34 @@ class Alarm:
         self.operation = operation
         self.statistic = statistic
         self.metric = metric
+        self.action = action
         self.tags = tags
+        self.alarm_status = alarm_status
 
     def to_dict(self) -> dict:
         alarm = {
-            'uuid': self.uuid,
-            'name': self.name,
-            'severity': self.severity,
-            'threshold': self.threshold,
-            'statistic': self.statistic,
-            'metric': self.metric,
-            'tags': self.tags
+            "uuid": self.uuid,
+            "name": self.name,
+            "severity": self.severity,
+            "threshold": self.threshold,
+            "statistic": self.statistic,
+            "metric": self.metric,
+            "tags": self.tags,
+            "operation": self.operation,
+            "alarm_status": self.alarm_status,
         }
         return alarm
 
     @staticmethod
     def from_dict(data: dict):
         alarm = Alarm()
-        alarm.uuid = data.get('uuid', str(uuid.uuid4()))
-        alarm.name = data.get('name')
-        alarm.severity = data.get('severity')
-        alarm.threshold = data.get('threshold')
-        alarm.statistic = data.get('statistic')
-        alarm.metric = data.get('metric')
-        alarm.tags = data.get('tags')
+        alarm.uuid = data.get("uuid", str(uuid.uuid4()))
+        alarm.name = data.get("name")
+        alarm.severity = data.get("severity")
+        alarm.threshold = float(data.get("threshold"))
+        alarm.statistic = data.get("statistic")
+        alarm.metric = data.get("metric")
+        alarm.tags = data.get("tags")
+        alarm.operation = data.get("operation")
+        alarm.alarm_status = data.get("alarm_status")
         return alarm