+*** Keywords ***
+Suite Setup
+ VpnOperations.Basic Suite Setup
+ OpenStackOperations.Create Network @{NETWORKS}[0]
+ OpenStackOperations.Create Network @{NETWORKS}[1]
+ BuiltIn.Wait Until Keyword Succeeds 3s 1s Utils.Check For Elements At URI ${NETWORK_URL} ${NETWORKS}
+ OpenStackOperations.Update Network @{NETWORKS}[0] additional_args=--description ${UPDATE_NETWORK}
+ ${output} = OpenStackOperations.Show Network @{NETWORKS}[0]
+ BuiltIn.Should Contain ${output} ${UPDATE_NETWORK}
+ OpenStackOperations.Create SubNet @{NETWORKS}[0] @{SUBNETS}[0] @{SUBNET_CIDRS}[0]
+ OpenStackOperations.Create SubNet @{NETWORKS}[1] @{SUBNETS}[1] @{SUBNET_CIDRS}[1]
+ BuiltIn.Wait Until Keyword Succeeds 3s 1s Utils.Check For Elements At URI ${SUBNETWORK_URL} ${SUBNETS}
+ OpenStackOperations.Update SubNet @{SUBNETS}[0] additional_args=--description ${UPDATE_SUBNET}
+ ${output} = OpenStackOperations.Show SubNet @{SUBNETS}[0]
+ BuiltIn.Should Contain ${output} ${UPDATE_SUBNET}
+ OpenStackOperations.Create Allow All SecurityGroup ${SECURITY_GROUP}
+ ${allowed_address_pairs_args} = BuiltIn.Set Variable --allowed-address ip-address=@{EXTRA_NW_SUBNET}[0] --allowed-address ip-address=@{EXTRA_NW_SUBNET}[1]
+ Create Port @{NETWORKS}[0] @{PORTS}[0] sg=${SECURITY_GROUP} additional_args=${allowed_address_pairs_args}
+ Create Port @{NETWORKS}[0] @{PORTS}[1] sg=${SECURITY_GROUP} additional_args=${allowed_address_pairs_args}
+ Create Port @{NETWORKS}[1] @{PORTS}[2] sg=${SECURITY_GROUP} additional_args=${allowed_address_pairs_args}
+ Create Port @{NETWORKS}[1] @{PORTS}[3] sg=${SECURITY_GROUP} additional_args=${allowed_address_pairs_args}
+ Wait Until Keyword Succeeds 3s 1s Check For Elements At URI ${PORT_URL} ${PORTS}
+ ${PORTS_MACADDR} = Get Ports MacAddr ${PORTS}
+ Set Suite Variable ${PORTS_MACADDR}
+ Update Port @{PORTS}[0] additional_args=--description ${UPDATE_PORT}
+ ${output} = Show Port @{PORTS}[0]
+ Should Contain ${output} ${UPDATE_PORT}
+ OpenStackOperations.Create Vm Instance With Port On Compute Node @{PORTS}[0] @{NET_1_VMS}[0] ${OS_CMP1_HOSTNAME} sg=${SECURITY_GROUP}
+ OpenStackOperations.Create Vm Instance With Port On Compute Node @{PORTS}[1] @{NET_1_VMS}[1] ${OS_CMP2_HOSTNAME} sg=${SECURITY_GROUP}
+ OpenStackOperations.Create Vm Instance With Port On Compute Node @{PORTS}[2] @{NET_2_VMS}[0] ${OS_CMP1_HOSTNAME} sg=${SECURITY_GROUP}
+ OpenStackOperations.Create Vm Instance With Port On Compute Node @{PORTS}[3] @{NET_2_VMS}[1] ${OS_CMP2_HOSTNAME} sg=${SECURITY_GROUP}
+ @{NET_1_VM_IPS} ${NET_1_DHCP_IP} = OpenStackOperations.Get VM IPs @{NET_1_VMS}
+ @{NET_2_VM_IPS} ${NET_2_DHCP_IP} = OpenStackOperations.Get VM IPs @{NET_2_VMS}
+ BuiltIn.Set Suite Variable @{NET_1_VM_IPS}
+ BuiltIn.Set Suite Variable @{NET_2_VM_IPS}
+ BuiltIn.Should Not Contain ${NET_1_VM_IPS} None
+ BuiltIn.Should Not Contain ${NET_2_VM_IPS} None
+ BuiltIn.Should Not Contain ${NET_1_DHCP_IP} None
+ BuiltIn.Should Not Contain ${NET_2_DHCP_IP} None
+ BuiltIn.Wait Until Keyword Succeeds 30s 10s Wait For Routes To Propogate ${NETWORKS} ${SUBNET_CIDRS}
+ OpenStackOperations.Show Debugs @{NET_1_VMS} @{NET_2_VMS}
+ OpenStackOperations.Get Suite Debugs
+
+Suite Teardown
+ [Documentation] Delete the setup
+ BuiltIn.Run Keyword And Ignore Error VpnOperations.VPN Delete L3VPN vpnid=@{VPN_INSTANCE_IDS}[0]
+ BuiltIn.Run Keyword And Ignore Error VpnOperations.VPN Delete L3VPN vpnid=@{VPN_INSTANCE_IDS}[1]
+ BuiltIn.Run Keyword And Ignore Error VpnOperations.VPN Delete L3VPN vpnid=@{VPN_INSTANCE_IDS}[2]
+ OpenStackOperations.OpenStack Suite Teardown