Merge "neutron: filter None port_ids from ports list in _unbind_ports"
This commit is contained in:
@@ -358,6 +358,10 @@ class API(base_api.NetworkAPI):
|
|||||||
port_client = (neutron if not port_binding else
|
port_client = (neutron if not port_binding else
|
||||||
get_client(context, admin=True))
|
get_client(context, admin=True))
|
||||||
for port_id in ports:
|
for port_id in ports:
|
||||||
|
# A port_id is optional in the NetworkRequest object so check here
|
||||||
|
# in case the caller forgot to filter the list.
|
||||||
|
if port_id is None:
|
||||||
|
continue
|
||||||
port_req_body = {'port': {'device_id': '', 'device_owner': ''}}
|
port_req_body = {'port': {'device_id': '', 'device_owner': ''}}
|
||||||
if port_binding:
|
if port_binding:
|
||||||
port_req_body['port']['binding:host_id'] = None
|
port_req_body['port']['binding:host_id'] = None
|
||||||
|
|||||||
@@ -3366,6 +3366,19 @@ class TestNeutronv2WithMock(test.TestCase):
|
|||||||
def test_unbind_ports(self, mock_neutron, mock_has_ext):
|
def test_unbind_ports(self, mock_neutron, mock_has_ext):
|
||||||
self._test_unbind_ports(mock_neutron, mock_has_ext, False)
|
self._test_unbind_ports(mock_neutron, mock_has_ext, False)
|
||||||
|
|
||||||
|
@mock.patch('nova.network.neutronv2.api.API._has_port_binding_extension')
|
||||||
|
def test_unbind_ports_no_port_ids(self, mock_has_ext):
|
||||||
|
# Tests that None entries in the ports list are filtered out.
|
||||||
|
mock_client = mock.Mock()
|
||||||
|
mock_update_port = mock.Mock()
|
||||||
|
mock_client.update_port = mock_update_port
|
||||||
|
mock_ctx = mock.Mock(is_admin=False)
|
||||||
|
mock_has_ext.return_value = True
|
||||||
|
|
||||||
|
api = neutronapi.API()
|
||||||
|
api._unbind_ports(mock_ctx, [None], mock_client, mock_client)
|
||||||
|
self.assertFalse(mock_update_port.called)
|
||||||
|
|
||||||
@mock.patch('nova.network.neutronv2.api.API.get_instance_nw_info')
|
@mock.patch('nova.network.neutronv2.api.API.get_instance_nw_info')
|
||||||
@mock.patch('nova.network.neutronv2.api.excutils')
|
@mock.patch('nova.network.neutronv2.api.excutils')
|
||||||
@mock.patch('nova.network.neutronv2.api.API._delete_ports')
|
@mock.patch('nova.network.neutronv2.api.API._delete_ports')
|
||||||
|
|||||||
Reference in New Issue
Block a user