L2Gw Test Cases Suite1
[integration/test.git] / csit / libraries / OpenStackOperations.robot
index bc8741ebba8583b157d7e1a37fffb0d3dfab5441..e680fbc13fa118128bc0546b952097fa9749c068 100644 (file)
@@ -3,6 +3,7 @@ Documentation     Openstack library. This library is useful for tests to create
 Library           SSHLibrary
 Resource          Netvirt.robot
 Resource          Utils.robot
+Resource          L2GatewayOperations.robot
 Resource          ../variables/Variables.robot
 
 *** Keywords ***
@@ -269,6 +270,8 @@ Verify VMs Received DHCP Lease
     \    ${dhcp_ip_line}=    Write Commands Until Prompt    nova console-log ${vm} | grep "^nameserver"    30s
     \    Log    ${dhcp_ip_line}
     \    @{dhcp_ip}    Get Regexp Matches    ${dhcp_ip_line}    [0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}
+    \    ${dhcp_ip_length}    Get Length    ${dhcp_ip}
+    \    Run Keyword If    ${dhcp_ip_length}<=0    Append To List    ${dhcp_ip}    None
     \    Log    ${dhcp_ip}
     ${dhcp_length}    Get Length    ${dhcp_ip}
     Return From Keyword If    ${dhcp_length}==0    ${ip_list}    ${EMPTY}
@@ -523,23 +526,22 @@ Get DumpFlows And Ovsconfig
     SSHLibrary.Open Connection    ${openstack_node_ip}    prompt=${DEFAULT_LINUX_PROMPT}
     Utils.Flexible SSH Login    ${OS_USER}    ${DEVSTACK_SYSTEM_PASSWORD}
     SSHLibrary.Set Client Configuration    timeout=${default_devstack_prompt_timeout}
-    Write Commands Until Expected Prompt    ip -o link    ]>
-    Write Commands Until Expected Prompt    ip -o addr    ]>
-    Write Commands Until Expected Prompt    ip route    ]>
-    Write Commands Until Expected Prompt    arp -an    ]>
-    ${nslist}=    Write Commands Until Expected Prompt    ip netns list | awk '{print $1}'    ]>
+    Write Commands Until Expected Prompt    ip -o link    ${DEFAULT_LINUX_PROMPT_STRICT}
+    Write Commands Until Expected Prompt    ip -o addr    ${DEFAULT_LINUX_PROMPT_STRICT}
+    Write Commands Until Expected Prompt    ip route    ${DEFAULT_LINUX_PROMPT_STRICT}
+    Write Commands Until Expected Prompt    arp -an    ${DEFAULT_LINUX_PROMPT_STRICT}
+    ${nslist}=    Write Commands Until Expected Prompt    ip netns list | awk '{print $1}'    ${DEFAULT_LINUX_PROMPT_STRICT}
     @{lines}    Split To Lines    ${nslist}
     : FOR    ${line}    IN    @{lines}
-    \    Write Commands Until Expected Prompt    sudo ip netns exec ${line} ip -o link    ]>
-    \    Write Commands Until Expected Prompt    sudo ip netns exec ${line} ip -o addr    ]>
-    \    Write Commands Until Expected Prompt    sudo ip netns exec ${line} ip route    ]>
-    Write Commands Until Expected Prompt    sudo ovs-vsctl show    ]>
-    Write Commands Until Expected Prompt    sudo ovs-vsctl list Open_vSwitch    ]>
-    Write Commands Until Expected Prompt    sudo ovs-ofctl show br-int -OOpenFlow13    ]>
-    Write Commands Until Expected Prompt    sudo ovs-ofctl dump-ports-desc br-int -OOpenFlow13    ]>
-    Write Commands Until Expected Prompt    sudo ovs-ofctl dump-flows br-int -OOpenFlow13    ]>
-    Write Commands Until Expected Prompt    sudo ovs-ofctl dump-groups br-int -OOpenFlow13    ]>
-    Write Commands Until Expected Prompt    sudo ovs-ofctl dump-group-stats br-int -OOpenFlow13    ]>
+    \    Write Commands Until Expected Prompt    sudo ip netns exec ${line} ip -o link    ${DEFAULT_LINUX_PROMPT_STRICT}
+    \    Write Commands Until Expected Prompt    sudo ip netns exec ${line} ip -o addr    ${DEFAULT_LINUX_PROMPT_STRICT}
+    \    Write Commands Until Expected Prompt    sudo ip netns exec ${line} ip route    ${DEFAULT_LINUX_PROMPT_STRICT}
+    Write Commands Until Expected Prompt    sudo ovs-vsctl show    ${DEFAULT_LINUX_PROMPT_STRICT}
+    Write Commands Until Expected Prompt    sudo ovs-vsctl list Open_vSwitch    ${DEFAULT_LINUX_PROMPT_STRICT}
+    Write Commands Until Expected Prompt    sudo ovs-ofctl show br-int -OOpenFlow13    ${DEFAULT_LINUX_PROMPT_STRICT}
+    Write Commands Until Expected Prompt    sudo ovs-ofctl dump-flows br-int -OOpenFlow13    ${DEFAULT_LINUX_PROMPT_STRICT}
+    Write Commands Until Expected Prompt    sudo ovs-ofctl dump-groups br-int -OOpenFlow13    ${DEFAULT_LINUX_PROMPT_STRICT}
+    Write Commands Until Expected Prompt    sudo ovs-ofctl dump-group-stats br-int -OOpenFlow13    ${DEFAULT_LINUX_PROMPT_STRICT}
 
 Get Karaf Log Type From Test Start
     [Arguments]    ${ip}    ${test_name}    ${type}    ${user}=${ODL_SYSTEM_USER}    ${password}=${ODL_SYSTEM_PASSWORD}    ${prompt}=${ODL_SYSTEM_PROMPT}
