Library String
Resource DataModels.robot
Resource DevstackUtils.robot
+Resource KarafKeywords.robot
Resource L2GatewayOperations.robot
Resource OVSDB.robot
Resource SetupUtils.robot
Resource ../variables/Variables.robot
Resource ../variables/netvirt/Variables.robot
Variables ../variables/netvirt/Modules.py
+Variables ../variables/netvirt/Exceptions_Whitelist.py
*** Keywords ***
Get Tenant ID From Security Group
Create Network
[Arguments] ${network_name} ${additional_args}=${EMPTY} ${verbose}=TRUE
- [Documentation] Create Network with neutron request.
+ [Documentation] Create Network with openstack request.
${output} = OpenStack CLI openstack network create ${network_name} ${additional_args}
[Return] ${output}
Update SubNet
[Arguments] ${subnet_name} ${additional_args}=${EMPTY}
- [Documentation] Update subnet with neutron request.
+ [Documentation] Update subnet with openstack subnet set request.
${output} = OpenStack CLI openstack subnet set ${subnet_name} ${additional_args}
[Return] ${output}
+Unset SubNet
+ [Arguments] ${subnet_name} ${additional_args}=${EMPTY}
+ [Documentation] Update subnet with openstack subnet unset request
+ ${output} = OpenStack CLI openstack subnet unset ${subnet_name} ${additional_args}
+ [Return] ${output}
+
Show SubNet
[Arguments] ${subnet_name}
[Documentation] Show subnet with neutron request.
OpenStackOperations.Copy DHCP Files From Control Node
[Return] @{vm_ips} ${ips_and_console_log[1]}
+Get Subnet Gateway Ip
+ [Arguments] ${subnet_name}
+ [Documentation] Show information of a subnet and grep for subnet gateway ip address
+ ${output} = OpenStackOperations.OpenStack CLI openstack subnet show ${subnet_name} | grep gateway_ip | awk '{print $4}'
+ ${splitted_output} = String.Split String ${output} ${EMPTY}
+ ${matches} = Collections.Get Matches ${splitted_output} regexp=(\\d\.)+
+ ${subnet_gateway_ip} = String.Strip String ${matches[0]} characters=','
+ [Return] ${subnet_gateway_ip}
+
Collect VM IPv6 SLAAC Addresses
[Arguments] ${fail_on_none} ${vm_list} ${network} ${subnet}
[Documentation] For each VM parse output of "openstack server show" to get its IPv6 address from Neutron DB.
Utils.Write Commands Until Expected Prompt sudo ovs-ofctl dump-groups br-int -OOpenFlow13 ${DEFAULT_LINUX_PROMPT_STRICT}
Utils.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}
- ... ${log_file}=${WORKSPACE}/${BUNDLEFOLDER}/data/log/karaf.log
- ${cmd} = BuiltIn.Set Variable sed '1,/ROBOT MESSAGE: Starting test ${test_name}/d' ${log_file} | grep '${type}'
- ${output} = Utils.Run Command On Controller ${ip} ${cmd} ${user} ${password} ${prompt}
- [Return] ${output}
-
-Get Karaf Log Types From Test Start
- [Arguments] ${ip} ${test_name} ${types} ${user}=${ODL_SYSTEM_USER} ${password}=${ODL_SYSTEM_PASSWORD} ${prompt}=${ODL_SYSTEM_PROMPT}
- ... ${log_file}=${WORKSPACE}/${BUNDLEFOLDER}/data/log/karaf.log
- : FOR ${type} IN @{types}
- \ OpenStackOperations.Get Karaf Log Type From Test Start ${ip} ${test_name} ${type} ${user} ${password}
- \ ... ${prompt} ${log_file}
-
-Get Karaf Log Events From Test Start
- [Arguments] ${test_name} ${user}=${ODL_SYSTEM_USER} ${password}=${ODL_SYSTEM_PASSWORD} ${prompt}=${ODL_SYSTEM_PROMPT}
- ${log_types} = BuiltIn.Create List ERROR WARN Exception
- BuiltIn.Run Keyword If 0 < ${NUM_ODL_SYSTEM} OpenStackOperations.Get Karaf Log Types From Test Start ${ODL_SYSTEM_IP} ${test_name} ${log_types}
- BuiltIn.Run Keyword If 1 < ${NUM_ODL_SYSTEM} OpenStackOperations.Get Karaf Log Types From Test Start ${ODL_SYSTEM_2_IP} ${test_name} ${log_types}
- BuiltIn.Run Keyword If 2 < ${NUM_ODL_SYSTEM} OpenStackOperations.Get Karaf Log Types From Test Start ${ODL_SYSTEM_3_IP} ${test_name} ${log_types}
-
Get ControlNode Connection
SSHLibrary.Switch Connection ${OS_CNTL_CONN_ID}
[Return] ${OS_CNTL_CONN_ID}
BuiltIn.Run Keyword If 2 < ${NUM_OS_SYSTEM} OpenStackOperations.Get DumpFlows And Ovsconfig ${OS_CMP2_CONN_ID}
Get Test Teardown Debugs
- [Arguments] ${test_name}=${TEST_NAME}
+ [Arguments] ${test_name}=${SUITE_NAME}.${TEST_NAME}
OpenStackOperations.Get OvsDebugInfo
BuiltIn.Run Keyword And Ignore Error DataModels.Get Model Dump ${HA_PROXY_IP} ${netvirt_data_models}
- OpenStackOperations.Get Karaf Log Events From Test Start ${test_name}
+ KarafKeywords.Get Karaf Log Events From Test Start ${test_name}
+ Run Keyword If "${FAIL_ON_EXCEPTIONS}"=="True" Fail If Exceptions Found During Test ${test_name} ${NETVIRT_EXCEPTIONS_WHITELIST}
Get Test Teardown Debugs For SFC
[Arguments] ${test_name}=${TEST_NAME}
\ ${is_ipv6} = String.Get Regexp Matches @{subnets}[${INDEX}] ${IP6_REGEX}
\ ${length} = BuiltIn.Get Length ${is_ipv6}
\ ${cmd} = BuiltIn.Set Variable If ${length} == 0 ip route ip -6 route
- \ ${output} = Utils.Write Commands Until Expected Prompt sudo ip netns exec qdhcp-${net_id} ${cmd} ]>
+ \ ${output} = Utils.Write Commands Until Expected Prompt sudo ip netns exec qdhcp-${net_id} ${cmd} ${DEFAULT_LINUX_PROMPT_STRICT}
\ BuiltIn.Should Contain ${output} @{subnets}[${INDEX}]
Neutron Cleanup
OpenStack Suite Setup
[Documentation] Wrapper teardown keyword that can be used in any suite running in an openstack environement
SetupUtils.Setup_Utils_For_Setup_And_Teardown
+ @{loggers} = BuiltIn.Create List org.apache.karaf.shell.support.ShellUtil
+ Setuputils.Setup_Logging_For_Debug_Purposes_On_List_Or_All OFF ${loggers}
DevstackUtils.Devstack Suite Setup
@{tcpdump_port_6653_conn_ids} = OpenStackOperations.Start Packet Capture On Nodes tcpdump_port_6653 port 6653 @{OS_ALL_IPS}
BuiltIn.Set Suite Variable @{tcpdump_port_6653_conn_ids}
OpenStack Cleanup All
OpenStackOperations.Stop Packet Capture On Nodes ${tcpdump_port_6653_conn_ids}
SSHLibrary.Close All Connections
+ : FOR ${i} IN RANGE ${NUM_ODL_SYSTEM}
+ \ KarafKeywords.Issue Command On Karaf Console threads --list | wc -l ${ODL_SYSTEM_${i+1}_IP}
Copy DHCP Files From Control Node
[Documentation] Copy the current DHCP files to the robot vm. The keyword must be called