Fix INF-381 another issue cause this case still failed
[pti/o2.git] / o2ims / service / auditor / alarm_handler.py
index 8917264..305e919 100644 (file)
@@ -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