# 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
+ " 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
# 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
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 ""