diff options
Diffstat (limited to 'components/pm-subscription-handler/pmsh_service')
3 files changed, 81 insertions, 17 deletions
diff --git a/components/pm-subscription-handler/pmsh_service/mod/api/controller.py b/components/pm-subscription-handler/pmsh_service/mod/api/controller.py index 80d86362..e852324d 100755 --- a/components/pm-subscription-handler/pmsh_service/mod/api/controller.py +++ b/components/pm-subscription-handler/pmsh_service/mod/api/controller.py @@ -75,24 +75,40 @@ def get_subscription_by_name(subscription_name): subscription_name (String): Name of the subscription. Returns: - success: dict of single Subscription, 200 - None: subscription not defined, 404 - Exception: Details about exception, 500 + dict, HTTPStatus: single Sub in PMSH, 200 + dict, HTTPStatus: subscription not defined, 404 + dict, HTTPStatus: Exception details of failure, 500 """ logger.info('API call received to fetch subscription by name') try: - subscription = subscription_service.get_subscription_by_name(subscription_name) + subscription = subscription_service.query_subscription_by_name(subscription_name) if subscription is not None: - logger.info(f'subscription object with the name "{subscription_name}" ' - 'was fetched successfully from database') - return subscription.serialize(), HTTPStatus.OK + logger.info(f'queried subscription was successful with the name: {subscription_name}') + return subscription.serialize(), HTTPStatus.OK.value else: - logger.error(f'subscription object with the name "{subscription_name}" ' - 'was un successful to fetch from database') + logger.error('queried subscription was un successful with the name: ' + f'{subscription_name}') return {'error': 'Subscription was not defined with the name : ' - f'{subscription_name}'}, HTTPStatus.NOT_FOUND + f'{subscription_name}'}, HTTPStatus.NOT_FOUND.value except Exception as exception: - logger.error(f'The following exception occurred "{exception}" while fetching subscription ' - f'with the name "{subscription_name}"') + logger.error(f'While querying the subscription with name: {subscription_name}, ' + f'it occurred the following exception "{exception}"') return {'error': 'Request was not processed due to Exception : ' - f'{exception}'}, HTTPStatus.INTERNAL_SERVER_ERROR + f'{exception}'}, HTTPStatus.INTERNAL_SERVER_ERROR.value + + +def get_subscriptions(): + """ Retrieves all the subscriptions that are defined in PMSH. + + Returns: + list (dict), HTTPStatus: All subs in PMSH, 200 + dict, HTTPStatus: Exception details of failure, 500 + """ + logger.info('API call received to fetch all subscriptions') + try: + subscriptions = subscription_service.get_subscriptions_list() + return subscriptions, HTTPStatus.OK.value + except Exception as exception: + logger.error(f'The following exception occurred while fetching subscriptions: {exception}') + return {'error': 'Request was not processed due to Exception : ' + f'{exception}'}, HTTPStatus.INTERNAL_SERVER_ERROR.value diff --git a/components/pm-subscription-handler/pmsh_service/mod/api/pmsh_swagger.yml b/components/pm-subscription-handler/pmsh_service/mod/api/pmsh_swagger.yml index f27fb7ab..39f6dc3b 100644 --- a/components/pm-subscription-handler/pmsh_service/mod/api/pmsh_swagger.yml +++ b/components/pm-subscription-handler/pmsh_service/mod/api/pmsh_swagger.yml @@ -72,9 +72,24 @@ paths: 400: description: Invalid input + get: + description: Get all the subscriptions from PMSH. + operationId: mod.api.controller.get_subscriptions + tags: + - "Subscription" + responses: + 200: + description: OK; Array of subscriptions are returned else empty if not found + schema: + type: array + items: + $ref: "#/definitions/subscription" + 500: + description: Exception occurred while querying database + /subscription/{subscription_name}: get: - description: Get the Subscription from ONAP specified by Name + description: Get the Subscription from PMSH specified by Name operationId: mod.api.controller.get_subscription_by_name tags: - "Subscription" @@ -92,7 +107,7 @@ paths: 404: description: Subscription with specified name not found 500: - description: Exception occurs while querying database + description: Exception occurred while querying database definitions: subscription: 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 c41bb18b..96d50c27 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 @@ -292,9 +292,9 @@ def save_nf_filter(nf_filter, subscription_name): db.session.add(new_filter) -def get_subscription_by_name(subscription_name): +def query_subscription_by_name(subscription_name): """ - Retrieves the subscription information by name + Queries the db for existing subscription by name Args: subscription_name (String): Name of the Subscription @@ -309,3 +309,36 @@ def get_subscription_by_name(subscription_name): .filter_by(subscription_name=subscription_name).first() db.session.remove() return subscription_model + + +def query_all_subscriptions(): + """ + Queries the db for all existing subscriptions defined in PMSH + + Returns + list (SubscriptionModel): of all subscriptions else None + """ + logger.info('Attempting to fetch all the subscriptions') + subscriptions = db.session.query(SubscriptionModel) \ + .options(joinedload(SubscriptionModel.network_filter), + joinedload(SubscriptionModel.measurement_groups)) \ + .all() + db.session.remove() + return subscriptions + + +def get_subscriptions_list(): + """ Converts all subscriptions to JSON and appends to list + + Returns + list: dict of all subscriptions else empty + """ + subscriptions = query_all_subscriptions() + subscriptions_list = [] + if subscriptions is not None: + logger.info('Queried all the subscriptions was successful') + for subscription in subscriptions: + if (subscription.network_filter is not None) and \ + (len(subscription.measurement_groups) != 0): + subscriptions_list.append(subscription.serialize()) + return subscriptions_list |