Ocf17 parse response from db to object to accomplish spec

Change of response of the API_Invoker_Management, API_Provider_management and Publish_service services, to facilitate the addition of metadata to the database, changing the response to the objects defined by 3GPP instead of using dictionaries in Invoker and Provider Services.

Merge request reports

Loading
+9 −2
Changes for services/TS29222_CAPIF_API_Invoker_Management_API/api_invoker_management/core/apiinvokerenrolmentdetails.py: 9 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -5,10 +5,12 @@ import requests
from .responses import bad_request_error, not_found_error, forbidden_error, internal_server_error, make_response
from flask import current_app, Flask, Response
import json
from datetime import datetime
from ..util import dict_to_camel_case
from .auth_manager import AuthManager
from .resources import Resource
from ..config import Config
from api_invoker_management.models.api_invoker_enrolment_details import APIInvokerEnrolmentDetails



@@ -77,10 +79,14 @@ class InvokerManagementOperations(Resource):
        apiinvokerenrolmentdetail.api_invoker_id = api_invoker_id
        current_app.logger.debug(cert)
        apiinvokerenrolmentdetail.onboarding_information.api_invoker_certificate = cert['data']['certificate']

        # Onboarding Date Record
        invoker_dict = apiinvokerenrolmentdetail.to_dict()
        invoker_dict["onboarding_date"] = datetime.now()

        mycol.insert_one(apiinvokerenrolmentdetail.to_dict())
        register.update_one({'username':username}, {"$push":{'list_invokers':api_invoker_id}})


        current_app.logger.debug("Invoker inserted in database")
        current_app.logger.debug("Netapp onboarded sucessfuly")

@@ -123,7 +129,8 @@ class InvokerManagementOperations(Resource):
            }

            current_app.logger.debug("Invoker Resource inserted in database")
            res = make_response(object=dict_to_camel_case(result), status=200)

            res = make_response(object=APIInvokerEnrolmentDetails().from_dict(dict_to_camel_case(result)), status=200)
            return res

        except Exception as e:
+9 −4
Changes for services/TS29222_CAPIF_API_Provider_Management_API/api_provider_management/core/provider_enrolment_details_api.py: 9 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -4,11 +4,13 @@ import secrets
from flask import current_app, Flask, Response
from ..core.sign_certificate import sign_certificate
from .responses import internal_server_error, not_found_error, forbidden_error, make_response, bad_request_error

from datetime import datetime
from ..util import dict_to_camel_case, clean_empty
from .resources import Resource
from .auth_manager import AuthManager

from api_provider_management.models.api_provider_enrolment_details import APIProviderEnrolmentDetails  # noqa: E501


class ProviderManagementOperations(Resource):

@@ -53,8 +55,11 @@ class ProviderManagementOperations(Resource):

                self.auth_manager.add_auth_provider(certificate, api_provider_func.api_prov_func_id, api_provider_func.api_prov_func_role, api_provider_enrolment_details.api_prov_dom_id)

            # Onboarding Date Record
            provider_dict = api_provider_enrolment_details.to_dict()
            provider_dict["onboarding_date"] = datetime.now()

            mycol.insert_one(api_provider_enrolment_details.to_dict())
            mycol.insert_one(provider_dict)
            register.update_one({'username':username}, {"$push":{'list_providers':api_provider_enrolment_details.api_prov_dom_id}})

            current_app.logger.debug("Provider inserted in database")
@@ -135,7 +140,7 @@ class ProviderManagementOperations(Resource):
            result = clean_empty(result)

            current_app.logger.debug("Provider domain updated in database")
            return make_response(object=dict_to_camel_case(result), status=200)
            return make_response(object=APIProviderEnrolmentDetails().from_dict(dict_to_camel_case(result)), status=200)

        except Exception as e:
            exception = "An exception occurred in update provider"
@@ -161,7 +166,7 @@ class ProviderManagementOperations(Resource):

            current_app.logger.debug("Provider domain updated in database")

            return make_response(object=dict_to_camel_case(result), status=200)
            return make_response(object=APIProviderEnrolmentDetails().from_dict(dict_to_camel_case(result)), status=200)

        except Exception as e:
            exception = "An exception occurred in patch provider"
