Commit e50c01ee authored by Jorge Moratinos's avatar Jorge Moratinos
Browse files

Merge branch 'OCF29-new-registration-flow' into 'staging'

Ocf29 new registration flow

See merge request !20
parents 88b7e364 101c9882
Loading
Loading
Loading
Loading
Loading
+2 −7
Original line number Original line Diff line number Diff line
@@ -104,18 +104,13 @@ def onboarded_invokers_post(body): # noqa: E501
    """
    """


    identity = get_jwt_identity()
    identity = get_jwt_identity()
    username, role = identity.split()
    username, uuid = identity.split()

    if role != "invoker":
        prob = ProblemDetails(title="Unauthorized", status=401, detail="Role not authorized for this API route",
                              cause="User role must be invoker")
        return Response(json.dumps(prob, cls=JSONEncoder), status=401, mimetype='application/json')


    if connexion.request.is_json:
    if connexion.request.is_json:
        body = APIInvokerEnrolmentDetails.from_dict(connexion.request.get_json())  # noqa: E501
        body = APIInvokerEnrolmentDetails.from_dict(connexion.request.get_json())  # noqa: E501


    current_app.logger.info("Creating Invoker")
    current_app.logger.info("Creating Invoker")
    res = invoker_operations.add_apiinvokerenrolmentdetail(body, username)
    res = invoker_operations.add_apiinvokerenrolmentdetail(body, username, uuid)
    if res.status_code == 201:
    if res.status_code == 201:
        current_app.logger.info("Invoker Created")
        current_app.logger.info("Invoker Created")
        publisher_ops.publish_message("events", "API_INVOKER_ONBOARDED")
        publisher_ops.publish_message("events", "API_INVOKER_ONBOARDED")
+3 −6
Original line number Original line Diff line number Diff line
@@ -52,13 +52,11 @@ class InvokerManagementOperations(Resource):
        self.config = Config().get_config()
        self.config = Config().get_config()




    def add_apiinvokerenrolmentdetail(self, apiinvokerenrolmentdetail, username):
    def add_apiinvokerenrolmentdetail(self, apiinvokerenrolmentdetail, username, uuid):


        mycol = self.db.get_col_by_name(self.db.invoker_enrolment_details)
        mycol = self.db.get_col_by_name(self.db.invoker_enrolment_details)
        register = self.db.get_col_by_name_register(self.db.capif_users)


        #try:
        #try:

        current_app.logger.debug("Creating invoker resource")
        current_app.logger.debug("Creating invoker resource")
        res = mycol.find_one({'onboarding_information.api_invoker_public_key': apiinvokerenrolmentdetail.onboarding_information.api_invoker_public_key})
        res = mycol.find_one({'onboarding_information.api_invoker_public_key': apiinvokerenrolmentdetail.onboarding_information.api_invoker_public_key})


@@ -83,9 +81,10 @@ class InvokerManagementOperations(Resource):
        # Onboarding Date Record
        # Onboarding Date Record
        invoker_dict = apiinvokerenrolmentdetail.to_dict()
        invoker_dict = apiinvokerenrolmentdetail.to_dict()
        invoker_dict["onboarding_date"] = datetime.now()
        invoker_dict["onboarding_date"] = datetime.now()
        invoker_dict["username"]=username
        invoker_dict["uuid"]=uuid


        mycol.insert_one(apiinvokerenrolmentdetail.to_dict())
        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("Invoker inserted in database")
        current_app.logger.debug("Netapp onboarded sucessfuly")
        current_app.logger.debug("Netapp onboarded sucessfuly")
@@ -141,7 +140,6 @@ class InvokerManagementOperations(Resource):
    def remove_apiinvokerenrolmentdetail(self, onboard_id):
    def remove_apiinvokerenrolmentdetail(self, onboard_id):


        mycol = self.db.get_col_by_name(self.db.invoker_enrolment_details)
        mycol = self.db.get_col_by_name(self.db.invoker_enrolment_details)
        register = self.db.get_col_by_name_register(self.db.capif_users)
        try:
        try:
            current_app.logger.debug("Removing invoker resource")
            current_app.logger.debug("Removing invoker resource")
            result = self.__check_api_invoker_id(onboard_id)
            result = self.__check_api_invoker_id(onboard_id)
@@ -150,7 +148,6 @@ class InvokerManagementOperations(Resource):
                return result
                return result


            mycol.delete_one({'api_invoker_id':onboard_id})
            mycol.delete_one({'api_invoker_id':onboard_id})
            register.update_one({'list_invokers':onboard_id}, {"$pull":{'list_invokers':onboard_id}})
            self.auth_manager.remove_auth_invoker(onboard_id)
            self.auth_manager.remove_auth_invoker(onboard_id)


            current_app.logger.debug("Invoker resource removed from database")
            current_app.logger.debug("Invoker resource removed from database")
+1 −27
Original line number Original line Diff line number Diff line
@@ -15,7 +15,6 @@ class MongoDatabse():
    def __init__(self):
    def __init__(self):
        self.config = Config().get_config()
        self.config = Config().get_config()
        self.db = self.__connect()
        self.db = self.__connect()
        self.register = self.__connect_register()
        self.invoker_enrolment_details = self.config['mongo']['col']
        self.invoker_enrolment_details = self.config['mongo']['col']
        self.capif_users = self.config['mongo']['capif_users_col']
        self.capif_users = self.config['mongo']['capif_users_col']
        self.service_col = self.config['mongo']["service_col"]
        self.service_col = self.config['mongo']["service_col"]
