kafka: Fix invalid hostaddr format for IPv6 address

When IPv6 address is used for host, the hostaddr should be formatted
in [<address>]:<port> format instead of <address>:<port> format. This
ensures the correct format is used.

Closes-Bug: 1907702
Change-Id: I6f4a453a69e942d5b2d66ffeca6960b85c8bc721
(cherry picked from commit b0e28a1603)
This commit is contained in:
Takashi Kajinami 2024-02-20 19:01:32 +09:00
parent 95b8e0ff65
commit 5cb7cbfc6a
2 changed files with 16 additions and 1 deletions

View File

@ -125,7 +125,12 @@ class Connection(object):
LOG.warning("Different transport usernames detected")
if host.hostname:
self.hostaddrs.append("%s:%s" % (host.hostname, host.port))
if ':' in host.hostname:
hostaddr = "[%s]:%s" % (host.hostname, host.port)
else:
hostaddr = "%s:%s" % (host.hostname, host.port)
self.hostaddrs.append(hostaddr)
def reset(self):
"""Reset a connection so it can be used again."""

View File

@ -66,6 +66,16 @@ class TestKafkaTransportURL(test_utils.BaseTestCase):
username='stack',
password='stacksecret',
vhost='my_host'))),
('ipv4', dict(url='kafka://127.0.0.1:1234',
expected=dict(hostaddrs=['127.0.0.1:1234'],
username=None,
password=None,
vhost=None))),
('ipv6', dict(url='kafka://[::1]:1234',
expected=dict(hostaddrs=['[::1]:1234'],
username=None,
password=None,
vhost=None))),
]
def setUp(self):