Commit d1634dfe authored by guillecxb's avatar guillecxb
Browse files

Merge branch 'staging' into OCF115-create-table-in-database-for-dynamic-configuration

parents 2444f919 c90629c2
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -37,3 +37,4 @@ results

helm/capif/*.lock
helm/capif/charts/tempo*
*.bak
 No newline at end of file
+2 −2
Original line number Diff line number Diff line
@@ -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()

@@ -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:
+16 −1
Original line number Diff line number Diff line
@@ -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 = [
@@ -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):
@@ -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, '')
+0 −12
Original line number Diff line number Diff line
@@ -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