Use Variables.robot instead of Variables.py
[integration/test.git] / csit / libraries / DevstackUtils.robot
index 78b818e13c7ae0ca6ae14d7a48a41715f0197d02..6a9c3fc74b8ad6af14eb423553f08b84f3d8a587 100644 (file)
@@ -10,7 +10,7 @@ Library           ./UtilLibrary.py
 Resource          KarafKeywords.robot
 Resource          OpenStackOperations.robot
 Resource          SSHKeywords.robot
-Variables         ../variables/Variables.py
+Resource          ../variables/Variables.robot
 
 *** Variables ***
 ${default_devstack_prompt_timeout}    10s
@@ -29,17 +29,20 @@ ${external_subnet_name}    external-subnet
 ${external_gateway}    10.10.10.250
 ${external_subnet_allocation_pool}    start=10.10.10.2,end=10.10.10.249
 ${external_subnet}    10.10.10.0/24
-${default_timeout}    420s
+${TEMPEST_TIMEOUT}    420s
+${OS_CNTL_CONN_ID}    None
+${OS_CMP1_CONN_ID}    None
+${OS_CMP2_CONN_ID}    None
 
 *** Keywords ***
 Run Tempest Tests
-    [Arguments]    ${tempest_regex}    ${timeout}=${default_timeout}    ${debug}=False
+    [Arguments]    ${tempest_regex}    ${timeout}=${TEMPEST_TIMEOUT}    ${debug}=False
     Run Keyword If    "${debug}"=="False"    Run Tempest Tests Without Debug    ${tempest_regex}    timeout=${timeout}
     Run Keyword If    "${debug}"=="True"    Run Tempest Tests With Debug    ${tempest_regex}    timeout=${timeout}
     Run Keyword If    "${debug}"!="True" and "${debug}"!="False"    Fail    debug argument must be True or False
 
 Run Tempest Tests Without Debug
-    [Arguments]    ${tempest_regex}    ${tempest_directory}=${tempest_dir}    ${timeout}=${default_timeout}
+    [Arguments]    ${tempest_regex}    ${tempest_directory}=${tempest_dir}    ${timeout}=${TEMPEST_TIMEOUT}
     [Documentation]    Using ostestr will allow us to (by default) run tests in paralllel.
     ...    Because of the parallel fashion, we must ensure there is no pause on teardown so that flag in tempest.conf is
     ...    explicitly set to False.
@@ -52,13 +55,16 @@ Run Tempest Tests Without Debug
     SSHLibrary.Read
     Tempest Conf Modify Pause On Test Teardown    False
     SSHLibrary.Set Client Configuration    timeout=${timeout}
-    ${output}=    Write Commands Until Prompt    ostestr --regex ${tempest_regex}    timeout=${timeout}
+    # There are tons of deprecation error messages when we use ostestr in our CSIT environment (openstack via devstack)
+    # The robot log files are very large and one culprit is all these deprecation warnings. If we redirect stderr to
+    # /dev/null we should be able to ignore them. We will miss any other errors, however.
+    ${output}=    Write Commands Until Prompt    ostestr --regex ${tempest_regex} 2>/dev/null    timeout=${timeout}
     Log    ${output}
     SSHLibrary.Close Connection
     Should Contain    ${output}    Failed: 0
 
 Run Tempest Tests With Debug
-    [Arguments]    ${tempest_regex}    ${tempest_directory}=${tempest_dir}    ${timeout}=${default_timeout}
+    [Arguments]    ${tempest_regex}    ${tempest_directory}=${tempest_dir}    ${timeout}=${TEMPEST_TIMEOUT}
     [Documentation]    After setting pause_teardown=True in tempest.conf, use the python -m testtools.run module to execute
     ...    a single tempest test case. We need to run only one tempest test case at a time as there will
     ...    be potentional for an unkown number of debug pdb() prompts to catch and continue if we are running multiple
@@ -88,15 +94,15 @@ Run Tempest Tests With Debug
     Should Contain    ${output}    OK
     Should Not Contain    ${output}    FAILED
 
+Suite Setup
+    OpenStackOperations.OpenStack Suite Setup
+    Log In To Tempest Executor And Setup Test Environment
+
 Log In To Tempest Executor And Setup Test Environment
     [Documentation]    Initialize SetupUtils, open SSH connection to a devstack system and source the openstack
     ...    credentials needed to run the tempest tests. The (sometimes empty) tempest blacklist file will be created
     ...    and pushed to the tempest executor.
     Create Blacklist File
