mirror of
https://opendev.org/openstack/ansible-collections-openstack.git
synced 2026-07-28 02:34:30 +00:00
Added resource{,s} modules
Change-Id: I0b04d43d5095ee74ec5af27013b6159a6a4d0f13
This commit is contained in:
3
ci/roles/resource/defaults/main.yml
Normal file
3
ci/roles/resource/defaults/main.yml
Normal file
@@ -0,0 +1,3 @@
|
||||
---
|
||||
expected_fields:
|
||||
- resource
|
||||
194
ci/roles/resource/tasks/check_mode.yml
Normal file
194
ci/roles/resource/tasks/check_mode.yml
Normal file
@@ -0,0 +1,194 @@
|
||||
---
|
||||
- module_defaults:
|
||||
group/openstack.cloud.openstack:
|
||||
cloud: "{{ cloud }}"
|
||||
# Listing modules individually is required for
|
||||
# backward compatibility with Ansible 2.9 only
|
||||
openstack.cloud.resource:
|
||||
cloud: "{{ cloud }}"
|
||||
openstack.cloud.resources:
|
||||
cloud: "{{ cloud }}"
|
||||
block:
|
||||
- name: Create security group
|
||||
check_mode: false
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: security_group
|
||||
attributes:
|
||||
name: ansible_security_group
|
||||
description: 'ansible security group'
|
||||
register: security_group
|
||||
|
||||
- name: Assert created security group
|
||||
assert:
|
||||
that:
|
||||
- security_group.resource.name == 'ansible_security_group'
|
||||
- security_group.resource.description == 'ansible security group'
|
||||
|
||||
- name: Find created security group
|
||||
openstack.cloud.resources:
|
||||
service: network
|
||||
type: security_group
|
||||
parameters:
|
||||
name: ansible_security_group
|
||||
register: security_groups
|
||||
|
||||
- name: Assert created security group independently
|
||||
assert:
|
||||
that:
|
||||
- security_groups.resources | length == 1
|
||||
- security_groups.resources.0.name == 'ansible_security_group'
|
||||
- security_groups.resources.0.description == 'ansible security group'
|
||||
|
||||
- name: Update security group simulation
|
||||
check_mode: true
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: security_group
|
||||
attributes:
|
||||
name: ansible_security_group
|
||||
description: 'ansible neutron security group'
|
||||
register: security_group
|
||||
|
||||
- name: Assert security group update simulation
|
||||
assert:
|
||||
that:
|
||||
- security_group is changed
|
||||
- security_group.resource.description == 'ansible neutron security group'
|
||||
|
||||
- name: Find non-updated security group
|
||||
openstack.cloud.resources:
|
||||
service: network
|
||||
type: security_group
|
||||
parameters:
|
||||
name: ansible_security_group
|
||||
register: security_groups
|
||||
|
||||
- name: Assert security group non-update
|
||||
assert:
|
||||
that:
|
||||
- security_groups.resources | length == 1
|
||||
- security_groups.resources.0.name == 'ansible_security_group'
|
||||
- security_groups.resources.0.description == 'ansible security group'
|
||||
|
||||
- name: Update security group
|
||||
check_mode: false
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: security_group
|
||||
attributes:
|
||||
name: ansible_security_group
|
||||
description: 'ansible neutron security group'
|
||||
register: security_group
|
||||
|
||||
- name: Assert security group update
|
||||
assert:
|
||||
that:
|
||||
- security_group is changed
|
||||
- security_group.resource.description == 'ansible neutron security group'
|
||||
|
||||
- name: Find updated security group
|
||||
openstack.cloud.resources:
|
||||
service: network
|
||||
type: security_group
|
||||
parameters:
|
||||
name: ansible_security_group
|
||||
register: security_groups
|
||||
|
||||
- name: Assert security group update
|
||||
assert:
|
||||
that:
|
||||
- security_groups.resources | length == 1
|
||||
- security_groups.resources.0.name == 'ansible_security_group'
|
||||
- security_groups.resources.0.description == 'ansible neutron security group'
|
||||
|
||||
- name: Delete security group simulation
|
||||
check_mode: true
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: security_group
|
||||
attributes:
|
||||
name: ansible_security_group
|
||||
state: absent
|
||||
register: security_group
|
||||
|
||||
- name: Assert security group delete simulation
|
||||
assert:
|
||||
that:
|
||||
- security_group is changed
|
||||
- "'security_group' not in security_group"
|
||||
|
||||
- name: Find non-deleted security group
|
||||
openstack.cloud.resources:
|
||||
service: network
|
||||
type: security_group
|
||||
parameters:
|
||||
name: ansible_security_group
|
||||
register: security_groups
|
||||
|
||||
- name: Assert security group non-deletion
|
||||
assert:
|
||||
that:
|
||||
- security_groups.resources | length == 1
|
||||
- security_groups.resources.0.name == 'ansible_security_group'
|
||||
- security_groups.resources.0.description == 'ansible neutron security group'
|
||||
|
||||
- name: Delete security group
|
||||
check_mode: false
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: security_group
|
||||
attributes:
|
||||
name: ansible_security_group
|
||||
state: absent
|
||||
register: security_group
|
||||
|
||||
- name: Assert security group deletion
|
||||
assert:
|
||||
that:
|
||||
- security_group is changed
|
||||
- "'resource' not in security_group"
|
||||
|
||||
- name: Find deleted security group
|
||||
openstack.cloud.resources:
|
||||
service: network
|
||||
type: security_group
|
||||
parameters:
|
||||
name: ansible_security_group
|
||||
register: security_groups
|
||||
|
||||
- name: Assert security group deletion
|
||||
assert:
|
||||
that:
|
||||
- security_groups.resources | length == 0
|
||||
|
||||
- name: Create security group simulation
|
||||
check_mode: true
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: security_group
|
||||
attributes:
|
||||
name: ansible_security_group
|
||||
description: 'ansible security group'
|
||||
register: security_group
|
||||
|
||||
- name: Assert security group creation simulation
|
||||
assert:
|
||||
that:
|
||||
- security_group is changed
|
||||
- security_group.resource.name == 'ansible_security_group'
|
||||
- security_group.resource.description == 'ansible security group'
|
||||
- security_group.resource.keys() | sort == ['description', 'name'] | sort
|
||||
|
||||
- name: Find non-created security group
|
||||
openstack.cloud.resources:
|
||||
service: network
|
||||
type: security_group
|
||||
parameters:
|
||||
name: ansible_security_group
|
||||
register: security_groups
|
||||
|
||||
- name: Assert security group non-creation
|
||||
assert:
|
||||
that:
|
||||
- security_groups.resources | length == 0
|
||||
861
ci/roles/resource/tasks/main.yml
Normal file
861
ci/roles/resource/tasks/main.yml
Normal file
@@ -0,0 +1,861 @@
|
||||
---
|
||||
- module_defaults:
|
||||
group/openstack.cloud.openstack:
|
||||
cloud: "{{ cloud }}"
|
||||
# Listing modules individually is required for
|
||||
# backward compatibility with Ansible 2.9 only
|
||||
openstack.cloud.resource:
|
||||
cloud: "{{ cloud }}"
|
||||
openstack.cloud.resources:
|
||||
cloud: "{{ cloud }}"
|
||||
openstack.cloud.router:
|
||||
cloud: "{{ cloud }}"
|
||||
block:
|
||||
- name: Create external network
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: network
|
||||
attributes:
|
||||
name: ansible_network_external
|
||||
is_router_external: true
|
||||
wait: true
|
||||
register: network_external
|
||||
|
||||
- name: Assert return values of resource module
|
||||
assert:
|
||||
that:
|
||||
# allow new fields to be introduced but prevent fields from being removed
|
||||
- expected_fields|difference(network_external.keys())|length == 0
|
||||
|
||||
- name: Assert external network
|
||||
assert:
|
||||
that:
|
||||
- network_external is changed
|
||||
|
||||
- name: Create external network again
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: network
|
||||
attributes:
|
||||
name: ansible_network_external
|
||||
is_router_external: true
|
||||
wait: true
|
||||
register: network_external
|
||||
|
||||
- name: Assert external network again
|
||||
assert:
|
||||
that:
|
||||
- network_external is not changed
|
||||
|
||||
- name: Create external subnet
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: subnet
|
||||
attributes:
|
||||
cidr: 10.6.6.0/24
|
||||
ip_version: 4
|
||||
name: ansible_external_subnet
|
||||
network_id: "{{ network_external.resource.id }}"
|
||||
register: subnet_external
|
||||
|
||||
- name: Assert external subnet
|
||||
assert:
|
||||
that:
|
||||
- subnet_external is changed
|
||||
|
||||
- name: Create external subnet again
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: subnet
|
||||
attributes:
|
||||
cidr: 10.6.6.0/24
|
||||
ip_version: 4
|
||||
name: ansible_external_subnet
|
||||
network_id: "{{ network_external.resource.id }}"
|
||||
register: subnet_external
|
||||
|
||||
- name: Assert external subnet again
|
||||
assert:
|
||||
that:
|
||||
- subnet_external is not changed
|
||||
|
||||
- name: Create external port
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: port
|
||||
attributes:
|
||||
name: ansible_port_external
|
||||
network_id: "{{ network_external.resource.id }}"
|
||||
fixed_ips:
|
||||
- ip_address: 10.6.6.50
|
||||
non_updateable_attributes:
|
||||
- fixed_ips
|
||||
register: port_external
|
||||
|
||||
- name: Assert external port
|
||||
assert:
|
||||
that:
|
||||
- port_external is changed
|
||||
|
||||
- name: Create external port again
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: port
|
||||
attributes:
|
||||
name: ansible_port_external
|
||||
network_id: "{{ network_external.resource.id }}"
|
||||
fixed_ips:
|
||||
- ip_address: 10.6.6.50
|
||||
non_updateable_attributes:
|
||||
- fixed_ips
|
||||
register: port_external
|
||||
|
||||
- name: Assert external port again
|
||||
assert:
|
||||
that:
|
||||
- port_external is not changed
|
||||
|
||||
- name: Create internal network
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: network
|
||||
attributes:
|
||||
name: ansible_network_internal
|
||||
is_router_external: false
|
||||
wait: true
|
||||
register: network_internal
|
||||
|
||||
- name: Assert internal network
|
||||
assert:
|
||||
that:
|
||||
- network_internal is changed
|
||||
|
||||
- name: Create internal network again
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: network
|
||||
attributes:
|
||||
name: ansible_network_internal
|
||||
is_router_external: false
|
||||
wait: true
|
||||
register: network_internal
|
||||
|
||||
- name: Assert internal network again
|
||||
assert:
|
||||
that:
|
||||
- network_internal is not changed
|
||||
|
||||
- name: Create internal subnet
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: subnet
|
||||
attributes:
|
||||
cidr: 10.7.7.0/24
|
||||
ip_version: 4
|
||||
name: ansible_internal_subnet
|
||||
network_id: "{{ network_internal.resource.id }}"
|
||||
register: subnet_internal
|
||||
|
||||
- name: Assert internal subnet
|
||||
assert:
|
||||
that:
|
||||
- subnet_internal is changed
|
||||
|
||||
- name: Create internal subnet again
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: subnet
|
||||
attributes:
|
||||
cidr: 10.7.7.0/24
|
||||
ip_version: 4
|
||||
name: ansible_internal_subnet
|
||||
network_id: "{{ network_internal.resource.id }}"
|
||||
register: subnet_internal
|
||||
|
||||
- name: Assert internal subnet again
|
||||
assert:
|
||||
that:
|
||||
- subnet_internal is not changed
|
||||
|
||||
- name: Create internal port 1
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: port
|
||||
attributes:
|
||||
name: ansible_port_internal1
|
||||
network_id: "{{ network_internal.resource.id }}"
|
||||
fixed_ips:
|
||||
- ip_address: 10.7.7.100
|
||||
subnet_id: "{{ subnet_internal.resource.id }}"
|
||||
register: port_internal1
|
||||
|
||||
- name: Assert internal port 1
|
||||
assert:
|
||||
that:
|
||||
- port_internal1 is changed
|
||||
|
||||
- name: Create internal port 1 again
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: port
|
||||
attributes:
|
||||
name: ansible_port_internal1
|
||||
network_id: "{{ network_internal.resource.id }}"
|
||||
fixed_ips:
|
||||
- ip_address: 10.7.7.100
|
||||
subnet_id: "{{ subnet_internal.resource.id }}"
|
||||
register: port_internal1
|
||||
|
||||
- name: Assert internal port 1 again
|
||||
assert:
|
||||
that:
|
||||
- port_internal1 is not changed
|
||||
|
||||
- name: Create internal port 2
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: port
|
||||
attributes:
|
||||
name: ansible_port_internal2
|
||||
network_id: "{{ network_internal.resource.id }}"
|
||||
fixed_ips:
|
||||
- ip_address: 10.7.7.101
|
||||
subnet_id: "{{ subnet_internal.resource.id }}"
|
||||
register: port_internal2
|
||||
|
||||
- name: Assert internal port 2
|
||||
assert:
|
||||
that:
|
||||
- port_internal2 is changed
|
||||
|
||||
- name: Create internal port 2 again
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: port
|
||||
attributes:
|
||||
name: ansible_port_internal2
|
||||
network_id: "{{ network_internal.resource.id }}"
|
||||
fixed_ips:
|
||||
- ip_address: 10.7.7.101
|
||||
subnet_id: "{{ subnet_internal.resource.id }}"
|
||||
register: port_internal2
|
||||
|
||||
- name: Assert internal port 2 again
|
||||
assert:
|
||||
that:
|
||||
- port_internal2 is not changed
|
||||
|
||||
- name: Create router
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: router
|
||||
attributes:
|
||||
name: ansible_router
|
||||
external_gateway_info:
|
||||
enable_snat: true
|
||||
external_fixed_ips:
|
||||
- ip_address: 10.6.6.10
|
||||
subnet_id: "{{ subnet_external.resource.id }}"
|
||||
network_id: "{{ network_external.resource.id }}"
|
||||
wait: true
|
||||
register: router
|
||||
|
||||
- name: Assert router
|
||||
assert:
|
||||
that:
|
||||
- router is changed
|
||||
|
||||
- name: Create router again
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: router
|
||||
attributes:
|
||||
name: ansible_router
|
||||
external_gateway_info:
|
||||
enable_snat: true
|
||||
external_fixed_ips:
|
||||
- ip_address: 10.6.6.10
|
||||
subnet_id: "{{ subnet_external.resource.id }}"
|
||||
network_id: "{{ network_external.resource.id }}"
|
||||
wait: true
|
||||
register: router
|
||||
|
||||
- name: Assert router again
|
||||
assert:
|
||||
that:
|
||||
- router is not changed
|
||||
|
||||
- name: Attach router to internal subnet
|
||||
openstack.cloud.router:
|
||||
name: ansible_router
|
||||
network: "{{ network_external.resource.id }}"
|
||||
external_fixed_ips:
|
||||
- ip: 10.6.6.10
|
||||
subnet: "{{ subnet_external.resource.id }}"
|
||||
interfaces:
|
||||
- net: "{{ network_internal.resource.id }}"
|
||||
subnet: "{{ subnet_internal.resource.id }}"
|
||||
portip: 10.7.7.1
|
||||
|
||||
- name: Create floating ip address 1
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: ip
|
||||
attributes:
|
||||
name: 10.6.6.150
|
||||
floating_ip_address: 10.6.6.150
|
||||
floating_network_id: "{{ network_external.resource.id }}"
|
||||
register: ip1
|
||||
|
||||
- name: Assert floating ip address 1
|
||||
assert:
|
||||
that:
|
||||
- ip1 is changed
|
||||
|
||||
- name: Create floating ip address 1 again
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: ip
|
||||
attributes:
|
||||
name: 10.6.6.150
|
||||
floating_ip_address: 10.6.6.150
|
||||
floating_network_id: "{{ network_external.resource.id }}"
|
||||
register: ip1
|
||||
|
||||
- name: Assert floating ip address 1 again
|
||||
assert:
|
||||
that:
|
||||
- ip1 is not changed
|
||||
|
||||
- name: Create floating ip address 2
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: ip
|
||||
attributes:
|
||||
name: 10.6.6.151
|
||||
floating_ip_address: 10.6.6.151
|
||||
floating_network_id: "{{ network_external.resource.id }}"
|
||||
port_id: "{{ port_internal1.resource.id }}"
|
||||
register: ip2
|
||||
|
||||
- name: Assert floating ip address 2
|
||||
assert:
|
||||
that:
|
||||
- ip2 is changed
|
||||
|
||||
- name: Create floating ip address 2 again
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: ip
|
||||
attributes:
|
||||
name: 10.6.6.151
|
||||
floating_ip_address: 10.6.6.151
|
||||
floating_network_id: "{{ network_external.resource.id }}"
|
||||
port_id: "{{ port_internal1.resource.id }}"
|
||||
register: ip2
|
||||
|
||||
- name: Assert floating ip address 2 again
|
||||
assert:
|
||||
that:
|
||||
- ip2 is not changed
|
||||
|
||||
- name: Create floating ip address 3
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: ip
|
||||
attributes:
|
||||
name: 10.6.6.152
|
||||
floating_ip_address: 10.6.6.152
|
||||
floating_network_id: "{{ network_external.resource.id }}"
|
||||
fixed_ip_address: 10.7.7.101
|
||||
port_id: "{{ port_internal2.resource.id }}"
|
||||
updateable_attributes:
|
||||
- fixed_ip_address
|
||||
- port_id
|
||||
register: ip3
|
||||
|
||||
- name: Assert floating ip address 3
|
||||
assert:
|
||||
that:
|
||||
- ip3 is changed
|
||||
|
||||
- name: Create floating ip address 3 again
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: ip
|
||||
attributes:
|
||||
name: 10.6.6.152
|
||||
floating_ip_address: 10.6.6.152
|
||||
floating_network_id: "{{ network_external.resource.id }}"
|
||||
fixed_ip_address: 10.7.7.101
|
||||
port_id: "{{ port_internal2.resource.id }}"
|
||||
updateable_attributes:
|
||||
- fixed_ip_address
|
||||
- port_id
|
||||
register: ip3
|
||||
|
||||
- name: Assert floating ip address 3 again
|
||||
assert:
|
||||
that:
|
||||
- ip3 is not changed
|
||||
|
||||
- name: List images
|
||||
openstack.cloud.resources:
|
||||
service: image
|
||||
type: image
|
||||
register: images
|
||||
|
||||
- name: Identify CirrOS image id
|
||||
set_fact:
|
||||
image_id: "{{ images.resources|community.general.json_query(query)|first }}"
|
||||
vars:
|
||||
query: "[?starts_with(name, 'cirros')].id"
|
||||
|
||||
- name: List compute flavors
|
||||
openstack.cloud.resources:
|
||||
service: compute
|
||||
type: flavor
|
||||
register: flavors
|
||||
|
||||
- name: Identify m1.tiny flavor id
|
||||
set_fact:
|
||||
flavor_id: "{{ flavors.resources|community.general.json_query(query)|first }}"
|
||||
vars:
|
||||
query: "[?name == 'm1.tiny'].id"
|
||||
|
||||
- name: Create server
|
||||
openstack.cloud.resource:
|
||||
service: compute
|
||||
type: server
|
||||
attributes:
|
||||
name: ansible_server
|
||||
image_id: "{{ image_id }}"
|
||||
flavor_id: "{{ flavor_id }}"
|
||||
networks:
|
||||
- uuid: "{{ network_internal.resource.id }}"
|
||||
port: "{{ port_internal1.resource.id }}"
|
||||
- uuid: "{{ network_internal.resource.id }}"
|
||||
port: "{{ port_internal2.resource.id }}"
|
||||
non_updateable_attributes:
|
||||
- name
|
||||
- image_id
|
||||
- flavor_id
|
||||
- networks
|
||||
wait: true
|
||||
register: server
|
||||
|
||||
- name: Assert server
|
||||
assert:
|
||||
that:
|
||||
- server is changed
|
||||
|
||||
- name: Create server again
|
||||
openstack.cloud.resource:
|
||||
service: compute
|
||||
type: server
|
||||
attributes:
|
||||
name: ansible_server
|
||||
image_id: "{{ image_id }}"
|
||||
flavor_id: "{{ flavor_id }}"
|
||||
networks:
|
||||
- uuid: "{{ network_internal.resource.id }}"
|
||||
port: "{{ port_internal1.resource.id }}"
|
||||
- uuid: "{{ network_internal.resource.id }}"
|
||||
port: "{{ port_internal2.resource.id }}"
|
||||
non_updateable_attributes:
|
||||
- name
|
||||
- image_id
|
||||
- flavor_id
|
||||
- networks
|
||||
wait: true
|
||||
register: server
|
||||
|
||||
- name: Assert server again
|
||||
assert:
|
||||
that:
|
||||
- server is not changed
|
||||
|
||||
- name: Detach floating ip address 3
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: ip
|
||||
attributes:
|
||||
floating_ip_address: 10.6.6.152
|
||||
port_id: !!null
|
||||
register: ip3
|
||||
|
||||
- name: Assert floating ip address 3
|
||||
assert:
|
||||
that:
|
||||
- ip3 is changed
|
||||
|
||||
- name: Detach floating ip address 3 again
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: ip
|
||||
attributes:
|
||||
floating_ip_address: 10.6.6.152
|
||||
port_id: !!null
|
||||
register: ip3
|
||||
|
||||
- name: Assert floating ip address 3 again
|
||||
assert:
|
||||
that:
|
||||
- ip3 is not changed
|
||||
|
||||
- name: Delete server
|
||||
openstack.cloud.resource:
|
||||
service: compute
|
||||
type: server
|
||||
attributes:
|
||||
name: ansible_server
|
||||
state: absent
|
||||
wait: true
|
||||
register: server
|
||||
|
||||
- name: Assert server
|
||||
assert:
|
||||
that:
|
||||
- server is changed
|
||||
|
||||
- name: Delete server again
|
||||
openstack.cloud.resource:
|
||||
service: compute
|
||||
type: server
|
||||
attributes:
|
||||
name: ansible_server
|
||||
state: absent
|
||||
wait: true
|
||||
register: server
|
||||
|
||||
- name: Assert server
|
||||
assert:
|
||||
that:
|
||||
- server is not changed
|
||||
|
||||
- name: Delete floating ip address 3
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: ip
|
||||
attributes:
|
||||
floating_ip_address: 10.6.6.152
|
||||
state: absent
|
||||
register: ip3
|
||||
|
||||
- name: Assert floating ip address 3
|
||||
assert:
|
||||
that:
|
||||
- ip3 is changed
|
||||
|
||||
- name: Delete floating ip address 3 again
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: ip
|
||||
attributes:
|
||||
floating_ip_address: 10.6.6.152
|
||||
state: absent
|
||||
register: ip3
|
||||
|
||||
- name: Assert floating ip address 3 again
|
||||
assert:
|
||||
that:
|
||||
- ip3 is not changed
|
||||
|
||||
- name: Delete floating ip address 2
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: ip
|
||||
attributes:
|
||||
floating_ip_address: 10.6.6.151
|
||||
state: absent
|
||||
register: ip2
|
||||
|
||||
- name: Assert floating ip address 2
|
||||
assert:
|
||||
that:
|
||||
- ip2 is changed
|
||||
|
||||
- name: Delete floating ip address 2 again
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: ip
|
||||
attributes:
|
||||
floating_ip_address: 10.6.6.151
|
||||
state: absent
|
||||
register: ip2
|
||||
|
||||
- name: Assert floating ip address 2 again
|
||||
assert:
|
||||
that:
|
||||
- ip2 is not changed
|
||||
|
||||
- name: Delete floating ip address 1
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: ip
|
||||
attributes:
|
||||
floating_ip_address: 10.6.6.150
|
||||
state: absent
|
||||
register: ip1
|
||||
|
||||
- name: Assert floating ip address 1
|
||||
assert:
|
||||
that:
|
||||
- ip1 is changed
|
||||
|
||||
- name: Delete floating ip address 1 again
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: ip
|
||||
attributes:
|
||||
floating_ip_address: 10.6.6.150
|
||||
state: absent
|
||||
register: ip1
|
||||
|
||||
- name: Assert floating ip address 1 again
|
||||
assert:
|
||||
that:
|
||||
- ip1 is not changed
|
||||
|
||||
- name: Detach router from internal subnet
|
||||
openstack.cloud.router:
|
||||
name: ansible_router
|
||||
network: "{{ network_external.resource.id }}"
|
||||
external_fixed_ips:
|
||||
- ip: 10.6.6.10
|
||||
subnet: "{{ subnet_external.resource.id }}"
|
||||
interfaces: []
|
||||
register: router
|
||||
|
||||
- name: Delete router
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: router
|
||||
attributes:
|
||||
name: ansible_router
|
||||
state: absent
|
||||
wait: true
|
||||
register: router
|
||||
|
||||
- name: Assert router
|
||||
assert:
|
||||
that:
|
||||
- router is changed
|
||||
|
||||
- name: Delete router again
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: router
|
||||
attributes:
|
||||
name: ansible_router
|
||||
state: absent
|
||||
wait: true
|
||||
register: router
|
||||
|
||||
- name: Assert router again
|
||||
assert:
|
||||
that:
|
||||
- router is not changed
|
||||
|
||||
- name: Delete internal port 2
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: port
|
||||
attributes:
|
||||
name: ansible_port_internal2
|
||||
state: absent
|
||||
register: port_internal2
|
||||
|
||||
- name: Assert internal port 2
|
||||
assert:
|
||||
that:
|
||||
- port_internal2 is changed
|
||||
|
||||
- name: Delete internal port 2 again
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: port
|
||||
attributes:
|
||||
name: ansible_port_internal2
|
||||
state: absent
|
||||
register: port_internal2
|
||||
|
||||
- name: Assert internal port 2 again
|
||||
assert:
|
||||
that:
|
||||
- port_internal2 is not changed
|
||||
|
||||
- name: Delete internal port 1
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: port
|
||||
attributes:
|
||||
name: ansible_port_internal1
|
||||
state: absent
|
||||
register: port_internal1
|
||||
|
||||
- name: Assert internal port 1
|
||||
assert:
|
||||
that:
|
||||
- port_internal1 is changed
|
||||
|
||||
- name: Delete internal port 1 again
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: port
|
||||
attributes:
|
||||
name: ansible_port_internal1
|
||||
state: absent
|
||||
register: port_internal1
|
||||
|
||||
- name: Assert internal port 1 again
|
||||
assert:
|
||||
that:
|
||||
- port_internal1 is not changed
|
||||
|
||||
- name: Delete internal subnet
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: subnet
|
||||
attributes:
|
||||
name: ansible_internal_subnet
|
||||
state: absent
|
||||
register: subnet_internal
|
||||
|
||||
- name: Assert internal subnet
|
||||
assert:
|
||||
that:
|
||||
- subnet_internal is changed
|
||||
|
||||
- name: Delete internal subnet again
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: subnet
|
||||
attributes:
|
||||
name: ansible_internal_subnet
|
||||
state: absent
|
||||
register: subnet_internal
|
||||
|
||||
- name: Assert internal subnet again
|
||||
assert:
|
||||
that:
|
||||
- subnet_internal is not changed
|
||||
|
||||
- name: Delete internal network
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: network
|
||||
attributes:
|
||||
name: ansible_network_internal
|
||||
state: absent
|
||||
wait: true
|
||||
register: network_internal
|
||||
|
||||
- name: Assert internal network
|
||||
assert:
|
||||
that:
|
||||
- network_internal is changed
|
||||
|
||||
- name: Delete internal network again
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: network
|
||||
attributes:
|
||||
name: ansible_network_internal
|
||||
state: absent
|
||||
wait: true
|
||||
register: network_internal
|
||||
|
||||
- name: Assert internal network again
|
||||
assert:
|
||||
that:
|
||||
- network_internal is not changed
|
||||
|
||||
- name: Delete external port
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: port
|
||||
attributes:
|
||||
name: ansible_port_external
|
||||
state: absent
|
||||
register: port_external
|
||||
|
||||
- name: Assert external port
|
||||
assert:
|
||||
that:
|
||||
- port_external is changed
|
||||
|
||||
- name: Delete external port again
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: port
|
||||
attributes:
|
||||
name: ansible_port_external
|
||||
state: absent
|
||||
register: port_external
|
||||
|
||||
- name: Assert external port again
|
||||
assert:
|
||||
that:
|
||||
- port_external is not changed
|
||||
|
||||
- name: Delete external subnet
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: subnet
|
||||
attributes:
|
||||
name: ansible_external_subnet
|
||||
state: absent
|
||||
register: subnet_external
|
||||
|
||||
- name: Assert external subnet
|
||||
assert:
|
||||
that:
|
||||
- subnet_external is changed
|
||||
|
||||
- name: Delete external subnet again
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: subnet
|
||||
attributes:
|
||||
name: ansible_external_subnet
|
||||
state: absent
|
||||
register: subnet_external
|
||||
|
||||
- name: Assert external subnet again
|
||||
assert:
|
||||
that:
|
||||
- subnet_external is not changed
|
||||
|
||||
- name: Delete external network
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: network
|
||||
attributes:
|
||||
name: ansible_network_external
|
||||
state: absent
|
||||
wait: true
|
||||
register: network_external
|
||||
|
||||
- name: Assert external network
|
||||
assert:
|
||||
that:
|
||||
- network_external is changed
|
||||
|
||||
- name: Delete external network again
|
||||
openstack.cloud.resource:
|
||||
service: network
|
||||
type: network
|
||||
attributes:
|
||||
name: ansible_network_external
|
||||
state: absent
|
||||
wait: true
|
||||
register: network_external
|
||||
|
||||
- name: Assert external network again
|
||||
assert:
|
||||
that:
|
||||
- network_external is not changed
|
||||
|
||||
- name: Verify resource's check mode
|
||||
import_tasks: check_mode.yml
|
||||
3
ci/roles/resources/defaults/main.yml
Normal file
3
ci/roles/resources/defaults/main.yml
Normal file
@@ -0,0 +1,3 @@
|
||||
---
|
||||
expected_fields:
|
||||
- resources
|
||||
53
ci/roles/resources/tasks/main.yml
Normal file
53
ci/roles/resources/tasks/main.yml
Normal file
@@ -0,0 +1,53 @@
|
||||
---
|
||||
- module_defaults:
|
||||
group/openstack.cloud.openstack:
|
||||
cloud: "{{ cloud }}"
|
||||
# Listing modules individually is required for
|
||||
# backward compatibility with Ansible 2.9 only
|
||||
openstack.cloud.resources:
|
||||
cloud: "{{ cloud }}"
|
||||
block:
|
||||
- name: List images
|
||||
openstack.cloud.resources:
|
||||
service: image
|
||||
type: image
|
||||
register: images
|
||||
|
||||
- name: Identify CirrOS image id
|
||||
set_fact:
|
||||
image_id: "{{ images.resources|community.general.json_query(query)|first }}"
|
||||
vars:
|
||||
query: "[?starts_with(name, 'cirros')].id"
|
||||
|
||||
- name: Assert return values of resources module
|
||||
assert:
|
||||
that:
|
||||
- images is not changed
|
||||
# allow new fields to be introduced but prevent fields from being removed
|
||||
- expected_fields|difference(images.keys())|length == 0
|
||||
|
||||
- name: List compute flavors
|
||||
openstack.cloud.resources:
|
||||
service: compute
|
||||
type: flavor
|
||||
register: flavors
|
||||
|
||||
- name: Identify m1.tiny flavor id
|
||||
set_fact:
|
||||
flavor_id: "{{ flavors.resources|community.general.json_query(query)|first }}"
|
||||
vars:
|
||||
query: "[?name == 'm1.tiny'].id"
|
||||
|
||||
- name: List public network
|
||||
openstack.cloud.resources:
|
||||
service: network
|
||||
type: network
|
||||
parameters:
|
||||
name: public
|
||||
register: networks
|
||||
|
||||
- name: Assert public network
|
||||
assert:
|
||||
that:
|
||||
- networks.resources|length == 1
|
||||
- networks.resources.0.name == 'public'
|
||||
@@ -42,6 +42,8 @@
|
||||
- { role: port, tags: port }
|
||||
- { role: project, tags: project }
|
||||
- { role: recordset, tags: recordset }
|
||||
- { role: resource, tags: resource }
|
||||
- { role: resources, tags: resources }
|
||||
- { role: role_assignment, tags: role_assignment }
|
||||
- { role: router, tags: router }
|
||||
- { role: security_group, tags: security_group }
|
||||
|
||||
Reference in New Issue
Block a user