Don't validate local_link_connection when port has client-id
Infiniband ports do not require the local_link_connection field to be populated as the network topology is discoverable by the Infiniband Subnet Manager. This change removes the requirement for local_link_connection for Infiniband ports. Infiniband ports have a client-id in their extra field. Closes-Bug: #1753222 Change-Id: I2bfac4ccaf825bd9aa8ea0d2b447fcd7767acbc5
This commit is contained in:
parent
46ee76aa46
commit
dcebb77d9d
@ -453,6 +453,12 @@ def validate_port_info(node, port):
|
||||
:param port: Ironic port object.
|
||||
:returns: True if port info is valid, False otherwise.
|
||||
"""
|
||||
# Note(moshele): client-id in the port extra field indicates an InfiniBand
|
||||
# port. In this case we don't require local_link_connection to be
|
||||
# populated because the network topology is discoverable by the Infiniband
|
||||
# Subnet Manager.
|
||||
if port.extra.get('client-id'):
|
||||
return True
|
||||
if (node.network_interface == 'neutron' and
|
||||
not port.local_link_connection):
|
||||
LOG.warning("The local_link_connection is required for "
|
||||
|
@ -528,6 +528,33 @@ class TestNeutronNetworkActions(db_base.DbTestCase):
|
||||
self.assertTrue(res)
|
||||
self.assertFalse(log_mock.warning.called)
|
||||
|
||||
@mock.patch.object(neutron, 'LOG', autospec=True)
|
||||
def test_validate_port_info_flat_interface_with_client_id(self, log_mock):
|
||||
self.node.network_interface = 'flat'
|
||||
self.node.save()
|
||||
llc = {}
|
||||
port = object_utils.create_test_port(
|
||||
self.context, node_id=self.node.id, uuid=uuidutils.generate_uuid(),
|
||||
address='52:54:00:cf:2d:33', local_link_connection=llc,
|
||||
extra={'client-id': self._CLIENT_ID})
|
||||
res = neutron.validate_port_info(self.node, port)
|
||||
self.assertTrue(res)
|
||||
self.assertFalse(log_mock.warning.called)
|
||||
|
||||
@mock.patch.object(neutron, 'LOG', autospec=True)
|
||||
def test_validate_port_info_neutron_interface_with_client_id(
|
||||
self, log_mock):
|
||||
self.node.network_interface = 'neutron'
|
||||
self.node.save()
|
||||
llc = {}
|
||||
port = object_utils.create_test_port(
|
||||
self.context, node_id=self.node.id, uuid=uuidutils.generate_uuid(),
|
||||
address='52:54:00:cf:2d:33', local_link_connection=llc,
|
||||
extra={'client-id': self._CLIENT_ID})
|
||||
res = neutron.validate_port_info(self.node, port)
|
||||
self.assertTrue(res)
|
||||
self.assertFalse(log_mock.warning.called)
|
||||
|
||||
|
||||
@mock.patch.object(neutron, 'get_client', autospec=True)
|
||||
class TestValidateNetwork(base.TestCase):
|
||||
|
@ -0,0 +1,7 @@
|
||||
---
|
||||
fixes:
|
||||
- |
|
||||
Fixes an issue with validation of Infiniband ports. Infiniband ports do not
|
||||
require the ``local_link_connection`` field to be populated as the network
|
||||
topology is discoverable by the Infiniband Subnet Manager. See `bug 1753222
|
||||
<https://launchpad.net/bugs/1753222>`_ for details.
|
Loading…
Reference in New Issue
Block a user