X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_policy_module%2Falarming%2Fservice.py;h=b916724df940fa8793e9e5825b521a964aecdb88;hb=acac7559b430f370dd06d09a40a3a387e440f922;hp=c54e02d24863e6304404e9611aa3c5c62d4db6ee;hpb=f7451f8879d188c9fef9c976d82aa39141601938;p=osm%2FPOL.git diff --git a/osm_policy_module/alarming/service.py b/osm_policy_module/alarming/service.py index c54e02d..b916724 100644 --- a/osm_policy_module/alarming/service.py +++ b/osm_policy_module/alarming/service.py @@ -52,9 +52,9 @@ class AlarmingService: async def configure_vnf_alarms(self, nsr_id: str): log.info("Configuring vnf alarms for network service %s", nsr_id) alarms_created = [] - database.db.connect(reuse_if_open=True) - with database.db.atomic() as tx: - try: + database.db.connect() + try: + with database.db.atomic(): vnfrs = self.db_client.get_vnfrs(nsr_id) for vnfr in vnfrs: log.debug("Processing vnfr: %s", vnfr) @@ -103,7 +103,7 @@ class AlarmingService: vdu_name=vdur['name'] ) for action_type in ['ok', 'insufficient-data', 'alarm']: - if action_type in alarm_descriptor['actions']: + if 'actions' in alarm_descriptor and action_type in alarm_descriptor['actions']: for url in alarm_descriptor['actions'][action_type]: AlarmActionRepository.create( type=action_type, @@ -112,24 +112,27 @@ class AlarmingService: ) alarms_created.append(alarm) - except Exception as e: - log.exception("Error configuring VNF alarms:") - tx.rollback() - if len(alarms_created) > 0: - log.debug("Cleaning alarm resources in MON") - for alarm in alarms_created: + except Exception as e: + log.exception("Error configuring VNF alarms:") + if len(alarms_created) > 0: + log.debug("Cleaning alarm resources in MON") + for alarm in alarms_created: + try: await self.mon_client.delete_alarm(alarm.nsr_id, alarm.vnf_member_index, alarm.vdu_name, alarm.alarm_uuid) - raise e - database.db.close() + except ValueError: + log.exception("Error deleting alarm in MON %s", alarm.alarm_uuid) + raise e + finally: + database.db.close() async def delete_orphaned_alarms(self, nsr_id): log.info("Deleting orphaned vnf alarms for network service %s", nsr_id) database.db.connect() - with database.db.atomic() as tx: - try: + try: + with database.db.atomic(): for alarm in VnfAlarmRepository.list(VnfAlarm.nsr_id == nsr_id): try: self.db_client.get_vdur(nsr_id, alarm.vnf_member_index, alarm.vdu_name) @@ -144,18 +147,17 @@ class AlarmingService: except ValueError: log.exception("Error deleting alarm in MON %s", alarm.alarm_uuid) alarm.delete_instance() - - except Exception as e: - log.exception("Error deleting orphaned alarms:") - tx.rollback() - raise e - database.db.close() + except Exception as e: + log.exception("Error deleting orphaned alarms:") + raise e + finally: + database.db.close() async def delete_vnf_alarms(self, nsr_id): log.info("Deleting vnf alarms for network service %s", nsr_id) database.db.connect() - with database.db.atomic() as tx: - try: + try: + with database.db.atomic(): for alarm in VnfAlarmRepository.list(VnfAlarm.nsr_id == nsr_id): log.debug("Deleting vnf alarm %s", alarm.alarm_uuid) try: @@ -168,11 +170,11 @@ class AlarmingService: log.exception("Error deleting alarm in MON %s", alarm.alarm_uuid) alarm.delete_instance() - except Exception as e: - log.exception("Error deleting orphaned alarms:") - tx.rollback() - raise e - database.db.close() + except Exception as e: + log.exception("Error deleting vnf alarms:") + raise e + finally: + database.db.close() async def handle_alarm(self, alarm_uuid: str, status: str, payload: dict): database.db.connect()