-    SetupUtils.Setup_Utils_For_Setup_And_Teardown
-    # source_pwd is expected to exist in the below Create Network, Create Subnet keywords.    Might be a bug.
-    ${source_pwd}    Set Variable    yes
-    Set Suite Variable    ${source_pwd}
     # Tempest tests need an existing external network in order to create routers.
     Create Network    ${external_net_name}    --external --default --provider-network-type flat --provider-physical-network ${PUBLIC_PHYSICAL_NETWORK}
     Create Subnet    ${external_net_name}    ${external_subnet_name}    ${external_subnet}    --gateway ${external_gateway} --allocation-pool ${external_subnet_allocation_pool}
@@ -105,7 +111,7 @@ Log In To Tempest Executor And Setup Test Environment
     SSHKeywords.Flexible SSH Login    ${OS_USER}
     Write Commands Until Prompt    source ${DEVSTACK_DEPLOY_PATH}/openrc admin admin
     Write Commands Until Prompt    sudo rm -rf /opt/stack/tempest/.testrepository
-    ${net_id}=    Get Net Id    ${external_net_name}    ${control_node_conn_id}
+    ${net_id}=    Get Net Id    ${external_net_name}
     Tempest Conf Add External Network And Floating Network Name    ${net_id}
 
 Tempest Conf Add External Network And Floating Network Name
@@ -132,12 +138,6 @@ Modify Config In File On Existing SSH Connection
     # to a library at some point, when/if other suites need to use it, so wanted to make it generic.
     Write Commands Until Prompt    sudo -E crudini --${modifier} ${config_file} ${config_section} ${config_key} ${config_value}
 
-Clean Up After Running Tempest
-    [Documentation]    Clean up any extra leftovers that were created to allow tempest tests to run.
-    Delete Network    ${external_net_name}
-    List Networks
-    Close All Connections
-
 Create Blacklist File
     [Documentation]    For each exclusion regex in the required @{${OPENSTACK_BRANCH}_exclusion_regexes} list a new
     ...    line will be created in the required ${blacklist_file} location. This file is pushed to the OS_CONTROL_NODE
@@ -148,16 +148,21 @@ Create Blacklist File
     Log File    ${blacklist_file}
     SSHKeywords.Copy File To Remote System    ${OS_CONTROL_NODE_IP}    ${blacklist_file}    ${blacklist_file}
 
+Open Connection
+    [Arguments]    ${name}    ${ip}
+    ${conn_id} =    SSHLibrary.Open Connection    ${ip}    prompt=${DEFAULT_LINUX_PROMPT}
+    SSHKeywords.Flexible SSH Login    ${OS_USER}    ${DEVSTACK_SYSTEM_PASSWORD}
+    BuiltIn.Set Suite Variable    \${${name}}    ${conn_id}
+    [Return]    ${conn_id}
+
 Devstack Suite Setup
-    [Arguments]    ${source_pwd}=no    ${odl_ip}=${ODL_SYSTEM_IP}
-    [Documentation]    Login to the Openstack Control Node to run tempest suite
+    [Arguments]    ${odl_ip}=${ODL_SYSTEM_IP}
+    [Documentation]    Open connections to the nodes
     Create Session    session    http://${odl_ip}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
-    ${devstack_conn_id}=    SSHLibrary.Open Connection    ${OS_CONTROL_NODE_IP}    prompt=${DEFAULT_LINUX_PROMPT}
-    Set Suite Variable    ${devstack_conn_id}
-    Set Suite Variable    ${source_pwd}
-    Log    ${devstack_conn_id}
-    SSHKeywords.Flexible SSH Login    ${OS_USER}    ${DEVSTACK_SYSTEM_PASSWORD}
-    SSHLibrary.Set Client Configuration    timeout=${default_devstack_prompt_timeout}
+    SSHLibrary.Set Default Configuration    timeout=${default_devstack_prompt_timeout}
+    Run Keyword If    0 < ${NUM_OS_SYSTEM}    Open Connection    OS_CNTL_CONN_ID    ${OS_CONTROL_NODE_IP}
+    Run Keyword If    1 < ${NUM_OS_SYSTEM}    Open Connection    OS_CMP1_CONN_ID    ${OS_COMPUTE_1_IP}
+    Run Keyword If    2 < ${NUM_OS_SYSTEM}    Open Connection    OS_CMP2_CONN_ID    ${OS_COMPUTE_2_IP}
 
 Write Commands Until Prompt
     [Arguments]    ${cmd}    ${timeout}=${default_devstack_prompt_timeout}
@@ -168,3 +173,10 @@ Write Commands Until Prompt
     SSHLibrary.Write    ${cmd};echo Command Returns $?
     ${output}=    SSHLibrary.Read Until Prompt
     [Return]    ${output}
+
+Write Commands Until Prompt And Log
+    [Arguments]    ${cmd}    ${timeout}=${default_devstack_prompt_timeout}
+    [Documentation]    quick wrapper for Write and Read Until Prompt Keywords to make test cases more readable
+    ${output} =    Write Commands Until Prompt    ${cmd}    ${timeout}
+    Log    ${output}
+    [Return]    ${output}