diff options
Diffstat (limited to 'components/pm-subscription-handler/pmsh_service/mod/policy_response_handler.py')
-rw-r--r-- | components/pm-subscription-handler/pmsh_service/mod/policy_response_handler.py | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/components/pm-subscription-handler/pmsh_service/mod/policy_response_handler.py b/components/pm-subscription-handler/pmsh_service/mod/policy_response_handler.py index a0a7bd67..5065ce8a 100644 --- a/components/pm-subscription-handler/pmsh_service/mod/policy_response_handler.py +++ b/components/pm-subscription-handler/pmsh_service/mod/policy_response_handler.py @@ -18,8 +18,8 @@ import json from mod.pmsh_config import MRTopic, AppConfig from mod import logger -from mod.subscription import AdministrativeState, subscription_nf_states -from mod.api.db_models import MeasurementGroupModel +from mod.subscription import AdministrativeState, subscription_nf_states, SubNfState +from mod.api.db_models import MeasurementGroupModel, NfMeasureGroupRelationalModel from mod.api.services import measurement_group_service policy_response_handle_functions = { @@ -34,6 +34,10 @@ policy_response_handle_functions = { AdministrativeState.LOCKING.value: { 'success': measurement_group_service.lock_nf_to_meas_grp, 'failed': measurement_group_service.update_measurement_group_nf_status + }, + AdministrativeState.FILTERING.value: { + 'success': measurement_group_service.filter_nf_to_meas_grp, + 'failed': measurement_group_service.update_measurement_group_nf_status } } @@ -86,8 +90,19 @@ class PolicyResponseHandler: logger.info(f'Response from MR: measurement group name: {measurement_group_name} for ' f'NF: {nf_name} received, updating the DB') try: - nf_measure_grp_status = subscription_nf_states[administrative_state][response_message]\ - .value + + if administrative_state == AdministrativeState.FILTERING.value: + nf_msg_rel = NfMeasureGroupRelationalModel.query.filter( + NfMeasureGroupRelationalModel.measurement_grp_name == measurement_group_name, + NfMeasureGroupRelationalModel.nf_name == nf_name + ).one_or_none() + if nf_msg_rel.nf_measure_grp_status == SubNfState.PENDING_DELETE.value: + administrative_state = AdministrativeState.LOCKING.value + elif nf_msg_rel.nf_measure_grp_status == SubNfState.PENDING_CREATE.value: + administrative_state = AdministrativeState.UNLOCKED.value + + nf_measure_grp_status = (subscription_nf_states[administrative_state] + [response_message]).value policy_response_handle_functions[administrative_state][response_message]( measurement_group_name=measurement_group_name, status=nf_measure_grp_status, nf_name=nf_name) |