@@ -25,10 +24,6 @@ class MongoDatabse():
    def get_col_by_name(self, name):
    def get_col_by_name(self, name):
        return self.db[name].with_options(codec_options=CodecOptions(tz_aware=True))
        return self.db[name].with_options(codec_options=CodecOptions(tz_aware=True))
    
    
    def get_col_by_name_register(self, name):
        return self.register[name].with_options(codec_options=CodecOptions(tz_aware=True))


    def __connect(self, max_retries=3, retry_delay=1):
    def __connect(self, max_retries=3, retry_delay=1):


        retries = 0
        retries = 0
@@ -49,28 +44,7 @@ class MongoDatabse():
                time.sleep(retry_delay)
                time.sleep(retry_delay)
        return None
        return None


    def __connect_register(self, max_retries=3, retry_delay=1):

        retries = 0

        while retries < max_retries:
            try:
                uri = f"mongodb://{self.config['mongo_register']['user']}:{self.config['mongo_register']['password']}@" \
                      f"{self.config['mongo_register']['host']}:{self.config['mongo_register']['port']}"

                
                client = MongoClient(uri)
                mydb = client[self.config['mongo_register']['db']]
                mydb.command("ping")
                return mydb
            except AutoReconnect:
                retries += 1
                print(f"Reconnecting... Retry {retries} of {max_retries}")
                time.sleep(retry_delay)
        return None

    def close_connection(self):
    def close_connection(self):
        if self.db.client:
        if self.db.client:
            self.db.client.close()
            self.db.client.close()
        if self.register.client:
            self.register.client.close()
+2 −7
Original line number Original line Diff line number Diff line
@@ -59,20 +59,15 @@ def registrations_post(body): # noqa: E501
    """
    """


    identity = get_jwt_identity()
    identity = get_jwt_identity()
    username, role = identity.split()
    username, uuid = identity.split()


    current_app.logger.info("Registering Provider Domain")
    current_app.logger.info("Registering Provider Domain")
    if role != "provider":
        prob = ProblemDetails(title="Unauthorized", status=401, detail="Role not authorized for this API route",
                              cause="User role must be provider")
        return Response(json.dumps(prob, cls=JSONEncoder), status=401, mimetype='application/json')



    if connexion.request.is_json:
    if connexion.request.is_json:
        body = APIProviderEnrolmentDetails.from_dict(connexion.request.get_json())  # noqa: E501
        body = APIProviderEnrolmentDetails.from_dict(connexion.request.get_json())  # noqa: E501




    res = provider_management_ops.register_api_provider_enrolment_details(body, username)
    res = provider_management_ops.register_api_provider_enrolment_details(body, username, uuid)


    return res
    return res


+4 −6
Original line number Original line Diff line number Diff line
@@ -31,10 +31,9 @@ class ProviderManagementOperations(Resource):
        Resource.__init__(self)
        Resource.__init__(self)
        self.auth_manager = AuthManager()
        self.auth_manager = AuthManager()


    def register_api_provider_enrolment_details(self, api_provider_enrolment_details, username):
    def register_api_provider_enrolment_details(self, api_provider_enrolment_details, username, uuid):
        try:
        try:
            mycol = self.db.get_col_by_name(self.db.provider_enrolment_details)
            mycol = self.db.get_col_by_name(self.db.provider_enrolment_details)
            register = self.db.get_col_by_name_register(self.db.capif_users)


            current_app.logger.debug("Creating api provider domain")
            current_app.logger.debug("Creating api provider domain")
            search_filter = {'reg_sec': api_provider_enrolment_details.reg_sec}
            search_filter = {'reg_sec': api_provider_enrolment_details.reg_sec}
@@ -58,9 +57,10 @@ class ProviderManagementOperations(Resource):
            # Onboarding Date Record
            # Onboarding Date Record
            provider_dict = api_provider_enrolment_details.to_dict()
            provider_dict = api_provider_enrolment_details.to_dict()
            provider_dict["onboarding_date"] = datetime.now()
            provider_dict["onboarding_date"] = datetime.now()
            provider_dict["username"] = username
            provider_dict["uuid"] = uuid


            mycol.insert_one(provider_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")
            current_app.logger.debug("Provider inserted in database")


@@ -76,7 +76,6 @@ class ProviderManagementOperations(Resource):
    def delete_api_provider_enrolment_details(self, api_prov_dom_id):
    def delete_api_provider_enrolment_details(self, api_prov_dom_id):
        try:
        try:
            mycol = self.db.get_col_by_name(self.db.provider_enrolment_details)
            mycol = self.db.get_col_by_name(self.db.provider_enrolment_details)
            register = self.db.get_col_by_name_register(self.db.capif_users)


            current_app.logger.debug("Deleting provider domain")
            current_app.logger.debug("Deleting provider domain")
            result = self.__check_api_provider_domain(api_prov_dom_id)
            result = self.__check_api_provider_domain(api_prov_dom_id)
@@ -89,7 +88,6 @@ class ProviderManagementOperations(Resource):
            amf_id = [ provider_func['api_prov_func_id'] for provider_func in result["api_prov_funcs"] if provider_func['api_prov_func_role'] == 'AMF' ]
            amf_id = [ provider_func['api_prov_func_id'] for provider_func in result["api_prov_funcs"] if provider_func['api_prov_func_role'] == 'AMF' ]


            mycol.delete_one({'api_prov_dom_id': api_prov_dom_id})
            mycol.delete_one({'api_prov_dom_id': api_prov_dom_id})
            register.update_one({'list_providers':api_prov_dom_id}, {"$pull":{'list_providers':api_prov_dom_id}})
            out =  "The provider matching apiProvDomainId  " + api_prov_dom_id + " was offboarded."
            out =  "The provider matching apiProvDomainId  " + api_prov_dom_id + " was offboarded."
            current_app.logger.debug("Removed provider domain from database")
            current_app.logger.debug("Removed provider domain from database")


Loading