From 75c7a948602280ed2685e86a85dc88fed652e2e2 Mon Sep 17 00:00:00 2001 From: Pelayo Torres Date: Wed, 28 Feb 2024 13:13:42 +0100 Subject: [PATCH 1/2] output changed and onboarding date added --- .../core/apiinvokerenrolmentdetails.py | 11 +++++++++-- .../core/provider_enrolment_details_api.py | 13 +++++++++---- .../service_apis/core/discoveredapis.py | 2 +- .../published_apis/core/serviceapidescriptions.py | 12 +++++++++--- .../register_service/core/register_operations.py | 3 ++- 5 files changed, 30 insertions(+), 11 deletions(-) diff --git a/services/TS29222_CAPIF_API_Invoker_Management_API/api_invoker_management/core/apiinvokerenrolmentdetails.py b/services/TS29222_CAPIF_API_Invoker_Management_API/api_invoker_management/core/apiinvokerenrolmentdetails.py index 8969ec1..1d79405 100644 --- a/services/TS29222_CAPIF_API_Invoker_Management_API/api_invoker_management/core/apiinvokerenrolmentdetails.py +++ b/services/TS29222_CAPIF_API_Invoker_Management_API/api_invoker_management/core/apiinvokerenrolmentdetails.py @@ -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: diff --git a/services/TS29222_CAPIF_API_Provider_Management_API/api_provider_management/core/provider_enrolment_details_api.py b/services/TS29222_CAPIF_API_Provider_Management_API/api_provider_management/core/provider_enrolment_details_api.py index 2077003..18c5e5b 100644 --- a/services/TS29222_CAPIF_API_Provider_Management_API/api_provider_management/core/provider_enrolment_details_api.py +++ b/services/TS29222_CAPIF_API_Provider_Management_API/api_provider_management/core/provider_enrolment_details_api.py @@ -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" diff --git a/services/TS29222_CAPIF_Discover_Service_API/service_apis/core/discoveredapis.py b/services/TS29222_CAPIF_Discover_Service_API/service_apis/core/discoveredapis.py index 5114c30..f755e54 100644 --- a/services/TS29222_CAPIF_Discover_Service_API/service_apis/core/discoveredapis.py +++ b/services/TS29222_CAPIF_Discover_Service_API/service_apis/core/discoveredapis.py @@ -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, {"onboarding_date":0, "_id":0, "apf_id":0}) json_docs = [] for discoved_api in discoved_apis: my_api = dict_to_camel_case(discoved_api) diff --git a/services/TS29222_CAPIF_Publish_Service_API/published_apis/core/serviceapidescriptions.py b/services/TS29222_CAPIF_Publish_Service_API/published_apis/core/serviceapidescriptions.py index e2892e6..307ba34 100644 --- a/services/TS29222_CAPIF_Publish_Service_API/published_apis/core/serviceapidescriptions.py +++ b/services/TS29222_CAPIF_Publish_Service_API/published_apis/core/serviceapidescriptions.py @@ -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}, {"onboarding_date":0, "apf_id":0, "_id":0}) + 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, {"onboarding_date":0, "apf_id":0, "_id":0}) 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={"onboarding_date":0, "apf_id":0, "_id":0},return_document=ReturnDocument.AFTER ,upsert=False) result = clean_empty(result) diff --git a/services/register/register_service/core/register_operations.py b/services/register/register_service/core/register_operations.py index f929820..488481d 100644 --- a/services/register/register_service/core/register_operations.py +++ b/services/register/register_service/core/register_operations.py @@ -1,6 +1,7 @@ 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 import secrets import requests @@ -21,7 +22,7 @@ class RegisterOperations: if exist_user: return jsonify("user already exists"), 409 - user_info = dict(_id=secrets.token_hex(7), username=username, password=password, role=role, description=description, cn=cn, list_invokers=[], list_providers=[]) + user_info = dict(_id=secrets.token_hex(7), username=username, password=password, role=role, description=description, cn=cn, list_invokers=[], list_providers=[], onboarding_date=datetime.now()) obj = mycol.insert_one(user_info) if role == "invoker": -- GitLab From b115ba91ed963e36b464ce83999e74a85b3943a3 Mon Sep 17 00:00:00 2001 From: Pelayo Torres Date: Mon, 4 Mar 2024 16:17:58 +0100 Subject: [PATCH 2/2] Use of necessary parameters in DB --- .../service_apis/core/discoveredapis.py | 2 +- .../published_apis/core/serviceapidescriptions.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/services/TS29222_CAPIF_Discover_Service_API/service_apis/core/discoveredapis.py b/services/TS29222_CAPIF_Discover_Service_API/service_apis/core/discoveredapis.py index f755e54..f56b585 100644 --- a/services/TS29222_CAPIF_Discover_Service_API/service_apis/core/discoveredapis.py +++ b/services/TS29222_CAPIF_Discover_Service_API/service_apis/core/discoveredapis.py @@ -43,7 +43,7 @@ class DiscoverApisOperations(Resource): if my_params: my_query = {"$and": my_params} - discoved_apis = services.find(my_query, {"onboarding_date":0, "_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) diff --git a/services/TS29222_CAPIF_Publish_Service_API/published_apis/core/serviceapidescriptions.py b/services/TS29222_CAPIF_Publish_Service_API/published_apis/core/serviceapidescriptions.py index 307ba34..5c903d1 100644 --- a/services/TS29222_CAPIF_Publish_Service_API/published_apis/core/serviceapidescriptions.py +++ b/services/TS29222_CAPIF_Publish_Service_API/published_apis/core/serviceapidescriptions.py @@ -57,7 +57,7 @@ class PublishServiceOperations(Resource): if result != None: return result - service = mycol.find({"apf_id": apf_id}, {"onboarding_date":0, "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") @@ -133,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, {"onboarding_date":0, "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") @@ -207,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={"onboarding_date":0, "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) -- GitLab