--- - name: network setup cs_network: name: ansible test network_offering: DefaultIsolatedNetworkOfferingWithSourceNatService network_domain: example.com zone: "{{ cs_common_zone_adv }}" register: net - name: verify network setup assert: that: - net|success - name: instance setup cs_instance: name: "{{ cs_portforward_vm }}" template: "{{ cs_common_template }}" service_offering: "{{ cs_common_service_offering }}" zone: "{{ cs_common_zone_adv }}" network: "ansible test" register: instance - name: verify instance setup assert: that: - instance|success - name: public ip address setup cs_ip_address: network: ansible test zone: "{{ cs_common_zone_adv }}" register: ip_address - name: verify public ip address setup assert: that: - ip_address|success - name: set ip address as fact set_fact: cs_portforward_public_ip: "{{ ip_address.ip_address }}" - name: clear existing port forwarding cs_portforward: ip_address: "{{ cs_portforward_public_ip }}" public_port: 80 private_port: 8080 state: absent zone: "{{ cs_common_zone_adv }}" register: pf - name: verify clear existing port forwarding assert: that: - pf|success - name: test fail if missing params action: cs_portforward register: pf ignore_errors: true - name: verify results of fail if missing params assert: that: - pf|failed - 'pf.msg.startswith("missing required arguments: ")' - name: test present port forwarding cs_portforward: ip_address: "{{ cs_portforward_public_ip }}" public_port: 80 vm: "{{ cs_portforward_vm }}" private_port: 8080 zone: "{{ cs_common_zone_adv }}" register: pf - name: verify results of present port forwarding assert: that: - pf|success - pf|changed - pf.vm_name == "{{ cs_portforward_vm }}" - pf.ip_address == "{{ cs_portforward_public_ip }}" - pf.public_port == 80 - pf.public_end_port == 80 - pf.private_port == 8080 - pf.private_end_port == 8080 - name: test present port forwarding idempotence cs_portforward: ip_address: "{{ cs_portforward_public_ip }}" public_port: 80 vm: "{{ cs_portforward_vm }}" private_port: 8080 zone: "{{ cs_common_zone_adv }}" register: pf - name: verify results of present port forwarding idempotence assert: that: - pf|success - not pf|changed - pf.vm_name == "{{ cs_portforward_vm }}" - pf.ip_address == "{{ cs_portforward_public_ip }}" - pf.public_port == 80 - pf.public_end_port == 80 - pf.private_port == 8080 - pf.private_end_port == 8080 - name: test change port forwarding cs_portforward: ip_address: "{{ cs_portforward_public_ip }}" public_port: 80 vm: "{{ cs_portforward_vm }}" private_port: 8888 zone: "{{ cs_common_zone_adv }}" register: pf - name: verify results of change port forwarding assert: that: - pf|success - pf|changed - pf.vm_name == "{{ cs_portforward_vm }}" - pf.ip_address == "{{ cs_portforward_public_ip }}" - pf.public_port == 80 - pf.public_end_port == 80 - pf.private_port == 8888 - pf.private_end_port == 8888 - name: test absent port forwarding cs_portforward: ip_address: "{{ cs_portforward_public_ip }}" public_port: 80 private_port: 8888 state: absent zone: "{{ cs_common_zone_adv }}" register: pf - name: verify results of absent port forwarding assert: that: - pf|success - pf|changed - pf.vm_name == "{{ cs_portforward_vm }}" - pf.ip_address == "{{ cs_portforward_public_ip }}" - pf.public_port == 80 - pf.public_end_port == 80 - pf.private_port == 8888 - pf.private_end_port == 8888 - name: test absent port forwarding idempotence cs_portforward: ip_address: "{{ cs_portforward_public_ip }}" public_port: 80 private_port: 8888 state: absent zone: "{{ cs_common_zone_adv }}" register: pf - name: verify results of absent port forwarding idempotence assert: that: - pf|success - not pf|changed - name: instance cleanup cs_instance: name: "{{ cs_portforward_vm }}" zone: "{{ cs_common_zone_adv }}" state: expunged register: instance - name: verify instance cleanup assert: that: - instance|success - name: network cleanup cs_network: name: ansible test zone: "{{ cs_common_zone_adv }}" state: absent register: net - name: verify network cleanup assert: that: - net|success