Single Node Odl Tempest Job Tests 34/35534/17
authorpriya.ramasubbu <priya.ramasubbu@hcl.com>
Mon, 29 Feb 2016 13:13:40 +0000 (18:43 +0530)
committerGerrit Code Review <gerrit@opendaylight.org>
Thu, 24 Mar 2016 05:19:29 +0000 (05:19 +0000)
    * Create two networks, two subnets and router
    * Verify dhcp, gateway and instance ips in the dump flow

Change-Id: I714ccaf83d52aea7a8494a0c10efc5c3a4e83a48
Signed-off-by: priya.ramasubbu <priya.ramasubbu@hcl.com>
csit/libraries/DevstackUtils.robot [new file with mode: 0644]
csit/libraries/OpenStackOperations.robot [new file with mode: 0644]
csit/suites/ovsdb/Devstack_Tempest_Tests/01__single_node_devstack_tempest_tests.robot

diff --git a/csit/libraries/DevstackUtils.robot b/csit/libraries/DevstackUtils.robot
new file mode 100644 (file)
index 0000000..f2bf76a
--- /dev/null
@@ -0,0 +1,115 @@
+*** Settings ***
+Documentation     General Utils library. This library has broad scope, it can be used by any robot system tests.
+Library           SSHLibrary
+Library           String
+Library           DateTime
+Library           Process
+Library           Collections
+Library           RequestsLibrary
+Library           ./UtilLibrary.py
+Resource          KarafKeywords.robot
+Variables         ../variables/Variables.py
+
+*** Variables ***
+${ODL_VERSION}    lithium-SR3
+${OPENSTACK_BRANCH}    stable/liberty
+${NETWORKING-ODL_BRANCH}    ${OPENSTACK_BRANCH}
+${TEMPEST_REGEX}    tempest.api.network
+${ODL_BOOT_WAIT_URL}    restconf/operational/network-topology:network-topology/topology/netvirt:1
+${default_devstack_prompt_timeout}    10s
+${devstack_workspace}    ~/ds_workspace
+${DEVSTACK_SYSTEM_PASSWORD}    \    # set to empty, but provide for others to override if desired
+${CLEAN_DEVSTACK_HOST}    False
+
+*** Keywords ***
+Run Tempest Tests
+    [Arguments]    ${tempest_regex}    ${timeout}=600s
+    Write Commands Until Prompt    cd /opt/stack/new/tempest
+    Write Commands Until Prompt    sudo rm -rf /opt/stack/new/tempest/.testrepository
+    Write Commands Until Prompt    sudo testr init
+    ${results}=    Write Commands Until Prompt    sudo -E testr run ${tempest_regex} --subunit | subunit-trace --no-failure-debug -f    timeout=${timeout}
+    Should Contain    ${results}    Failed: 0
+    # TODO: also need to verify some non-zero pass count as well as other results are ok (e.g. skipped, etc)
+
+Devstack Suite Setup
+    SSHLibrary.Open Connection    ${DEVSTACK_SYSTEM_IP}    prompt=${DEFAULT_LINUX_PROMPT}
+    Utils.Flexible SSH Login    ${DEVSTACK_SYSTEM_USER}    ${DEVSTACK_SYSTEM_PASSWORD}
+    SSHLibrary.Set Client Configuration    timeout=${default_devstack_prompt_timeout}
+    Run Keyword If    ${CLEAN_DEVSTACK_HOST}    Clean DevStack Host In Case It Is Not Sterile
+    Write Commands Until Prompt    export PATH=$PATH:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/sbin
+    Write Commands Until Prompt    export ODL_VERSION=${ODL_VERSION}
+    Write Commands Until Prompt    export OPENSTACK_BRANCH=${OPENSTACK_BRANCH}
+    Write Commands Until Prompt    export TEMPEST_REGEX=${TEMPEST_REGEX}
+    Write Commands Until Prompt    export ODL_BOOT_WAIT_URL=${ODL_BOOT_WAIT_URL}
+    ${odl_version_to_install}=    Get Networking ODL Version Of Release    ${ODL_VERSION}
+    Write Commands Until Prompt    export DEVSTACK_LOCAL_CONFIG="enable_plugin networking-odl https://git.openstack.org/openstack/networking-odl ${NETWORKING-ODL_BRANCH};"
+    Write Commands Until Prompt    export DEVSTACK_LOCAL_CONFIG+="ODL_NETVIRT_DEBUG_LOGS=True;ODL_RELEASE=${odl_version_to_install};"
+    Write Commands Until Prompt    echo $DEVSTACK_LOCAL_CONFIG
+    Write Commands Until Prompt    export OVERRIDE_ZUUL_BRANCH=${OPENSTACK_BRANCH}
+    Write Commands Until Prompt    export PYTHONUNBUFFERED=true
+    Write Commands Until Prompt    export DEVSTACK_GATE_TIMEOUT=120
+    Write Commands Until Prompt    export DEVSTACK_GATE_TEMPEST=1
+    Write Commands Until Prompt    export DEVSTACK_GATE_NEUTRON=1
+    Write Commands Until Prompt    export KEEP_LOCALRC=1
+    Write Commands Until Prompt    export PROJECTS="openstack/networking-odl $PROJECTS"
+    Write Commands Until Prompt    export DEVSTACK_GATE_TEMPEST_REGEX=tempest.api.network.test_ports.PortsTestJSON.test_show_port
+    Write Commands Until Prompt    sudo yum -y install redhat-lsb-core indent python-testrepository    timeout=120s
+    Write Commands Until Prompt    sudo /usr/sbin/groupadd ${DEVSTACK_SYSTEM_USER}
+    Write Commands Until Prompt    sudo mkdir -p /opt/stack/new
+    Write Commands Until Prompt    sudo chown -R ${DEVSTACK_SYSTEM_USER}:${DEVSTACK_SYSTEM_USER} /opt/stack/new
+    Write Commands Until Prompt    sudo bash -c 'echo "stack ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers'
+    Write Commands Until Prompt    sudo mkdir -p /usr/local/${DEVSTACK_SYSTEM_USER}/slave_scripts
+    Write Commands Until Prompt    git clone https://github.com/openstack/os-testr.git    timeout=30s
+    Write Commands Until Prompt    cd os-testr/os_testr
+    Write Commands Until Prompt    sudo cp subunit2html.py /usr/local/${DEVSTACK_SYSTEM_USER}/slave_scripts
+    Write Commands Until Prompt    mkdir -p ${devstack_workspace}
+    Write Commands Until Prompt    cd ${devstack_workspace}
+    Write Commands Until Prompt    export WORKSPACE=${devstack_workspace}
+    Write Commands Until Prompt    rm -rf devstack-gate
+    Write Commands Until Prompt    git clone https://git.openstack.org/openstack-infra/devstack-gate    timeout=30s
+
+Clean DevStack Host In Case It Is Not Sterile
+    [Documentation]    In upstream CI, the expectation is that the devstack VM is fresh, sterile and ready
+    ...    for any version of devstack, networking-odl, and OpenDaylight. During local test development,
+    ...    it can be faster to just clean the needed packages, configurations, repos, files, etc. instead of
+    ...    spinning up a new system. This keyword serves as a living list of those items needed to prep a
+    ...    potentially non-sterile devstack system.
+    Write Commands Until Prompt    pgrep python | awk '{print "sudo kill",$1}' | sh
+    Write Commands Until Prompt    pgrep java | awk '{print "sudo kill",$1}' | sh
+    Write Commands Until Prompt    rpm -qa | grep rdo
+    Write Commands Until Prompt    sudo rpm -e $(sudo rpm -qa | grep rdo)
+    Write Commands Until Prompt    sudo yum remove -y pyOpenSSL
+    Write Commands Until Prompt    sudo -H pip uninstall -y virtualenv
+    Write Commands Until Prompt    sudo rm -rf /tmp/ansible /opt/stack
+    Write Commands Until Prompt    rm -rf ${devstack_workspace} ~/os-testr
+    Write Commands Until Prompt    sudo ovs-vsctl del-br br-ex
+    Write Commands Until Prompt    sudo ovs-vsctl del-br br-int
+    Write Commands Until Prompt    sudo ovs-vsctl del-manager
+
+Write Commands Until Prompt
+    [Arguments]    ${cmd}    ${timeout}=${default_devstack_prompt_timeout}
+    [Documentation]    quick wrapper for Write and Read Until Prompt Keywords to make test cases more readable
+    SSHLibrary.Set Client Configuration    timeout=${timeout}
+    SSHLibrary.Write    ${cmd}
+    ${output}=    SSHLibrary.Read Until Prompt
+    [Return]    ${output}
+
+Get Networking ODL Version Of Release
+    [Arguments]    ${version}
+    # once Beryllium SR1 goes out, we can change beryllium-latest to use 0.4.2
+    Return From Keyword If    "${version}" == "beryllium-latest"    beryllium-snapshot-0.4.1
+    Return From Keyword If    "${version}" == "beryllium-SR1"    beryllium-snapshot-0.4.1
+    Return From Keyword If    "${version}" == "beryllium"    beryllium-snapshot-0.4.0
+    Return From Keyword If    "${version}" == "lithium-latest"    lithium-snapshot-0.3.5
+    Return From Keyword If    "${version}" == "lithium-SR4"    lithium-snapshot-0.3.4
+    Return From Keyword If    "${version}" == "lithium-SR3"    lithium-snapshot-0.3.3
+    Return From Keyword If    "${version}" == "lithium-SR2"    lithium-snapshot-0.3.2
+    Return From Keyword If    "${version}" == "lithium-SR1"    lithium-snapshot-0.3.1
+    # FYI networking-odl no longer has this for some reason.
+    Return From Keyword If    "${version}" == "lithium"    lithium-snapshot-0.3.0
+    Return From Keyword If    "${version}" == "helium"    helium
+
+Show Devstack Debugs
+    Write Commands Until Prompt    gunzip /opt/stack/logs/devstacklog.txt.gz
+    Write Commands Until Prompt    tail -n2000 /opt/stack/logs/devstacklog.txt    timeout=600s
+    Write Commands Until Prompt    grep 'distribution-karaf.*zip' /opt/stack/logs/devstacklog.txt
diff --git a/csit/libraries/OpenStackOperations.robot b/csit/libraries/OpenStackOperations.robot
new file mode 100644 (file)
index 0000000..9d29acf
--- /dev/null
@@ -0,0 +1,112 @@
+*** Settings ***
+Documentation     Netvirt library. This library is useful for tests to create network, subnet, router and vm instances
+Library           SSHLibrary
+Resource          Utils.robot
+Variables         ../variables/Variables.py
+
+*** Keywords ***
+Create Network
+    [Arguments]    ${network_name}
+    [Documentation]    Create Network with neutron request.
+    ${output}=    Write Commands Until Prompt    cd /opt/stack/new/devstack && cat localrc
+    Log    ${output}
+    ${output}=    Write Commands Until Prompt    source openrc admin admin
+    Log    ${output}
+    ${output}=    Write Commands Until Prompt    neutron -v net-create ${network_name}
+    Log    ${output}
+    Should Contain    ${output}    Created a new network
+
+Delete Network
+    [Arguments]    ${network_name}
+    [Documentation]    Delete Network with neutron request.
+    ${output}=    Write Commands Until Prompt    neutron -v net-delete ${network_name}
+    Log    ${output}
+    Should Contain    ${output}    Deleted network: ${network_name}
+
+Create SubNet
+    [Arguments]    ${network_name}
+    [Documentation]    Create SubNet for the Network with neutron request.
+    ${subnet}=    Set Variable If    "${network_name}"=="net1_network"    subnet1    subnet2
+    ${range_ip}=    Set Variable If    "${network_name}"=="net1_network"    10.0.0.0/24    20.0.0.0/24
+    ${output}=    Write Commands Until Prompt    neutron -v subnet-create ${network_name} ${range_ip} --name ${subnet}
+    Log    ${output}
+    Should Contain    ${output}    Created a new subnet
+
+Verify Gateway Ips
+    [Documentation]    Verifies the Gateway Ips with dump flow.
+    ${output}=   Write Commands Until Prompt     sudo ovs-ofctl -O OpenFlow13 dump-flows br-int
+    Log    ${output}
+    : FOR    ${GatewayIpElement}    IN    @{GATEWAY_IPS}
+    \    Should Contain    ${output}    ${GatewayIpElement}
+
+Verify Dhcp Ips
+    [Documentation]    Verifies the Dhcp Ips with dump flow.
+    ${output}=   Write Commands Until Prompt     sudo ovs-ofctl -O OpenFlow13 dump-flows br-int
+    Log    ${output}
+    : FOR    ${DhcpIpElement}    IN    @{DHCP_IPS}
+    \    Should Contain    ${output}    ${DhcpIpElement}
+
+Verify No Dhcp Ips
+    [Documentation]    Verifies the Dhcp Ips with dump flow.
+    ${output}=   Write Commands Until Prompt     sudo ovs-ofctl -O OpenFlow13 dump-flows br-int
+    Log    ${output}
+    : FOR    ${DhcpIpElement}    IN    @{DHCP_IPS}
+    \    Should Not Contain    ${output}    ${DhcpIpElement}
+
+Delete SubNet
+    [Arguments]    ${network_name}
+    [Documentation]    Delete SubNet for the Network with neutron request.
+    ${subnet}=    Set Variable If    "${network_name}"=="net1_network"    subnet1    subnet2
+    ${output}=    Write Commands Until Prompt    neutron -v subnet-delete ${subnet}
+    Log    ${output}
+    Should Contain    ${output}    Deleted subnet: ${subnet}
+
+Verify No Gateway Ips
+    [Documentation]    Verifies the Gateway Ips removed with dump flow.
+    ${output}=   Write Commands Until Prompt     sudo ovs-ofctl -O OpenFlow13 dump-flows br-int
+    Log    ${output}
+    : FOR    ${GatewayIpElement}    IN    @{GATEWAY_IPS}
+    \    Should Not Contain    ${output}    ${GatewayIpElement}
+
+Create Vm Instance
+    [Arguments]    ${net_id}    ${network_name}
+    [Documentation]    Create Vm Instance with the net id of the Netowrk.
+    ${VmElement}=    Set Variable If    "${network_name}"=="net1_network"    MyFirstInstance    MySecondInstance
+    ${output}=    Write Commands Until Prompt     nova boot --image cirros-0.3.4-x86_64-uec --flavor m1.tiny --nic net-id=${net_id} ${VmElement}
+    Log    ${output}
+
+Delete Vm Instance
+    [Arguments]    ${vm_name}
+    [Documentation]    Delete Vm instances using instance names.
+    ${output}=   Write Commands Until Prompt     nova delete ${vm_name}
+    Log    ${output}
+
+Get Net Id
+    [Arguments]    ${network_name}
+    [Documentation]    Retrieve the net id for the given network name to create specific vm instance
+    ${output}=   Write Commands Until Prompt    neutron net-list | grep "${network_name}" | get_field 1
+    Log    ${output}
+    ${splitted_output}=    Split String    ${output}    \
+    ${net_id}=    Get from List    ${splitted_output}    0
+    Log    ${net_id}
+    [Return]    ${net_id}
+
+Create Router
+    [Documentation]    Create Router and Add Interface to the subnets.
+    ${output}=   Write Commands Until Prompt     neutron -v router-create router_1
+    Log    ${output}
+    : FOR    ${SubnetElement}    IN    @{SUBNETS_NAME}
+    \    ${output}=   Write Commands Until Prompt     neutron -v router-interface-add router_1 ${SubnetElement}
+    Log    ${output}
+
+Remove Interface
+    [Documentation]    Remove Interface to the subnets.
+    : FOR    ${SubnetElement}    IN    @{SUBNETS_NAME}
+    \    ${output}=   Write Commands Until Prompt     neutron -v router-interface-delete router_1 ${SubnetElement}
+    \    Log    ${output}
+
+Delete Router
+    [Documentation]    Delete Router and Interface to the subnets.
+    ${output}=   Write Commands Until Prompt     neutron -v router-delete router_1
+    Log    ${output}
+
index ca3a0c537d34bf27e4b530925d9502efe3e98bb4..980fed3f64d3237d0b2339182e0d6a401f0632fd 100644 (file)
@@ -5,17 +5,16 @@ Library           SSHLibrary
 Library           OperatingSystem
 Library           RequestsLibrary
 Resource          ../../../libraries/Utils.robot
