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 | 37 |
1 files changed, 36 insertions, 1 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 d9f44001..7b31de50 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 @@ -18,7 +18,7 @@ from mod import db, logger from mod.api.db_models import SubscriptionModel, NfSubRelationalModel, \ - NetworkFunctionFilterModel, NetworkFunctionModel + NetworkFunctionFilterModel, NetworkFunctionModel, MeasurementGroupModel from mod.api.services import measurement_group_service, nf_service from mod.api.custom_exception import InvalidDataException, DuplicateDataException from mod.subscription import AdministrativeState, SubNfState @@ -345,3 +345,38 @@ def get_subscriptions_list(): (len(subscription.measurement_groups) != 0): subscriptions_list.append(subscription.serialize()) return subscriptions_list + + +def query_unlocked_mg_by_sub_name(subscription_name): + """ + Queries the db for unlocked/locking measurement groups by subscription name + + Args: + subscription_name (String): Name of the Subscription + + Returns: + list (MeasurementGroupModel): If measurement groups with admin state + UNLOCKED exists else empty list + """ + logger.info(f'Attempting to fetch measurement groups by subscription name: {subscription_name}') + mg_model = db.session.query(MeasurementGroupModel) \ + .filter_by(subscription_name=subscription_name) \ + .filter(MeasurementGroupModel.administrative_state.in_(('UNLOCKED', 'LOCKING'))).all() + db.session.remove() + return mg_model + + +def query_to_delete_subscription_by_name(subscription_name): + """ + Deletes the subscription by name + + Args: + subscription_name (String): Name of the Subscription + + Returns: + int: Returns '1' if subscription exists and deleted successfully else '0' + """ + effected_rows = db.session.query(SubscriptionModel) \ + .filter_by(subscription_name=subscription_name).delete() + db.session.commit() + return effected_rows |