Skip to content

Commit 559fbb1

Browse files
authored
fix: add generation of unix url for DAB redis client (#996)
1 parent 03725ee commit 559fbb1

File tree

2 files changed

+49
-6
lines changed

2 files changed

+49
-6
lines changed

src/aap_eda/core/tasking/__init__.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,18 +52,28 @@
5252
]
5353

5454

55+
def _create_url_from_parameters(**kwargs):
56+
# Make the URL that DAB will expect for instantiation.
57+
schema = "unix"
58+
try:
59+
path = kwargs["unix_socket_path"]
60+
except KeyError:
61+
schema = "redis"
62+
if kwargs.get("ssl", False):
63+
schema = "rediss"
64+
path = f"{kwargs.get('host')}:{kwargs.get('port')}"
65+
66+
url = f"{schema}://{path}"
67+
return url
68+
69+
5570
def get_redis_client(**kwargs):
5671
"""Instantiate a Redis client via DAB.
5772
5873
DAB will return an appropriate client for HA based on the passed
5974
parameters.
6075
"""
61-
# Make the URL that DAB expects as part of the creation.
62-
schema = "redis"
63-
if kwargs.get("ssl", False):
64-
schema = "rediss"
65-
url = f"{schema}://{kwargs.get('host')}:{kwargs.get('port')}"
66-
return _get_redis_client(url, **kwargs)
76+
return _get_redis_client(_create_url_from_parameters(**kwargs), **kwargs)
6777

6878

6979
def enable_redis_prefix():

tests/integration/core/test_tasking.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
# limitations under the License.
1414

1515

16+
from unittest.mock import patch
17+
1618
import pytest
1719
import redis
1820

@@ -21,6 +23,7 @@
2123
DABRedisCluster,
2224
DefaultWorker,
2325
Queue,
26+
_create_url_from_parameters,
2427
get_redis_client,
2528
logger,
2629
unique_enqueue,
@@ -66,6 +69,36 @@ def test_unique_enqueue_new_job(default_queue, eda_caplog):
6669
assert "Enqueing unique job" in eda_caplog.text
6770

6871

72+
@patch("aap_eda.settings.default.REDIS_UNIX_SOCKET_PATH", "path/to/socket")
73+
def test_unix_dab_url():
74+
url = _create_url_from_parameters(
75+
**default.rq_redis_client_instantiation_parameters()
76+
)
77+
assert url == "unix://path/to/socket"
78+
79+
80+
@patch("aap_eda.settings.default.REDIS_UNIX_SOCKET_PATH", None)
81+
@patch("aap_eda.settings.default.REDIS_CLIENT_CERT_PATH", None)
82+
@patch("aap_eda.settings.default.REDIS_HOST", "a-host")
83+
@patch("aap_eda.settings.default.REDIS_PORT", 6379)
84+
def test_redis_dab_url():
85+
url = _create_url_from_parameters(
86+
**default.rq_redis_client_instantiation_parameters()
87+
)
88+
assert url == "redis://a-host:6379"
89+
90+
91+
@patch("aap_eda.settings.default.REDIS_UNIX_SOCKET_PATH", None)
92+
@patch("aap_eda.settings.default.REDIS_CLIENT_CERT_PATH", "path/to/cert")
93+
@patch("aap_eda.settings.default.REDIS_HOST", "a-different-host")
94+
@patch("aap_eda.settings.default.REDIS_PORT", 6380)
95+
def test_rediss_dab_url():
96+
url = _create_url_from_parameters(
97+
**default.rq_redis_client_instantiation_parameters()
98+
)
99+
assert url == "rediss://a-different-host:6380"
100+
101+
69102
def test_worker_dab_client(default_queue: Queue):
70103
"""Test that workers end up with a DABRedis client connection."""
71104

0 commit comments

Comments
 (0)