- task_set_id: preparation tasks: - task_id: image1 region: region1 type: image query: get_one: true - task_id: image2 region: region2 type: image query: get_one: true - task_id: ext-net1 region: central type: network params: name: ext-net1 is_router_external: true provider_network_type: vlan provider_physical_network: bridge availability_zone_hints: [RegionOne] - task_id: ext-subnet1 region: central type: subnet depend: [ext-net1] params: name: ext-subnet1 ip_version: 4 cidr: 163.3.124.0/24 is_dhcp_enabled: false network_id: ext-net1@id - task_id: ext-net2 region: central type: network params: name: ext-net2 is_router_external: true provider_network_type: flat provider_physical_network: extern availability_zone_hints: [RegionTwo] - task_id: ext-subnet2 region: central type: subnet depend: [ext-net2] params: name: ext-subnet2 ip_version: 4 cidr: 163.3.125.0/24 is_dhcp_enabled: false network_id: ext-net2@id - task_id: router1 region: central type: router params: name: router1 availability_zone_hints: [RegionOne] - task_id: router2 region: central type: router params: name: router2 availability_zone_hints: [RegionTwo] - task_id: router3 region: central type: router params: name: router3 - task_id: net1 region: central type: network params: name: net1 availability_zone_hints: [RegionOne] - task_id: subnet1 region: central type: subnet depend: [net1] params: name: subnet1 ip_version: 4 cidr: 10.0.1.0/24 network_id: net1@id - task_id: net2 region: central type: network params: name: net2 availability_zone_hints: [RegionTwo] - task_id: subnet2 region: central type: subnet depend: [net2] params: name: subnet2 ip_version: 4 cidr: 10.0.2.0/24 network_id: net2@id - task_id: add-gateway1 region: central type: router action: target: router1@id method: update depend: - ext-net1 - ext-subnet1 - router1 params: external_gateway_info: network_id: ext-net1@id enable_snat: true - task_id: add-gateway2 region: central type: router action: target: router2@id method: update depend: - ext-net2 - ext-subnet2 - router2 params: external_gateway_info: network_id: ext-net2@id enable_snat: true - task_id: add-subnet1 region: central type: router depend: - subnet1 - router1 action: target: router1@id method: add_interface_to_router params: subnet_id: subnet1@id - task_id: add-subnet2 region: central type: router depend: - subnet2 - router2 action: target: router2@id method: add_interface_to_router params: subnet_id: subnet2@id - task_id: inf-net1 region: central type: port depend: - net1 - subnet1 params: network_id: net1@id - task_id: inf-net2 region: central type: port depend: - net2 - subnet2 params: network_id: net2@id - task_id: add-inf1 region: central type: router depend: - inf-net1 - router3 action: target: router3@id method: add_interface_to_router params: port_id: inf-net1@id - task_id: add-inf2 region: central type: router depend: - inf-net2 - router3 action: target: router3@id method: add_interface_to_router params: port_id: inf-net2@id - task_id: vm1 region: region1 type: server depend: - net1 - image1 - add-gateway1 - add-subnet1 - add-inf1 params: flavor_id: 1 image_id: image1@id name: vm1 networks: - uuid: net1@id - task_id: vm2 region: region2 type: server depend: - net2 - image2 - add-gateway2 - add-subnet2 - add-inf2 params: flavor_id: 1 image_id: image2@id name: vm2 networks: - uuid: net2@id - task_set_id: wait-for-job tasks: - task_id: check-job region: central type: job validate: predicate: all retries: 10 condition: - status: SUCCESS - task_set_id: check depend: [preparation] tasks: - task_id: router1 region: region1 type: router query: get_one: true params: name: preparation@router1@id - task_id: router2 region: region2 type: router query: get_one: true params: name: preparation@router2@id - task_id: router3-1 region: region1 type: router query: get_one: true params: name: preparation@router3@id - task_id: router3-2 region: region2 type: router query: get_one: true params: name: preparation@router3@id - task_id: check-subnets1 region: region1 type: subnet validate: predicate: any condition: - cidr: 10.0.1.0/24 host_routes: - destination: 10.0.2.0/24 nexthop: 10.0.1.* - cidr: 100.0.0.0/24 - cidr: 163.3.124.0/24 - task_id: check-subnets2 region: region2 type: subnet validate: predicate: any condition: - cidr: 10.0.2.0/24 host_routes: - destination: 10.0.1.0/24 nexthop: 10.0.2.* - cidr: 100.0.0.0/24 - cidr: 163.3.125.0/24 - task_id: check-ports1 region: region1 type: port depend: [router1] validate: predicate: any condition: - fixed_ips: - ip_address: 10.0.1* - fixed_ips: - ip_address: 163.3.124* params: device_id: router1@id - task_id: check-ports2 region: region2 type: port depend: [router2] validate: predicate: any condition: - fixed_ips: - ip_address: 10.0.2* - fixed_ips: - ip_address: 163.3.125* params: device_id: router2@id - task_id: check-ports3-1 region: region1 type: port depend: [router3-1] validate: predicate: any condition: - fixed_ips: - ip_address: 10.0.1* - fixed_ips: - ip_address: 100.0.0* params: device_id: router3-1@id - task_id: check-ports3-2 region: region2 type: port depend: [router3-2] validate: predicate: any condition: - fixed_ips: - ip_address: 10.0.2* - fixed_ips: - ip_address: 100.0.0* params: device_id: router3-2@id - task_id: check-routers3-1 region: region1 type: router validate: predicate: any condition: - routes: - destination: 10.0.2* nexthop: 100.0.0* - task_id: check-routers3-2 region: region2 type: router validate: predicate: any condition: - routes: - destination: 10.0.1* nexthop: 100.0.0* - task_id: check-servers1 region: region1 type: server validate: predicate: any condition: - status: ACTIVE name: vm1 - task_id: check-servers2 region: region2 type: server validate: predicate: any condition: - status: ACTIVE name: vm2 - task_set_id: clean depend: [preparation] tasks: - task_id: delete-vm1 region: region1 type: server action: target: preparation@vm1@id method: delete - task_id: delete-vm2 region: region2 type: server action: target: preparation@vm2@id method: delete - task_id: remove-gateway1 region: central type: router action: target: preparation@router1@id method: update params: external_gateway_info: null - task_id: remove-gateway2 region: central type: router action: target: preparation@router2@id method: update params: external_gateway_info: null - task_id: remove-subnet1 region: central type: router action: target: preparation@router1@id method: remove_interface_from_router params: subnet_id: preparation@subnet1@id - task_id: remove-subnet2 region: central type: router action: target: preparation@router2@id method: remove_interface_from_router params: subnet_id: preparation@subnet2@id - task_id: remove-inf1 region: central type: router action: target: preparation@router3@id method: remove_interface_from_router params: port_id: preparation@inf-net1@id - task_id: remove-inf2 region: central type: router action: target: preparation@router3@id method: remove_interface_from_router params: port_id: preparation@inf-net2@id - task_id: delete-router1 region: central type: router action: target: preparation@router1@id method: delete retries: 3 depend: - remove-gateway1 - remove-subnet1 - task_id: delete-router2 region: central type: router action: target: preparation@router2@id method: delete retries: 3 depend: - remove-gateway2 - remove-subnet2 - task_id: delete-router3 region: central type: router action: target: preparation@router3@id method: delete retries: 3 depend: - remove-inf1 - remove-inf2 # router3 must be the last router to delete, otherwise bridge # resources will not be deleted, this is a known issue - delete-router1 - delete-router2 - task_id: delete-inf1 region: central type: port action: target: preparation@inf-net1@id method: delete depend: [delete-router3] - task_id: delete-inf2 region: central type: port action: target: preparation@inf-net2@id method: delete depend: [delete-router3] - task_id: delete-subnet1 region: central type: subnet action: target: preparation@subnet1@id method: delete retries: 3 depend: [delete-inf1] - task_id: delete-subnet2 region: central type: subnet action: target: preparation@subnet2@id method: delete retries: 3 depend: [delete-inf2] - task_id: delete-net1 region: central type: network action: target: preparation@net1@id method: delete depend: [delete-subnet1] - task_id: delete-net2 region: central type: network action: target: preparation@net2@id method: delete depend: [delete-subnet2] - task_id: delete-ext-subnet1 region: central type: subnet action: target: preparation@ext-subnet1@id method: delete depend: [delete-router1] - task_id: delete-ext-net1 region: central type: network action: target: preparation@ext-net1@id method: delete depend: [delete-ext-subnet1] - task_id: delete-ext-subnet2 region: central type: subnet action: target: preparation@ext-subnet2@id method: delete depend: [delete-router2] - task_id: delete-ext-net2 region: central type: network action: target: preparation@ext-net2@id method: delete depend: [delete-ext-subnet2] - task_set_id: clean-check tasks: - task_id: check-no-routers1 region: region1 type: router validate: predicate: all condition: - name: invalid-name - task_id: check-no-routers2 region: region2 type: router validate: predicate: all condition: - name: invalid-name - task_id: check-no-networks1 region: region1 type: network validate: predicate: all condition: - name: invalid-name - task_id: check-no-networks2 region: region2 type: network validate: predicate: all condition: - name: invalid-name - task_id: check-jobs region: central type: job validate: predicate: all retries: 10 condition: - status: SUCCESS