# HG changeset patch # User Vincent Hatakeyama <vincent.hatakeyama@xcg-consulting.fr> # Date 1678978498 -3600 # Thu Mar 16 15:54:58 2023 +0100 # Node ID 6e6fa3592791ccc49719a337840ec16b87764421 # Parent 21bed38b871bce088864073e5938193daa8d26a0 🚑 fix rednerd api key value update diff --git a/NEWS.rst b/NEWS.rst --- a/NEWS.rst +++ b/NEWS.rst @@ -2,6 +2,11 @@ History ======= +20.0.1 +------ + +Fix getting the redner api key when starting it for Odoo. + 20.0.0 ------ diff --git a/odoo_scripts/docker_rednerd.py b/odoo_scripts/docker_rednerd.py --- a/odoo_scripts/docker_rednerd.py +++ b/odoo_scripts/docker_rednerd.py @@ -25,9 +25,9 @@ _logger = logging.getLogger(__name__) -__version__ = "1.1.2" +__version__ = "1.1.3" __date__ = "2021-01-14" -__updated__ = "2023-01-20" +__updated__ = "2023-03-16" MIGRATE = "migrate" ADMIN_PASSWORD = "admin-password" @@ -74,9 +74,8 @@ :param force_pull: Indicate to pull the latest version of the specified image, otherwise the image will only be pulled if not present """ - assert all( - argument is not None - for argument in ( + for i, argument in enumerate( + ( docker_client, project_name, repository, @@ -84,7 +83,8 @@ database, db_host, ) - ), "Missing required argument" + ): + assert argument is not None, "Missing required argument %s" % i # db_password can be none, in that case expect that any password would work super().__init__() self.name = f"rednerd_{project_name}" @@ -188,7 +188,7 @@ if hasattr(self, "redner_port"): # useless when using --network=host ports[f"{self.redner_port}/tcp"] = self.redner_port - _logger.info("Using port %d", self.redner_port) + _logger.info("Using port %s", self.redner_port) if hasattr(self, "socket_dir"): volumes[self.socket_dir] = { "bind": self.socket_dir, @@ -289,20 +289,27 @@ ) request.raise_for_status() api_keys_list = request.json() + name = "docker_rednerd" if len(api_keys_list) > 0: - self.api_key = api_keys_list[0]["value"] - if self.api_key is None: - _logger.info("No API key found, creating one") - # create a new token otherwise - request = session.post( - f"{base_url}/api/v1/user/{self.redner_user}/apikey", - json={ - "name": "docker_rednerd", - "description": "Odoo scripts created API KEY", - }, - cookies=cookie_jar, - ) - self.api_key = request.json()["value"] + # delete our api key to retrieve its value again after creating it + for api_keys_data in api_keys_list: + if api_keys_data["name"] == name: + request = session.delete( + f"{base_url}/api/v1/user/{self.redner_user}/apikey/{name}", + json={}, + cookies=cookie_jar, + ) + request.raise_for_status() + _logger.info("Creating new API key") + request = session.post( + f"{base_url}/api/v1/user/{self.redner_user}/apikey", + json={ + "name": name, + "description": "Odoo scripts created API KEY", + }, + cookies=cookie_jar, + ) + self.api_key = request.json()["value"] if self.stop_at_exit: atexit.register(self.stop_and_remove)