Updated python version and flake8 in tox
[pti/o2.git] / o2ims / domain / alarm_obj.py
index fa7cba2..050e7b0 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(
@@ -39,9 +45,16 @@ class FaultGenericModel(AgRoot):
             # elif hasattr(api_response, 'event_log_id'):
             #     self.alarm_id = api_response.event_log_id
 
-            self.hash = content_hash if content_hash \
-                else str(hash((self.id, self.timestamp, self.status)))
+            self.hash = content_hash
+            if not self.hash:
+                if hasattr(api_response, 'filtered'):
+                    self.filtered = api_response.filtered
+                    self.hash = str(hash((self.id, str(self.filtered))))
+                else:
+                    self.hash = str(hash((self.id, self.updatetime)))
             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 +71,11 @@ class FaultGenericModel(AgRoot):
         self.content = newmodel.content
 
 
+class EventTypeEnum(Enum):
+    ALARM = 'alarm'
+    EVENT = 'event'
+
+
 class PerceivedSeverityEnum(str, Enum):
     CRITICAL = 0
     MAJOR = 1
@@ -85,7 +103,7 @@ class AlarmEventRecord(AgRoot, Serializer):
         self.alarmChangedTime = ''
         self.alarmAcknowledgeTime = ''
         self.alarmAcknowledged = False
-        self.extensions = []
+        self.extensions = ''
 
 
 class ProbableCause(AgRoot, Serializer):
@@ -96,7 +114,7 @@ class ProbableCause(AgRoot, Serializer):
         self.description = desc
 
 
-class AlarmLastChangeEnum(str, Enum):
+class AlarmChangeTypeEnum(str, Enum):
     ADDED = 'ADDED'
     DELETED = 'DELETED'
     MODIFYED = 'MODIFYED'
@@ -108,13 +126,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 +152,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):
@@ -185,4 +210,4 @@ class AlarmEventNotification(AgRoot, Serializer):
         self.alarmChangedTime = alarm.alarmChangedTime
         self.alarmAcknowledgeTime = alarm.alarmAcknowledgeTime
         self.alarmAcknowledged = alarm.alarmAcknowledged
-        self.extensions = []
+        self.extensions = alarm.extensions