+1 −1
Changes for services/TS29222_CAPIF_Discover_Service_API/service_apis/core/discoveredapis.py: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -43,7 +43,7 @@ class DiscoverApisOperations(Resource):
            if my_params:
                my_query = {"$and": my_params}

            discoved_apis = services.find(my_query, {"_id":0, "apf_id":0})
            discoved_apis = services.find(my_query, {"_id":0, "api_name":1, "api_id":1, "aef_profiles":1, "description":1, "supported_features":1, "shareable_info":1, "service_api_category":1, "api_supp_feats":1, "pub_api_path":1, "ccf_id":1})
            json_docs = []
            for discoved_api in discoved_apis:
                my_api = dict_to_camel_case(discoved_api)
+9 −3
Changes for services/TS29222_CAPIF_Publish_Service_API/published_apis/core/serviceapidescriptions.py: 9 added lines, 3 removed lines.
Original line number Diff line number Diff line
@@ -11,6 +11,8 @@ from ..db.db import MongoDatabse
from ..encoder import JSONEncoder
from ..models.problem_details import ProblemDetails
from .resources import Resource
from published_apis.models.service_api_description import ServiceAPIDescription
from datetime import datetime
from ..util import dict_to_camel_case, clean_empty
from .responses import bad_request_error, internal_server_error, forbidden_error, not_found_error, unauthorized_error, make_response
from bson import json_util
@@ -55,7 +57,8 @@ class PublishServiceOperations(Resource):
            if result != None:
                return result

            service = mycol.find({"apf_id": apf_id}, {"apf_id":0, "_id":0})
            service = mycol.find({"apf_id": apf_id}, {"_id":0, "api_name":1, "api_id":1, "aef_profiles":1, "description":1, "supported_features":1, "shareable_info":1, "service_api_category":1, "api_supp_feats":1, "pub_api_path":1, "ccf_id":1})
            current_app.logger.debug(service)
            if service is None:
                current_app.logger.error("Not found services for this apf id")
                return not_found_error(detail="Not exist published services for this apf_id", cause="Not exist service with this apf_id")
@@ -67,6 +70,7 @@ class PublishServiceOperations(Resource):
                json_docs.append(my_service_api)

            current_app.logger.debug("Obtained services apis")
            current_app.logger.debug(json_docs)

            res = make_response(object=json_docs, status=200)
            return res
@@ -97,7 +101,9 @@ class PublishServiceOperations(Resource):
            serviceapidescription.api_id = api_id
            rec = dict()
            rec['apf_id'] = apf_id
            rec['onboarding_date'] = datetime.now()
            rec.update(serviceapidescription.to_dict())

            mycol.insert_one(rec)

            self.auth_manager.add_auth_service(api_id, apf_id)
@@ -127,7 +133,7 @@ class PublishServiceOperations(Resource):
                return result

            my_query = {'apf_id': apf_id, 'api_id': service_api_id}
            service_api = mycol.find_one(my_query, {"apf_id":0, "_id":0})
            service_api = mycol.find_one(my_query, {"_id":0, "api_name":1, "api_id":1, "aef_profiles":1, "description":1, "supported_features":1, "shareable_info":1, "service_api_category":1, "api_supp_feats":1, "pub_api_path":1, "ccf_id":1})
            if service_api is None:
                current_app.logger.error(service_api_not_found_message)
                return not_found_error(detail=service_api_not_found_message, cause="No Service with specific credentials exists")
@@ -201,7 +207,7 @@ class PublishServiceOperations(Resource):
            service_api_description = service_api_description.to_dict()
            service_api_description = clean_empty(service_api_description)

            result = mycol.find_one_and_update(serviceapidescription, {"$set":service_api_description}, projection={"apf_id":0, "_id":0},return_document=ReturnDocument.AFTER ,upsert=False)
            result = mycol.find_one_and_update(serviceapidescription, {"$set":service_api_description}, projection={"_id":0, "api_name":1, "api_id":1, "aef_profiles":1, "description":1, "supported_features":1, "shareable_info":1, "service_api_category":1, "api_supp_feats":1, "pub_api_path":1, "ccf_id":1},return_document=ReturnDocument.AFTER ,upsert=False)

            result = clean_empty(result)

+1 −0
Changes for services/register/register_service/core/register_operations.py: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
from flask import Flask, jsonify, request, current_app
from flask_jwt_extended import create_access_token
from ..db.db import MongoDatabse
from datetime import datetime
from ..config import Config
from register_service import auth_utils
import secrets
Loading