X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=o2ims%2Fservice%2Fauditor%2Falarm_handler.py;h=5f6ed3541bf08aac48f050bd3381a3443f18f573;hb=116a47fff82b8c77036d07094cb71151d13bfe7f;hp=305e919287837b3e68fc2b1baeee4c22aa948bb8;hpb=39e022d709689d2fc02d892707971ae852fc55ea;p=pti%2Fo2.git diff --git a/o2ims/service/auditor/alarm_handler.py b/o2ims/service/auditor/alarm_handler.py index 305e919..5f6ed35 100644 --- a/o2ims/service/auditor/alarm_handler.py +++ b/o2ims/service/auditor/alarm_handler.py @@ -41,10 +41,6 @@ def update_alarm( alarm_event_record = uow.alarm_event_records.get(fmobj.id) if not alarm_event_record: - logger.info("add alarm event record:" + fmobj.name - + " update_at: " + str(fmobj.updatetime) - + " id: " + str(fmobj.id) - + " hash: " + str(fmobj.hash)) localmodel = create_by(fmobj) content = json.loads(fmobj.content) entity_type_id = content['entity_type_id'] @@ -65,6 +61,14 @@ def update_alarm( extensions = json.loads(host.extensions) if extensions['hostname'] == hostname: localmodel.resourceId = host.resourceId + break + else: + # Example would be when alarm has host=controller + # TODO: Handle host=controller better + logger.warning( + 'Couldnt match alarm event ' + f'to hostname for: {content}') + return uow.alarm_event_records.add(localmodel) logger.info("Add the alarm event record: " + fmobj.id + ", name: " + fmobj.name) @@ -121,10 +125,10 @@ def create_by(fmobj: FaultGenericModel) -> AlarmEventRecord: return alarm_obj.PerceivedSeverityEnum.WARNING alarm_event_record.perceivedSeverity = severity_switch(content['severity']) alarm_event_record.probableCauseId = fmobj.probable_cause_id + + extensions = json.dumps(fmobj.filtered) + alarm_event_record.extensions = extensions alarm_event_record.hash = fmobj.hash - # logger.info('severity: ' + content['severity']) - # logger.info('perceived severity: ' - # + alarm_event_record.perceivedSeverity) alarm_event_record.events.append(events.AlarmEventChanged( id=fmobj.id, notificationEventType=AlarmNotificationEventEnum.NEW, @@ -137,9 +141,10 @@ def create_by(fmobj: FaultGenericModel) -> AlarmEventRecord: def update_by(target: AlarmEventRecord, fmobj: FaultGenericModel ) -> None: # content = json.loads(fmobj.content) - target.hash = fmobj.hash if fmobj.status == 'clear': target.perceivedSeverity = alarm_obj.PerceivedSeverityEnum.CLEARED + + target.hash = fmobj.hash target.events.append(events.AlarmEventChanged( id=fmobj.id, notificationEventType=AlarmNotificationEventEnum.CLEAR, @@ -219,18 +224,21 @@ def check_res_id(uow: AbstractUnitOfWork, fmobj: FaultGenericModel) -> str: entity_type_id = content['entity_type_id'] entity_instance_id = content['entity_instance_id'] if 'host' == entity_type_id: - logger.info('host: ' + entity_instance_id) + logger.debug('host: ' + entity_instance_id) hostname = entity_instance_id.split('.')[0].split('=')[1] with uow: respools = uow.resource_pools.list() respoolids = [respool.resourcePoolId for respool in respools if respool.oCloudId == respool.resourcePoolId] + restype = uow.resource_types.get_by_name('pserver') - hosts = uow.resources.list(respoolids[0], **{ - 'resourceTypeId': restype.resourceTypeId - }) + args = [ocloud.Resource.resourceTypeId == + restype.resourceTypeId] + hosts = uow.resources.list(respoolids[0], *args) for host in hosts: - if host.name == hostname: + logger.debug('host extensions: ' + host.extensions) + extensions = json.loads(host.extensions) + if extensions['hostname'] == hostname: return host.resourceId else: return ""