Fix failure of cloudscale_floating_ip without server (#53702)
The cloudscale_floating_ip module failed if no server was assigned to the floating IP. This also adds a test to avoid a regression. The only way to have a floating IP without a server assigned is to delete the server where the floating IP is currently assigned. Under normal circumstances it's not possible to have an unassigned floating IP.
This commit is contained in:
parent
980ca564ce
commit
a65a137cdd
3 changed files with 29 additions and 1 deletions
|
@ -176,7 +176,8 @@ class AnsibleCloudscaleFloatingIP(AnsibleCloudscaleBase):
|
|||
|
||||
# Replace the server with just the UUID, the href to the server is useless and just makes
|
||||
# things more complicated
|
||||
resp['server'] = resp['server']['uuid']
|
||||
if resp['server'] is not None:
|
||||
resp['server'] = resp['server']['uuid']
|
||||
|
||||
return resp
|
||||
|
||||
|
|
|
@ -22,6 +22,8 @@
|
|||
- { 'ip_version': 6, 'reverse_ptr': '{{ cloudscale_resource_prefix }}-6.example.com' }
|
||||
- { 'ip_version': 6, 'prefix_length': 56 }
|
||||
|
||||
- import_tasks: unassigned.yml
|
||||
|
||||
always:
|
||||
- import_role:
|
||||
name: cloudscale_common
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
---
|
||||
- name: Assign Floating IP to server test01
|
||||
cloudscale_floating_ip:
|
||||
ip_version: 6
|
||||
server: '{{ test01.uuid }}'
|
||||
reverse_ptr: '{{ cloudscale_resource_prefix }}-unassigned.example.com'
|
||||
register: floating_ip
|
||||
|
||||
# The only way to have an unassigned floating IP is to delete the server
|
||||
# where the floating IP is currently assigned.
|
||||
- name: Delete server test01
|
||||
cloudscale_server:
|
||||
uuid: '{{ test01.uuid }}'
|
||||
state: 'absent'
|
||||
|
||||
- name: Do not fail if floating IP is unassigned
|
||||
cloudscale_floating_ip:
|
||||
ip: '{{ floating_ip.ip }}'
|
||||
register: floating_ip_not_fail
|
||||
- name: Verify do not fail if floating IP is unassigned
|
||||
assert:
|
||||
that:
|
||||
- floating_ip_not_fail is successful
|
||||
- floating_ip_not_fail is not changed
|
||||
- floating_ip_not_fail.server == None
|
Loading…
Reference in a new issue