From: Redouane Kachach Date: Thu, 26 Feb 2026 15:32:22 +0000 (+0100) Subject: cephadm: fixing build_addrv_params function ipv6 handling X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c362e7c9db95622adb756b7154782d38a5e4fdb1;p=ceph.git cephadm: fixing build_addrv_params function ipv6 handling Fixes: https://tracker.ceph.com/issues/75165 (original ticket) Fixes: https://tracker.ceph.com/issues/75567 (backport ticket) Signed-off-by: Redouane Kachach (cherry picked from commit 39d6b507b48c54d6a604761eda4cfa2fff3c8e3b) --- diff --git a/src/cephadm/cephadmlib/net_utils.py b/src/cephadm/cephadmlib/net_utils.py index 7fe48c0b36a..0cc5f2b598f 100644 --- a/src/cephadm/cephadmlib/net_utils.py +++ b/src/cephadm/cephadmlib/net_utils.py @@ -307,7 +307,8 @@ def build_addrv_params(addrv: List[EndPoint]) -> str: else: ver = 'v2' # default mon protocol version if port is not provided logger.warning(f'Using msgr2 protocol for unrecognized port {ep}') - addr_arg_list.append(f'{ver}:{ep.ip}:{ep.port}') + ip = wrap_ipv6(ep.ip) if is_ipv6(ep.ip) else ep.ip + addr_arg_list.append(f'{ver}:{ip}:{ep.port}') addr_arg = '[{0}]'.format(','.join(addr_arg_list)) return addr_arg diff --git a/src/cephadm/tests/test_networks.py b/src/cephadm/tests/test_networks.py index f97dcb6a2d5..5cc5fd00dc8 100644 --- a/src/cephadm/tests/test_networks.py +++ b/src/cephadm/tests/test_networks.py @@ -285,3 +285,20 @@ fe80000000000000505400fffe04c154 03 40 20 80 eth1 assert json.loads(capsys.readouterr().out) == { '10.4.0.1/32': {'tun0': ['10.4.0.2']} } + + def test_build_addrv_params_brackets_ipv6_endpoints_correctly(self): + from cephadmlib.net_utils import build_addrv_params, EndPoint + + # IPv6 must be emitted as vX:[ip]:port (NOT vX:ip:port). + eps = [EndPoint('2001:db8:100::10', 3300), EndPoint('2001:db8:100::10', 6789)] + arg = build_addrv_params(eps) + + assert arg == '[v2:[2001:db8:100::10]:3300,v1:[2001:db8:100::10]:6789]' + + def test_build_addrv_params_ipv4_is_not_bracketed(self): + from cephadmlib.net_utils import build_addrv_params, EndPoint + + eps = [EndPoint('192.168.100.100', 3300), EndPoint('192.168.100.100', 6789)] + arg = build_addrv_params(eps) + + assert arg == '[v2:192.168.100.100:3300,v1:192.168.100.100:6789]'