+Resource          ../../../libraries/OpenStackOperations.robot
+Resource          ../../../libraries/DevstackUtils.robot
 
 *** Variables ***
-${ODL_VERSION}    lithium-SR3
-${OPENSTACK_BRANCH}    stable/liberty
-${NETWORKING-ODL_BRANCH}    ${OPENSTACK_BRANCH}
-${TEMPEST_REGEX}    tempest.api.network
-${ODL_BOOT_WAIT_URL}    restconf/operational/network-topology:network-topology/topology/netvirt:1
-${default_devstack_prompt_timeout}    10s
-${devstack_workspace}    ~/ds_workspace
-${DEVSTACK_SYSTEM_PASSWORD}    \    # set to empty, but provide for others to override if desired
-${CLEAN_DEVSTACK_HOST}    False
+@{NETWORKS_NAME}    net1_network    net2_network
+@{SUBNETS_NAME}    subnet1    subnet2
+@{VM_INSTANCES_NAME}    MyFirstInstance    MySecondInstance
+@{VM_IPS}    10.0.0.3    20.0.0.3
+@{GATEWAY_IPS}    10.0.0.1    20.0.0.1
+@{DHCP_IPS}    10.0.0.2    20.0.0.2
 
 *** Test Cases ***
 Run Devstack Gate Wrapper
