cleanup connections
[integration/test.git] / csit / suites / netvirt / vpnservice / bgp.robot
1 *** Settings ***
2 Documentation     Test suite to validate BGP vpnservice functionality in an openstack integrated environment.
3 ...               The assumption of this suite is that the environment is already configured with the proper
4 ...               integration bridges and vxlan tunnels.
5 Suite Setup       BGP Vpnservice Suite Setup
6 Suite Teardown    BGP Vpnservice Suite Teardown
7 Test Setup        SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
8 Test Teardown     OpenStackOperations.Get Test Teardown Debugs
9 Library           OperatingSystem
10 Library           RequestsLibrary
11 Library           SSHLibrary
12 Resource          ../../../libraries/Utils.robot
13 Resource          ../../../libraries/OpenStackOperations.robot
14 Resource          ../../../libraries/DevstackUtils.robot
15 Resource          ../../../libraries/VpnOperations.robot
16 Resource          ../../../libraries/OVSDB.robot
17 Resource          ../../../libraries/SetupUtils.robot
18 Resource          ../../../libraries/BgpOperations.robot
19 Resource          ../../../variables/Variables.robot
20 Resource          ../../../variables/netvirt/Variables.robot
21
22 *** Variables ***
23 @{NETWORKS}       bgp_net_1    bgp_net_2    bgp_net_3    bgp_net_4
24 @{SUBNETS}        bgp_sub_1    bgp_sub_2    bgp_sub_3    bgp_sub_4
25 @{SUBNET_CIDR}    101.1.1.0/8    102.1.1.0/16    103.1.1.0/24    104.1.1.0/24
26 @{PORTS}          bgp_port_101    bgp_port_102    bgp_port_103    bgp_port_104
27 @{VM_NAMES}       bgp_vm_101    bgp_vm_102    bgp_vm_103    bgp_vm_104
28 @{VPN_INSTANCE_IDS}    4ae8cd92-48ca-49b5-94e1-b2921a261111    4ae8cd92-48ca-49b5-94e1-b2921a261112
29 @{RD_LIST}        ["2200:2"]    ["2300:2"]
30 @{VPN_NAMES}      bgp_vpn_101    bgp_vpn_102
31 ${LOOPBACK_IP}    5.5.5.2
32 ${DCGW_SYSTEM_IP}    ${TOOLS_SYSTEM_1_IP}
33 ${AS_ID}          500
34 ${DCGW_RD}        2200:2
35 ${SECURITY_GROUP}    bgp_sg
36
37 *** Test Cases ***
38 Create BGP Config On ODL
39     [Documentation]    Create BGP Config on ODL
40     BgpOperations.Create BGP Configuration On ODL    localas=${AS_ID}    routerid=${ODL_SYSTEM_IP}
41     BgpOperations.AddNeighbor To BGP Configuration On ODL    remoteas=${AS_ID}    neighborAddr=${DCGW_SYSTEM_IP}
42     ${output} =    BgpOperations.Get BGP Configuration On ODL    session
43     BuiltIn.Log    ${output}
44     BuiltIn.Should Contain    ${output}    ${DCGW_SYSTEM_IP}
45
46 Create BGP Config On DCGW
47     [Documentation]    Configure BGP Config on DCGW
48     BgpOperations.Configure BGP And Add Neighbor On DCGW    ${DCGW_SYSTEM_IP}    ${AS_ID}    ${DCGW_SYSTEM_IP}    ${ODL_SYSTEM_IP}    @{VPN_NAMES}[0]    ${DCGW_RD}
49     ...    ${LOOPBACK_IP}
50     BgpOperations.Add Loopback Interface On DCGW    ${DCGW_SYSTEM_IP}    lo    ${LOOPBACK_IP}
51     ${output} =    BgpOperations.Execute Show Command On Quagga    ${DCGW_SYSTEM_IP}    show running-config
52     BuiltIn.Log    ${output}
53     BuiltIn.Should Contain    ${output}    ${ODL_SYSTEM_IP}
54
55 Verify BGP Neighbor Status
56     [Documentation]    Verify BGP status established
57     ${output} =    BuiltIn.Wait Until Keyword Succeeds    60s    15s    BgpOperations.Verify BGP Neighbor Status On Quagga    ${DCGW_SYSTEM_IP}    ${ODL_SYSTEM_IP}
58     BuiltIn.Log    ${output}
59     ${output1} =    BgpOperations.Execute Show Command On Quagga    ${DCGW_SYSTEM_IP}    show ip bgp vrf ${DCGW_RD}
60     BuiltIn.Log    ${output1}
61     BuiltIn.Should Contain    ${output1}    ${LOOPBACK_IP}
62
63 Create External Tunnel Endpoint
64     [Documentation]    Create and verify external tunnel endpoint between ODL and GWIP
65     BgpOperations.Create External Tunnel Endpoint Configuration    destIp=${DCGW_SYSTEM_IP}
66     ${output} =    BgpOperations.Get External Tunnel Endpoint Configuration    ${DCGW_SYSTEM_IP}
67     BuiltIn.Should Contain    ${output}    ${DCGW_SYSTEM_IP}
68
69 Verify Routes Exchange Between ODL And DCGW
70     [Documentation]    Verify routes exchange between ODL and DCGW
71     ${fib_values} =    BuiltIn.Create List    ${LOOPBACK_IP}    @{VM_IPS}
72     BuiltIn.Wait Until Keyword Succeeds    60s    15s    Utils.Check For Elements At URI    ${CONFIG_API}/odl-fib:fibEntries/vrfTables/${DCGW_RD}/    ${fib_values}
73     BuiltIn.Wait Until Keyword Succeeds    60s    15s    Verify Routes On Quagga    ${DCGW_SYSTEM_IP}    ${DCGW_RD}    ${fib_values}
74     [Teardown]    BuiltIn.Run Keywords    Report_Failure_Due_To_Bug    7607
75     ...    AND    OpenStackOperations.Get Test Teardown Debugs
76
77 Delete External Tunnel Endpoint
78     [Documentation]    Delete external tunnel endpoint
79     BgpOperations.Delete External Tunnel Endpoint Configuration    destIp=${DCGW_SYSTEM_IP}
80     ${output} =    BgpOperations.Get External Tunnel Endpoint Configuration    ${DCGW_SYSTEM_IP}
81     BuiltIn.Should Not Contain    ${output}    ${DCGW_SYSTEM_IP}
82
83 Delete BGP Config On ODL
84     [Documentation]    Delete BGP Configuration on ODL
85     BgpOperations.Delete BGP Configuration On ODL    session
86     ${output} =    BgpOperations.Get BGP Configuration On ODL    session
87     BuiltIn.Log    ${output}
88     BuiltIn.Should Not Contain    ${output}    ${DCGW_SYSTEM_IP}
89     Utils.Run Command On Remote System    ${ODL_SYSTEM_IP}    sudo cp /opt/quagga/var/log/quagga/zrpcd.init.log /tmp/
90
91 Delete BGP Config On DCGW
92     [Documentation]    Delete BGP Configuration on DCGW
93     ${output} =    BgpOperations.Delete BGP Config On Quagga    ${DCGW_SYSTEM_IP}    ${AS_ID}
94     BuiltIn.Log    ${output}
95     BuiltIn.Should Not Contain    ${output}    ${ODL_SYSTEM_IP}
96
97 *** Keywords ***
98 BGP Vpnservice Suite Setup
99     OpenStackOperations.OpenStack Suite Setup
100     OpenStackOperations.Create And Configure Security Group    ${SECURITY_GROUP}
101     BgpOperations.Start Quagga Processes On ODL    ${ODL_SYSTEM_IP}
102     BgpOperations.Start Quagga Processes On DCGW    ${DCGW_SYSTEM_IP}
103     BgpOperations.Create Basic Configuartion for BGP VPNservice Suite
104
105 BGP Vpnservice Suite Teardown
106     BgpOperations.Delete Basic Configuartion for BGP VPNservice Suite
107     OpenStackOperations.Delete SecurityGroup    ${SECURITY_GROUP}
108     OpenStackOperations.OpenStack Suite Teardown
109
110 Create Basic Configuartion for BGP VPNservice Suite
111     [Documentation]    Create basic configuration for BGP VPNservice suite
112     BgpOperations.Start Quagga Processes On ODL    ${ODL_SYSTEM_IP}
113     : FOR    ${network}    IN    @{NETWORKS}
114     \    OpenStackOperations.Create Network    ${network}
115     BuiltIn.Wait Until Keyword Succeeds    3s    1s    Utils.Check For Elements At URI    ${NETWORK_URL}    ${NETWORKS}
116     ${length} =    BuiltIn.Get Length    ${SUBNETS}
117     : FOR    ${idx}    IN RANGE    ${length}
118     \    OpenStackOperations.Create SubNet    ${NETWORKS[${idx}]}    ${SUBNETS[${idx}]}    @{SUBNET_CIDR}[${idx}]
119     BuiltIn.Wait Until Keyword Succeeds    3s    1s    Utils.Check For Elements At URI    ${SUBNETWORK_URL}    ${SUBNETS}
120     : FOR    ${network}    ${port}    IN ZIP    ${NETWORKS}    ${PORTS}
121     \    OpenStackOperations.Create Port    ${network}    ${port}    sg=${SECURITY_GROUP}
122     BuiltIn.Wait Until Keyword Succeeds    3s    1s    Utils.Check For Elements At URI    ${PORT_URL}    ${PORTS}
123     OpenStackOperations.Create Vm Instance With Port On Compute Node    @{PORTS}[0]    @{VM_NAMES}[0]    ${OS_COMPUTE_1_IP}    sg=${SECURITY_GROUP}
124     OpenStackOperations.Create Vm Instance With Port On Compute Node    @{PORTS}[1]    @{VM_NAMES}[1]    ${OS_COMPUTE_1_IP}    sg=${SECURITY_GROUP}
125     OpenStackOperations.Create Vm Instance With Port On Compute Node    @{PORTS}[2]    @{VM_NAMES}[2]    ${OS_COMPUTE_2_IP}    sg=${SECURITY_GROUP}
126     OpenStackOperations.Create Vm Instance With Port On Compute Node    @{PORTS}[3]    @{VM_NAMES}[3]    ${OS_COMPUTE_2_IP}    sg=${SECURITY_GROUP}
127     @{VM_IPS}    ${DHCP_IPS} =    OpenStackOperations.Get VM IPs    @{VM_NAMES}
128     BuiltIn.Set Suite Variable    @{VM_IPS}
129     BuiltIn.Should Not Contain    ${VM_IPS}    None
130     BuiltIn.Should Not Contain    ${DHCP_IPS}    None
131     ${net_id} =    OpenStackOperations.Get Net Id    @{NETWORKS}[0]
132     ${tenant_id} =    OpenStackOperations.Get Tenant ID From Network    ${net_id}
133     VpnOperations.VPN Create L3VPN    vpnid=@{VPN_INSTANCE_IDS}[0]    name=@{VPN_NAMES}[0]    rd=@{RD_LIST}[0]    exportrt=@{RD_LIST}[0]    importrt=@{RD_LIST}[0]    tenantid=${tenant_id}
134     : FOR    ${network}    IN    @{NETWORKS}
135     \    ${network_id} =    Get Net Id    ${network}
136     \    VpnOperations.Associate L3VPN To Network    networkid=${network_id}    vpnid=@{VPN_INSTANCE_IDS}[0]
137     ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=@{VPN_INSTANCE_IDS}[0]
138     BuiltIn.Log    ${resp}
139
140 Delete Basic Configuartion for BGP VPNservice Suite
141     [Documentation]    Delete basic configuration for BGP Vpnservice suite
142     : FOR    ${network}    IN    @{NETWORKS}
143     \    ${network_id} =    OpenStackOperations.Get Net Id    ${network}
144     \    VpnOperations.Dissociate L3VPN From Networks    networkid=${network_id}    vpnid=@{VPN_INSTANCE_IDS}[0]
145     VpnOperations.VPN Delete L3VPN    vpnid=@{VPN_INSTANCE_IDS}[0]
146     : FOR    ${vm}    IN    @{VM_NAMES}
147     \    OpenStackOperations.Delete Vm Instance    ${vm}
148     : FOR    ${port}    IN    @{PORTS}
149     \    OpenStackOperations.Delete Port    ${port}
150     : FOR    ${subnet}    IN    @{SUBNETS}
151     \    OpenStackOperations.Delete SubNet    ${subnet}
152     : FOR    ${network}    IN    @{NETWORKS}
153     \    OpenStackOperations.Delete Network    ${network}