Commit 5356c20e authored by Stavros-Anastasios Charismiadis's avatar Stavros-Anastasios Charismiadis
Browse files

Merge branch 'OCF130-invoker-management-api-supported-feature-negotiation' into 'staging'

Include supported feature negotiation on POST and PUT methods

See merge request !135
parents 0c479199 28fefd7c
Loading
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -19,6 +19,24 @@ from .redis_internal_event import RedisInternalEvent
from .resources import Resource
from .responses import bad_request_error, forbidden_error, internal_server_error, make_response, not_found_error


TOTAL_FEATURES = 4
SUPPORTED_FEATURES_HEX = "0"


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)[::-1]

    return {
        "Notification_test_event": True if final_supp_feat[0] == "1" else False,
        "Notification_websocket": True if final_supp_feat[1] == "1" else False,
        "PatchUpdate": True if final_supp_feat[2] == "1" else False,
        "ExpirationTime": True if final_supp_feat[3] == "1" else False,
        "Final": hex(int(final_supp_feat[::-1], 2))[2:]
    }


publisher_ops = Publisher()


@@ -93,6 +111,8 @@ class InvokerManagementOperations(Resource):
        apiinvokerenrolmentdetail.onboarding_information.api_invoker_certificate = cert[
            'data']['certificate']

        apiinvokerenrolmentdetail.supported_features = return_negotiated_supp_feat_dict(apiinvokerenrolmentdetail.supported_features)["Final"]

        # Onboarding Date Record
        invoker_dict = apiinvokerenrolmentdetail.to_dict()
        invoker_dict["onboarding_date"] = datetime.now()
@@ -136,6 +156,9 @@ class InvokerManagementOperations(Resource):
                self.auth_manager.update_auth_invoker(
                    cert['data']["certificate"], onboard_id)

            apiinvokerenrolmentdetail.supported_features = return_negotiated_supp_feat_dict(
                apiinvokerenrolmentdetail.supported_features)["Final"]

            apiinvokerenrolmentdetail_update = apiinvokerenrolmentdetail.to_dict()
            apiinvokerenrolmentdetail_update = {
                key: value for key, value in apiinvokerenrolmentdetail_update.items() if value is not None