Fix INF-359 and INF-352 about the alarm event record
[pti/o2.git] / o2ims / service / watcher / alarm_watcher.py
index 3581ef2..b4af164 100644 (file)
 #  See the License for the specific language governing permissions and
 #  limitations under the License.
 
-# from o2ims.domain.resource_type import ResourceTypeEnum
-from o2common.service.client.base_client import BaseClient
-# from o2ims.domain.stx_object import StxGenericModel
-# from o2common.service.unit_of_work import AbstractUnitOfWork
-from o2common.service.watcher.base import BaseWatcher
+from o2common.domain import tags
 from o2common.service.messagebus import MessageBus
+from o2common.service.watcher.base import BaseWatcher
+from o2common.service.client.base_client import BaseClient
+
 from o2ims.domain import commands
+from o2ims.domain.stx_object import StxGenericModel
 
 from o2common.helper import o2logging
 logger = o2logging.get_logger(__name__)
@@ -28,65 +28,22 @@ class AlarmWatcher(BaseWatcher):
     def __init__(self, fault_client: BaseClient,
                  bus: MessageBus) -> None:
         super().__init__(fault_client, bus)
+        self._tags = tags.Tag()
+        self.poolid = None
 
     def _targetname(self):
         return "alarm"
 
-    def _probe(self, parent: object = None, tags: object = None):
-        newmodels = self._client.list()
-        # if len(newmodels) == 0:
-        #     return []
-
-        # uow = self._bus.uow
-        # exist_alarms = {}
-        # with uow:
-        #     rs = uow.session.execute(
-        #         '''
-        #         SELECT "alarmEventRecordId"
-        #         FROM "alarmEventRecord"
-        #         WHERE "perceivedSeverity" != :perceived_severity_enum
-        #         ''',
-        #         dict(perceived_severity_enum=alarm_obj.PerceivedSeverityEnum.
-        #              CLEARED)
-        #     )
-        #     for row in rs:
-        #         id = row[0]
-        #         # logger.debug('Exist alarm: ' + id)
-        #         exist_alarms[id] = False
+    def _probe(self, parent: StxGenericModel, tags: object = None):
+        # Set a tag for children resource
+        self._tags.pool = parent.res_pool_id
+        self._set_respool_client()
 
-        # ret = []
-        # for m in newmodels:
-        #     try:
-        #         if exist_alarms[m.id]:
-        #             ret.append(commands.UpdateAlarm(m))
-        #             exist_alarms[m.id] = True
-        #     except KeyError:
-        #         logger.debug('alarm new: ' + m.id)
-        #         ret.append(commands.UpdateAlarm(m))
-
-        # for alarm in exist_alarms:
-        #     logger.debug('exist alarm: ' + alarm)
-        #     if exist_alarms[alarm]:
-        #         # exist alarm is active
-        #         continue
-        #     event = self._client.get(alarm)
-        #     ret.append(commands.UpdateAlarm(event))
-
-        # return ret
-
-        return [commands.UpdateAlarm(m) for m in newmodels] \
+        resourcepoolid = parent.id
+        newmodels = self._client.list()
+        return [commands.UpdateAlarm(m, resourcepoolid) for m in newmodels] \
             if len(newmodels) > 0 else []
 
-
-# class EventWatcher(BaseWatcher):
-#     def __init__(self, fault_client: BaseClient,
-#                  bus: MessageBus) -> None:
-#         super().__init__(fault_client, bus)
-
-#     def _targetname(self):
-#         return "event"
-
-#     def _probe(self, parent: object = None, tags: object = None):
-#         newmodels = self._client.list()
-#         return [commands.UpdateAlarm(m) for m in newmodels] \
-#             if len(newmodels) > 0 else []
+    def _set_respool_client(self):
+        self.poolid = self._tags.pool
+        self._client.set_pool_driver(self.poolid)