Use consistent naming in vpn bgp suite
[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     SetupUtils.Setup_Utils_For_Setup_And_Teardown
100     DevstackUtils.Devstack Suite Setup
101     OpenStackOperations.Create And Configure Security Group    ${SECURITY_GROUP}
102     BgpOperations.Start Quagga Processes On ODL    ${ODL_SYSTEM_IP}
103     BgpOperations.Start Quagga Processes On DCGW    ${DCGW_SYSTEM_IP}
104     BgpOperations.Create Basic Configuartion for BGP VPNservice Suite
105
106 BGP Vpnservice Suite Teardown
107     BgpOperations.Delete Basic Configuartion for BGP VPNservice Suite
108     OpenStackOperations.Delete SecurityGroup    ${SECURITY_GROUP}
109     SSHLibrary.Close All Connections
110
111 Create Basic Configuartion for BGP VPNservice Suite
112     [Documentation]    Create basic configuration for BGP VPNservice suite
113     BgpOperations.Start Quagga Processes On ODL    ${ODL_SYSTEM_IP}
114     : FOR    ${network}    IN    @{NETWORKS}
115     \    OpenStackOperations.Create Network    ${network}
116     BuiltIn.Wait Until Keyword Succeeds    3s    1s    Utils.Check For Elements At URI    ${NETWORK_URL}    ${NETWORKS}
117     ${length} =    BuiltIn.Get Length    ${SUBNETS}
118     : FOR    ${idx}    IN RANGE    ${length}
119     \    OpenStackOperations.Create SubNet    ${NETWORKS[${idx}]}    ${SUBNETS[${idx}]}    @{SUBNET_CIDR}[${idx}]
120     BuiltIn.Wait Until Keyword Succeeds    3s    1s    Utils.Check For Elements At URI    ${SUBNETWORK_URL}    ${SUBNETS}
121     : FOR    ${network}    ${port}    IN ZIP    ${NETWORKS}    ${PORTS}
122     \    OpenStackOperations.Create Port    ${network}    ${port}    sg=${SECURITY_GROUP}
123     BuiltIn.Wait Until Keyword Succeeds    3s    1s    Utils.Check For Elements At URI    ${PORT_URL}    ${PORTS}
124     OpenStackOperations.Create Vm Instance With Port On Compute Node    @{PORTS}[0]    @{VM_NAMES}[0]    ${OS_COMPUTE_1_IP}    sg=${SECURITY_GROUP}
125     OpenStackOperations.Create Vm Instance With Port On Compute Node    @{PORTS}[1]    @{VM_NAMES}[1]    ${OS_COMPUTE_1_IP}    sg=${SECURITY_GROUP}
126     OpenStackOperations.Create Vm Instance With Port On Compute Node    @{PORTS}[2]    @{VM_NAMES}[2]    ${OS_COMPUTE_2_IP}    sg=${SECURITY_GROUP}
127     OpenStackOperations.Create Vm Instance With Port On Compute Node    @{PORTS}[3]    @{VM_NAMES}[3]    ${OS_COMPUTE_2_IP}    sg=${SECURITY_GROUP}
128     @{VM_IPS}    ${DHCP_IPS} =    OpenStackOperations.Get VM IPs    @{VM_NAMES}
129     BuiltIn.Set Suite Variable    @{VM_IPS}
130     BuiltIn.Should Not Contain    ${VM_IPS}    None
131     BuiltIn.Should Not Contain    ${DHCP_IPS}    None
132     ${net_id} =    OpenStackOperations.Get Net Id    @{NETWORKS}[0]    ${devstack_conn_id}
133     ${tenant_id} =    OpenStackOperations.Get Tenant ID From Network    ${net_id}
134     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}
135     : FOR    ${network}    IN    @{NETWORKS}
136     \    ${network_id} =    Get Net Id    ${network}    ${devstack_conn_id}
137     \    VpnOperations.Associate L3VPN To Network    networkid=${network_id}    vpnid=@{VPN_INSTANCE_IDS}[0]
138     ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=@{VPN_INSTANCE_IDS}[0]
139     BuiltIn.Log    ${resp}
140
141 Delete Basic Configuartion for BGP VPNservice Suite
142     [Documentation]    Delete basic configuration for BGP Vpnservice suite
143     : FOR    ${network}    IN    @{NETWORKS}
144     \    ${network_id} =    OpenStackOperations.Get Net Id    ${network}    ${devstack_conn_id}
145     \    VpnOperations.Dissociate L3VPN From Networks    networkid=${network_id}    vpnid=@{VPN_INSTANCE_IDS}[0]
146     VpnOperations.VPN Delete L3VPN    vpnid=@{VPN_INSTANCE_IDS}[0]
147     : FOR    ${vm}    IN    @{VM_NAMES}
148     \    OpenStackOperations.Delete Vm Instance    ${vm}
149     : FOR    ${port}    IN    @{PORTS}
150     \    OpenStackOperations.Delete Port    ${port}
151     : FOR    ${subnet}    IN    @{SUBNETS}
152     \    OpenStackOperations.Delete SubNet    ${subnet}
153     : FOR    ${network}    IN    @{NETWORKS}
154     \    OpenStackOperations.Delete Network    ${network}