From 278ba52bf99a0f0c60224e518c6d952c2ac93698 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Harald=20Jens=C3=A5s?= Date: Mon, 18 Sep 2023 20:19:03 +0200 Subject: [PATCH] Handle bracketed IPv6 redfish_address If redfish_address is in brackets, unwrap it and check that it is a valid IPv6 address. If that is the case use the unwrapped address to avoid "Name or service not known". Closes-Bug: #2036455 Change-Id: I0d194091be22e8401d379b7ffa720f8004cca3d0 --- ironic_inspector/common/ironic.py | 4 ++++ ironic_inspector/test/unit/test_common_ironic.py | 8 ++++++++ releasenotes/notes/bug-2036455-bd3f6381b78c20db.yaml | 7 +++++++ 3 files changed, 19 insertions(+) create mode 100644 releasenotes/notes/bug-2036455-bd3f6381b78c20db.yaml diff --git a/ironic_inspector/common/ironic.py b/ironic_inspector/common/ironic.py index da99a10a6..e09ae3595 100644 --- a/ironic_inspector/common/ironic.py +++ b/ironic_inspector/common/ironic.py @@ -105,6 +105,10 @@ def get_ipmi_address(node): if '//' in value: url = urllib.parse.urlparse(value) value = url.hostname + + # Strip brackets in case used on IPv6 address. + value = value.strip('[').strip(']') + try: addrinfo = socket.getaddrinfo(value, None, 0, 0, socket.SOL_TCP) for family, socket_type, proto, canon_name, sockaddr in addrinfo: diff --git a/ironic_inspector/test/unit/test_common_ironic.py b/ironic_inspector/test/unit/test_common_ironic.py index a5b547e5a..7857ff35d 100644 --- a/ironic_inspector/test/unit/test_common_ironic.py +++ b/ironic_inspector/test/unit/test_common_ironic.py @@ -135,6 +135,14 @@ class TestGetIpmiAddress(base.BaseTest): ir_utils.get_ipmi_address(node)) mock_socket.assert_called_once_with(self.ipmi_ipv6, None, 0, 0, 6) + def test_redfish_bmc_address_ipv6_brackets_no_scheme(self): + self.cfg.config(ipmi_address_fields=['redfish_address']) + address = '[{}]'.format(self.ipmi_ipv6) + node = mock.Mock(spec=['driver_info', 'uuid'], + driver_info={'redfish_address': address}) + self.assertEqual((self.ipmi_ipv6, None, self.ipmi_ipv6), + ir_utils.get_ipmi_address(node)) + class TestCapabilities(unittest.TestCase): diff --git a/releasenotes/notes/bug-2036455-bd3f6381b78c20db.yaml b/releasenotes/notes/bug-2036455-bd3f6381b78c20db.yaml new file mode 100644 index 000000000..d92e4f353 --- /dev/null +++ b/releasenotes/notes/bug-2036455-bd3f6381b78c20db.yaml @@ -0,0 +1,7 @@ +--- +fixes: + - | + Fixes an issue where inspection would fail if an IPv6 address wrapped in + brackets is used for the redfish BMC address. See bug: + `2036455 `_. +