Merge "redis: Enforce proper format for username-less auth"

This commit is contained in:
Zuul
2025-08-11 18:09:56 +00:00
committed by Gerrit Code Review
3 changed files with 10 additions and 14 deletions

View File

@@ -0,0 +1,5 @@
---
upgrade:
- |
Redis uri options now requires ':' before password even when username is
not used.

View File

@@ -61,12 +61,8 @@ class ConnectionURI(object):
cred, sep, netloc = netloc.partition('@')
if self.username and not self.password:
# NOTE(tkajinam): This is kept for backword compatibility but
# should be removed after 2025.1
LOG.warning('Credential in redis uri does not contain \':\'. '
'Make sure that \':\' is added before password.')
self.password = self.username
self.username = None
raise errors.ConfigurationError(
_('Password should be set when username is set'))
query_params = dict(urllib.parse.parse_qsl(query))

View File

@@ -263,14 +263,9 @@ class RedisDriverTest(testing.TestBase):
self.assertIsNone(uri.username)
self.assertEqual('test123', uri.password)
# NOTE(tkajinam): Test fallback for backword compatibility
uri = driver.ConnectionURI('redis://test123@example.com')
self.assertEqual(driver.STRATEGY_TCP, uri.strategy)
self.assertEqual(6379, uri.port)
self.assertEqual(0.1, uri.socket_timeout)
self.assertEqual(0, uri.dbid)
self.assertIsNone(uri.username)
self.assertEqual('test123', uri.password)
self.assertRaises(
errors.ConfigurationError,
driver.ConnectionURI, 'redis://test123@example.com')
uri = driver.ConnectionURI(
'redis://default:test123@example.com')