Merge "Always set host_id when adding neutron ports"
This commit is contained in:
commit
d27d22c701
@ -193,18 +193,12 @@ def add_ports_to_network(task, network_uuid, security_groups=None):
|
|||||||
'admin_state_up': True,
|
'admin_state_up': True,
|
||||||
'binding:vnic_type': 'baremetal',
|
'binding:vnic_type': 'baremetal',
|
||||||
'device_owner': 'baremetal:none',
|
'device_owner': 'baremetal:none',
|
||||||
|
'binding:host_id': node.uuid,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if security_groups:
|
if security_groups:
|
||||||
body['port']['security_groups'] = security_groups
|
body['port']['security_groups'] = security_groups
|
||||||
|
|
||||||
if node.network_interface != 'flat':
|
|
||||||
# NOTE(vdrok): It seems that change
|
|
||||||
# I437290affd8eb87177d0626bf7935a165859cbdd to neutron broke the
|
|
||||||
# possibility to always bind port. Set binding:host_id only in
|
|
||||||
# case of non flat network.
|
|
||||||
body['port']['binding:host_id'] = node.uuid
|
|
||||||
|
|
||||||
# Since instance_uuid will not be available during cleaning
|
# Since instance_uuid will not be available during cleaning
|
||||||
# operations, we need to check that and populate them only when
|
# operations, we need to check that and populate them only when
|
||||||
# available
|
# available
|
||||||
|
@ -135,8 +135,8 @@ class TestNeutronNetworkActions(db_base.DbTestCase):
|
|||||||
patcher.start()
|
patcher.start()
|
||||||
self.addCleanup(patcher.stop)
|
self.addCleanup(patcher.stop)
|
||||||
|
|
||||||
def _test_add_ports_to_vlan_network(self, is_client_id,
|
def _test_add_ports_to_network(self, is_client_id,
|
||||||
security_groups=None):
|
security_groups=None):
|
||||||
# Ports will be created only if pxe_enabled is True
|
# Ports will be created only if pxe_enabled is True
|
||||||
self.node.network_interface = 'neutron'
|
self.node.network_interface = 'neutron'
|
||||||
self.node.save()
|
self.node.save()
|
||||||
@ -183,17 +183,17 @@ class TestNeutronNetworkActions(db_base.DbTestCase):
|
|||||||
self.client_mock.create_port.assert_called_once_with(
|
self.client_mock.create_port.assert_called_once_with(
|
||||||
expected_body)
|
expected_body)
|
||||||
|
|
||||||
def test_add_ports_to_vlan_network(self):
|
def test_add_ports_to_network(self):
|
||||||
self._test_add_ports_to_vlan_network(is_client_id=False,
|
self._test_add_ports_to_network(is_client_id=False,
|
||||||
security_groups=None)
|
security_groups=None)
|
||||||
|
|
||||||
@mock.patch.object(neutron, '_verify_security_groups')
|
@mock.patch.object(neutron, '_verify_security_groups')
|
||||||
def test_add_ports_to_vlan_network_with_sg(self, verify_mock):
|
def test_add_ports_to_network_with_sg(self, verify_mock):
|
||||||
sg_ids = []
|
sg_ids = []
|
||||||
for i in range(2):
|
for i in range(2):
|
||||||
sg_ids.append(uuidutils.generate_uuid())
|
sg_ids.append(uuidutils.generate_uuid())
|
||||||
self._test_add_ports_to_vlan_network(is_client_id=False,
|
self._test_add_ports_to_network(is_client_id=False,
|
||||||
security_groups=sg_ids)
|
security_groups=sg_ids)
|
||||||
|
|
||||||
def test_verify_sec_groups(self):
|
def test_verify_sec_groups(self):
|
||||||
sg_ids = []
|
sg_ids = []
|
||||||
@ -269,57 +269,11 @@ class TestNeutronNetworkActions(db_base.DbTestCase):
|
|||||||
neutron._verify_security_groups, sg_ids, client)
|
neutron._verify_security_groups, sg_ids, client)
|
||||||
client.list_security_groups.assert_called_once_with()
|
client.list_security_groups.assert_called_once_with()
|
||||||
|
|
||||||
def test_add_ports_with_client_id_to_vlan_network(self):
|
def test_add_ports_with_client_id_to_network(self):
|
||||||
self._test_add_ports_to_vlan_network(is_client_id=True)
|
self._test_add_ports_to_network(is_client_id=True)
|
||||||
|
|
||||||
def _test_add_ports_to_flat_network(self, is_client_id):
|
|
||||||
self.node.network_interface = 'flat'
|
|
||||||
self.node.save()
|
|
||||||
port = self.ports[0]
|
|
||||||
if is_client_id:
|
|
||||||
extra = port.extra
|
|
||||||
extra['client-id'] = self._CLIENT_ID
|
|
||||||
port.extra = extra
|
|
||||||
port.save()
|
|
||||||
expected_body = {
|
|
||||||
'port': {
|
|
||||||
'network_id': self.network_uuid,
|
|
||||||
'admin_state_up': True,
|
|
||||||
'binding:vnic_type': 'baremetal',
|
|
||||||
'device_owner': 'baremetal:none',
|
|
||||||
'device_id': self.node.uuid,
|
|
||||||
'mac_address': port.address,
|
|
||||||
'binding:profile': {
|
|
||||||
'local_link_information': [port.local_link_connection]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if is_client_id:
|
|
||||||
expected_body['port']['extra_dhcp_opts'] = (
|
|
||||||
[{'opt_name': 'client-id', 'opt_value': self._CLIENT_ID}])
|
|
||||||
# Ensure we can create ports
|
|
||||||
self.client_mock.create_port.return_value = {
|
|
||||||
'port': self.neutron_port}
|
|
||||||
expected = {port.uuid: self.neutron_port['id']}
|
|
||||||
with task_manager.acquire(self.context, self.node.uuid) as task:
|
|
||||||
ports = neutron.add_ports_to_network(task, self.network_uuid)
|
|
||||||
self.assertEqual(expected, ports)
|
|
||||||
self.client_mock.create_port.assert_called_once_with(
|
|
||||||
expected_body)
|
|
||||||
|
|
||||||
@mock.patch.object(neutron, 'validate_port_info', autospec=True,
|
|
||||||
return_value=True)
|
|
||||||
def test_add_ports_to_flat_network(self, vpi_mock):
|
|
||||||
self._test_add_ports_to_flat_network(is_client_id=False)
|
|
||||||
self.assertTrue(vpi_mock.called)
|
|
||||||
|
|
||||||
@mock.patch.object(neutron, 'validate_port_info', autospec=True,
|
|
||||||
return_value=True)
|
|
||||||
def test_add_ports_with_client_id_to_flat_network(self, vpi_mock):
|
|
||||||
self._test_add_ports_to_flat_network(is_client_id=True)
|
|
||||||
|
|
||||||
@mock.patch.object(neutron, 'validate_port_info', autospec=True)
|
@mock.patch.object(neutron, 'validate_port_info', autospec=True)
|
||||||
def test_add_ports_to_vlan_network_instance_uuid(self, vpi_mock):
|
def test_add_ports_to_network_instance_uuid(self, vpi_mock):
|
||||||
self.node.instance_uuid = uuidutils.generate_uuid()
|
self.node.instance_uuid = uuidutils.generate_uuid()
|
||||||
self.node.network_interface = 'neutron'
|
self.node.network_interface = 'neutron'
|
||||||
self.node.save()
|
self.node.save()
|
||||||
|
Loading…
Reference in New Issue
Block a user