X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=o2ims%2Fservice%2Fauditor%2Falarm_handler.py;h=2847a8504be3f8bf7ca57028dd5f932bf38176fc;hb=00c91afdecfe15a2e1db1f7fc17fa75f2897b7d2;hp=8917264f86ba427ca703d79073eecbe78410f2f6;hpb=f7ef52a5b4ead0472b1b5828471b28c88d2a0aea;p=pti%2Fo2.git diff --git a/o2ims/service/auditor/alarm_handler.py b/o2ims/service/auditor/alarm_handler.py index 8917264..2847a85 100644 --- a/o2ims/service/auditor/alarm_handler.py +++ b/o2ims/service/auditor/alarm_handler.py @@ -19,7 +19,7 @@ import json # from o2common.config import config # from o2common.service.messagebus import MessageBus from o2common.service.unit_of_work import AbstractUnitOfWork -from o2ims.domain import events, commands, alarm_obj +from o2ims.domain import events, commands, alarm_obj, ocloud from o2ims.domain.alarm_obj import AlarmEventRecord, FaultGenericModel,\ AlarmNotificationEventEnum @@ -37,8 +37,8 @@ def update_alarm( + " id: " + str(fmobj.id) + " hash: " + str(fmobj.hash)) with uow: - logger.debug('+++test alarm dict:' + - str(len(uow.alarm_dictionaries.list()))) + resourcepool = uow.resource_pools.get(cmd.parentid) + alarm_event_record = uow.alarm_event_records.get(fmobj.id) if not alarm_event_record: logger.info("add alarm event record:" + fmobj.name @@ -54,26 +54,32 @@ def update_alarm( # TODO: handle different resource type hostname = entity_instance_id.split('.')[0].split('=')[1] logger.debug('hostname: ' + hostname) - 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') localmodel.resourceTypeId = restype.resourceTypeId - hosts = uow.resources.list(respoolids[0], **{ - 'resourceTypeId': restype.resourceTypeId - }) + args = [ocloud.Resource.resourceTypeId == + restype.resourceTypeId] + hosts = uow.resources.list(resourcepool.resourcePoolId, *args) for host in hosts: - if host.name == hostname: + logger.debug('host extensions: ' + host.extensions) + extensions = json.loads(host.extensions) + if extensions['hostname'] == hostname: localmodel.resourceId = host.resourceId uow.alarm_event_records.add(localmodel) logger.info("Add the alarm event record: " + fmobj.id + ", name: " + fmobj.name) - # localmodel.resourceTypeId = check_restype_id(uow, fmobj) - # logger.debug("resource type ID: " + localmodel.resourceTypeId) - # localmodel.resourceId = check_res_id(uow, fmobj) - # logger.debug("resource ID: " + localmodel.resourceId) - # uow.alarm_event_records.add(localmodel) + else: + restype = uow.resource_types.get_by_name('undefined_aggregate') + localmodel.resourceTypeId = restype.resourceTypeId + + args = [ocloud.Resource.resourceTypeId == + restype.resourceTypeId] + undefined_res = uow.resources.list( + resourcepool.resourcePoolId, *args) + localmodel.resourceId = undefined_res[0].resourceId + uow.alarm_event_records.add(localmodel) + logger.info("Add the alarm event record: " + fmobj.id + + ", name: " + fmobj.name) else: localmodel = alarm_event_record @@ -115,10 +121,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, @@ -131,9 +137,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, @@ -213,18 +220,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 ""