X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=csit%2Flibraries%2FOpenStackOperations.robot;h=0e7bd6c67528dd0e733d6aac22a77aa06257c090;hb=a61e4492f0832dc60deede123dbe5e6cc8ee1c35;hp=18928012aa062fcf400c9142f4a5a79a17fe1750;hpb=737b6f1fbf7452dc76f1e728e320442358861ad0;p=integration%2Ftest.git diff --git a/csit/libraries/OpenStackOperations.robot b/csit/libraries/OpenStackOperations.robot index 18928012aa..0e7bd6c675 100644 --- a/csit/libraries/OpenStackOperations.robot +++ b/csit/libraries/OpenStackOperations.robot @@ -7,6 +7,7 @@ Library SSHLibrary Library String Resource DataModels.robot Resource DevstackUtils.robot +Resource KarafKeywords.robot Resource L2GatewayOperations.robot Resource OVSDB.robot Resource SetupUtils.robot @@ -16,6 +17,7 @@ Resource Utils.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 @@ -32,17 +34,14 @@ Get Tenant ID From Network 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 Network [Arguments] ${network_name} ${additional_args}=${EMPTY} [Documentation] Update Network with neutron request. - ${cmd} = BuiltIn.Set Variable If '${OPENSTACK_BRANCH}'=='stable/newton' neutron -v net-update ${network_name} ${additional_args} openstack network set ${network_name} ${additional_args} - ${rc} ${output} = OperatingSystem.Run And Return Rc And Output ${cmd} - BuiltIn.Log ${output} - BuiltIn.Should Be True '${rc}' == '0' + ${output} = OpenStack CLI openstack network set ${network_name} ${additional_args} [Return] ${output} Show Network @@ -73,11 +72,14 @@ Create SubNet Update SubNet [Arguments] ${subnet_name} ${additional_args}=${EMPTY} - [Documentation] Update subnet with neutron request. - ${cmd} = BuiltIn.Set Variable If '${OPENSTACK_BRANCH}'=='stable/newton' neutron -v subnet-update ${subnet_name} ${additional_args} openstack subnet set ${subnet_name} ${additional_args} - ${rc} ${output} = OperatingSystem.Run And Return Rc And Output ${cmd} - BuiltIn.Log ${output} - BuiltIn.Should Be True '${rc}' == '0' + [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 @@ -92,13 +94,9 @@ Create Port # if allowed_address_pairs is not empty we need to create the arguments to pass to the port create command. They are # in a different format with the neutron vs openstack cli. ${address_pair_length} = BuiltIn.Get Length ${allowed_address_pairs} - ${allowed_pairs_argv} = BuiltIn.Set Variable If '${OPENSTACK_BRANCH}'=='stable/newton' and '${address_pair_length}'=='2' --allowed-address-pairs type=dict list=true ip_address=@{allowed_address_pairs}[0] ip_address=@{allowed_address_pairs}[1] - ${allowed_pairs_argv} = BuiltIn.Set Variable If '${OPENSTACK_BRANCH}'!='stable/newton' and '${address_pair_length}'=='2' --allowed-address ip-address=@{allowed_address_pairs}[0] --allowed-address ip-address=@{allowed_address_pairs}[1] ${allowed_pairs_argv} - ${allowed_pairs_argv} = BuiltIn.Set Variable If '${address_pair_length}'=='0' ${EMPTY} ${allowed_pairs_argv} - ${cmd} = BuiltIn.Set Variable If '${OPENSTACK_BRANCH}'=='stable/newton' neutron -v port-create ${network_name} --name ${port_name} --security-group ${sg} ${additional_args} ${allowed_pairs_argv} openstack port create --network ${network_name} ${port_name} --security-group ${sg} ${additional_args} ${allowed_pairs_argv} - ${rc} ${output} = OperatingSystem.Run And Return Rc And Output ${cmd} - BuiltIn.Log ${output} - BuiltIn.Should Be True '${rc}' == '0' + ${allowed_pairs_argv} = BuiltIn.Set Variable ${EMPTY} + ${allowed_pairs_argv} = BuiltIn.Set Variable If '${address_pair_length}'=='2' --allowed-address ip-address=@{allowed_address_pairs}[0] --allowed-address ip-address=@{allowed_address_pairs}[1] ${allowed_pairs_argv} + ${output} = OpenStack CLI openstack port create --network ${network_name} ${port_name} --security-group ${sg} ${additional_args} ${allowed_pairs_argv} Update Port [Arguments] ${port_name} ${additional_args}=${EMPTY} @@ -133,8 +131,6 @@ Create And Associate Floating IPs ${ip_list} = BuiltIn.Create List @{EMPTY} : FOR ${vm} IN @{vm_list} \ ${output} = OpenStack CLI openstack floating ip create ${external_net} - \ BuiltIn.Log ${output} - \ BuiltIn.Should Be True '${rc}' == '0' \ @{ip} = String.Get Regexp Matches ${output} [0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3} \ ${ip_length} = BuiltIn.Get Length ${ip} \ BuiltIn.Run Keyword If ${ip_length}>0 Collections.Append To List ${ip_list} @{ip}[0] @@ -142,6 +138,11 @@ Create And Associate Floating IPs \ ${output} = OpenStack CLI openstack server add floating ip ${vm} @{ip}[0] [Return] ${ip_list} +Remove Floating Ip From Vm + [Arguments] ${vm_name} ${fip} + [Documentation] Remove the Floating IP From VM Instance + ${output} = OpenStack CLI openstack server remove floating ip ${vm_name} ${fip} + Delete Floating IP [Arguments] ${fip} [Documentation] Delete floating ip with neutron request. @@ -299,6 +300,15 @@ Get VM IPs 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. @@ -472,9 +482,7 @@ Show Router Interface Add Router Gateway [Arguments] ${router_name} ${external_network_name} - ${cmd} = BuiltIn.Set Variable If '${OPENSTACK_BRANCH}'=='stable/newton' neutron -v router-gateway-set ${router_name} ${external_network_name} openstack router set ${router_name} --external-gateway ${external_network_name} - ${rc} ${output} = OperatingSystem.Run And Return Rc And Output ${cmd} - BuiltIn.Should Be True '${rc}' == '0' + ${output} = OpenStack CLI openstack router set ${router_name} --external-gateway ${external_network_name} Remove Interface [Arguments] ${router_name} ${interface_name} @@ -522,27 +530,6 @@ Get DumpFlows And Ovsconfig 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} @@ -554,10 +541,10 @@ Get OvsDebugInfo 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} + Run Keyword If "${FAIL_ON_EXCEPTIONS}"=="True" KarafKeywords.Fail If Exceptions Found During Test ${test_name} Get Test Teardown Debugs For SFC [Arguments] ${test_name}=${TEST_NAME} @@ -644,10 +631,8 @@ Neutron Security Group Rule Create ... ELSE BuiltIn.Catenate ${cmd} ${cmd} = BuiltIn.Run Keyword If '${remote_ip_prefix}'!='None' BuiltIn.Catenate ${cmd} --src-ip ${remote_ip_prefix} ... ELSE BuiltIn.Catenate ${cmd} - ${rc} ${output} = OperatingSystem.Run And Return Rc And Output ${cmd} + ${output} = OpenStack CLI ${cmd} ${rule_id} = BuiltIn.Should Match Regexp ${output} ${REGEX_UUID} - BuiltIn.Log ${rule_id} - BuiltIn.Should Be True '${rc}' == '0' [Return] ${output} ${rule_id} Neutron Security Group Rule Create Legacy Cli @@ -751,6 +736,13 @@ Create L2Gateway BuiltIn.Log ${l2gw_output} [Return] ${l2gw_output} +Update L2Gateway + [Arguments] ${bridge_name} ${gw_name} ${intf_name_1} ${intf_name_2} + [Documentation] Keyword to add {intf_name_list} to an existing L2 Gateway ${gw_name} (Using Neutron CLI). + ${rc} ${l2gw_output}= Run And Return Rc And Output ${L2GW_UPDATE} name=${bridge_name},interface_names="${intf_name_1};${intf_name_2}" ${gw_name} + 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). @@ -931,7 +923,7 @@ Wait For Routes To Propogate \ ${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 @@ -1018,10 +1010,12 @@ Cleanup Router 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 - @{tcpdump_port_6653_conn_ids} = OpenStackOperations.Start Packet Capture On Nodes tcpdump_port_6653 port 6653 ${OS_CONTROL_NODE_IP} ${OS_COMPUTE_1_IP} ${OS_COMPUTE_2_IP} + @{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} BuiltIn.Run Keyword If "${PRE_CLEAN_OPENSTACK_ALL}"=="True" OpenStack Cleanup All - DevstackUtils.Devstack Suite Setup OpenStackOperations.Add OVS Logging On All OpenStack Nodes OpenStack Suite Teardown @@ -1032,6 +1026,8 @@ OpenStack Suite Teardown 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