diff --git a/ironic_inspector/pxe_filter/iptables.py b/ironic_inspector/pxe_filter/iptables.py index 44ba878c7..90226a95b 100644 --- a/ironic_inspector/pxe_filter/iptables.py +++ b/ironic_inspector/pxe_filter/iptables.py @@ -226,9 +226,9 @@ def _ib_mac_to_rmac_mapping(ports): def _get_blacklist(ironic): - ports = [port.address for port in + ports = [port for port in ir_utils.call_with_retries(ironic.port.list, limit=0, fields=['address', 'extra']) if port.address not in node_cache.active_macs()] _ib_mac_to_rmac_mapping(ports) - return ports + return [port.address for port in ports] diff --git a/ironic_inspector/test/unit/test_iptables.py b/ironic_inspector/test/unit/test_iptables.py index 4602a94fd..9554fa564 100644 --- a/ironic_inspector/test/unit/test_iptables.py +++ b/ironic_inspector/test/unit/test_iptables.py @@ -343,10 +343,11 @@ class TestGetBlacklist(test_base.BaseTest): self.mock_ironic = mock.Mock() def test_active_port(self): - self.mock_ironic.port.list.return_value = [ + mock_ports_list = [ mock.Mock(address='foo'), mock.Mock(address='bar'), ] + self.mock_ironic.port.list.return_value = mock_ports_list self.mock_active_macs.return_value = {'foo'} ports = iptables._get_blacklist(self.mock_ironic) @@ -354,16 +355,18 @@ class TestGetBlacklist(test_base.BaseTest): self.assertEqual(['bar'], ports) self.mock_ironic.port.list.assert_called_once_with( limit=0, fields=['address', 'extra']) - self.mock__ib_mac_to_rmac_mapping.assert_called_once_with(ports) + self.mock__ib_mac_to_rmac_mapping.assert_called_once_with( + [mock_ports_list[1]]) @mock.patch('time.sleep', lambda _x: None) def test_retry_on_port_list_failure(self): + mock_ports_list = [ + mock.Mock(address='foo'), + mock.Mock(address='bar'), + ] self.mock_ironic.port.list.side_effect = [ ironic_exc.ConnectionRefused('boom'), - [ - mock.Mock(address='foo'), - mock.Mock(address='bar'), - ] + mock_ports_list ] self.mock_active_macs.return_value = {'foo'} @@ -372,4 +375,5 @@ class TestGetBlacklist(test_base.BaseTest): self.assertEqual(['bar'], ports) self.mock_ironic.port.list.assert_called_with( limit=0, fields=['address', 'extra']) - self.mock__ib_mac_to_rmac_mapping.assert_called_once_with(ports) + self.mock__ib_mac_to_rmac_mapping.assert_called_once_with( + [mock_ports_list[1]]) diff --git a/releasenotes/notes/fix-pxe-filter-get-blacklist-2dde59d51c1d010f.yaml b/releasenotes/notes/fix-pxe-filter-get-blacklist-2dde59d51c1d010f.yaml new file mode 100644 index 000000000..ca28a6a7f --- /dev/null +++ b/releasenotes/notes/fix-pxe-filter-get-blacklist-2dde59d51c1d010f.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + Fixes an issue while mapping port InfiniBand MAC + address to EthernetOverInfiniBand MAC. Prior to this fix, + it will fail to map and raise an exception.