@@ -38,98 +37,107 @@ Validate Neutron and Networking-ODL Versions
 tempest.api.network
     Run Tempest Tests    ${TEST_NAME}
 
-tempest
-    [Tags]    exclude
-    Run Tempest Tests    ${TEST_NAME}    900s
-
-*** Keywords ***
-Run Tempest Tests
-    [Arguments]    ${tempest_regex}    ${timeout}=600s
-    Write Commands Until Prompt    cd /opt/stack/new/tempest
-    Write Commands Until Prompt    sudo rm -rf /opt/stack/new/tempest/.testrepository
-    Write Commands Until Prompt    sudo testr init
-    ${results}=    Write Commands Until Prompt    sudo -E testr run ${tempest_regex} --subunit | subunit-trace --no-failure-debug -f    timeout=${timeout}
-    Should Contain    ${results}    Failed: 0
-    # TODO: also need to verify some non-zero pass count as well as other results are ok (e.g. skipped, etc)
-
-Devstack Suite Setup
-    SSHLibrary.Open Connection    ${DEVSTACK_SYSTEM_IP}    prompt=${DEFAULT_LINUX_PROMPT}
-    Utils.Flexible SSH Login    ${DEVSTACK_SYSTEM_USER}    ${DEVSTACK_SYSTEM_PASSWORD}
-    SSHLibrary.Set Client Configuration    timeout=${default_devstack_prompt_timeout}
-    Run Keyword If    ${CLEAN_DEVSTACK_HOST}    Clean DevStack Host In Case It Is Not Sterile
-    Write Commands Until Prompt    export PATH=$PATH:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/sbin
-    Write Commands Until Prompt    export ODL_VERSION=${ODL_VERSION}
-    Write Commands Until Prompt    export OPENSTACK_BRANCH=${OPENSTACK_BRANCH}
-    Write Commands Until Prompt    export TEMPEST_REGEX=${TEMPEST_REGEX}
-    Write Commands Until Prompt    export ODL_BOOT_WAIT_URL=${ODL_BOOT_WAIT_URL}
-    ${odl_version_to_install}=    Get Networking ODL Version Of Release    ${ODL_VERSION}
-    Write Commands Until Prompt    export DEVSTACK_LOCAL_CONFIG="enable_plugin networking-odl https://git.openstack.org/openstack/networking-odl ${NETWORKING-ODL_BRANCH};"
-    Write Commands Until Prompt    export DEVSTACK_LOCAL_CONFIG+="ODL_NETVIRT_DEBUG_LOGS=True;ODL_RELEASE=${odl_version_to_install};"
-    Write Commands Until Prompt    echo $DEVSTACK_LOCAL_CONFIG
-    Write Commands Until Prompt    export OVERRIDE_ZUUL_BRANCH=${OPENSTACK_BRANCH}
-    Write Commands Until Prompt    export PYTHONUNBUFFERED=true
-    Write Commands Until Prompt    export DEVSTACK_GATE_TIMEOUT=120
-    Write Commands Until Prompt    export DEVSTACK_GATE_TEMPEST=1
-    Write Commands Until Prompt    export DEVSTACK_GATE_NEUTRON=1
-    Write Commands Until Prompt    export KEEP_LOCALRC=1
-    Write Commands Until Prompt    export PROJECTS="openstack/networking-odl $PROJECTS"
-    Write Commands Until Prompt    export DEVSTACK_GATE_TEMPEST_REGEX=tempest.api.network.test_ports.PortsTestJSON.test_show_port
-    Write Commands Until Prompt    sudo yum -y install redhat-lsb-core indent python-testrepository    timeout=120s
-    Write Commands Until Prompt    sudo /usr/sbin/groupadd ${DEVSTACK_SYSTEM_USER}
-    Write Commands Until Prompt    sudo mkdir -p /opt/stack/new
-    Write Commands Until Prompt    sudo chown -R ${DEVSTACK_SYSTEM_USER}:${DEVSTACK_SYSTEM_USER} /opt/stack/new
-    Write Commands Until Prompt    sudo bash -c 'echo "stack ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers'
-    Write Commands Until Prompt    sudo mkdir -p /usr/local/${DEVSTACK_SYSTEM_USER}/slave_scripts
-    Write Commands Until Prompt    git clone https://github.com/openstack/os-testr.git    timeout=30s
-    Write Commands Until Prompt    cd os-testr/os_testr
-    Write Commands Until Prompt    sudo cp subunit2html.py /usr/local/${DEVSTACK_SYSTEM_USER}/slave_scripts
-    Write Commands Until Prompt    mkdir -p ${devstack_workspace}
-    Write Commands Until Prompt    cd ${devstack_workspace}
-    Write Commands Until Prompt    export WORKSPACE=${devstack_workspace}
-    Write Commands Until Prompt    rm -rf devstack-gate
-    Write Commands Until Prompt    git clone https://git.openstack.org/openstack-infra/devstack-gate    timeout=30s
-
-Clean DevStack Host In Case It Is Not Sterile
-    [Documentation]    In upstream CI, the expectation is that the devstack VM is fresh, sterile and ready
-    ...    for any version of devstack, networking-odl, and OpenDaylight. During local test development,
-    ...    it can be faster to just clean the needed packages, configurations, repos, files, etc. instead of
-    ...    spinning up a new system. This keyword serves as a living list of those items needed to prep a
-    ...    potentially non-sterile devstack system.
-    Write Commands Until Prompt    pgrep python | awk '{print "sudo kill",$1}' | sh
-    Write Commands Until Prompt    pgrep java | awk '{print "sudo kill",$1}' | sh
-    Write Commands Until Prompt    rpm -qa | grep rdo
-    Write Commands Until Prompt    sudo rpm -e $(sudo rpm -qa | grep rdo)
-    Write Commands Until Prompt    sudo yum remove -y pyOpenSSL
-    Write Commands Until Prompt    sudo -H pip uninstall -y virtualenv
-    Write Commands Until Prompt    sudo rm -rf /tmp/ansible /opt/stack
-    Write Commands Until Prompt    rm -rf ${devstack_workspace} ~/os-testr
-    Write Commands Until Prompt    sudo ovs-vsctl del-br br-ex
-    Write Commands Until Prompt    sudo ovs-vsctl del-br br-int
-    Write Commands Until Prompt    sudo ovs-vsctl del-manager
-
-Write Commands Until Prompt
-    [Arguments]    ${cmd}    ${timeout}=${default_devstack_prompt_timeout}
-    [Documentation]    quick wrapper for Write and Read Until Prompt Keywords to make test cases more readable
-    SSHLibrary.Set Client Configuration    timeout=${timeout}
-    SSHLibrary.Write    ${cmd}
-    ${output}=    SSHLibrary.Read Until Prompt
-    [Return]    ${output}
-
-Get Networking ODL Version Of Release
-    [Arguments]    ${version}
-    # once Beryllium SR1 goes out, we can change beryllium-latest to use 0.4.2
-    Return From Keyword If    "${version}" == "beryllium-latest"    beryllium-snapshot-0.4.1
-    Return From Keyword If    "${version}" == "beryllium-SR1"    beryllium-snapshot-0.4.1
-    Return From Keyword If    "${version}" == "beryllium"    beryllium-snapshot-0.4.0
-    Return From Keyword If    "${version}" == "lithium-latest"    lithium-snapshot-0.3.5
-    Return From Keyword If    "${version}" == "lithium-SR4"    lithium-snapshot-0.3.4
-    Return From Keyword If    "${version}" == "lithium-SR3"    lithium-snapshot-0.3.3
-    Return From Keyword If    "${version}" == "lithium-SR2"    lithium-snapshot-0.3.2
-    Return From Keyword If    "${version}" == "lithium-SR1"    lithium-snapshot-0.3.1
-    # FYI networking-odl no longer has this for some reason.
-    Return From Keyword If    "${version}" == "lithium"    lithium-snapshot-0.3.0
-    Return From Keyword If    "${version}" == "helium"    helium
-
-Show Devstack Debugs
-    Write Commands Until Prompt    gunzip /opt/stack/logs/devstacklog.txt.gz
-    Write Commands Until Prompt    tail -n1000 /opt/stack/logs/devstacklog.txt    timeout=600s
+Create Networks
+    [Documentation]    Create Network with neutron request.
+    : FOR    ${NetworkElement}    IN    @{NETWORKS_NAME}
+    \    Create Network    ${NetworkElement}
+
+Create Subnets
+    [Documentation]    Create Sub Nets for the Networks with neutron request.
+    : FOR    ${NetworkElement}    IN    @{NETWORKS_NAME}
+    \    Create SubNet    ${NetworkElement}
+
+List Ports
+    ${output}=   Write Commands Until Prompt     neutron -v port-list
+    Log    ${output}
+
+List Available Networks
+    ${output}=   Write Commands Until Prompt     neutron -v net-list
+    Log    ${output}
+
+List Tenants
+    ${output}=   Write Commands Until Prompt     keystone tenant-list
+    Log    ${output}
+
+List Nova
+    ${output}=   Write Commands Until Prompt     nova list
+    Log    ${output}
+
+List Nova Images
+    ${output}=   Write Commands Until Prompt     nova image-list
+    Log    ${output}
+
+List Nova Flavor
+    ${output}=   Write Commands Until Prompt     nova flavor-list
+    Log    ${output}
+
+Create Vm Instances
+    [Documentation]    Create Vm instances using flavor and image names.
+    : FOR    ${NetworkElement}    IN    @{NETWORKS_NAME}
+    \    ${net_id}=    Get Net Id    ${NetworkElement}
+    \    Create Vm Instance    ${net_id}    ${NetworkElement}
+
+Show Details of Created Vm Instance
+    [Documentation]    View Details of the created vm instances using nova show.
+    : FOR    ${VmElement}    IN    @{VM_INSTANCES_NAME}
+    \    ${output}=   Write Commands Until Prompt     nova show ${VmElement}
+    \    Log    ${output}
+
+Verify Created Vm Instance In Dump Flow
+    [Documentation]    Verify the existence of the created vm instance ips in the dump flow.
+    ${output}=   Write Commands Until Prompt     sudo ovs-ofctl -O OpenFlow13 dump-flows br-int
+    Log    ${output}
+    : FOR    ${VmIpElement}    IN    @{VM_IPS}
+    \    Should Contain    ${output}    ${VmIpElement}
+
+Create Routers
+    [Documentation]    Create Router and Add Interface to the subnets.
+    Create Router
+
+Verify Gateway Ip After Interface Added
+    [Documentation]    Verify the existence of the gateway ips with the dump flow in Beryllium.
+    Run Keyword If    "${ODL_VERSION}" == "lithium-latest"    Run Keyword And Ignore Error    Verify Gateway Ips
+    ...    ELSE IF    "${ODL_VERSION}" != "lithium-latest"    Verify Gateway Ips
+
+Verify Dhcp Flow Entries
+    [Documentation]    Verify Created SubNets for the Networks with the dump flow in Beryllium.
+    Run Keyword If    "${ODL_VERSION}" == "lithium-latest"    Run Keyword And Ignore Error    Verify Dhcp Ips
+    ...    ELSE IF    "${ODL_VERSION}" != "lithium-latest"    Verify Dhcp Ips
+
+Delete Vm Instances
+    [Documentation]    Delete Vm instances using instance names.
+    : FOR    ${VmElement}    IN    @{VM_INSTANCES_NAME}
+    \    Delete Vm Instance    ${VmElement}
+
+Verify Deleted Vm Instance Removed In Dump Flow
+    [Documentation]    Verify the non-existence of the vm instance ips in the dump flow.
+    : FOR    ${VmIpElement}    IN    @{VM_IPS}
+    \    ${output}=   Write Commands Until Prompt     sudo ovs-ofctl -O OpenFlow13 dump-flows br-int
+    \    Log    ${output}
+    \    Should Not Contain    ${output}    ${VmIpElement}
+
+Delete Router Interfaces
+    [Documentation]    Remove Interface to the subnets.
+    Remove Interface
+
+Delete Routers
+    [Documentation]    Delete Router and Interface to the subnets.
+    Delete Router
+
+Verify Deleted Routers
+    [Documentation]    Verify Deleted Routers for the Networks with dump flow.
+    Verify No Gateway Ips
+
+Delete Sub Networks
+    [Documentation]    Delete Sub Nets for the Networks with neutron request.
+    : FOR    ${NetworkElement}    IN    @{NETWORKS_NAME}
+    \    Delete SubNet    ${NetworkElement}
+
+Delete Networks
+    [Documentation]    Delete Networks with neutron request.
+    : FOR    ${NetworkElement}    IN    @{NETWORKS_NAME}
+    \    Delete Network    ${NetworkElement}
+
+Verify Deleted Subnets
+    [Documentation]    Verify Deleted SubNets for the Networks with dump flow.
+    Verify No Dhcp Ips