From d4f25d22827b4fc5035077c85e94c2b75f5c2992 Mon Sep 17 00:00:00 2001 From: James Denton Date: Thu, 11 Jan 2024 07:54:40 -0600 Subject: [PATCH] Allow wait: false when auto_ip is false There is an issue with the logic that results in a failure to create a server when auto_ip is false. This patch tests for the bool value of auto_ip and the two lists rather that None. Closes-Bug: #2049046 Change-Id: I2664c087c4bde83c4033ab3eb9d3e97dafb9e5cb Signed-off-by: James Denton Signed-off-by: Kevin Carter --- plugins/modules/server.py | 2 +- .../modules/cloud/openstack/test_server.py | 42 +++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/plugins/modules/server.py b/plugins/modules/server.py index dc613a46..d309ca70 100644 --- a/plugins/modules/server.py +++ b/plugins/modules/server.py @@ -1032,7 +1032,7 @@ class ServerModule(OpenStackModule): def _create(self): for k in ['auto_ip', 'floating_ips', 'floating_ip_pools']: - if self.params[k] is not None \ + if self.params[k] \ and self.params['wait'] is False: # floating ip addresses will only be added if # we wait until the server has been created diff --git a/tests/unit/modules/cloud/openstack/test_server.py b/tests/unit/modules/cloud/openstack/test_server.py index 8d9be378..5f29b6fa 100644 --- a/tests/unit/modules/cloud/openstack/test_server.py +++ b/tests/unit/modules/cloud/openstack/test_server.py @@ -220,3 +220,45 @@ class TestCreateServer(object): os_server._create_server(self.module, self.cloud) assert 'missing_network' in self.module.fail_json.call_args[1]['msg'] + + def test_create_server_auto_ip_wait(self): + ''' + - openstack.cloud.server: + image: cirros + auto_ip: true + wait: false + nics: + - net-name: network1 + ''' + with pytest.raises(AnsibleFail): + os_server._create_server(self.module, self.cloud) + + assert 'auto_ip' in self.module.fail_json.call_args[1]['msg'] + + def test_create_server_floating_ips_wait(self): + ''' + - openstack.cloud.server: + image: cirros + floating_ips: ['0.0.0.0'] + wait: false + nics: + - net-name: network1 + ''' + with pytest.raises(AnsibleFail): + os_server._create_server(self.module, self.cloud) + + assert 'floating_ips' in self.module.fail_json.call_args[1]['msg'] + + def test_create_server_floating_ip_pools_wait(self): + ''' + - openstack.cloud.server: + image: cirros + floating_ip_pools: ['name-of-pool'] + wait: false + nics: + - net-name: network1 + ''' + with pytest.raises(AnsibleFail): + os_server._create_server(self.module, self.cloud) + + assert 'floating_ip_pools' in self.module.fail_json.call_args[1]['msg']