From d560342def1988df4c4441bbf13f6789b5b8531f Mon Sep 17 00:00:00 2001 From: pcastelovigo Date: Mon, 20 Nov 2023 12:55:13 +0100 Subject: [PATCH 1/9] [15.0][FIX] queue_job: support for multi-db environments --- queue_job/jobrunner/runner.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/queue_job/jobrunner/runner.py b/queue_job/jobrunner/runner.py index 2314510731..4a574a68da 100644 --- a/queue_job/jobrunner/runner.py +++ b/queue_job/jobrunner/runner.py @@ -39,6 +39,7 @@ or ``False`` if unset. - ``ODOO_QUEUE_JOB_JOBRUNNER_DB_PASSWORD=passdb``, default ``db_password`` or ``False`` if unset. + - ``ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME=firstdb,seconddb``, default ``db_name`` * Alternatively, configure the channels through the Odoo configuration file, like: @@ -54,6 +55,7 @@ http_auth_password = s3cr3t jobrunner_db_host = master-db jobrunner_db_port = 5432 + jobrunner_db_name = firstdb,seconddb jobrunner_db_user = userdb jobrunner_db_password = passdb @@ -398,7 +400,11 @@ def from_environ_or_config(cls): return runner def get_db_names(self): - if config["db_name"]: + if os.environ.get("ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME"): + db_names = os.environ["ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME"].split(",") + elif queue_job_config.get("jobrunner_db_name"): + db_names = queue_job_config["jobrunner_db_name"].split(",") + elif config["db_name"]: db_names = config["db_name"].split(",") else: db_names = odoo.service.db.exp_list(True) From 6eb46dfc985684e80c3ad9a843a4e5a3b76b561f Mon Sep 17 00:00:00 2001 From: pcastelovigo Date: Mon, 20 Nov 2023 14:07:12 +0100 Subject: [PATCH 2/9] doctest --- queue_job/jobrunner/runner.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/queue_job/jobrunner/runner.py b/queue_job/jobrunner/runner.py index 4a574a68da..4aa384eb63 100644 --- a/queue_job/jobrunner/runner.py +++ b/queue_job/jobrunner/runner.py @@ -400,6 +400,24 @@ def from_environ_or_config(cls): return runner def get_db_names(self): + """ + Get the database names based on certain conditions. + + >>> os.environ["ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME"] = "db1,db2" + >>> get_db_names() + ['db1', 'db2'] + + >>> os.environ.pop("ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME", None) + >>> config["db_name"] = "db3,db4" + >>> get_db_names() + ['db3', 'db4'] + + >>> os.environ.pop("ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME", None) + >>> config["db_name"] = None + >>> queue_job_config = {"jobrunner_db_name": "db5,db6"} + >>> get_db_names() + ['db5', 'db6'] + """ if os.environ.get("ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME"): db_names = os.environ["ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME"].split(",") elif queue_job_config.get("jobrunner_db_name"): From 324c8b087575a2bb16a83f4cf9862c35d7263461 Mon Sep 17 00:00:00 2001 From: pcastelovigo Date: Mon, 20 Nov 2023 14:10:48 +0100 Subject: [PATCH 3/9] doctest --- queue_job/jobrunner/runner.py | 36 +++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/queue_job/jobrunner/runner.py b/queue_job/jobrunner/runner.py index 4aa384eb63..3e5f15e3cd 100644 --- a/queue_job/jobrunner/runner.py +++ b/queue_job/jobrunner/runner.py @@ -400,24 +400,24 @@ def from_environ_or_config(cls): return runner def get_db_names(self): - """ - Get the database names based on certain conditions. - - >>> os.environ["ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME"] = "db1,db2" - >>> get_db_names() - ['db1', 'db2'] - - >>> os.environ.pop("ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME", None) - >>> config["db_name"] = "db3,db4" - >>> get_db_names() - ['db3', 'db4'] - - >>> os.environ.pop("ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME", None) - >>> config["db_name"] = None - >>> queue_job_config = {"jobrunner_db_name": "db5,db6"} - >>> get_db_names() - ['db5', 'db6'] - """ + """ + Get the database names based on certain conditions. + + >>> os.environ["ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME"] = "db1,db2" + >>> get_db_names() + ['db1', 'db2'] + + >>> os.environ.pop("ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME", None) + >>> config["db_name"] = "db3,db4" + >>> get_db_names() + ['db3', 'db4'] + + >>> os.environ.pop("ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME", None) + >>> config["db_name"] = None + >>> queue_job_config = {"jobrunner_db_name": "db5,db6"} + >>> get_db_names() + ['db5', 'db6'] + """ if os.environ.get("ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME"): db_names = os.environ["ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME"].split(",") elif queue_job_config.get("jobrunner_db_name"): From 232ac42c07312ce66981d4565bfe935b9d66a5f2 Mon Sep 17 00:00:00 2001 From: pcastelovigo Date: Mon, 20 Nov 2023 14:29:00 +0100 Subject: [PATCH 4/9] doctest --- queue_job/jobrunner/runner.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/queue_job/jobrunner/runner.py b/queue_job/jobrunner/runner.py index 3e5f15e3cd..138b091754 100644 --- a/queue_job/jobrunner/runner.py +++ b/queue_job/jobrunner/runner.py @@ -404,18 +404,18 @@ def get_db_names(self): Get the database names based on certain conditions. >>> os.environ["ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME"] = "db1,db2" - >>> get_db_names() + >>> self.get_db_names() ['db1', 'db2'] >>> os.environ.pop("ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME", None) >>> config["db_name"] = "db3,db4" - >>> get_db_names() + >>> self.get_db_names() ['db3', 'db4'] >>> os.environ.pop("ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME", None) >>> config["db_name"] = None >>> queue_job_config = {"jobrunner_db_name": "db5,db6"} - >>> get_db_names() + >>> self.get_db_names() ['db5', 'db6'] """ if os.environ.get("ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME"): From 9a5a2c1e2202646cb6f8292dd991f80cf6203cbc Mon Sep 17 00:00:00 2001 From: pcastelovigo Date: Mon, 20 Nov 2023 14:38:32 +0100 Subject: [PATCH 5/9] doctestgit add * --- queue_job/jobrunner/runner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/queue_job/jobrunner/runner.py b/queue_job/jobrunner/runner.py index 138b091754..27e48caa47 100644 --- a/queue_job/jobrunner/runner.py +++ b/queue_job/jobrunner/runner.py @@ -402,7 +402,7 @@ def from_environ_or_config(cls): def get_db_names(self): """ Get the database names based on certain conditions. - + >>> runner = QueueJobRunner() >>> os.environ["ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME"] = "db1,db2" >>> self.get_db_names() ['db1', 'db2'] From a73e25bbacb50ec6bd5ec90c42ff73bf31c68eee Mon Sep 17 00:00:00 2001 From: pcastelovigo Date: Mon, 20 Nov 2023 14:39:46 +0100 Subject: [PATCH 6/9] doctest! --- queue_job/jobrunner/runner.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/queue_job/jobrunner/runner.py b/queue_job/jobrunner/runner.py index 27e48caa47..a7db42ecf5 100644 --- a/queue_job/jobrunner/runner.py +++ b/queue_job/jobrunner/runner.py @@ -404,18 +404,18 @@ def get_db_names(self): Get the database names based on certain conditions. >>> runner = QueueJobRunner() >>> os.environ["ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME"] = "db1,db2" - >>> self.get_db_names() + >>> runner.get_db_names() ['db1', 'db2'] >>> os.environ.pop("ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME", None) >>> config["db_name"] = "db3,db4" - >>> self.get_db_names() + >>> runner.get_db_names() ['db3', 'db4'] >>> os.environ.pop("ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME", None) >>> config["db_name"] = None >>> queue_job_config = {"jobrunner_db_name": "db5,db6"} - >>> self.get_db_names() + >>> runner.get_db_names() ['db5', 'db6'] """ if os.environ.get("ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME"): From 5677cb8be19008095b19c66962daec12968ade61 Mon Sep 17 00:00:00 2001 From: pcastelovigo Date: Mon, 20 Nov 2023 14:43:57 +0100 Subject: [PATCH 7/9] doctest --- queue_job/jobrunner/runner.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/queue_job/jobrunner/runner.py b/queue_job/jobrunner/runner.py index a7db42ecf5..111cc0beec 100644 --- a/queue_job/jobrunner/runner.py +++ b/queue_job/jobrunner/runner.py @@ -407,16 +407,15 @@ def get_db_names(self): >>> runner.get_db_names() ['db1', 'db2'] - >>> os.environ.pop("ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME", None) + >>> os.environ["ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME"] = None >>> config["db_name"] = "db3,db4" >>> runner.get_db_names() ['db3', 'db4'] - >>> os.environ.pop("ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME", None) + >>> os.environ["ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME"] = None >>> config["db_name"] = None - >>> queue_job_config = {"jobrunner_db_name": "db5,db6"} >>> runner.get_db_names() - ['db5', 'db6'] + ['odoo'] """ if os.environ.get("ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME"): db_names = os.environ["ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME"].split(",") From 94a8e64648c2f97e587c6f970cce30b0ea96ae24 Mon Sep 17 00:00:00 2001 From: pcastelovigo Date: Mon, 20 Nov 2023 14:48:19 +0100 Subject: [PATCH 8/9] doctest --- queue_job/jobrunner/runner.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/queue_job/jobrunner/runner.py b/queue_job/jobrunner/runner.py index 111cc0beec..7c42182f77 100644 --- a/queue_job/jobrunner/runner.py +++ b/queue_job/jobrunner/runner.py @@ -407,12 +407,11 @@ def get_db_names(self): >>> runner.get_db_names() ['db1', 'db2'] - >>> os.environ["ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME"] = None + >>> os.environ.pop("ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME") >>> config["db_name"] = "db3,db4" >>> runner.get_db_names() ['db3', 'db4'] - >>> os.environ["ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME"] = None >>> config["db_name"] = None >>> runner.get_db_names() ['odoo'] From 7f68e0bf90e79e85119b99cd51d2992a87c24d6f Mon Sep 17 00:00:00 2001 From: pcastelovigo Date: Mon, 20 Nov 2023 14:52:04 +0100 Subject: [PATCH 9/9] correct doctest --- queue_job/jobrunner/runner.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/queue_job/jobrunner/runner.py b/queue_job/jobrunner/runner.py index 7c42182f77..9380929ea9 100644 --- a/queue_job/jobrunner/runner.py +++ b/queue_job/jobrunner/runner.py @@ -403,11 +403,6 @@ def get_db_names(self): """ Get the database names based on certain conditions. >>> runner = QueueJobRunner() - >>> os.environ["ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME"] = "db1,db2" - >>> runner.get_db_names() - ['db1', 'db2'] - - >>> os.environ.pop("ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME") >>> config["db_name"] = "db3,db4" >>> runner.get_db_names() ['db3', 'db4'] @@ -415,6 +410,10 @@ def get_db_names(self): >>> config["db_name"] = None >>> runner.get_db_names() ['odoo'] + + >>> os.environ["ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME"] = "db1,db2" + >>> runner.get_db_names() + ['db1', 'db2'] """ if os.environ.get("ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME"): db_names = os.environ["ODOO_QUEUE_JOB_JOBRUNNER_DB_NAME"].split(",")