summaryrefslogtreecommitdiff
path: root/ironic
diff options
context:
space:
mode:
authorSam Betts <sam@code-smash.net>2017-01-23 17:08:35 +0000
committerSam Betts <sam@code-smash.net>2017-01-27 11:59:09 +0000
commitcbdf5076d37df61d2e9c46a0a73c7ad65652b866 (patch)
tree6673d3e50d6cdd45ae8a86fcb778671df6d32b7d /ironic
parenteae8e07132edf00bc5b51aa8342ad22ab3c2cc60 (diff)
downloadironic-cbdf5076d37df61d2e9c46a0a73c7ad65652b866.tar.gz
Don't override device_owner for tenant network ports
When a vif is passed to us from nova as a tenant port we shouldn't change the device_owner or device_id because that is what links the port to the nova instance. This enables the neutron nova notifier to trigger the correct events in nova for when the neutron port changes, e.g. being deleted, triggers the detach interface endpoint. Change-Id: I43c3af9f424a65211ef5a39f13e4810072997339 Closes-Bug: #1656010
Diffstat (limited to 'ironic')
-rw-r--r--ironic/drivers/modules/network/neutron.py6
-rw-r--r--ironic/tests/unit/drivers/modules/network/test_neutron.py6
2 files changed, 4 insertions, 8 deletions
diff --git a/ironic/drivers/modules/network/neutron.py b/ironic/drivers/modules/network/neutron.py
index 11c1ff1df..f2225f482 100644
--- a/ironic/drivers/modules/network/neutron.py
+++ b/ironic/drivers/modules/network/neutron.py
@@ -191,10 +191,12 @@ class NeutronNetwork(common.VIFPortIDMixin,
if client_id:
client_id_opt = (
{'opt_name': 'client-id', 'opt_value': client_id})
+
+ # NOTE(sambetts) Only update required binding: attributes and
+ # admin state, because other port attributes may have been set by
+ # the user or nova.
body = {
'port': {
- 'device_owner': 'baremetal:none',
- 'device_id': node.instance_uuid or node.uuid,
'admin_state_up': True,
'binding:vnic_type': 'baremetal',
'binding:host_id': node.uuid,
diff --git a/ironic/tests/unit/drivers/modules/network/test_neutron.py b/ironic/tests/unit/drivers/modules/network/test_neutron.py
index efe0f22fa..e29899411 100644
--- a/ironic/tests/unit/drivers/modules/network/test_neutron.py
+++ b/ironic/tests/unit/drivers/modules/network/test_neutron.py
@@ -254,8 +254,6 @@ class NeutronInterfaceTestCase(db_base.DbTestCase):
self, log_mock, client_mock):
expected_body = {
'port': {
- 'device_owner': 'baremetal:none',
- 'device_id': self.node.instance_uuid or self.node.uuid,
'admin_state_up': True,
'binding:vnic_type': 'baremetal',
'binding:host_id': self.node.uuid,
@@ -317,8 +315,6 @@ class NeutronInterfaceTestCase(db_base.DbTestCase):
expected_body = {
'port': {
- 'device_owner': 'baremetal:none',
- 'device_id': self.node.instance_uuid or self.node.uuid,
'admin_state_up': True,
'binding:vnic_type': 'baremetal',
'binding:host_id': self.node.uuid,
@@ -395,8 +391,6 @@ class NeutronInterfaceTestCase(db_base.DbTestCase):
client_mock.return_value.update_port = upd_mock
expected_body = {
'port': {
- 'device_owner': 'baremetal:none',
- 'device_id': self.node.uuid,
'admin_state_up': True,
'binding:vnic_type': 'baremetal',
'binding:host_id': self.node.uuid,