# 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)