X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=csit%2Flibraries%2FOpenStackOperations.robot;h=0539840f3941e416c9fbdba8ab8bc422fad2f73a;hb=6ebf30ec3a45ec2461f888bfce7f7c45add77c56;hp=48f7445fd1598877d97cd08c3f385ee300f3a2bf;hpb=85fd5a357cf0c224b5582083b776e5191a8d42d7;p=integration%2Ftest.git diff --git a/csit/libraries/OpenStackOperations.robot b/csit/libraries/OpenStackOperations.robot index 48f7445fd1..0539840f39 100644 --- a/csit/libraries/OpenStackOperations.robot +++ b/csit/libraries/OpenStackOperations.robot @@ -1,39 +1,51 @@ *** Settings *** -Documentation Openstack library. This library is useful for tests to create network, subnet, router and vm instances -Library SSHLibrary -Resource Utils.robot -Variables ../variables/Variables.py +Documentation Openstack 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 *** Source Password - [Arguments] ${force}=no + [Arguments] ${force}=no [Documentation] Sourcing the Openstack PAsswords for neutron configurations - Run Keyword If '${source_pwd}' == 'yes' or '${force}' == 'yes' Write Commands Until Prompt cd ${DEVSTACK_DEPLOY_PATH}; source openrc admin admin + Run Keyword If '${source_pwd}' == 'yes' or '${force}' == 'yes' Write Commands Until Prompt cd ${DEVSTACK_DEPLOY_PATH}; source openrc admin admin Create Network [Arguments] ${network_name} [Documentation] Create Network with neutron request. + ${devstack_conn_id}= Get ControlNode Connection Switch Connection ${devstack_conn_id} - Source Password force=yes ${output}= Write Commands Until Prompt neutron -v net-create ${network_name} 30s + Close Connection Log ${output} Should Contain ${output} Created a new network +List Networks + [Documentation] List networks and return output with neutron client. + ${devstack_conn_id}= Get ControlNode Connection + Switch Connection ${devstack_conn_id} + ${output}= Write Commands Until Prompt neutron net-list 30s + Close Connection + Log ${output} + [Return] ${output} + Delete Network [Arguments] ${network_name} [Documentation] Delete Network with neutron request. + ${devstack_conn_id}= Get ControlNode Connection Switch Connection ${devstack_conn_id} - Source Password - ${output}= Write Commands Until Prompt neutron -v net-delete ${network_name} + ${output}= Write Commands Until Prompt neutron -v net-delete ${network_name} 30s + Close Connection Log ${output} Should Contain ${output} Deleted network: ${network_name} Create SubNet [Arguments] ${network_name} ${subnet} ${range_ip} [Documentation] Create SubNet for the Network with neutron request. + ${devstack_conn_id}= Get ControlNode Connection Switch Connection ${devstack_conn_id} - Source Password ${output}= Write Commands Until Prompt neutron -v subnet-create ${network_name} ${range_ip} --name ${subnet} 30s + Close Connection Log ${output} Should Contain ${output} Created a new subnet @@ -62,9 +74,10 @@ Delete SubNet [Arguments] ${subnet} [Documentation] Delete SubNet for the Network with neutron request. Log ${subnet} + ${devstack_conn_id}= Get ControlNode Connection Switch Connection ${devstack_conn_id} - Source Password ${output}= Write Commands Until Prompt neutron -v subnet-delete ${subnet} + Close Connection Log ${output} Should Contain ${output} Deleted subnet: ${subnet} @@ -78,17 +91,18 @@ Verify No Gateway Ips Delete Vm Instance [Arguments] ${vm_name} [Documentation] Delete Vm instances using instance names. + ${devstack_conn_id}= Get ControlNode Connection Switch Connection ${devstack_conn_id} - Source Password - ${output}= Write Commands Until Prompt nova delete ${vm_name} - Should Contain ${output} ${vm_name} + ${output}= Write Commands Until Prompt nova force-delete ${vm_name} 40s + Close Connection Get Net Id [Arguments] ${network_name} [Documentation] Retrieve the net id for the given network name to create specific vm instance + ${devstack_conn_id}= Get ControlNode Connection Switch Connection ${devstack_conn_id} - Source Password force=yes - ${output}= Write Commands Until Prompt neutron net-list | grep "${network_name}" | get_field 1 + ${output}= Write Commands Until Prompt neutron net-list | grep "${network_name}" | get_field 1 30s + Close Connection Log ${output} ${splitted_output}= Split String ${output} ${EMPTY} ${net_id}= Get from List ${splitted_output} 0 @@ -96,22 +110,22 @@ Get Net Id [Return] ${net_id} Create Vm Instances - [Arguments] ${net_name} ${vm_instance_names} ${image}=cirros-0.3.4-x86_64-uec ${flavor}=m1.tiny + [Arguments] ${net_name} ${vm_instance_names} ${image}=cirros-0.3.4-x86_64-uec ${flavor}=m1.nano [Documentation] Create X Vm Instance with the net id of the Netowrk. + ${devstack_conn_id}= Get ControlNode Connection Switch Connection ${devstack_conn_id} - Source Password - ${net_id}= Get Net Id ${net_name} + ${net_id}= Get Net Id ${net_name} : FOR ${VmElement} IN @{vm_instance_names} - \ ${output}= Write Commands Until Prompt nova boot --image ${image} --flavor ${flavor} --nic net-id=${net_id} ${VmElement} + \ ${output}= Write Commands Until Prompt nova boot --image ${image} --flavor ${flavor} --nic net-id=${net_id} ${VmElement} 30s \ Log ${output} \ Wait Until Keyword Succeeds 25s 5s Verify VM Is ACTIVE ${VmElement} Verify VM Is ACTIVE [Arguments] ${vm_name} [Documentation] Run these commands to check whether the created vm instance is active or not. - ${output}= Write Commands Until Prompt nova show ${vm_name} | grep OS-EXT-STS:vm_state + ${output}= Write Commands Until Prompt nova show ${vm_name} | grep OS-EXT-STS:vm_state 30s Log ${output} - Should Contain ${output} active + Should Contain ${output} active View Vm Console [Arguments] ${vm_instance_names} @@ -126,21 +140,25 @@ Ping Vm From DHCP Namespace [Arguments] ${net_name} ${vm_ip} [Documentation] Reach all Vm Instance with the net id of the Netowrk. Log ${vm_ip} + ${devstack_conn_id}= Get ControlNode Connection Switch Connection ${devstack_conn_id} - ${net_id}= Get Net Id ${net_name} + ${net_id}= Get Net Id ${net_name} Log ${net_id} ${output}= Write Commands Until Prompt sudo ip netns exec qdhcp-${net_id} ping -c 3 ${vm_ip} 20s Log ${output} + Close Connection Should Contain ${output} 64 bytes Ping From DHCP Should Not Succeed [Arguments] ${net_name} ${vm_ip} [Documentation] Should Not Reach Vm Instance with the net id of the Netowrk. Log ${vm_ip} + ${devstack_conn_id}= Get ControlNode Connection Switch Connection ${devstack_conn_id} - ${net_id}= Get Net Id ${net_name} + ${net_id}= Get Net Id ${net_name} Log ${net_id} ${output}= Write Commands Until Prompt sudo ip netns exec qdhcp-${net_id} ping -c 3 ${vm_ip} 20s + Close Connection Log ${output} Should Not Contain ${output} 64 bytes @@ -164,113 +182,125 @@ Close Vm Instance Check If Console Is VmInstance [Arguments] ${console}=cirros - [Documentation] Check if the session has been able to login to the VM instance - ${output}= Write Commands Until Expected Prompt id ${OS_SYSTEM_PROMPT} + [Documentation] Check if the session has been able to login to the VM instance + ${output}= Write Commands Until Expected Prompt id ${OS_SYSTEM_PROMPT} Should Contain ${output} ${console} Exit From Vm Console - [Documentation] Check if the session has been able to login to the VM instance and exit the instance - ${rcode}= Run Keyword And Return Status Check If Console Is VmInstance cirros - Run Keyword If ${rcode} Write Commands Until Prompt exit + [Documentation] Check if the session has been able to login to the VM instance and exit the instance + ${rcode}= Run Keyword And Return Status Check If Console Is VmInstance cirros + Run Keyword If ${rcode} Write Commands Until Prompt exit Get OvsDebugInfo Check Ping - [Arguments] ${ip_address} - [Documentation] Run Ping command on the IP available as argument - ${output}= Write Commands Until Expected Prompt ping -c 3 ${ip_address} ${OS_SYSTEM_PROMPT} - Should Contain ${output} 64 bytes + [Arguments] ${ip_address} + [Documentation] Run Ping command on the IP available as argument + ${output}= Write Commands Until Expected Prompt ping -c 3 ${ip_address} ${OS_SYSTEM_PROMPT} + Should Contain ${output} 64 bytes Check Metadata Access - [Documentation] Try curl on the Metadataurl and check if it is okay - ${output}= Write Commands Until Expected Prompt curl -i http://169.254.169.254 ${OS_SYSTEM_PROMPT} - Should Contain ${output} 200 + [Documentation] Try curl on the Metadataurl and check if it is okay + ${output}= Write Commands Until Expected Prompt curl -i http://169.254.169.254 ${OS_SYSTEM_PROMPT} + Should Contain ${output} 200 Test Operations From Vm Instance - [Arguments] ${net_name} ${src_ip} ${list_of_local_dst_ips} ${l2_or_l3}=l2 ${list_of_external_dst_ips}=${NONE} ${user}=cirros ${password}=cubswin:) + [Arguments] ${net_name} ${src_ip} ${list_of_local_dst_ips} ${l2_or_l3}=l2 ${list_of_external_dst_ips}=${NONE} ${user}=cirros + ... ${password}=cubswin:) [Documentation] Login to the vm instance using ssh in the network. + ${devstack_conn_id}= Get ControlNode Connection Switch Connection ${devstack_conn_id} - Source Password - ${net_id}= Get Net Id ${net_name} - ${output}= Write Commands Until Expected Prompt sudo ip netns exec qdhcp-${net_id} ssh ${user}@${src_ip} -o ConnectTimeout=10 -o StrictHostKeyChecking=no d: + ${net_id}= Get Net Id ${net_name} + ${output}= Write Commands Until Expected Prompt sudo ip netns exec qdhcp-${net_id} ssh ${user}@${src_ip} -o ConnectTimeout=10 -o StrictHostKeyChecking=no d: Log ${output} ${output}= Write Commands Until Expected Prompt ${password} ${OS_SYSTEM_PROMPT} Log ${output} - ${rcode}= Run Keyword And Return Status Check If Console Is VmInstance - Run Keyword If ${rcode} Write Commands Until Expected Prompt ifconfig ${OS_SYSTEM_PROMPT} - Run Keyword If ${rcode} Write Commands Until Expected Prompt route ${OS_SYSTEM_PROMPT} + ${rcode}= Run Keyword And Return Status Check If Console Is VmInstance + Run Keyword If ${rcode} Write Commands Until Expected Prompt ifconfig ${OS_SYSTEM_PROMPT} + Run Keyword If ${rcode} Write Commands Until Expected Prompt route ${OS_SYSTEM_PROMPT} ${dest_vm}= Get From List ${list_of_local_dst_ips} 0 Log ${dest_vm} - Run Keyword If ${rcode} Check Ping ${dest_vm} + Run Keyword If ${rcode} Check Ping ${dest_vm} ${dest_dhcp}= Get From List ${list_of_local_dst_ips} 1 Log ${dest_dhcp} - Run Keyword If ${rcode} Check Ping ${dest_dhcp} + Run Keyword If ${rcode} Check Ping ${dest_dhcp} ${dest_vm}= Get From List ${list_of_local_dst_ips} 2 Log ${dest_vm} - Run Keyword If ${rcode} Check Ping ${dest_vm} - Run Keyword If ${rcode} Check Metadata Access + Run Keyword If ${rcode} Check Ping ${dest_vm} + Run Keyword If ${rcode} Check Metadata Access Run Keyword If '${l2_or_l3}' == 'l3' Ping Other Instances ${list_of_external_dst_ips} - [Teardown] Exit From Vm Console + [Teardown] Exit From Vm Console Ping Other Instances [Arguments] ${list_of_external_dst_ips} [Documentation] Check reachability with other network's instances. - ${rcode}= Run Keyword And Return Status Check If Console Is VmInstance + ${rcode}= Run Keyword And Return Status Check If Console Is VmInstance ${dest_vm}= Get From List ${list_of_external_dst_ips} 0 Log ${dest_vm} - Run Keyword If ${rcode} Check Ping ${dest_vm} + Run Keyword If ${rcode} Check Ping ${dest_vm} ${dest_dhcp}= Get From List ${list_of_external_dst_ips} 1 Log ${dest_dhcp} - Run Keyword If ${rcode} Check Ping ${dest_dhcp} + Run Keyword If ${rcode} Check Ping ${dest_dhcp} ${dest_vm}= Get From List ${list_of_external_dst_ips} 2 Log ${dest_vm} - Run Keyword If ${rcode} Check Ping ${dest_vm} + Run Keyword If ${rcode} Check Ping ${dest_vm} Create Router [Arguments] ${router_name} [Documentation] Create Router and Add Interface to the subnets. + ${devstack_conn_id}= Get ControlNode Connection Switch Connection ${devstack_conn_id} - Source Password - ${output}= Write Commands Until Prompt neutron -v router-create ${router_name} 30s + ${output}= Write Commands Until Prompt neutron -v router-create ${router_name} 30s + Close Connection Should Contain ${output} Created a new router Add Router Interface [Arguments] ${router_name} ${interface_name} + ${devstack_conn_id}= Get ControlNode Connection Switch Connection ${devstack_conn_id} - Source Password ${output}= Write Commands Until Prompt neutron -v router-interface-add ${router_name} ${interface_name} + Close Connection Should Contain ${output} Added interface Remove Interface [Arguments] ${router_name} ${interface_name} [Documentation] Remove Interface to the subnets. + ${devstack_conn_id}= Get ControlNode Connection Switch Connection ${devstack_conn_id} - Source Password ${output}= Write Commands Until Prompt neutron -v router-interface-delete ${router_name} ${interface_name} + Close Connection Should Contain ${output} Removed interface from router Delete Router [Arguments] ${router_name} [Documentation] Delete Router and Interface to the subnets. + ${devstack_conn_id}= Get ControlNode Connection Switch Connection ${devstack_conn_id} - Source Password - ${output}= Write Commands Until Prompt neutron -v router-delete ${router_name} + ${output}= Write Commands Until Prompt neutron -v router-delete ${router_name} 60s + Close Connection Should Contain ${output} Deleted router: Get DumpFlows And Ovsconfig [Arguments] ${openstack_node_ip} [Documentation] Get the OvsConfig and Flow entries from OVS from the Openstack Node - Log ${openstack_node_ip} + Log ${openstack_node_ip} 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 sudo ovs-vsctl show ]> - Write Commands Until Expected Prompt sudo ovs-ofctl dump-flows br-int -OOpenFlow13 ]> + Write Commands Until Expected Prompt sudo ovs-vsctl show ]> + Write Commands Until Expected Prompt sudo ovs-ofctl dump-flows br-int -OOpenFlow13 ]> + +Get ControlNode Connection + ${control_conn_id}= SSHLibrary.Open Connection ${OS_CONTROL_NODE_IP} prompt=${DEFAULT_LINUX_PROMPT_STRICT} + Utils.Flexible SSH Login ${OS_USER} ${DEVSTACK_SYSTEM_PASSWORD} + SSHLibrary.Set Client Configuration timeout=30s + Source Password force=yes + [Return] ${control_conn_id} Get OvsDebugInfo [Documentation] Get the OvsConfig and Flow entries from all Openstack nodes - Run Keyword If 0 < ${NUM_OS_SYSTEM} Get DumpFlows And Ovsconfig ${OS_CONTROL_NODE_IP} - Run Keyword If 1 < ${NUM_OS_SYSTEM} Get DumpFlows And Ovsconfig ${OS_COMPUTE_1_IP} - Run Keyword If 2 < ${NUM_OS_SYSTEM} Get DumpFlows And Ovsconfig ${OS_COMPUTE_2_IP} + Run Keyword If 0 < ${NUM_OS_SYSTEM} Get DumpFlows And Ovsconfig ${OS_CONTROL_NODE_IP} + Run Keyword If 1 < ${NUM_OS_SYSTEM} Get DumpFlows And Ovsconfig ${OS_COMPUTE_1_IP} + Run Keyword If 2 < ${NUM_OS_SYSTEM} Get DumpFlows And Ovsconfig ${OS_COMPUTE_2_IP} Show Debugs [Arguments] ${vm_indices} @@ -278,5 +308,6 @@ Show Debugs ${output}= Write Commands Until Prompt sudo ip netns list Log ${output} : FOR ${index} IN @{vm_indices} - \ ${output}= Write Commands Until Prompt nova show ${index} + \ ${output}= Write Commands Until Prompt nova show ${index} 30s \ Log ${output} + Close Connection \ No newline at end of file