Refactor Is Feature Installed
[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    OpenStackOperations.OpenStack Suite Teardown
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}       l2_net_1    l2_net_2
22 @{SUBNETS}        l2_sub_1    l2_sub_2
23 @{NET_1_VMS}      l2_net_1_vm_1    l2_net_1_vm_2    l2_net_1_vm_3
24 @{NET_2_VMS}      l2_net_2_vm_1    l2_net_2_vm_2    l2_net_2_vm_3
25 @{SUBNET_CIDRS}    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     ${feature_check_status} =    OpenStackOperations.Is Feature Installed    ${legacy_feature_list}
34     BuiltIn.Run Keyword If    '${feature_check_status}' == 'True'    OpenStackOperations.Create Network    @{NETWORKS}[0]
35     ...    ELSE    OpenStackOperations.Create Network    @{NETWORKS}[0]    --provider-network-type vlan --provider-physical-network ${PUBLIC_PHYSICAL_NETWORK} --provider-segment ${NET_1_VLAN_ID}
36
37 Create Subnet For net_1
38     [Documentation]    Create Sub Nets for the Networks with neutron request.
39     OpenStackOperations.Create SubNet    @{NETWORKS}[0]    @{SUBNETS}[0]    @{SUBNET_CIDRS}[0]
40
41 Create VXLAN Network net_2
42     [Documentation]    Create Network with neutron request.
43     OpenStackOperations.Create Network    @{NETWORKS}[1]
44
45 Create Subnet For net_2
46     [Documentation]    Create Sub Nets for the Networks with neutron request.
47     OpenStackOperations.Create SubNet    @{NETWORKS}[1]    @{SUBNETS}[1]    @{SUBNET_CIDRS}[1]
48
49 Add Ssh Allow All Rule
50     [Documentation]    Allow all TCP/UDP/ICMP packets for this suite
51     OpenStackOperations.Create Allow All SecurityGroup    ${SECURITY_GROUP}
52
53 Create Vm Instances For net_1
54     [Documentation]    Create Vm instances using flavor and image names for a network.
55     OpenStackOperations.Create Vm Instances    @{NETWORKS}[0]    ${NET_1_VMS}    sg=${SECURITY_GROUP}
56
57 Create Vm Instances For net_2
58     [Documentation]    Create Vm instances using flavor and image names for a network.
59     OpenStackOperations.Create Vm Instances    @{NETWORKS}[1]    ${NET_2_VMS}    sg=${SECURITY_GROUP}
60
61 Check Vm Instances Have Ip Address
62     @{NET_1_VM_IPS}    ${NET_1_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_1_VMS}
63     @{NET_2_VM_IPS}    ${NET_2_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_2_VMS}
64     BuiltIn.Set Suite Variable    @{NET_1_VM_IPS}
65     BuiltIn.Set Suite Variable    @{NET_2_VM_IPS}
66     BuiltIn.Should Not Contain    ${NET_1_VM_IPS}    None
67     BuiltIn.Should Not Contain    ${NET_2_VM_IPS}    None
68     BuiltIn.Should Not Contain    ${NET_1_DHCP_IP}    None
69     BuiltIn.Should Not Contain    ${NET_2_DHCP_IP}    None
70     [Teardown]    BuiltIn.Run Keywords    OpenStackOperations.Show Debugs    @{NET_1_VMS}    @{NET_2_VMS}
71     ...    AND    OpenStackOperations.Get Test Teardown Debugs
72
73 Ping Vm Instance1 In net_1
74     [Documentation]    Check reachability of vm instances by pinging to them.
75     OpenStackOperations.Ping Vm From DHCP Namespace    @{NETWORKS}[0]    @{NET_1_VM_IPS}[0]
76
77 Ping Vm Instance2 In net_1
78     [Documentation]    Check reachability of vm instances by pinging to them.
79     OpenStackOperations.Ping Vm From DHCP Namespace    @{NETWORKS}[0]    @{NET_1_VM_IPS}[1]
80
81 Ping Vm Instance3 In net_1
82     [Documentation]    Check reachability of vm instances by pinging to them.
83     OpenStackOperations.Ping Vm From DHCP Namespace    @{NETWORKS}[0]    @{NET_1_VM_IPS}[2]
84
85 Ping Vm Instance1 In net_2
86     [Documentation]    Check reachability of vm instances by pinging to them.
87     OpenStackOperations.Ping Vm From DHCP Namespace    @{NETWORKS}[1]    @{NET_2_VM_IPS}[0]
88
89 Ping Vm Instance2 In net_2
90     [Documentation]    Check reachability of vm instances by pinging to them.
91     OpenStackOperations.Ping Vm From DHCP Namespace    @{NETWORKS}[1]    @{NET_2_VM_IPS}[1]
92
93 Ping Vm Instance3 In net_2
94     [Documentation]    Check reachability of vm instances by pinging to them.
95     OpenStackOperations.Ping Vm From DHCP Namespace    @{NETWORKS}[1]    @{NET_2_VM_IPS}[2]
96
97 Connectivity Tests From Vm Instance1 In net_1
98     [Documentation]    Login to the vm instance and test some operations
99     OpenStackOperations.Test Operations From Vm Instance    @{NETWORKS}[0]    @{NET_1_VM_IPS}[0]    ${NET_1_VM_IPS}
100
101 Connectivity Tests From Vm Instance2 In net_1
102     [Documentation]    Login to the vm instance and test operations
103     OpenStackOperations.Test Operations From Vm Instance    @{NETWORKS}[0]    @{NET_1_VM_IPS}[1]    ${NET_1_VM_IPS}
104
105 Connectivity Tests From Vm Instance3 In net_1
106     [Documentation]    Login to the vm instance and test operations
107     OpenStackOperations.Test Operations From Vm Instance    @{NETWORKS}[0]    @{NET_1_VM_IPS}[2]    ${NET_1_VM_IPS}
108
109 Connectivity Tests From Vm Instance1 In net_2
110     [Documentation]    Login to the vm instance and test operations
111     OpenStackOperations.Test Operations From Vm Instance    @{NETWORKS}[1]    @{NET_2_VM_IPS}[0]    ${NET_2_VM_IPS}
112
113 Connectivity Tests From Vm Instance2 In net_2
114     [Documentation]    Logging to the vm instance using generated key pair.
115     OpenStackOperations.Test Operations From Vm Instance    @{NETWORKS}[1]    @{NET_2_VM_IPS}[1]    ${NET_2_VM_IPS}
116
117 Connectivity Tests From Vm Instance3 In net_2
118     [Documentation]    Login to the vm instance using generated key pair.
119     OpenStackOperations.Test Operations From Vm Instance    @{NETWORKS}[1]    @{NET_2_VM_IPS}[2]    ${NET_2_VM_IPS}
120
121 Delete A Vm Instance
122     [Documentation]    Delete Vm instances using instance names.
123     OpenStackOperations.Delete Vm Instance    @{NET_1_VMS}[0]
124
125 No Ping For Deleted Vm
126     [Documentation]    Check non reachability of deleted vm instances by pinging to them.
127     OpenStackOperations.Ping From DHCP Should Not Succeed    @{NETWORKS}[0]    @{NET_1_VM_IPS}[0]
128
129 Delete Vm Instances In net_1
130     [Documentation]    Delete Vm instances using instance names in net_1.
131     : FOR    ${vm}    IN    @{NET_1_VMS}
132     \    OpenStackOperations.Delete Vm Instance    ${vm}
133
134 Delete Vm Instances In net_2
135     [Documentation]    Delete Vm instances using instance names in net_2.
136     : FOR    ${vm}    IN    @{NET_2_VMS}
137     \    OpenStackOperations.Delete Vm Instance    ${vm}
138
139 Delete Sub Network In net_1
140     [Documentation]    Delete Sub Net for the Networks with neutron request.
141     OpenStackOperations.Delete SubNet    @{SUBNETS}[0]
142
143 Delete Sub Network In net_2
144     [Documentation]    Delete Sub Net for the Networks with neutron request.
145     OpenStackOperations.Delete SubNet    @{SUBNETS}[1]
146
147 Delete Networks
148     [Documentation]    Delete Networks with neutron request.
149     : FOR    ${networks}    IN    @{NETWORKS}
150     \    OpenStackOperations.Delete Network    ${networks}
151
152 Delete Security Group
153     [Documentation]    Delete security group with neutron request
154     OpenStackOperations.Delete SecurityGroup    ${SECURITY_GROUP}
155
156 Verify Flows Cleanup
157     [Documentation]    Verify that flows have been cleaned up properly after removing all neutron configurations
158     ${feature_check_status}=    Run Keyword And Return Status    Verify Feature Is Installed    odl-vtn-manager-neutron
159     BuiltIn.Run Keyword If    '${feature_check_status}' != 'True'    DataModels.Verify Flows Are Cleaned Up On All OpenStack Nodes