Fix INF-344 resourceType fields on alarmDictionary
[pti/o2.git] / o2ims / domain / alarm_obj.py
index fa7cba2..cd653f8 100644 (file)
@@ -19,6 +19,9 @@ import datetime
 
 from o2common.domain.base import AgRoot, Serializer
 
+from o2common.helper import o2logging
+logger = o2logging.get_logger(__name__)
+
 
 class FaultGenericModel(AgRoot):
     def __init__(self, type: str,
@@ -27,7 +30,10 @@ class FaultGenericModel(AgRoot):
         if api_response:
             self.id = str(api_response.uuid)
             self.name = self.id
-            self.type = type
+            self.alarm_type = api_response.alarm_type
+            self.alarm_def_name = api_response.alarm_id
+            self.alarm_def_id = api_response.alarm_def_id
+            self.probable_cause_id = api_response.probable_cause_id
             self.status = api_response.state
             # TODO: time less than second
             self.timestamp = datetime.datetime.strptime(
@@ -42,6 +48,8 @@ class FaultGenericModel(AgRoot):
             self.hash = content_hash if content_hash \
                 else str(hash((self.id, self.timestamp, self.status)))
             self.content = json.dumps(api_response.to_dict())
+            if EventTypeEnum.ALARM == type:
+                pass
 
     def is_outdated(self, newmodel) -> bool:
         # return self.updatetime < newmodel.updatetime
@@ -58,6 +66,11 @@ class FaultGenericModel(AgRoot):
         self.content = newmodel.content
 
 
+class EventTypeEnum(Enum):
+    ALARM = 'alarm'
+    EVENT = 'event'
+
+
 class PerceivedSeverityEnum(str, Enum):
     CRITICAL = 0
     MAJOR = 1
@@ -96,7 +109,7 @@ class ProbableCause(AgRoot, Serializer):
         self.description = desc
 
 
-class AlarmLastChangeEnum(str, Enum):
+class AlarmChangeTypeEnum(str, Enum):
     ADDED = 'ADDED'
     DELETED = 'DELETED'
     MODIFYED = 'MODIFYED'
@@ -108,13 +121,14 @@ class ClearingTypeEnum(str, Enum):
 
 
 class AlarmDefinition(AgRoot, Serializer):
-    def __init__(self, id: str, name: str, last_change: AlarmLastChangeEnum,
+    def __init__(self, id: str, name: str, change_type: AlarmChangeTypeEnum,
                  desc: str, prop_action: str, clearing_type: ClearingTypeEnum,
                  pk_noti_field: str) -> None:
         super().__init__()
         self.alarmDefinitionId = id
         self.alarmName = name
-        self.alarmLastChange = last_change
+        self.alarmLastChange = '0.1'
+        self.alarmChangeType = change_type
         self.alarmDescription = desc
         self.proposedRepairActions = prop_action
         self.clearingType = clearing_type
@@ -133,7 +147,13 @@ class AlarmDictionary(AgRoot, Serializer):
         self.vendor = ""
         self.managementInterfaceId = "O2IMS"
         self.pkNotificationField = ""
-        self.alarmDefinition = ""
+        self.alarmDefinition = []
+
+    def serialize(self):
+        d = Serializer.serialize(self)
+        if 'alarmDefinition' in d and len(d['alarmDefinition']) > 0:
+            d['alarmDefinition'] = self.serialize_list(d['alarmDefinition'])
+        return d
 
 
 class AlarmNotificationEventEnum(str, Enum):