commit 4cc0a483f988fb85d6eeeb941c76c273af2e47ee Author: Duc Truong Date: Wed Sep 16 00:45:39 2020 +0000 Pass in correct port id parameter When calling interface create on a server, the port id must be passed in port_id as specified in [1]. Passing in the incorrect parameter was causing nodes to go into error state during cluster update that involved a profile whose network was changed. [1] https://docs.openstack.org/api-ref/compute/?expanded=create-interface-detail#create-interface Change-Id: I4627cba1064097234c765a7c97cfd1be8b3224a7 Closes-Bug: #1895759 (cherry picked from commit aca5b42d81bf3ec422ea6452027f3527c3b5443b) diff --git a/senlin/profiles/os/nova/server.py b/senlin/profiles/os/nova/server.py index 54bc30b..59f9b5e 100644 --- a/senlin/profiles/os/nova/server.py +++ b/senlin/profiles/os/nova/server.py @@ -1193,7 +1193,7 @@ class ServerProfile(base.Profile): ports = self._create_ports_from_properties( obj, networks, 'update') for port in ports: - params = {'port': port['id']} + params = {'port_id': port['id']} try: cc.server_interface_create(server, **params) except exc.InternalError as ex: diff --git a/senlin/tests/unit/drivers/test_nova_v2.py b/senlin/tests/unit/drivers/test_nova_v2.py index 58e0094..78bc360 100644 --- a/senlin/tests/unit/drivers/test_nova_v2.py +++ b/senlin/tests/unit/drivers/test_nova_v2.py @@ -371,9 +371,9 @@ class TestNovaV2(base.SenlinTestCase): def test_server_interface_create(self): server = mock.Mock() d = nova_v2.NovaClient(self.conn_params) - d.server_interface_create(server, name='foo') + d.server_interface_create(server, port_id='fake-port-id') self.compute.create_server_interface.assert_called_once_with( - server, name='foo') + server, port_id='fake-port-id') def test_server_interface_list(self): d = nova_v2.NovaClient(self.conn_params) diff --git a/senlin/tests/unit/profiles/test_nova_server_update.py b/senlin/tests/unit/profiles/test_nova_server_update.py index 73c5b6d..f1d916f 100644 --- a/senlin/tests/unit/profiles/test_nova_server_update.py +++ b/senlin/tests/unit/profiles/test_nova_server_update.py @@ -797,9 +797,9 @@ class TestNovaServerUpdate(base.SenlinTestCase): mock_validate.assert_has_calls(validation_calls) mock_get_port.assert_called_with(obj, {'port': 'port4'}) create_calls = [ - mock.call(server_obj, port='port1_id'), - mock.call(server_obj, port='port2_id'), - mock.call(server_obj, port='port4_id'), + mock.call(server_obj, port_id='port1_id'), + mock.call(server_obj, port_id='port2_id'), + mock.call(server_obj, port_id='port4_id'), ] cc.server_interface_create.assert_has_calls(create_calls)