diff options
author | 2022-02-16 14:33:56 +0000 | |
---|---|---|
committer | 2022-02-16 14:33:56 +0000 | |
commit | 28b3d8f7ac48cb202b04d599b52112282a38417e (patch) | |
tree | 835d5d6d3e0dfb8b5b9e9e2a89b3ae179dabf2a9 /components | |
parent | 3b4a84291c1f251b692176233cb819bf308fef94 (diff) | |
parent | b755a690a44cc5ebb066701f710f161ee6ce3070 (diff) |
Merge "[PMSH] Exit Handler Update"
Diffstat (limited to 'components')
7 files changed, 36 insertions, 49 deletions
diff --git a/components/pm-subscription-handler/Changelog.md b/components/pm-subscription-handler/Changelog.md index d2630aea..dedca67b 100755 --- a/components/pm-subscription-handler/Changelog.md +++ b/components/pm-subscription-handler/Changelog.md @@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). +## [3.0.0] +### Changed +* Exit Handler Update (DCAEGEN2-3084) + ## [2.0.0] ### Changed * Updated PMSH app configuration, simplified existing config (DCAEGEN2-2814) diff --git a/components/pm-subscription-handler/pmsh_service/mod/exit_handler.py b/components/pm-subscription-handler/pmsh_service/mod/exit_handler.py index 1ea83e59..16223790 100755 --- a/components/pm-subscription-handler/pmsh_service/mod/exit_handler.py +++ b/components/pm-subscription-handler/pmsh_service/mod/exit_handler.py @@ -1,5 +1,5 @@ # ============LICENSE_START=================================================== -# Copyright (C) 2020-2021 Nordix Foundation. +# Copyright (C) 2020-2022 Nordix Foundation. # ============================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,6 +17,7 @@ # ============LICENSE_END===================================================== from mod import logger, db +from mod.api.services import subscription_service, measurement_group_service from mod.subscription import AdministrativeState @@ -25,29 +26,25 @@ class ExitHandler: Args: periodic_tasks (List[PeriodicTask]): PeriodicTasks that needs to be cancelled. - app_conf (AppConfig): The PMSH Application Configuration. - subscription_handler (SubscriptionHandler): The subscription handler instance. """ shutdown_signal_received = False - def __init__(self, *, periodic_tasks, app_conf, subscription_handler): + def __init__(self, *, periodic_tasks): self.periodic_tasks = periodic_tasks - self.app_conf = app_conf - self.subscription_handler = subscription_handler def __call__(self, sig_num, frame): logger.info('Graceful shutdown of PMSH initiated.') logger.debug(f'ExitHandler was called with signal number: {sig_num}.') - self.subscription_handler.stop_aai_event_thread() - current_sub = self.app_conf.subscription - if current_sub.administrativeState == AdministrativeState.UNLOCKED.value: - try: - nfs = self.app_conf.subscription.get_network_functions() - current_sub.delete_subscription_from_nfs(nfs, self.subscription_handler.mr_pub, - self.app_conf) - except Exception as e: - logger.error(f'Failed to shut down PMSH application: {e}', exc_info=True) + try: + subscriptions_all = subscription_service.query_all_subscriptions() + for subscription in subscriptions_all: + for mg in subscription.measurement_groups: + if mg.administrative_state == AdministrativeState.UNLOCKED.value: + measurement_group_service.\ + update_admin_status(mg, AdministrativeState.LOCKED.value) + except Exception as e: + logger.error(f'Failed to shut down PMSH application: {e}', exc_info=True) for thread in self.periodic_tasks: logger.info(f'Cancelling thread {thread.name}') thread.cancel() diff --git a/components/pm-subscription-handler/pmsh_service/pmsh_service_main.py b/components/pm-subscription-handler/pmsh_service/pmsh_service_main.py index 1af01cf1..1d8b0b34 100755 --- a/components/pm-subscription-handler/pmsh_service/pmsh_service_main.py +++ b/components/pm-subscription-handler/pmsh_service/pmsh_service_main.py @@ -1,5 +1,5 @@ # ============LICENSE_START=================================================== -# Copyright (C) 2019-2021 Nordix Foundation. +# Copyright (C) 2019-2022 Nordix Foundation. # ============================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,10 +20,9 @@ from signal import signal, SIGTERM from mod.aai_event_handler import AAIEventHandler from mod import db, create_app, launch_api_server, logger from mod.exit_handler import ExitHandler -from mod.pmsh_config import AppConfig as NewAppConfig -from mod.pmsh_utils import AppConfig, PeriodicTask +from mod.pmsh_config import AppConfig +from mod.pmsh_utils import PeriodicTask from mod.policy_response_handler import PolicyResponseHandler -from mod.subscription_handler import SubscriptionHandler def main(): @@ -32,10 +31,7 @@ def main(): app = create_app() app.app_context().push() db.create_all(app=app) - app_conf = AppConfig() - pmsh_app_conf = NewAppConfig() - policy_mr_pub = app_conf.get_mr_pub('policy_pm_publisher') - aai_event_mr_sub = app_conf.get_mr_sub('aai_subscriber') + pmsh_app_conf = AppConfig() except Exception as e: logger.error(f'Failed to get config and create application: {e}', exc_info=True) sys.exit(e) @@ -46,20 +42,14 @@ def main(): logger.info('Start polling PMSH_CL_INPUT topic on DMaaP MR.') policy_response_handler_thread.start() - subscription_handler = SubscriptionHandler(policy_mr_pub, aai_event_mr_sub, app, app_conf) - subscription_handler_thread = PeriodicTask(20, subscription_handler.execute) - subscription_handler_thread.name = 'sub_handler_thread' - subscription_handler_thread.start() - aai_event_handler = AAIEventHandler(app) aai_event_handler_thread = PeriodicTask(20, aai_event_handler.execute) aai_event_handler_thread.name = 'aai_event_thread' aai_event_handler_thread.start() - periodic_tasks = [subscription_handler_thread, policy_response_handler_thread, + periodic_tasks = [policy_response_handler_thread, aai_event_handler_thread] - signal(SIGTERM, ExitHandler(periodic_tasks=periodic_tasks, - app_conf=app_conf, subscription_handler=subscription_handler)) + signal(SIGTERM, ExitHandler(periodic_tasks=periodic_tasks)) launch_api_server(pmsh_app_conf) except Exception as e: diff --git a/components/pm-subscription-handler/pom.xml b/components/pm-subscription-handler/pom.xml index 89baa288..d5f93cb8 100644 --- a/components/pm-subscription-handler/pom.xml +++ b/components/pm-subscription-handler/pom.xml @@ -1,7 +1,7 @@ <?xml version="1.0"?> <!-- # ============LICENSE_START======================================================= -# Copyright (C) 2019 Nordix Foundation. +# Copyright (C) 2019-2022 Nordix Foundation. # Copyright 2020 Deutsche Telekom. All rights reserved. # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); @@ -32,7 +32,7 @@ <groupId>org.onap.dcaegen2.services</groupId> <artifactId>pmsh</artifactId> <name>dcaegen2-services-pm-subscription-handler</name> - <version>2.0.0-SNAPSHOT</version> + <version>3.0.0-SNAPSHOT</version> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <sonar.sources>.</sonar.sources> diff --git a/components/pm-subscription-handler/setup.py b/components/pm-subscription-handler/setup.py index d5d60401..d803d6ba 100644 --- a/components/pm-subscription-handler/setup.py +++ b/components/pm-subscription-handler/setup.py @@ -1,5 +1,5 @@ # ============LICENSE_START======================================================= -# Copyright (C) 2019-2021 Nordix Foundation. +# Copyright (C) 2019-2022 Nordix Foundation. # Copyright (C) 2021 AT&T Property. All rights reserved. # Copyright 2020 Deutsche Telekom. All rights reserved. # ================================================================================ @@ -22,7 +22,7 @@ from setuptools import setup, find_packages setup( name="pm_subscription_handler", - version="2.0.0", + version="3.0.0", packages=find_packages(), author="lego@est.tech", author_email="lego@est.tech", diff --git a/components/pm-subscription-handler/tests/test_exit_handler.py b/components/pm-subscription-handler/tests/test_exit_handler.py index c3cc0241..c98be634 100755 --- a/components/pm-subscription-handler/tests/test_exit_handler.py +++ b/components/pm-subscription-handler/tests/test_exit_handler.py @@ -1,5 +1,5 @@ # ============LICENSE_START=================================================== -# Copyright (C) 2020 Nordix Foundation. +# Copyright (C) 2020-2022 Nordix Foundation. # ============================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,10 +17,9 @@ # ============LICENSE_END===================================================== import os from signal import SIGTERM, signal -from unittest.mock import patch, Mock +from unittest.mock import patch from mod.exit_handler import ExitHandler -from mod.subscription import Subscription from tests.base_setup import BaseClassSetup @@ -31,10 +30,11 @@ class ExitHandlerTests(BaseClassSetup): super().setUpClass() @patch('mod.pmsh_utils.PeriodicTask') - def setUp(self, mock_periodic_task): + @patch('mod.pmsh_utils.PeriodicTask') + def setUp(self, mock_periodic_task_aai, mock_periodic_task_policy): super().setUp() - self.mock_aai_event_thread = mock_periodic_task - self.sub = self.app_conf.subscription + self.mock_aai_event_thread = mock_periodic_task_aai + self.mock_policy_resp_handler_thread = mock_periodic_task_policy def tearDown(self): super().tearDown() @@ -43,13 +43,9 @@ class ExitHandlerTests(BaseClassSetup): def tearDownClass(cls): super().tearDownClass() - @patch.object(Subscription, 'update_sub_nf_status') - @patch.object(Subscription, 'update_subscription_status') - def test_terminate_signal_successful(self, mock_upd_sub_status, - mock_upd_subnf_status): - handler = ExitHandler(periodic_tasks=[self.mock_aai_event_thread], - app_conf=self.app_conf, - subscription_handler=Mock()) + def test_terminate_signal_successful(self): + handler = ExitHandler(periodic_tasks=[self.mock_aai_event_thread, + self.mock_policy_resp_handler_thread]) signal(SIGTERM, handler) os.kill(os.getpid(), SIGTERM) self.assertTrue(ExitHandler.shutdown_signal_received) diff --git a/components/pm-subscription-handler/version.properties b/components/pm-subscription-handler/version.properties index 358e99ce..081a54a9 100644 --- a/components/pm-subscription-handler/version.properties +++ b/components/pm-subscription-handler/version.properties @@ -1,4 +1,4 @@ -major=2 +major=3 minor=0 patch=0 base_version=${major}.${minor}.${patch} |