@@ -576,12 +578,6 @@ Get OvsDebugInfo
     Run Keyword If    2 < ${NUM_OS_SYSTEM}    Get DumpFlows And Ovsconfig    ${OS_COMPUTE_2_IP}
 
 Get Test Teardown Debugs
-    [Arguments]    ${test_name}=${TEST_NAME}
-    Get OvsDebugInfo
-    Get Model Dump    ${HA_PROXY_IP}
-    Get Karaf Log Events From Test Start    ${test_name}
-
-Get Test Teardown Debugs Allow Model Dump Failures
     [Arguments]    ${test_name}=${TEST_NAME}
     Get OvsDebugInfo
     Run Keyword And Ignore Error    Get Model Dump    ${HA_PROXY_IP}
@@ -742,10 +738,121 @@ Get Ports MacAddr
     Switch Connection    ${devstack_conn_id}
     ${MacAddr-list}    Create List
     : FOR    ${portName}    IN    @{portName_list}
-    \    ${output} =    Write Commands Until Prompt    neutron port-list | grep "${portName}" | awk '{print $6}'    30s
-    \    Log    ${output}
-    \    ${splitted_output}=    Split String    ${output}    ${EMPTY}
-    \    ${macAddr}=    Get from List    ${splitted_output}    0
-    \    Log    ${macAddr}
+    \    ${macAddr}=    OpenStackOperations.Get Port Mac    ${portName}    ${devstack_conn_id}
     \    Append To List    ${MacAddr-list}    ${macAddr}
     [Return]    ${MacAddr-list}
