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']
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)
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,
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,
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 ""