f6a4023dc81befa023329c53fc64d5b6bc1b6af6
[integration/test.git] / csit / suites / openstack / connectivity / l2.robot
1 *** Settings ***
2 Documentation     Test suite to verify packet flows between vm instances.
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     OpenStackOperations.Get Test Teardown Debugs
8 Library           SSHLibrary
9 Library           OperatingSystem
10 Library           RequestsLibrary
11 Resource          ../../../libraries/DevstackUtils.robot
12 Resource          ../../../libraries/DataModels.robot
13 Resource          ../../../libraries/OpenStackOperations.robot
14 Resource          ../../../libraries/SetupUtils.robot
15 Resource          ../../../libraries/Utils.robot
16 Resource          ../../../libraries/KarafKeywords.robot
17 Resource          ../../../variables/netvirt/Variables.robot
18
19 *** Variables ***
20 ${SECURITY_GROUP}    l2_sg
21 @{NETWORKS_NAME}    l2_net_1    l2_net_2
22 @{SUBNETS_NAME}    l2_sub_1    l2_sub_2
23 @{NET_1_VM_INSTANCES}    l2_net_1_vm_1    l2_net_1_vm_2    l2_net_1_vm_3
24 @{NET_2_VM_INSTANCES}    l2_net_2_vm_1    l2_net_2_vm_2    l2_net_2_vm_3
25 @{SUBNETS_RANGE}    21.0.0.0/24    22.0.0.0/24
26 ${NET_1_VLAN_ID}    1121
27
28 *** Test Cases ***
29 Create VLAN Network net_1
30     [Documentation]    Create Network with neutron request.
31     # in the case that the controller under test is using legacy netvirt features, vlan segmentation is not supported,
32     # and we cannot create a vlan network. If those features are installed we will instead stick with vxlan.
33     : FOR    ${feature_name}    IN    @{legacy_feature_list}
34     \    ${feature_check_status} =    BuiltIn.Run Keyword And Return Status    KarafKeywords.Verify Feature Is Installed    ${feature_name}
35     \    Exit For Loop If    '${feature_check_status}' == 'True'
36     BuiltIn.Run Keyword If    '${feature_check_status}' == 'True'    OpenStackOperations.Create Network    @{NETWORKS_NAME}[0]
37     ...    ELSE    OpenStackOperations.Create Network    @{NETWORKS_NAME}[0]    --provider-network-type vlan --provider-physical-network ${PUBLIC_PHYSICAL_NETWORK} --provider-segment ${NET_1_VLAN_ID}
38
39 Create Subnet For net_1
40     [Documentation]    Create Sub Nets for the Networks with neutron request.
41     OpenStackOperations.Create SubNet    @{NETWORKS_NAME}[0]    @{SUBNETS_NAME}[0]    @{SUBNETS_RANGE}[0]
42
43 Create VXLAN Network net_2
44     [Documentation]    Create Network with neutron request.
45     OpenStackOperations.Create Network    @{NETWORKS_NAME}[1]
46
47 Create Subnet For net_2
48     [Documentation]    Create Sub Nets for the Networks with neutron request.
49     OpenStackOperations.Create SubNet    @{NETWORKS_NAME}[1]    @{SUBNETS_NAME}[1]    @{SUBNETS_RANGE}[1]
50
51 Add Ssh Allow All Rule
52     [Documentation]    Allow all TCP/UDP/ICMP packets for this suite
53     OpenStackOperations.Create Allow All SecurityGroup    ${SECURITY_GROUP}
54
55 Create Vm Instances For net_1
56     [Documentation]    Create Vm instances using flavor and image names for a network.
57     OpenStackOperations.Create Vm Instances    @{NETWORKS_NAME}[0]    ${NET_1_VM_INSTANCES}    sg=${SECURITY_GROUP}
58
59 Create Vm Instances For net_2
60     [Documentation]    Create Vm instances using flavor and image names for a network.
61     OpenStackOperations.Create Vm Instances    @{NETWORKS_NAME}[1]    ${NET_2_VM_INSTANCES}    sg=${SECURITY_GROUP}
62
63 Check Vm Instances Have Ip Address
64     @{NET_1_VM_IPS}    ${NET_1_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_1_VM_INSTANCES}
65     @{NET_2_VM_IPS}    ${NET_2_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_2_VM_INSTANCES}
66     BuiltIn.Set Suite Variable    @{NET_1_VM_IPS}
67     BuiltIn.Set Suite Variable    @{NET_2_VM_IPS}
68     BuiltIn.Should Not Contain    ${NET_1_VM_IPS}    None
69     BuiltIn.Should Not Contain    ${NET_2_VM_IPS}    None
70     BuiltIn.Should Not Contain    ${NET_1_DHCP_IP}    None
71     BuiltIn.Should Not Contain    ${NET_2_DHCP_IP}    None
72     [Teardown]    BuiltIn.Run Keywords    OpenStackOperations.Show Debugs    @{NET_1_VM_INSTANCES}    @{NET_2_VM_INSTANCES}
73     ...    AND    OpenStackOperations.Get Test Teardown Debugs
74
75 Ping Vm Instance1 In net_1
76     [Documentation]    Check reachability of vm instances by pinging to them.
77     OpenStackOperations.Ping Vm From DHCP Namespace    @{NETWORKS_NAME}[0]    @{NET_1_VM_IPS}[0]
78
79 Ping Vm Instance2 In net_1
80     [Documentation]    Check reachability of vm instances by pinging to them.
81     OpenStackOperations.Ping Vm From DHCP Namespace    @{NETWORKS_NAME}[0]    @{NET_1_VM_IPS}[1]
82
83 Ping Vm Instance3 In net_1
84     [Documentation]    Check reachability of vm instances by pinging to them.
85     OpenStackOperations.Ping Vm From DHCP Namespace    @{NETWORKS_NAME}[0]    @{NET_1_VM_IPS}[2]
86
87 Ping Vm Instance1 In net_2
88     [Documentation]    Check reachability of vm instances by pinging to them.
89     OpenStackOperations.Ping Vm From DHCP Namespace    @{NETWORKS_NAME}[1]    @{NET_2_VM_IPS}[0]
90
91 Ping Vm Instance2 In net_2
92     [Documentation]    Check reachability of vm instances by pinging to them.
93     OpenStackOperations.Ping Vm From DHCP Namespace    @{NETWORKS_NAME}[1]    @{NET_2_VM_IPS}[1]
94
95 Ping Vm Instance3 In net_2
96     [Documentation]    Check reachability of vm instances by pinging to them.
97     OpenStackOperations.Ping Vm From DHCP Namespace    @{NETWORKS_NAME}[1]    @{NET_2_VM_IPS}[2]
98
99 Connectivity Tests From Vm Instance1 In net_1
100     [Documentation]    Login to the vm instance and test some operations
101     OpenStackOperations.Test Operations From Vm Instance    @{NETWORKS_NAME}[0]    @{NET_1_VM_IPS}[0]    ${NET_1_VM_IPS}
102
103 Connectivity Tests From Vm Instance2 In net_1
104     [Documentation]    Login to the vm instance and test operations
105     OpenStackOperations.Test Operations From Vm Instance    @{NETWORKS_NAME}[0]    @{NET_1_VM_IPS}[1]    ${NET_1_VM_IPS}
106
107 Connectivity Tests From Vm Instance3 In net_1
108     [Documentation]    Login to the vm instance and test operations
109     OpenStackOperations.Test Operations From Vm Instance    @{NETWORKS_NAME}[0]    @{NET_1_VM_IPS}[2]    ${NET_1_VM_IPS}
110
111 Connectivity Tests From Vm Instance1 In net_2
112     [Documentation]    Login to the vm instance and test operations
113     OpenStackOperations.Test Operations From Vm Instance    @{NETWORKS_NAME}[1]    @{NET_2_VM_IPS}[0]    ${NET_2_VM_IPS}
114
115 Connectivity Tests From Vm Instance2 In net_2
116     [Documentation]    Logging to the vm instance using generated key pair.
117     OpenStackOperations.Test Operations From Vm Instance    @{NETWORKS_NAME}[1]    @{NET_2_VM_IPS}[1]    ${NET_2_VM_IPS}
118
119 Connectivity Tests From Vm Instance3 In net_2
120     [Documentation]    Login to the vm instance using generated key pair.
121     OpenStackOperations.Test Operations From Vm Instance    @{NETWORKS_NAME}[1]    @{NET_2_VM_IPS}[2]    ${NET_2_VM_IPS}
122
123 Delete A Vm Instance
124     [Documentation]    Delete Vm instances using instance names.
125     OpenStackOperations.Delete Vm Instance    @{NET_1_VM_INSTANCES}[0]
126
127 No Ping For Deleted Vm
128     [Documentation]    Check non reachability of deleted vm instances by pinging to them.
129     OpenStackOperations.Ping From DHCP Should Not Succeed    @{NETWORKS_NAME}[0]    @{NET_1_VM_IPS}[0]
130
131 Delete Vm Instances In net_1
132     [Documentation]    Delete Vm instances using instance names in net_1.
133     : FOR    ${vm}    IN    @{NET_1_VM_INSTANCES}
134     \    OpenStackOperations.Delete Vm Instance    ${vm}
135
136 Delete Vm Instances In net_2
137     [Documentation]    Delete Vm instances using instance names in net_2.
138     : FOR    ${vm}    IN    @{NET_2_VM_INSTANCES}
139     \    OpenStackOperations.Delete Vm Instance    ${vm}
140
141 Delete Sub Network In net_1
142     [Documentation]    Delete Sub Net for the Networks with neutron request.
143     OpenStackOperations.Delete SubNet    @{SUBNETS_NAME}[0]
144
145 Delete Sub Network In net_2
146     [Documentation]    Delete Sub Net for the Networks with neutron request.
147     OpenStackOperations.Delete SubNet    @{SUBNETS_NAME}[1]
148
149 Delete Networks
150     [Documentation]    Delete Networks with neutron request.
151     : FOR    ${networks}    IN    @{NETWORKS_NAME}
152     \    OpenStackOperations.Delete Network    ${networks}
153
154 Delete Security Group
155     [Documentation]    Delete security group with neutron request
156     OpenStackOperations.Delete SecurityGroup    ${SECURITY_GROUP}
157
158 Verify Flows Cleanup
159     [Documentation]    Verify that flows have been cleaned up properly after removing all neutron configurations
160     ${feature_check_status}=    Run Keyword And Return Status    Verify Feature Is Installed    odl-vtn-manager-neutron
161     BuiltIn.Run Keyword If    '${feature_check_status}' != 'True'    DataModels.Verify Flows Are Cleaned Up On All OpenStack Nodes