diff options
author | Sam Betts <sam@code-smash.net> | 2017-01-23 17:08:35 +0000 |
---|---|---|
committer | Sam Betts <sam@code-smash.net> | 2017-01-27 11:59:09 +0000 |
commit | cbdf5076d37df61d2e9c46a0a73c7ad65652b866 (patch) | |
tree | 6673d3e50d6cdd45ae8a86fcb778671df6d32b7d /ironic | |
parent | eae8e07132edf00bc5b51aa8342ad22ab3c2cc60 (diff) | |
download | ironic-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.py | 6 | ||||
-rw-r--r-- | ironic/tests/unit/drivers/modules/network/test_neutron.py | 6 |
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, |