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,
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(
# 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
self.content = newmodel.content
+class EventTypeEnum(Enum):
+ ALARM = 'alarm'
+ EVENT = 'event'
+
+
class PerceivedSeverityEnum(str, Enum):
CRITICAL = 0
MAJOR = 1
self.alarmChangedTime = ''
self.alarmAcknowledgeTime = ''
self.alarmAcknowledged = False
- self.extensions = []
+ self.extensions = ''
class ProbableCause(AgRoot, Serializer):
self.description = desc
-class AlarmLastChangeEnum(str, Enum):
+class AlarmChangeTypeEnum(str, Enum):
ADDED = 'ADDED'
DELETED = 'DELETED'
MODIFYED = 'MODIFYED'
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
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):
self.alarmChangedTime = alarm.alarmChangedTime
self.alarmAcknowledgeTime = alarm.alarmAcknowledgeTime
self.alarmAcknowledged = alarm.alarmAcknowledged
- self.extensions = []
+ self.extensions = alarm.extensions