diff options
Diffstat (limited to 'components/pm-subscription-handler/pmsh_service/mod/api/services/subscription_service.py')
-rw-r--r-- | components/pm-subscription-handler/pmsh_service/mod/api/services/subscription_service.py | 46 |
1 files changed, 31 insertions, 15 deletions
diff --git a/components/pm-subscription-handler/pmsh_service/mod/api/services/subscription_service.py b/components/pm-subscription-handler/pmsh_service/mod/api/services/subscription_service.py index 1485bebe..ea1640c2 100644 --- a/components/pm-subscription-handler/pmsh_service/mod/api/services/subscription_service.py +++ b/components/pm-subscription-handler/pmsh_service/mod/api/services/subscription_service.py @@ -39,24 +39,28 @@ def create_subscription(subscription): logger.info(f'Initiating create subscription for: {subscription["subscriptionName"]}') perform_validation(subscription) try: - sub_name, measurement_groups = save_subscription_request(subscription) + sub_model, measurement_groups = save_subscription_request(subscription) db.session.commit() logger.info(f'Successfully saved subscription request for: ' f'{subscription["subscriptionName"]}') - filtered_nfs = nf_service.capture_filtered_nfs(sub_name) + filtered_nfs = nf_service.capture_filtered_nfs(sub_model.subscription_name) if filtered_nfs: - logger.info(f'Applying the filtered nfs for subscription: {sub_name}') + logger.info(f'Applying the filtered nfs for subscription: ' + f'{sub_model.subscription_name}') save_filtered_nfs(filtered_nfs) - apply_subscription_to_nfs(filtered_nfs, sub_name) + apply_subscription_to_nfs(filtered_nfs, sub_model.subscription_name) unlocked_msmt_groups = apply_measurement_grp_to_nfs(filtered_nfs, measurement_groups) db.session.commit() if unlocked_msmt_groups: - publish_measurement_grp_to_nfs(sub_name, filtered_nfs, unlocked_msmt_groups) + publish_measurement_grp_to_nfs(sub_model, filtered_nfs, + unlocked_msmt_groups) else: - logger.error(f'All measurement groups are locked for subscription: {sub_name}, ' + logger.error(f'All measurement groups are locked for subscription: ' + f'{sub_model.subscription_name}, ' f'please verify/check measurement groups.') else: - logger.error(f'No network functions found for subscription: {sub_name}, ' + logger.error(f'No network functions found for subscription: ' + f'{sub_model.subscription_name}, ' f'please verify/check NetworkFunctionFilter.') except IntegrityError as e: db.session.rollback() @@ -68,12 +72,13 @@ def create_subscription(subscription): db.session.remove() -def publish_measurement_grp_to_nfs(subscription_name, filtered_nfs, measurement_groups): +def publish_measurement_grp_to_nfs(sub_model, filtered_nfs, + measurement_groups): """ Publishes an event for measurement groups against nfs Args: - subscription_name (string): subscription name against nfs + sub_model(SubscriptionModel): Subscription model object filtered_nfs (list[NetworkFunction])): list of filtered network functions measurement_groups (list[MeasurementGroupModel]): list of unlocked measurement group """ @@ -83,11 +88,11 @@ def publish_measurement_grp_to_nfs(subscription_name, filtered_nfs, measurement_ logger.info(f'Publishing event for nf name, measure_grp_name: {nf.nf_name},' f'{measurement_group.measurement_group_name}') measurement_group_service.publish_measurement_group( - subscription_name, measurement_group, nf) + sub_model, measurement_group, nf) except Exception as ex: logger.error(f'Publish event failed for nf name, measure_grp_name, sub_name: ' f'{nf.nf_name},{measurement_group.measurement_group_name}, ' - f'{subscription_name} with error: {ex}') + f'{sub_model.subscription_name} with error: {ex}') def save_filtered_nfs(filtered_nfs): @@ -157,6 +162,8 @@ def check_missing_data(subscription): """ if subscription['subscriptionName'].strip() in (None, ''): raise InvalidDataException("No value provided in subscription name") + if subscription['operationalPolicyName'].strip() in (None, ''): + raise InvalidDataException("Value required for operational Policy Name") for measurement_group in subscription.get('measurementGroups'): measurement_group_details = measurement_group['measurementGroup'] @@ -200,7 +207,7 @@ def save_subscription_request(subscription): list[MeasurementGroupModel]: list of measurement groups """ logger.info(f'Saving subscription request for: {subscription["subscriptionName"]}') - sub_name = save_subscription(subscription).subscription_name + sub_model = save_subscription(subscription) save_nf_filter(subscription["nfFilter"], subscription["subscriptionName"]) measurement_groups = [] for measurement_group in subscription['measurementGroups']: @@ -208,7 +215,7 @@ def save_subscription_request(subscription): measurement_group_service.save_measurement_group( measurement_group['measurementGroup'], subscription["subscriptionName"])) - return sub_name, measurement_groups + return sub_model, measurement_groups def check_duplicate_fields(subscription_name): @@ -235,9 +242,18 @@ def save_subscription(subscription): Args: subscription (dict): subscription model to be saved. + Returns: + subscription_model(SubscriptionModel): subscription model + which is added to the session """ - subscription_model = SubscriptionModel(subscription_name=subscription["subscriptionName"], - status=AdministrativeState.LOCKED.value) + control_loop_name = "" + if 'controlLoopName' in subscription: + control_loop_name = subscription['controlLoopName'] + subscription_model = \ + SubscriptionModel(subscription_name=subscription["subscriptionName"], + operational_policy_name=subscription["operationalPolicyName"], + control_loop_name=control_loop_name, + status=AdministrativeState.LOCKED.value) db.session.add(subscription_model) return subscription_model |