+
+Get Port Ip
+    [Arguments]    ${port_name}
+    [Documentation]    Keyword would return the IP of the ${port_name} received.
+    Switch Connection    ${devstack_conn_id}
+    ${output}=    Write Commands Until Prompt    neutron port-list | grep "${port_name}" | awk '{print $11}' | awk -F "\\"" '{print $2}'    30s
+    Log    ${output}
+    ${splitted_output}=    Split String    ${output}    ${EMPTY}
+    ${port_ip}=    Get from List    ${splitted_output}    0
+    Log    ${port_ip}
+    [Return]    ${port_ip}
+
+Get Port Mac
+    [Arguments]    ${port_name}    ${conn_id}=${devstack_conn_id}
+    [Documentation]    Keyword would return the MAC ID of the ${port_name} received.
+    Switch Connection    ${conn_id}
+    ${output}=    Write Commands Until Prompt    neutron port-list | grep "${port_name}" | awk '{print $6}'    30s
+    Log    ${output}
+    ${splitted_output}=    Split String    ${output}    ${EMPTY}
+    ${port_mac}=    Get from List    ${splitted_output}    0
+    Log    ${port_mac}
+    [Return]    ${port_mac}
+
+Create L2Gateway
+    [Arguments]    ${bridge_name}    ${intf_name}    ${gw_name}
+    [Documentation]    Keyword to create an L2 Gateway ${gw_name} for bridge ${bridge_name} connected to interface ${intf_name} (Using Neutron CLI).
+    Switch Connection    ${devstack_conn_id}
+    ${l2gw_output}=    Write Commands Until Prompt    ${L2GW_CREATE} name=${bridge_name},interface_names=${intf_name} ${gw_name}    30s
+    Log    ${l2gw_output}
+    [Return]    ${l2gw_output}
+
+Create L2Gateway Connection
+    [Arguments]    ${gw_name}    ${net_name}
+    [Documentation]    Keyword would create a new L2 Gateway Connection for ${gw_name} to ${net_name} (Using Neutron CLI).
+    Switch Connection    ${devstack_conn_id}
+    ${l2gw_output}=    Write Commands Until Prompt    ${L2GW_CONN_CREATE} ${gw_name} ${net_name}    30s
+    Log    ${l2gw_output}
+    [Return]    ${l2gw_output}
+
+Get All L2Gateway
+    [Documentation]    Keyword to return all the L2 Gateways available (Using Neutron CLI).
+    Switch Connection    ${devstack_conn_id}
+    ${output}=    Write Commands Until Prompt    ${L2GW_GET_YAML}    30s
+    [Return]    ${output}
+
+Get All L2Gateway Connection
+    [Documentation]    Keyword to return all the L2 Gateway connections available (Using Neutron CLI).
+    Switch Connection    ${devstack_conn_id}
+    ${output}=    Write Commands Until Prompt    ${L2GW_GET_CONN_YAML}    30s
+    [Return]    ${output}
+
+Get L2Gateway
+    [Arguments]    ${gw_id}
+    [Documentation]    Keyword to check if the ${gw_id} is available in the L2 Gateway list (Using Neutron CLI).
+    Switch Connection    ${devstack_conn_id}
+    ${output}=    Write Commands Until Prompt    ${L2GW_SHOW} ${gw_id}    30s
+    Log    ${output}
+    [Return]    ${output}
+
+Get L2gw Id
+    [Arguments]    ${l2gw_name}
+    [Documentation]    Keyword to retrieve the L2 Gateway ID for the ${l2gw_name} (Using Neutron CLI).
+    Switch Connection    ${devstack_conn_id}
+    ${output}=    Write Commands Until Prompt    ${L2GW_GET} | grep "${l2gw_name}" | awk '{print $2}'    30s
+    Log    ${output}
+    ${splitted_output}=    Split String    ${output}    ${EMPTY}
+    ${l2gw_id}=    Get from List    ${splitted_output}    0
+    Log    ${l2gw_id}
+    [Return]    ${l2gw_id}
+
+Get L2gw Connection Id
+    [Arguments]    ${l2gw_name}
+    [Documentation]    Keyword to retrieve the L2 Gateway Connection ID for the ${l2gw_name} (Using Neutron CLI).
+    Switch Connection    ${devstack_conn_id}
+    ${l2gw_id}=    OpenStackOperations.Get L2gw Id    ${l2gw_name}
+    ${output}=    Write Commands Until Prompt    ${L2GW_GET_CONN} | grep "${l2gw_id}" | awk '{print $2}'    30s
+    Log    ${output}
+    ${splitted_output}=    Split String    ${output}    ${EMPTY}
+    ${l2gw_conn_id}=    Get from List    ${splitted_output}    0
+    Log    ${l2gw_conn_id}
+    [Return]    ${l2gw_conn_id}
+
+Neutron Port List Rest
+    [Documentation]    Keyword to get all ports details in Neutron (Using REST).
+    ${resp} =    RequestsLibrary.Get Request    session    ${PORT_URL}
+    Log    ${resp.content}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    [Return]    ${resp.content}
+
+Get Neutron Port Rest
+    [Arguments]    ${port_id}
+    [Documentation]    Keyword to get the specific port details in Neutron (Using REST).
+    ${resp} =    RequestsLibrary.Get Request    session    ${CONFIG_API}/${GET_PORT_URL}/${port_id}
+    Log    ${resp.content}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    [Return]    ${resp.content}
+
+Update Port Rest
+    [Arguments]    ${port_id}    ${json_data}
+    [Documentation]    Keyword to update ${port_id} with json data received in ${json_data} (Using REST).
+    Log    ${json_data}
+    ${resp} =    RequestsLibrary.Put Request    session    ${CONFIG_API}/${GET_PORT_URL}/${port_id}    ${json_data}
+    Log    ${resp.content}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    [Return]    ${resp.content}
+
+Create And Configure Security Group
+    [Arguments]    ${sg-name}
+    Neutron Security Group Create    ${sg-name}
+    Neutron Security Group Rule Create    ${sg-name}    direction=ingress    port_range_max=65535    port_range_min=1    protocol=tcp    remote_ip_prefix=0.0.0.0/0
+    Neutron Security Group Rule Create    ${sg-name}    direction=egress    port_range_max=65535    port_range_min=1    protocol=tcp    remote_ip_prefix=0.0.0.0/0
+    Neutron Security Group Rule Create    ${sg-name}    direction=ingress    protocol=icmp    remote_ip_prefix=0.0.0.0/0
+    Neutron Security Group Rule Create    ${sg-name}    direction=egress    protocol=icmp    remote_ip_prefix=0.0.0.0/0
+    Neutron Security Group Rule Create    ${sg-name}    direction=ingress    port_range_max=65535    port_range_min=1    protocol=udp    remote_ip_prefix=0.0.0.0/0
+    Neutron Security Group Rule Create    ${sg-name}    direction=egress    port_range_max=65535    port_range_min=1    protocol=udp    remote_ip_prefix=0.0.0.0/0