Correct parameter for show debugs
[integration/test.git] / csit / suites / openstack / connectivity / 03_external_network_tests.robot
1 *** Settings ***
2 Documentation     Test suite to check North-South connectivity in L3 using a router and an external network
3 Suite Setup       BuiltIn.Run Keywords    SetupUtils.Setup_Utils_For_Setup_And_Teardown
4 ...               AND    DevstackUtils.Devstack Suite Setup
5 Suite Teardown    Close All Connections
6 Test Setup        SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
7 Test Teardown     Get Test Teardown Debugs
8 Library           SSHLibrary
9 Library           OperatingSystem
10 Library           RequestsLibrary
11 Resource          ../../../libraries/DevstackUtils.robot
12 Resource          ../../../libraries/OpenStackOperations.robot
13 Resource          ../../../libraries/SetupUtils.robot
14 Resource          ../../../libraries/Utils.robot
15
16 *** Variables ***
17 @{NETWORKS_NAME}    l3_net
18 @{SUBNETS_NAME}    l3_subnet
19 @{VM_INSTANCES_FLOATING}    VmInstanceFloating1    VmInstanceFloating2
20 @{VM_INSTANCES_SNAT}    VmInstanceSnat3    VmInstanceSnat4
21 @{SUBNETS_RANGE}    90.0.0.0/24
22 ${external_gateway}    10.10.10.250
23 ${external_subnet}    10.10.10.0/24
24 ${external_net_name}    external-net
25 ${external_subnet_name}    external-subnet
26 ${network1_vlan_id}    167
27
28 *** Test Cases ***
29 Create All Controller Sessions
30     [Documentation]    Create sessions for all three controllers
31     ClusterManagement.ClusterManagement Setup
32
33 Create Private Network
34     [Documentation]    Create Network with neutron request.
35     : FOR    ${NetworkElement}    IN    @{NETWORKS_NAME}
36     \    OpenStackOperations.Create Network    ${NetworkElement}
37
38 Create Subnet For Private Network
39     [Documentation]    Create Sub Nets for the Networks with neutron request.
40     OpenStackOperations.Create SubNet    @{NETWORKS_NAME}[0]    @{SUBNETS_NAME}[0]    @{SUBNETS_RANGE}[0]
41
42 Create Vm Instances
43     [Documentation]    Create VM instances using flavor and image names for a network.
44     OpenStackOperations.Create Vm Instances    @{NETWORKS_NAME}[0]    ${VM_INSTANCES_FLOATING}    sg=csit
45     OpenStackOperations.Create Vm Instances    @{NETWORKS_NAME}[0]    ${VM_INSTANCES_SNAT}    sg=csit
46
47 Check Vm Instances Have Ip Address
48     [Documentation]    Test case to verify that all created VMs are ready and have received their ip addresses.
49     ...    We are polling first and longest on the last VM created assuming that if it's received it's address
50     ...    already the other instances should have theirs already or at least shortly thereafter.
51     # first, ensure all VMs are in ACTIVE state.    if not, we can just fail the test case and not waste time polling
52     # for dhcp addresses
53     : FOR    ${vm}    IN    @{VM_INSTANCES_FLOATING}    @{VM_INSTANCES_SNAT}
54     \    Wait Until Keyword Succeeds    15s    5s    Verify VM Is ACTIVE    ${vm}
55     ${status}    ${message}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    60s    5s    Collect VM IP Addresses
56     ...    true    @{VM_INSTANCES_FLOATING}
57     ${status}    ${message}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    60s    5s    Collect VM IP Addresses
58     ...    true    @{VM_INSTANCES_SNAT}
59     ${FLOATING_VM_IPS}    ${FLOATING_DHCP_IP}    Collect VM IP Addresses    false    @{VM_INSTANCES_FLOATING}
60     ${SNAT_VM_IPS}    ${SNAT_DHCP_IP}    Collect VM IP Addresses    false    @{VM_INSTANCES_SNAT}
61     ${VM_INSTANCES}=    Collections.Combine Lists    ${VM_INSTANCES_FLOATING}    ${VM_INSTANCES_SNAT}
62     ${VM_IPS}=    Collections.Combine Lists    ${FLOATING_VM_IPS}    ${SNAT_VM_IPS}
63     ${LOOP_COUNT}    Get Length    ${VM_INSTANCES}
64     : FOR    ${index}    IN RANGE    0    ${LOOP_COUNT}
65     \    ${status}    ${message}    Run Keyword And Ignore Error    Should Not Contain    @{VM_IPS}[${index}]    None
66     \    Run Keyword If    '${status}' == 'FAIL'    Write Commands Until Prompt    nova console-log @{VM_INSTANCES}[${index}]    30s
67     Set Suite Variable    ${FLOATING_VM_IPS}
68     Set Suite Variable    ${SNAT_VM_IPS}
69     Should Not Contain    ${FLOATING_VM_IPS}    None
70     Should Not Contain    ${SNAT_VM_IPS}    None
71     Should Not Contain    @{FLOATING_DHCP_IP}[0]    None
72     Should Not Contain    @{SNAT_DHCP_IP}[0]    None
73     [Teardown]    Run Keywords    Show Debugs    @{VM_INSTANCES_FLOATING}    @{VM_INSTANCES_SNAT}
74     ...    AND    Get Test Teardown Debugs
75
76 Create External Network And Subnet
77     Create Network    ${external_net_name} --router:external --provider:network_type=vlan --provider:physical_network=${PUBLIC_PHYSICAL_NETWORK} --provider:segmentation_id=${network1_vlan_id}
78     Create Subnet    ${external_net_name}    ${external_subnet_name}    ${external_subnet}    --gateway ${external_gateway}
79
80 Create Router
81     [Documentation]    Create Router and Add Interface to the subnets.
82     OpenStackOperations.Create Router    router1
83
84 Add Interfaces To Router
85     [Documentation]    Add Interfaces
86     : FOR    ${interface}    IN    @{SUBNETS_NAME}
87     \    OpenStackOperations.Add Router Interface    router1    ${interface}
88
89 Add Router Gateway To Router
90     [Documentation]    Add Router Gateway
91     OpenStackOperations.Add Router Gateway    router1    ${external_net_name}
92
93 Verify Created Routers
94     [Documentation]    Check created routers using northbound rest calls
95     ${data}    Utils.Get Data From URI    1    ${NEUTRON_ROUTERS_API}
96     Log    ${data}
97     Should Contain    ${data}    router1
98
99 Create And Associate Floating IPs for VMs
100     [Documentation]    Create and associate a floating IP for the VM
101     ${VM_FLOATING_IPS}    OpenStackOperations.Create And Associate Floating IPs    ${external_net_name}    @{VM_INSTANCES_FLOATING}
102     Set Suite Variable    ${VM_FLOATING_IPS}
103     [Teardown]    Run Keywords    Show Debugs    @{VM_INSTANCES_FLOATING}
104     ...    AND    Get Test Teardown Debugs
105
106 Ping External Gateway From Control Node
107     [Documentation]    Check reachability of external gateway by pinging it from the control node.
108     OpenStackOperations.Ping Vm From Control Node    ${external_gateway}
109
110 Ping Vm Instance1 Floating IP From Control Node
111     [Documentation]    Check reachability of VM instance through floating IP by pinging them.
112     OpenStackOperations.Ping Vm From Control Node    @{VM_FLOATING_IPS}[0]
113
114 Ping Vm Instance2 Floating IP From Control Node
115     [Documentation]    Check reachability of VM instance through floating IP by pinging them.
116     OpenStackOperations.Ping Vm From Control Node    @{VM_FLOATING_IPS}[1]
117
118 Prepare SNAT - Install Netcat On Controller
119     Install Netcat On Controller
120
121 SNAT - TCP connection to External Gateway From SNAT VM Instance1
122     [Documentation]    Login to the VM instance and test TCP connection to the controller via SNAT
123     Test Netcat Operations From Vm Instance    @{NETWORKS_NAME}[0]    @{SNAT_VM_IPS}[0]    ${external_gateway}
124
125 SNAT - UDP connection to External Gateway From SNAT VM Instance1
126     [Documentation]    Login to the VM instance and test UDP connection to the controller via SNAT
127     Test Netcat Operations From Vm Instance    @{NETWORKS_NAME}[0]    @{SNAT_VM_IPS}[0]    ${external_gateway}    -u
128
129 SNAT - TCP connection to External Gateway From SNAT VM Instance2
130     [Documentation]    Login to the VM instance and test TCP connection to the controller via SNAT
131     Test Netcat Operations From Vm Instance    @{NETWORKS_NAME}[0]    @{SNAT_VM_IPS}[1]    ${external_gateway}
132
133 SNAT - UDP connection to External Gateway From SNAT VM Instance2
134     [Documentation]    Login to the VM instance and test UDP connection to the controller via SNAT
135     Test Netcat Operations From Vm Instance    @{NETWORKS_NAME}[0]    @{SNAT_VM_IPS}[1]    ${external_gateway}    -u
136
137 Delete Vm Instances
138     [Documentation]    Delete Vm instances using instance names.
139     : FOR    ${VmElement}    IN    @{VM_INSTANCES_FLOATING}
140     \    OpenStackOperations.Delete Vm Instance    ${VmElement}
141     : FOR    ${VmElement}    IN    @{VM_INSTANCES_SNAT}
142     \    OpenStackOperations.Delete Vm Instance    ${VmElement}
143
144 Delete Router Interfaces
145     [Documentation]    Remove Interface to the subnets.
146     : FOR    ${interface}    IN    @{SUBNETS_NAME}
147     \    OpenStackOperations.Remove Interface    router1    ${interface}
148
149 Delete Routers
150     [Documentation]    Delete Router and Interface to the subnets.
151     OpenStackOperations.Delete Router    router1
152
153 Verify Deleted Routers
154     [Documentation]    Check deleted routers using northbound rest calls
155     ${data}    Utils.Get Data From URI    1    ${NEUTRON_ROUTERS_API}
156     Log    ${data}
157     Should Not Contain    ${data}    router1
158
159 Delete Sub Networks
160     [Documentation]    Delete Sub Nets for the Networks with neutron request.
161     OpenStackOperations.Delete SubNet    @{SUBNETS_NAME}[0]
162
163 Delete Networks
164     [Documentation]    Delete Networks with neutron request.
165     : FOR    ${NetworkElement}    IN    @{NETWORKS_NAME}
166     \    OpenStackOperations.Delete Network    ${NetworkElement}
167     OpenStackOperations.Delete Network    ${external_net_name}