Loading .gitignore +1 −0 Original line number Diff line number Diff line Loading @@ -37,3 +37,4 @@ results helm/capif/*.lock helm/capif/charts/tempo* *.bak No newline at end of file services/TS29222_CAPIF_Discover_Service_API/service_apis/controllers/default_controller.py +2 −2 Original line number Diff line number Diff line Loading @@ -5,7 +5,7 @@ import json from flask import request, current_app from service_apis.models.discovered_apis import DiscoveredAPIs # noqa: E501 from ..core.discoveredapis import DiscoverApisOperations from ..core.discoveredapis import DiscoverApisOperations, return_negotiated_supp_feat_dict discover_apis = DiscoverApisOperations() Loading Loading @@ -55,7 +55,7 @@ def all_service_apis_get(api_invoker_id, api_name=None, api_version=None, comm_t "supported_features": supported_features} if supported_features is not None: supp_feat_dict = DiscoveredAPIs.return_supp_feat_dict(supported_features) supp_feat_dict = return_negotiated_supp_feat_dict(supported_features) current_app.logger.info(supp_feat_dict) if supp_feat_dict['VendSpecQueryParams']: for q_params in request.args: Loading services/TS29222_CAPIF_Discover_Service_API/service_apis/core/discoveredapis.py +16 −1 Original line number Diff line number Diff line Loading @@ -10,6 +10,9 @@ from ..util import serialize_clean_camel_case from ..vendor_specific import find_attribute_in_body, filter_apis_with_vendor_specific_params, \ remove_vendor_specific_fields TOTAL_FEATURES = 4 SUPPORTED_FEATURES_HEX = "2" def filter_fields(filtered_apis): key_filter = [ Loading @@ -24,6 +27,18 @@ def filter_fields(filtered_apis): return field_filtered_api def return_negotiated_supp_feat_dict(supp_feat): final_supp_feat = bin(int(supp_feat, 16) & int(SUPPORTED_FEATURES_HEX, 16))[2:].zfill(TOTAL_FEATURES) return { "ApiSupportedFeatureQuery": True if final_supp_feat[3] == "1" else False, "VendSpecQueryParams": True if final_supp_feat[2] == "1" else False, "RNAA": True if final_supp_feat[1] == "1" else False, "SliceBasedAPIExposure": True if final_supp_feat[0] == "1" else False } class DiscoverApisOperations(Resource): def get_discoveredapis(self, api_invoker_id, query_params): Loading Loading @@ -79,7 +94,7 @@ class DiscoverApisOperations(Resource): vendor_specific_fields_path = find_attribute_in_body(discoved_api, '') json_docs.append(filter_fields(remove_vendor_specific_fields(discoved_api, vendor_specific_fields_path))) else: supported_features = DiscoveredAPIs.return_supp_feat_dict(supp_feat) supported_features = return_negotiated_supp_feat_dict(supp_feat) if supported_features['VendSpecQueryParams']: for discoved_api in discoved_apis: vendor_specific_fields_path = find_attribute_in_body(discoved_api, '') Loading services/TS29222_CAPIF_Discover_Service_API/service_apis/models/discovered_apis.py +0 −12 Original line number Diff line number Diff line Loading @@ -28,18 +28,6 @@ class DiscoveredAPIs(Model): self._service_api_descriptions = service_api_descriptions @classmethod def return_supp_feat_dict(cls, supp_feat): TOTAL_FEATURES = 3 supp_feat_in_hex = int(supp_feat, 16) supp_feat_in_bin = bin(supp_feat_in_hex)[2:].zfill(TOTAL_FEATURES)[::-1] return { "ApiSupportedFeatureQuery": True if supp_feat_in_bin[0] == "1" else False, "VendSpecQueryParams": True if supp_feat_in_bin[1] == "1" else False, "RNAA": True if supp_feat_in_bin[2] == "1" else False } @classmethod def from_dict(cls, dikt) -> 'DiscoveredAPIs': """Returns the dict as a model Loading Loading
.gitignore +1 −0 Original line number Diff line number Diff line Loading @@ -37,3 +37,4 @@ results helm/capif/*.lock helm/capif/charts/tempo* *.bak No newline at end of file
services/TS29222_CAPIF_Discover_Service_API/service_apis/controllers/default_controller.py +2 −2 Original line number Diff line number Diff line Loading @@ -5,7 +5,7 @@ import json from flask import request, current_app from service_apis.models.discovered_apis import DiscoveredAPIs # noqa: E501 from ..core.discoveredapis import DiscoverApisOperations from ..core.discoveredapis import DiscoverApisOperations, return_negotiated_supp_feat_dict discover_apis = DiscoverApisOperations() Loading Loading @@ -55,7 +55,7 @@ def all_service_apis_get(api_invoker_id, api_name=None, api_version=None, comm_t "supported_features": supported_features} if supported_features is not None: supp_feat_dict = DiscoveredAPIs.return_supp_feat_dict(supported_features) supp_feat_dict = return_negotiated_supp_feat_dict(supported_features) current_app.logger.info(supp_feat_dict) if supp_feat_dict['VendSpecQueryParams']: for q_params in request.args: Loading
services/TS29222_CAPIF_Discover_Service_API/service_apis/core/discoveredapis.py +16 −1 Original line number Diff line number Diff line Loading @@ -10,6 +10,9 @@ from ..util import serialize_clean_camel_case from ..vendor_specific import find_attribute_in_body, filter_apis_with_vendor_specific_params, \ remove_vendor_specific_fields TOTAL_FEATURES = 4 SUPPORTED_FEATURES_HEX = "2" def filter_fields(filtered_apis): key_filter = [ Loading @@ -24,6 +27,18 @@ def filter_fields(filtered_apis): return field_filtered_api def return_negotiated_supp_feat_dict(supp_feat): final_supp_feat = bin(int(supp_feat, 16) & int(SUPPORTED_FEATURES_HEX, 16))[2:].zfill(TOTAL_FEATURES) return { "ApiSupportedFeatureQuery": True if final_supp_feat[3] == "1" else False, "VendSpecQueryParams": True if final_supp_feat[2] == "1" else False, "RNAA": True if final_supp_feat[1] == "1" else False, "SliceBasedAPIExposure": True if final_supp_feat[0] == "1" else False } class DiscoverApisOperations(Resource): def get_discoveredapis(self, api_invoker_id, query_params): Loading Loading @@ -79,7 +94,7 @@ class DiscoverApisOperations(Resource): vendor_specific_fields_path = find_attribute_in_body(discoved_api, '') json_docs.append(filter_fields(remove_vendor_specific_fields(discoved_api, vendor_specific_fields_path))) else: supported_features = DiscoveredAPIs.return_supp_feat_dict(supp_feat) supported_features = return_negotiated_supp_feat_dict(supp_feat) if supported_features['VendSpecQueryParams']: for discoved_api in discoved_apis: vendor_specific_fields_path = find_attribute_in_body(discoved_api, '') Loading
services/TS29222_CAPIF_Discover_Service_API/service_apis/models/discovered_apis.py +0 −12 Original line number Diff line number Diff line Loading @@ -28,18 +28,6 @@ class DiscoveredAPIs(Model): self._service_api_descriptions = service_api_descriptions @classmethod def return_supp_feat_dict(cls, supp_feat): TOTAL_FEATURES = 3 supp_feat_in_hex = int(supp_feat, 16) supp_feat_in_bin = bin(supp_feat_in_hex)[2:].zfill(TOTAL_FEATURES)[::-1] return { "ApiSupportedFeatureQuery": True if supp_feat_in_bin[0] == "1" else False, "VendSpecQueryParams": True if supp_feat_in_bin[1] == "1" else False, "RNAA": True if supp_feat_in_bin[2] == "1" else False } @classmethod def from_dict(cls, dikt) -> 'DiscoveredAPIs': """Returns the dict as a model Loading