From e0b5f91626865ce9ef802f81091d33d7a41a0412 Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Tue, 9 Jul 2024 13:31:45 +0900 Subject: [PATCH] Allow using non-default Redis database Redis supports multiple databases and the redis driver in taskflow is capable to select the one used as backend. Add the new option to select the database so that non-default database can be used. Change-Id: I9a44d2c5bc4a524e194a090ba66871beac4d618d --- octavia/common/config.py | 3 +++ octavia/controller/worker/v2/taskflow_jobboard_driver.py | 1 + .../controller/worker/v2/test_taskflow_jobboard_driver.py | 8 ++++++++ .../notes/jobboard-redis-db-4a6206247270e996.yaml | 5 +++++ 4 files changed, 17 insertions(+) create mode 100644 releasenotes/notes/jobboard-redis-db-4a6206247270e996.yaml diff --git a/octavia/common/config.py b/octavia/common/config.py index 2359355ceb..72758ba69f 100644 --- a/octavia/common/config.py +++ b/octavia/common/config.py @@ -576,6 +576,9 @@ task_flow_opts = [ cfg.StrOpt('jobboard_backend_namespace', default='octavia_jobboard', help='Jobboard name that should be used to store taskflow ' 'job id and claims for it.'), + cfg.IntOpt('jobboard_redis_backend_db', + default=0, min=0, + help='Database ID in redis server.'), cfg.StrOpt('jobboard_redis_sentinel', default=None, help='Sentinel name if it is used for Redis.'), cfg.StrOpt('jobboard_redis_sentinel_username', diff --git a/octavia/controller/worker/v2/taskflow_jobboard_driver.py b/octavia/controller/worker/v2/taskflow_jobboard_driver.py index 925c2c512d..9155b53676 100644 --- a/octavia/controller/worker/v2/taskflow_jobboard_driver.py +++ b/octavia/controller/worker/v2/taskflow_jobboard_driver.py @@ -99,6 +99,7 @@ class RedisTaskFlowDriver(JobboardTaskFlowDriver): 'board': 'redis', 'host': CONF.task_flow.jobboard_backend_hosts[0], 'port': CONF.task_flow.jobboard_backend_port, + 'db': CONF.task_flow.jobboard_redis_backend_db, 'namespace': CONF.task_flow.jobboard_backend_namespace, 'sentinel': CONF.task_flow.jobboard_redis_sentinel, 'sentinel_fallbacks': [ diff --git a/octavia/tests/unit/controller/worker/v2/test_taskflow_jobboard_driver.py b/octavia/tests/unit/controller/worker/v2/test_taskflow_jobboard_driver.py index 0a0efca550..0f31c5807e 100644 --- a/octavia/tests/unit/controller/worker/v2/test_taskflow_jobboard_driver.py +++ b/octavia/tests/unit/controller/worker/v2/test_taskflow_jobboard_driver.py @@ -33,6 +33,7 @@ class TestRedisTaskFlowDriver(base.TestCase): 'board': 'redis', 'host': '127.0.0.1', 'port': 6379, + 'db': 0, 'namespace': 'octavia_jobboard', 'sentinel': None, 'sentinel_fallbacks': [], @@ -65,6 +66,7 @@ class TestRedisTaskFlowDriver(base.TestCase): 'board': 'redis', 'host': '127.0.0.1', 'port': 6379, + 'db': 0, 'namespace': 'octavia_jobboard', 'password': 'redispass', 'sentinel': None, @@ -100,6 +102,7 @@ class TestRedisTaskFlowDriver(base.TestCase): 'board': 'redis', 'host': '127.0.0.1', 'port': 6379, + 'db': 0, 'namespace': 'octavia_jobboard', 'username': 'redisuser', 'password': 'redispass', @@ -142,6 +145,7 @@ class TestRedisTaskFlowDriver(base.TestCase): 'board': 'redis', 'host': '127.0.0.1', 'port': 6379, + 'db': 0, 'namespace': 'octavia_jobboard', 'sentinel': None, 'sentinel_fallbacks': [], @@ -179,6 +183,7 @@ class TestRedisTaskFlowDriver(base.TestCase): 'board': 'redis', 'host': 'host1', 'port': 26379, + 'db': 0, 'namespace': 'octavia_jobboard', 'sentinel': 'mymaster', 'sentinel_fallbacks': ['host2:26379', 'host3:26379'], @@ -220,6 +225,7 @@ class TestRedisTaskFlowDriver(base.TestCase): 'board': 'redis', 'host': 'host1', 'port': 26379, + 'db': 0, 'namespace': 'octavia_jobboard', 'password': 'redispass', 'sentinel': 'mymaster', @@ -267,6 +273,7 @@ class TestRedisTaskFlowDriver(base.TestCase): 'board': 'redis', 'host': 'host1', 'port': 26379, + 'db': 0, 'namespace': 'octavia_jobboard', 'username': 'redisuser', 'password': 'redispass', @@ -328,6 +335,7 @@ class TestRedisTaskFlowDriver(base.TestCase): 'board': 'redis', 'host': 'host1', 'port': 26379, + 'db': 0, 'namespace': 'octavia_jobboard', 'sentinel': 'mymaster', 'sentinel_fallbacks': ['host2:26379', 'host3:26379'], diff --git a/releasenotes/notes/jobboard-redis-db-4a6206247270e996.yaml b/releasenotes/notes/jobboard-redis-db-4a6206247270e996.yaml new file mode 100644 index 0000000000..b8d16f7c07 --- /dev/null +++ b/releasenotes/notes/jobboard-redis-db-4a6206247270e996.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + The new ``[task_flow] jobboard_redis_backend_db`` option has been added. + This option allows using non default database in redis as backend.