*** Settings ***
Documentation Openstack library. This library is useful for tests to create network, subnet, router and vm instances
+Library Collections
Library SSHLibrary
Resource DataModels.robot
Resource Utils.robot
[Documentation] Returns tenant ID by reading it from existing default security-group.
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${output}= Write Commands Until Prompt neutron security-group-show default | grep "| tenant_id" | awk '{print $4}'
+ ${output}= Write Commands Until Prompt openstack security group show default | grep "| tenant_id" | awk '{print $4}'
Log ${output}
[Return] ${output}
[Documentation] Create Network with neutron request.
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${command} Set Variable If "${verbose}" == "TRUE" neutron -v net-create ${network_name} ${additional_args} neutron net-create ${network_name} ${additional_args} | grep -w id | awk '{print $4}'
- ${output}= Write Commands Until Prompt ${command} 30s
+ ${output}= Write Commands Until Prompt openstack network create ${network_name} ${additional_args} 30s
Log ${output}
+ Should Contain ${output} ${OS_CMD_SUCCESS}
[Return] ${output}
Update Network
[Documentation] Update Network with neutron request.
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${output}= Write Commands Until Prompt neutron -v net-update ${network_name} ${additional_args} 30s
+ ${cmd}= Set Variable If '${OPENSTACK_BRANCH}'=='stable/newton' neutron -v net-update ${network_name} ${additional_args} openstack network set ${network_name} ${additional_args}
+ ${output}= Write Commands Until Prompt ${cmd} 30s
Log ${output}
Close Connection
[Return] ${output}
[Documentation] Show Network with neutron request.
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${output}= Write Commands Until Prompt neutron -v net-show ${network_name} 30s
+ ${output}= Write Commands Until Prompt openstack network show ${network_name} 30s
Log ${output}
Close Connection
[Return] ${output}
[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
+ ${output}= Write Commands Until Prompt openstack network list 30s
Close Connection
Log ${output}
[Return] ${output}
[Documentation] List subnets and return output with neutron client.
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${output}= Write Commands Until Prompt neutron subnet-list 30s
+ ${output}= Write Commands Until Prompt openstack subnet list 30s
Close Connection
Log ${output}
[Return] ${output}
[Documentation] Delete Network with neutron request.
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${output}= Write Commands Until Prompt neutron -v net-delete ${network_name} 30s
+ ${output}= Write Commands Until Prompt openstack network delete ${network_name} 30s
Close Connection
Log ${output}
- Should Match Regexp ${output} Deleted network: ${network_name}|Deleted network\\(s\\): ${network_name}
+ Should Contain ${output} ${OS_CMD_SUCCESS}
Create SubNet
[Arguments] ${network_name} ${subnet} ${range_ip} ${additional_args}=${EMPTY}
[Documentation] Create SubNet for the Network with neutron request.
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${output}= Write Commands Until Prompt neutron -v subnet-create ${network_name} ${range_ip} --name ${subnet} ${additional_args} 30s
+ ${output}= Write Commands Until Prompt openstack subnet create --network ${network_name} --subnet-range ${range_ip} ${subnet} ${additional_args} 30s
Close Connection
Log ${output}
- Should Contain ${output} Created a new subnet
+ Should Contain ${output} ${OS_CMD_SUCCESS}
Update SubNet
[Arguments] ${subnet_name} ${additional_args}=${EMPTY}
[Documentation] Update subnet with neutron request.
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${output}= Write Commands Until Prompt neutron -v subnet-update ${subnet_name} ${additional_args} 30s
+ ${cmd}= Set Variable If '${OPENSTACK_BRANCH}'=='stable/newton' neutron -v subnet-update ${subnet_name} ${additional_args} openstack subnet set ${subnet_name} ${additional_args}
+ ${output}= Write Commands Until Prompt ${cmd} 30s
Log ${output}
Close Connection
[Return] ${output}
[Documentation] Show subnet with neutron request.
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${output}= Write Commands Until Prompt neutron -v subnet-show ${subnet_name} 30s
+ ${output}= Write Commands Until Prompt openstack subnet show ${subnet_name} 30s
Log ${output}
Close Connection
[Return] ${output}
Create Port
- [Arguments] ${network_name} ${port_name} ${sg}=default ${additional_args}=${EMPTY}
+ [Arguments] ${network_name} ${port_name} ${sg}=default ${additional_args}=${EMPTY} ${allowed_address_pairs}=${EMPTY}
[Documentation] Create Port with neutron request.
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${output}= Write Commands Until Prompt neutron -v port-create ${network_name} --name ${port_name} --security-group ${sg} ${additional_args} 30s
+ # 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}= Get Length ${allowed_address_pairs}
+ ${allowed_pairs_argv}= 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}= 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}= Set Variable If '${address_pair_length}'=='0' ${EMPTY} ${allowed_pairs_argv}
+ ${cmd}= 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}
+ ${output}= Write Commands Until Prompt ${cmd} 30s
Close Connection
Log ${output}
- Should Contain ${output} Created a new port
+ Should Contain ${output} ${OS_CMD_SUCCESS}
Update Port
[Arguments] ${port_name} ${additional_args}=${EMPTY}
[Documentation] Update port with neutron request.
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${output}= Write Commands Until Prompt neutron -v port-update ${port_name} ${additional_args} 30s
+ ${output}= Write Commands Until Prompt openstack port set ${port_name} ${additional_args} 30s
Log ${output}
Close Connection
[Return] ${output}
[Documentation] Show port with neutron request.
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${output}= Write Commands Until Prompt neutron -v port-show ${port_name} 30s
+ ${output}= Write Commands Until Prompt openstack port show ${port_name} 30s
Log ${output}
Close Connection
[Return] ${output}
[Documentation] Delete Port with neutron request.
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${output}= Write Commands Until Prompt neutron -v port-delete ${port_name} 30s
+ ${output}= Write Commands Until Prompt openstack port delete ${port_name} 30s
Close Connection
Log ${output}
- Should Match Regexp ${output} Deleted port: ${port_name}|Deleted port\\(s\\): ${port_name}
+ Should Contain ${output} ${OS_CMD_SUCCESS}
List Ports
[Documentation] List ports and return output with neutron client.
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${output}= Write Commands Until Prompt neutron port-list 30s
+ ${output}= Write Commands Until Prompt openstack port list 30s
Close Connection
Log ${output}
[Return] ${output}
[Documentation] List VMs and return output with nova client.
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
+ #TODO Change to Openstak CLI once the problem with Ocata is solved
${output}= Write Commands Until Prompt nova list 30s
Close Connection
Log ${output}
Switch Connection ${devstack_conn_id}
${ip_list}= Create List @{EMPTY}
: FOR ${vm} IN @{vm_list}
- \ ${output}= Write Commands Until Prompt neutron floatingip-create ${external_net} 30s
+ \ ${output}= Write Commands Until Prompt openstack floating ip create ${external_net} 30s
\ Log ${output}
\ @{ip} Get Regexp Matches ${output} [0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}
\ ${ip_length} Get Length ${ip}
\ Run Keyword If ${ip_length}>0 Append To List ${ip_list} @{ip}[0]
\ ... ELSE Append To List ${ip_list} None
- \ ${output}= Write Commands Until Prompt nova floating-ip-associate ${vm} @{ip}[0] 30s
+ \ ${output}= Write Commands Until Prompt openstack server add floating ip ${vm} @{ip}[0] 30s
\ Log ${output}
[Return] ${ip_list}
Log ${subnet}
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${output}= Write Commands Until Prompt neutron -v subnet-delete ${subnet}
+ ${output}= Write Commands Until Prompt openstack subnet delete ${subnet}
Close Connection
Log ${output}
- Should Match Regexp ${output} Deleted subnet: ${subnet}|Deleted subnet\\(s\\): ${subnet}
+ Should Contain ${output} ${OS_CMD_SUCCESS}
Verify No Gateway Ips
[Documentation] Verifies the Gateway Ips removed with dump flow.
[Documentation] Delete Vm instances using instance names.
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${output}= Write Commands Until Prompt nova force-delete ${vm_name} 40s
+ ${output}= Write Commands Until Prompt openstack server delete ${vm_name} 40s
Close Connection
Get Net Id
[Arguments] ${network_name} ${devstack_conn_id}
[Documentation] Retrieve the net id for the given network name to create specific vm instance
Switch Connection ${devstack_conn_id}
- ${output}= Write Commands Until Prompt neutron net-list | grep "${network_name}" | awk '{print $2}' 30s
+ ${output}= Write Commands Until Prompt openstack network list | grep "${network_name}" | awk '{print $2}' 30s
Log ${output}
${splitted_output}= Split String ${output} ${EMPTY}
${net_id}= Get from List ${splitted_output} 0
[Arguments] ${subnet_name} ${devstack_conn_id}
[Documentation] Retrieve the subnet id for the given subnet name
Switch Connection ${devstack_conn_id}
- ${output}= Write Commands Until Prompt neutron subnet-list | grep "${subnet_name}" | awk '{print $2}' 30s
+ ${output}= Write Commands Until Prompt openstack subnet show "${subnet_name}" | grep " id " | awk '{print $4}' 30s
Log ${output}
${splitted_output}= Split String ${output} ${EMPTY}
${subnet_id}= Get from List ${splitted_output} 0
[Arguments] ${port_name} ${devstack_conn_id}
[Documentation] Retrieve the port id for the given port name to attach specific vm instance to a particular port
Switch Connection ${devstack_conn_id}
- ${output}= Write Commands Until Prompt neutron port-list | grep "${port_name}" | awk '{print $2}' 30s
+ ${output}= Write Commands Until Prompt openstack port list | grep "${port_name}" | awk '{print $2}' 30s
Log ${output}
${splitted_output}= Split String ${output} ${EMPTY}
${port_id}= Get from List ${splitted_output} 0
[Arguments] ${router1} ${devstack_conn_id}
[Documentation] Retrieve the router id for the given router name
Switch Connection ${devstack_conn_id}
- ${output}= Write Commands Until Prompt neutron router-list | grep "${router1}" | awk '{print $2}' 30s
+ ${output}= Write Commands Until Prompt openstack router list | grep "${router1}" | awk '{print $2}' 30s
Log ${output}
${splitted_output}= Split String ${output} ${EMPTY}
${router_id}= Get from List ${splitted_output} 0
Switch Connection ${devstack_conn_id}
${net_id}= Get Net Id ${net_name} ${devstack_conn_id}
: FOR ${VmElement} IN @{vm_instance_names}
- \ ${output}= Write Commands Until Prompt nova boot --image ${image} --flavor ${flavor} --nic net-id=${net_id} ${VmElement} --security-groups ${sg} 30s
+ \ ${output}= Write Commands Until Prompt openstack server create --image ${image} --flavor ${flavor} --nic net-id=${net_id} ${VmElement} --security-group ${sg} 30s
\ Log ${output}
Create Vm Instance With Port
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
${port_id}= Get Port Id ${port_name} ${devstack_conn_id}
- ${output}= Write Commands Until Prompt nova boot --image ${image} --flavor ${flavor} --nic port-id=${port_id} ${vm_instance_name} --security-groups ${sg} 30s
+ ${output}= Write Commands Until Prompt openstack server create --image ${image} --flavor ${flavor} --nic port-id=${port_id} ${vm_instance_name} --security-groups ${sg} 30s
Log ${output}
Create Vm Instance With Ports
Switch Connection ${devstack_conn_id}
${port_id}= Get Port Id ${port_name} ${devstack_conn_id}
${port2_id}= Get Port Id ${port2_name} ${devstack_conn_id}
- ${output}= Write Commands Until Prompt nova boot --image ${image} --flavor ${flavor} --nic port-id=${port_id} --nic port-id=${port2_id} ${vm_instance_name} --security-groups ${sg} 30s
+ ${output}= Write Commands Until Prompt openstack server create --image ${image} --flavor ${flavor} --nic port-id=${port_id} --nic port-id=${port2_id} ${vm_instance_name} --security-group ${sg} 30s
Log ${output}
Create Vm Instance With Port On Compute Node
Switch Connection ${devstack_conn_id}
${port_id}= Get Port Id ${port_name} ${devstack_conn_id}
${hostname_compute_node}= Run Command On Remote System ${compute_node} hostname
- ${output}= Write Commands Until Prompt nova boot --image ${image} --flavor ${flavor} --nic port-id=${port_id} ${vm_instance_name} --security-groups ${sg} --availability-zone nova:${hostname_compute_node} 30s
+ ${output}= Write Commands Until Prompt openstack server create --image ${image} --flavor ${flavor} --nic port-id=${port_id} --security-group ${sg} --availability-zone nova:${hostname_compute_node} ${vm_instance_name} 30s
Log ${output}
Verify VM Is ACTIVE
[Documentation] Run these commands to check whether the created vm instance is active or not.
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
+ #TODO Change to Openstack CLI Command once the Ocata Issue is resolved
${output}= Write Commands Until Prompt nova show ${vm_name} | grep OS-EXT-STS:vm_state 30s
Log ${output}
Should Contain ${output} active
Switch Connection ${devstack_conn_id}
${ip_list} Create List @{EMPTY}
: FOR ${vm} IN @{vm_list}
- \ ${vm_ip_line}= Write Commands Until Prompt nova console-log ${vm} | grep -i "obtained" 30s
+ \ ${vm_ip_line}= Write Commands Until Prompt openstack console log show ${vm} | grep -i "obtained" 30s
\ Log ${vm_ip_line}
\ @{vm_ip} Get Regexp Matches ${vm_ip_line} [0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}
\ ${vm_ip_length} Get Length ${vm_ip}
\ Run Keyword If ${vm_ip_length}>0 Append To List ${ip_list} @{vm_ip}[0]
\ ... ELSE Append To List ${ip_list} None
- \ ${dhcp_ip_line}= Write Commands Until Prompt nova console-log ${vm} | grep "^nameserver" 30s
+ \ ${dhcp_ip_line}= Write Commands Until Prompt openstack console log show ${vm} | grep "^nameserver" 30s
\ Log ${dhcp_ip_line}
\ ${dhcp_ip} Get Regexp Matches ${dhcp_ip_line} [0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}
\ ${dhcp_ip_length} Get Length ${dhcp_ip}
: FOR ${VmElement} IN @{vm_instance_names}
\ ${output}= Write Commands Until Prompt nova show ${VmElement}
\ Log ${output}
- \ ${output}= Write Commands Until Prompt nova console-log ${VmElement}
+ \ ${output}= Write Commands Until Prompt openstack console log show ${VmElement}
\ Log ${output}
Ping Vm From DHCP Namespace
[Documentation] Create Router and Add Interface to the subnets.
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${output}= Write Commands Until Prompt neutron -v router-create ${router_name} 30s
+ ${output}= Write Commands Until Prompt openstack router create ${router_name} 30s
Close Connection
- Should Contain ${output} Created a new router
+ Should Contain ${output} ${OS_CMD_SUCCESS}
List Router
[Documentation] List Router and return output with neutron client.
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${output}= Write Commands Until Prompt neutron router-list 30s
+ ${output}= Write Commands Until Prompt openstack router list 30s
Close Connection
Log ${output}
[Return] ${output}
[Arguments] ${router_name} ${interface_name}
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${output}= Write Commands Until Prompt neutron -v router-interface-add ${router_name} ${interface_name}
+ ${output}= Write Commands Until Prompt openstack router add subnet ${router_name} ${interface_name}
Close Connection
- Should Contain ${output} Added interface
+ Should Contain ${output} ${OS_CMD_SUCCESS}
Show Router Interface
[Arguments] ${router_name}
[Documentation] List Router interface associated with given Router and return output with neutron client.
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${output}= Write Commands Until Prompt neutron router-port-list ${router_name} -f csv 30s
+ ${output}= Write Commands Until Prompt openstack port list --router ${router_name} 30s
Close Connection
Log ${output}
[Return] ${output}
Add Router Gateway
- [Arguments] ${router_name} ${network_name}
+ [Arguments] ${router_name} ${external_network_name}
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${output}= Write Commands Until Prompt neutron -v router-gateway-set ${router_name} ${network_name}
+ ${cmd}= 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}
+ ${output}= Write Commands Until Prompt ${cmd} 30s
Close Connection
- Should Contain ${output} Set gateway
+ Should Contain ${output} ${OS_CMD_SUCCESS}
Remove Interface
[Arguments] ${router_name} ${interface_name}
[Documentation] Remove Interface to the subnets.
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${output}= Write Commands Until Prompt neutron -v router-interface-delete ${router_name} ${interface_name}
+ ${output}= Write Commands Until Prompt openstack router remove subnet ${router_name} ${interface_name}
Close Connection
- Should Contain ${output} Removed interface from router
+ Should Contain ${output} ${OS_CMD_SUCCESS}
Update Router
[Arguments] ${router_name} ${cmd}
[Documentation] Update the router with the command. Router name and command should be passed as argument.
${devstack_conn_id} = Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${output} = Write Commands Until Prompt neutron router-update ${router_name} ${cmd} 30s
+ ${output} = Write Commands Until Prompt openstack router set ${router_name} ${cmd} 30s
Close Connection
- Should Contain ${output} Updated
+ Should Contain ${output} ${OS_CMD_SUCCESS}
Show Router
[Arguments] ${router_name} ${options}
[Documentation] Show information of a given router. Router name and optional fields should be sent as arguments.
${devstack_conn_id} = Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${output} = Write Commands Until Prompt neutron router-show ${router_name} ${options} 30s
+ ${output} = Write Commands Until Prompt openstack router show ${router_name} 30s
Log ${output}
Close Connection
[Documentation] Delete Router and Interface to the subnets.
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${output}= Write Commands Until Prompt neutron -v router-delete ${router_name} 60s
+ ${output}= Write Commands Until Prompt openstack router delete ${router_name} 60s
Close Connection
- Should Match Regexp ${output} Deleted router: ${router_name}|Deleted router\\(s\\): ${router_name}
+ Should Contain ${output} ${OS_CMD_SUCCESS}
Get DumpFlows And Ovsconfig
[Arguments] ${openstack_node_ip}
[Arguments] ${sg_name} ${desc}
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${output}= Write Commands Until Prompt nova secgroup-create ${sg_name} ${desc} 40s
+ ${output}= Write Commands Until Prompt openstack security group create ${sg_name} --description ${desc} 40s
Close Connection
Create Security Rule
[Arguments] ${direction} ${protocol} ${min_port} ${max_port} ${remote_ip} ${sg_name}
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${output}= Write Commands Until Prompt neutron security-group-rule-create --direction ${direction} --protocol ${protocol} --port-range-min ${min_port} --port-range-max ${max_port} --remote-ip-prefix ${remote_ip} ${sg_name}
+ ${output}= Write Commands Until Prompt openstack security group rule create --${direction} --protocol ${protocol} --dst-port ${min_port}:${max_port} --remote-ip ${remote_ip} ${sg_name}
Close Connection
Neutron Security Group Show
- [Arguments] ${SecurityGroupRuleName} ${additional_args}=${EMPTY}
+ [Arguments] ${SecurityGroupRuleName}
[Documentation] Displays the neutron security group configurations that belongs to a given neutron security group name
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${cmd}= Set Variable neutron security-group-show ${SecurityGroupRuleName} ${additional_args}
+ ${cmd}= Set Variable openstack security group show ${SecurityGroupRuleName}
Log ${cmd}
${output}= Write Commands Until Prompt ${cmd} 30s
Log ${output}
[Return] ${output}
Neutron Port Show
- [Arguments] ${PortName} ${additional_args}=${EMPTY}
+ [Arguments] ${PortName}
[Documentation] Display the port configuration that belong to a given neutron port
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${cmd}= Set Variable neutron port-show ${PortName} ${additional_args}
+ ${cmd}= Set Variable openstack port show ${PortName}
Log ${cmd}
${output}= Write Commands Until Prompt ${cmd} 30s
Log ${output}
[Documentation] Create a security group with specified name ,description & protocol value according to security group template
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${cmd}= Set Variable neutron security-group-create ${SecurityGroupName} ${additional_args}
+ ${cmd}= Set Variable openstack security group create ${SecurityGroupName} ${additional_args}
Log ${cmd}
${output}= Write Commands Until Prompt ${cmd} 30s
Log ${output}
- Should Contain ${output} Created a new security_group
+ Should Contain ${output} ${OS_CMD_SUCCESS}
${sgp_id}= Should Match Regexp ${output} [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}
Log ${sgp_id}
Close Connection
[Documentation] Updating security groups
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${cmd}= Set Variable neutron security-group-update ${SecurityGroupName} ${additional_args}
+ ${cmd}= Set Variable openstack security group set ${SecurityGroupName} ${additional_args}
Log ${cmd}
${output}= Write Commands Until Prompt ${cmd} 30s
Log ${output}
[Documentation] Delete Security group
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${output}= Write Commands Until Prompt neutron security-group-delete ${sg_name} 40s
+ ${output}= Write Commands Until Prompt openstack security group delete ${sg_name} 40s
Log ${output}
- Should Match Regexp ${output} Deleted security_group: ${sg_name}|Deleted security_group\\(s\\): ${sg_name}
+ Should Contain ${output} ${OS_CMD_SUCCESS}
Close Connection
Neutron Security Group Rule Create
+ [Arguments] ${Security_group_name} &{Kwargs}
+ [Documentation] Creates neutron security rule with Openstack CLI with or without optional params, here security group name is mandatory args, rule with optional params can be created by passing the optional args values ex: direction=${INGRESS_EGRESS}, Then these optional params are catenated with mandatory args, example of usage: "Neutron Security Group Rule Create ${SGP_SSH} direction=${RULE_PARAMS[0]} ethertype=${RULE_PARAMS[1]} ..."
+ ${devstack_conn_id}= Get ControlNode Connection
+ Switch Connection ${devstack_conn_id}
+ Run Keyword If ${Kwargs} Log ${Kwargs}
+ ${description} Run Keyword If ${Kwargs} Pop From Dictionary ${Kwargs} description default=${None}
+ ${direction} Run Keyword If ${Kwargs} Pop From Dictionary ${Kwargs} direction default=${None}
+ ${ethertype} Run Keyword If ${Kwargs} Pop From Dictionary ${Kwargs} ethertype default=${None}
+ ${port_range_max} Run Keyword If ${Kwargs} Pop From Dictionary ${Kwargs} port_range_max default=${None}
+ ${port_range_min} Run Keyword If ${Kwargs} Pop From Dictionary ${Kwargs} port_range_min default=${None}
+ ${protocol} Run Keyword If ${Kwargs} Pop From Dictionary ${Kwargs} protocol default=${None}
+ ${remote_group_id} Run Keyword If ${Kwargs} Pop From Dictionary ${Kwargs} remote_group_id default=${None}
+ ${remote_ip_prefix} Run Keyword If ${Kwargs} Pop From Dictionary ${Kwargs} remote_ip_prefix default=${None}
+ ${cmd}= Set Variable openstack security group rule create ${Security_group_name}
+ ${cmd}= Run Keyword If '${description}'!='None' Catenate ${cmd} --description ${description}
+ ... ELSE Catenate ${cmd}
+ ${cmd}= Run Keyword If '${direction}'!='None' Catenate ${cmd} --${direction}
+ ... ELSE Catenate ${cmd}
+ ${cmd}= Run Keyword If '${ethertype}'!='None' Catenate ${cmd} --ethertype ${ethertype}
+ ... ELSE Catenate ${cmd}
+ ${cmd}= Run Keyword If '${port_range_min}'!='None' and '${port_range_max}'!='None' Catenate ${cmd} --dst-port ${port_range_min}:${port_range_max}
+ ... ELSE IF '${port_range_max}'!='None' Catenate ${cmd} --dst-port ${port_range_max}
+ ... ELSE IF '${port_range_min}'!='None' Catenate ${cmd} --dst-port ${port_range_min}
+ ... ELSE Catenate ${cmd}
+ ${cmd}= Run Keyword If '${protocol}'!='None' Catenate ${cmd} --protocol ${protocol}
+ ... ELSE Catenate ${cmd}
+ ${cmd}= Run Keyword If '${remote_group_id}'!='None' Catenate ${cmd} --remote-group ${remote_group_id}
+ ... ELSE Catenate ${cmd}
+ ${cmd}= Run Keyword If '${remote_ip_prefix}'!='None' Catenate ${cmd} --remote-ip ${remote_ip_prefix}
+ ... ELSE Catenate ${cmd}
+ ${output}= Write Commands Until Prompt ${cmd} 30s
+ ${rule_id}= Should Match Regexp ${output} [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}
+ Log ${rule_id}
+ Should Contain ${output} ${OS_CMD_SUCCESS}
+ Close Connection
+ [Return] ${output} ${rule_id}
+
+Neutron Security Group Rule Create Legacy Cli
[Arguments] ${Security_group_name} &{Kwargs}
[Documentation] Creates neutron security rule with neutron request with or without optional params, here security group name is mandatory args, rule with optional params can be created by passing the optional args values ex: direction=${INGRESS_EGRESS}, Then these optional params are catenated with mandatory args, example of usage: "Neutron Security Group Rule Create ${SGP_SSH} direction=${RULE_PARAMS[0]} ethertype=${RULE_PARAMS[1]} ..."
${devstack_conn_id}= Get ControlNode Connection
Log ${cmd}
${OUTPUT}= Write Commands Until Prompt ${cmd} 30s
Log ${OUTPUT}
- Should Contain ${output} Created a new port
+ Should Contain ${output} ${OS_CMD_SUCCESS}
${port_id}= Should Match Regexp ${OUTPUT} [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}
Log ${port_id}
Close Connection
[Arguments] ${port_name} ${conn_id}=${devstack_conn_id}
[Documentation] Keyword would return the MAC ID of the ${port_name} received.
Switch Connection ${conn_id}
- ${output}= Write Commands Until Prompt neutron port-list | grep "${port_name}" | awk '{print $6}' 30s
+ ${output}= Write Commands Until Prompt openstack port show ${port_name} | grep mac_address | awk '{print $4}' 30s
Log ${output}
${splitted_output}= Split String ${output} ${EMPTY}
${port_mac}= Get from List ${splitted_output} 0
[Documentation] Reboot NOVA VM
${devstack_conn_id}= Get ControlNode Connection
Switch Connection ${devstack_conn_id}
- ${output}= Write Commands Until Prompt nova reboot --poll ${vm_name} 30s
+ ${output}= Write Commands Until Prompt openstack server reboot --wait ${vm_name} 30s
Log ${output}
Wait Until Keyword Succeeds 35s 10s Verify VM Is ACTIVE ${vm_name}
Close Connection
@{EXTRA_NW_SUBNET} 40.1.1.0/24 50.1.1.0/24
${SECURITY_GROUP} sg-vpnservice
# Values passed for extra routes
-${RT_OPTIONS} --routes type=dict list=true
-${RT_CLEAR} --routes action=clear
+${RT_OPTIONS} --route
+${RT_CLEAR} --no-route
${ARP_RESPONSE_REGEX} arp,arp_op=2 actions=CONTROLLER:65535,resubmit\\(,${DISPATCHER_TABLE}\\)
${ARP_REQUEST_REGEX} arp,arp_op=1 actions=group:\\d+
${ARP_REQUEST_GROUP_REGEX} actions=CONTROLLER:65535,bucket=actions=resubmit\\(,${DISPATCHER_TABLE}\\),bucket=actions=resubmit\\(,${ARP_RESPONSE_TABLE}\\)
Add Ssh Allow Rule
[Documentation] Allow all TCP/UDP/ICMP packets for this suite
Neutron Security Group Create ${SECURITY_GROUP}
- Neutron Security Group Rule Create ${SECURITY_GROUP} direction=ingress port_range_max=65535 port_range_min=1 protocol=tcp remote_ip_prefix=0.0.0.0/0
- Neutron Security Group Rule Create ${SECURITY_GROUP} direction=egress port_range_max=65535 port_range_min=1 protocol=tcp remote_ip_prefix=0.0.0.0/0
- Neutron Security Group Rule Create ${SECURITY_GROUP} direction=ingress protocol=icmp remote_ip_prefix=0.0.0.0/0
- Neutron Security Group Rule Create ${SECURITY_GROUP} direction=egress protocol=icmp remote_ip_prefix=0.0.0.0/0
- Neutron Security Group Rule Create ${SECURITY_GROUP} direction=ingress port_range_max=65535 port_range_min=1 protocol=udp remote_ip_prefix=0.0.0.0/0
- Neutron Security Group Rule Create ${SECURITY_GROUP} direction=egress port_range_max=65535 port_range_min=1 protocol=udp remote_ip_prefix=0.0.0.0/0
+ Neutron Security Group Rule Create ${SECURITY_GROUP} direction=ingress port_range_max=65535 port_range_min=1 protocol=tcp
+ Neutron Security Group Rule Create ${SECURITY_GROUP} direction=egress port_range_max=65535 port_range_min=1 protocol=tcp
+ Neutron Security Group Rule Create ${SECURITY_GROUP} direction=ingress protocol=icmp
+ Neutron Security Group Rule Create ${SECURITY_GROUP} direction=egress protocol=icmp
+ Neutron Security Group Rule Create ${SECURITY_GROUP} direction=ingress port_range_max=65535 port_range_min=1 protocol=udp
+ Neutron Security Group Rule Create ${SECURITY_GROUP} direction=egress port_range_max=65535 port_range_min=1 protocol=udp
Create Neutron Ports
[Documentation] Create four ports under previously created subnets
- ${allowed_address_pairs_args}= Set Variable --allowed-address-pairs type=dict list=true ip_address=${EXTRA_NW_SUBNET[0]} ip_address=${EXTRA_NW_SUBNET[1]}
- Create Port ${NETWORKS[0]} ${PORT_LIST[0]} sg=${SECURITY_GROUP} additional_args=${allowed_address_pairs_args}
- Create Port ${NETWORKS[0]} ${PORT_LIST[1]} sg=${SECURITY_GROUP} additional_args=${allowed_address_pairs_args}
- Create Port ${NETWORKS[1]} ${PORT_LIST[2]} sg=${SECURITY_GROUP} additional_args=${allowed_address_pairs_args}
- Create Port ${NETWORKS[1]} ${PORT_LIST[3]} sg=${SECURITY_GROUP} additional_args=${allowed_address_pairs_args}
+ ${allowed_address_pairs_args}= Set Variable --allowed-address ip_address=${EXTRA_NW_SUBNET[0]} --allowed-address ip_address=${EXTRA_NW_SUBNET[1]}
+ ${allowed_address_pairs_os_cli}= Set Variable --allowed-address ip-address=${EXTRA_NW_SUBNET[0]} --allowed-address ip-address=${EXTRA_NW_SUBNET[1]}
+ Run Keyword If '${OPENSTACK_BRANCH}'=='stable/newton' Create Port ${NETWORKS[0]} ${PORT_LIST[0]} sg=${SECURITY_GROUP} additional_args=${allowed_address_pairs_args}
+ ... ELSE Create Port ${NETWORKS[0]} ${PORT_LIST[0]} sg=${SECURITY_GROUP} additional_args=${allowed_address_pairs_os_cli}
+ Run Keyword If '${OPENSTACK_BRANCH}'=='stable/newton' Create Port ${NETWORKS[0]} ${PORT_LIST[1]} sg=${SECURITY_GROUP} additional_args=${allowed_address_pairs_args}
+ ... ELSE Create Port ${NETWORKS[0]} ${PORT_LIST[1]} sg=${SECURITY_GROUP} additional_args=${allowed_address_pairs_os_cli}
+ Run Keyword If '${OPENSTACK_BRANCH}'=='stable/newton' Create Port ${NETWORKS[1]} ${PORT_LIST[2]} sg=${SECURITY_GROUP} additional_args=${allowed_address_pairs_args}
+ ... ELSE Create Port ${NETWORKS[1]} ${PORT_LIST[2]} sg=${SECURITY_GROUP} additional_args=${allowed_address_pairs_os_cli}
+ Run Keyword If '${OPENSTACK_BRANCH}'=='stable/newton' Create Port ${NETWORKS[1]} ${PORT_LIST[3]} sg=${SECURITY_GROUP} additional_args=${allowed_address_pairs_args}
+ ... ELSE Create Port ${NETWORKS[1]} ${PORT_LIST[3]} sg=${SECURITY_GROUP} additional_args=${allowed_address_pairs_os_cli}
Wait Until Keyword Succeeds 3s 1s Check For Elements At URI ${CONFIG_API}/neutron:neutron/ports/ ${PORT_LIST}
${PORTS_MACADDR} = Get Ports MacAddr ${PORT_LIST}
Set Suite Variable ${PORTS_MACADDR}
Update Port ${PORT_LIST[0]} additional_args=--description ${UPDATE_PORT}
${output} = Show Port ${PORT_LIST[0]}
- Should Contain ${output} ${UPDATE_PORT}
Create Nova VMs
[Documentation] Create Vm instances on compute node with port
: FOR ${INTERFACE} IN @{SUBNETS}
\ Add Router Interface ${ROUTERS[0]} ${INTERFACE}
${interface_output} = Show Router Interface ${ROUTERS[0]}
- : FOR ${INTERFACE} IN @{SUBNETS}
- \ ${subnet_id} = Get Subnet Id ${INTERFACE} ${devstack_conn_id}
- \ Should Contain ${interface_output} ${subnet_id}
${GWMAC_ADDRS} ${GWIP_ADDRS} = Get Gateway MAC And IP Address ${ROUTERS[0]}
Log ${GWMAC_ADDRS}
Set Suite Variable ${GWMAC_ADDRS}
${CONFIG_EXTRA_ROUTE_IP2} = Catenate sudo ifconfig eth0:2 @{EXTRA_NW_IP}[1] netmask 255.255.255.0 up
${output} = Execute Command on VM Instance @{NETWORKS}[0] ${VM_IP_NET10[0]} ${CONFIG_EXTRA_ROUTE_IP2}
${output} = Execute Command on VM Instance @{NETWORKS}[0] ${VM_IP_NET10[0]} ifconfig
- ${EXT_RT1} = Set Variable destination=40.1.1.0/24,nexthop=${VM_IP_NET10[0]}
- ${EXT_RT2} = Set Variable destination=50.1.1.0/24,nexthop=${VM_IP_NET10[0]}
- ${cmd} = Catenate ${RT_OPTIONS} ${EXT_RT1} ${EXT_RT2}
+ ${EXT_RT1} = Set Variable destination=40.1.1.0/24,gateway=${VM_IP_NET10[0]}
+ ${EXT_RT2} = Set Variable destination=50.1.1.0/24,gateway=${VM_IP_NET10[0]}
+ ${cmd} = Catenate ${RT_OPTIONS} ${EXT_RT1} ${RT_OPTIONS} ${EXT_RT2}
Update Router @{ROUTERS}[0] ${cmd}
Show Router @{ROUTERS}[0] -D
Log "Verify FIB table"
Log "Adding extra route to VM"
${CONFIG_EXTRA_ROUTE_IP1} = Catenate sudo ifconfig eth0:1 @{EXTRA_NW_IP}[0] netmask 255.255.255.0 up
${output} = Execute Command on VM Instance @{NETWORKS}[0] ${VM_IP_NET10[0]} ${CONFIG_EXTRA_ROUTE_IP1}
- ${EXT_RT1} = Set Variable destination=40.1.1.0/24,nexthop=${VM_IP_NET10[0]}
+ ${EXT_RT1} = Set Variable destination=40.1.1.0/24,gateway=${VM_IP_NET10[0]}
${cmd} = Catenate ${RT_OPTIONS} ${EXT_RT1}
Update Router @{ROUTERS}[0] ${cmd}
Show Router @{ROUTERS}[0] -D