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
- 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
+ OpenStackOperations.Create Allow All SecurityGroup ${SECURITY_GROUP}
Create Neutron Ports
[Documentation] Create four ports under previously created subnets
- ${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}
+ ${allowed_address_pairs_args}= Set Variable If '${OPENSTACK_BRANCH}'=='stable/newton' --allowed-address ip_address=${EXTRA_NW_SUBNET[0]} --allowed-address ip_address=${EXTRA_NW_SUBNET[1]} --allowed-address ip-address=${EXTRA_NW_SUBNET[0]} --allowed-address 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}
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}
Create Vm Instance With Port On Compute Node ${PORT_LIST[3]} ${VM_INSTANCES_NET20[1]} ${OS_COMPUTE_2_IP} sg=${SECURITY_GROUP}
${VM_INSTANCES} = Create List @{VM_INSTANCES_NET10} @{VM_INSTANCES_NET20}
: FOR ${VM} IN @{VM_INSTANCES}
- \ Wait Until Keyword Succeeds 25s 5s Verify VM Is ACTIVE ${VM}
+ \ Poll VM Is ACTIVE ${VM}
Log Check for routes
Wait Until Keyword Succeeds 30s 10s Wait For Routes To Propogate ${NETWORKS} ${SUBNETS_CIDR}
${status} ${message} Run Keyword And Ignore Error Wait Until Keyword Succeeds 60s 5s Collect VM IP Addresses
${LOOP_COUNT} Get Length ${VM_INSTANCES_NET10}
: FOR ${index} IN RANGE 0 ${LOOP_COUNT}
\ ${status} ${message} Run Keyword And Ignore Error Should Not Contain @{VM_IPS}[${index}] None
- \ Run Keyword If '${status}' == 'FAIL' Write Commands Until Prompt nova console-log @{VM_INSTANCES}[${index}] 30s
+ \ Run Keyword If '${status}' == 'FAIL' Write Commands Until Prompt openstack console log show @{VM_INSTANCES}[${index}] 30s
Log ${VM_IP_NET10}
Set Suite Variable ${VM_IP_NET10}
Log ${VM_IP_NET20}
Should Not Contain ${VM_IP_NET10} None
Should Not Contain ${VM_IP_NET20} None
[Teardown] Run Keywords Show Debugs @{VM_INSTANCES_NET10} @{VM_INSTANCES_NET20}
- ... AND Get Suite Teardown Debugs
+ ... AND Get Test Teardown Debugs
Check ELAN Datapath Traffic Within The Networks
[Documentation] Checks datapath within the same network with different vlans.
Add Interfaces To Router
[Documentation] Add Interfaces
- ${devstack_conn_id} = Get ControlNode Connection
: FOR ${INTERFACE} IN @{SUBNETS}
\ Add Router Interface ${ROUTERS[0]} ${INTERFACE}
${interface_output} = Show Router Interface ${ROUTERS[0]}
Create L3VPN
[Documentation] Creates L3VPN and verify the same
- ${devstack_conn_id} = Get ControlNode Connection
- Switch Connection ${devstack_conn_id}
${net_id} = Get Net Id @{NETWORKS}[0] ${devstack_conn_id}
${tenant_id} = Get Tenant ID From Network ${net_id}
Log @{RDS}[0]
Associate L3VPN To Routers
[Documentation] Associating router to L3VPN
- ${devstack_conn_id}= Get ControlNode Connection
${router_id}= Get Router Id ${ROUTERS[0]} ${devstack_conn_id}
Associate VPN to Router routerid=${router_id} vpnid=${VPN_INSTANCE_ID[0]}
${resp}= VPN Get L3VPN vpnid=${VPN_INSTANCE_ID[0]}
Dissociate L3VPN From Routers
[Documentation] Dissociating router from L3VPN
- ${devstack_conn_id}= Get ControlNode Connection
${router_id}= Get Router Id ${ROUTERS[0]} ${devstack_conn_id}
Dissociate VPN to Router routerid=${router_id} vpnid=${VPN_INSTANCE_ID[0]}
${resp}= VPN Get L3VPN vpnid=${VPN_INSTANCE_ID[0]}
Delete Router And Router Interfaces With L3VPN
[Documentation] Delete Router and Interface to the subnets with L3VPN assciate
# Asscoiate router with L3VPN
- ${devstack_conn_id} = Get ControlNode Connection
${router_id}= Get Router Id ${ROUTERS[0]} ${devstack_conn_id}
Associate VPN to Router routerid=${router_id} vpnid=${VPN_INSTANCE_ID[0]}
${resp}= VPN Get L3VPN vpnid=${VPN_INSTANCE_ID[0]}
Delete Router With NonExistentRouter Name
[Documentation] Delete router with nonExistentRouter name
- ${devstack_conn_id}= Get ControlNode Connection
- Switch Connection ${devstack_conn_id}
- ${output} = Write Commands Until Prompt neutron router-delete nonExistentRouter 30s
- Close Connection
+ ${rc} ${output}= Run And Return Rc And Output neutron router-delete nonExistentRouter
+ Log ${output}
+ Log ${rc}
Should Match Regexp ${output} Unable to find router with name or id 'nonExistentRouter'|Unable to find router\\(s\\) with id\\(s\\) 'nonExistentRouter'
Associate L3VPN To Networks
[Documentation] Associates L3VPN to networks and verify
- ${devstack_conn_id} = Get ControlNode Connection
${network1_id} = Get Net Id ${NETWORKS[0]} ${devstack_conn_id}
${network2_id} = Get Net Id ${NETWORKS[1]} ${devstack_conn_id}
Associate L3VPN To Network networkid=${network1_id} vpnid=${VPN_INSTANCE_ID[0]}
Dissociate L3VPN From Networks
[Documentation] Dissociate L3VPN from networks
- ${devstack_conn_id} = Get ControlNode Connection
${network1_id} = Get Net Id ${NETWORKS[0]} ${devstack_conn_id}
${network2_id} = Get Net Id ${NETWORKS[1]} ${devstack_conn_id}
Dissociate L3VPN From Networks networkid=${network1_id} vpnid=${VPN_INSTANCE_ID[0]}
Create Multiple L3VPN
[Documentation] Creates three L3VPNs and then verify the same
- ${devstack_conn_id} = Get ControlNode Connection
- Switch Connection ${devstack_conn_id}
${net_id} = Get Net Id @{NETWORKS}[0] ${devstack_conn_id}
${tenant_id} = Get Tenant ID From Network ${net_id}
VPN Create L3VPN vpnid=${VPN_INSTANCE_ID[0]} name=${VPN_NAME[0]} rd=${RDS[0]} exportrt=${RDS[0]} importrt=${RDS[0]} tenantid=${tenant_id}
Get Gateway MAC And IP Address
[Arguments] ${router_Name}
[Documentation] Get Gateway mac and IP Address
- ${devstack_conn_id}= Get ControlNode Connection
- Switch Connection ${devstack_conn_id}
${output} = Write Commands Until Prompt neutron router-port-list ${router_Name} 30s
@{MacAddr-list} = Get Regexp Matches ${output} ${MAC_REGEX}
@{IpAddr-list} = Get Regexp Matches ${output} ${IP_REGEX}
\ Should Contain ${gwmac_table} dl_dst=${macAdd} actions=goto_table:${L3_TABLE}
#verify Miss entry
Should Contain ${gwmac_table} actions=resubmit(,17)
+ #Verify ARP_CHECK_TABLE - 43
#arp request and response
- Should Match Regexp ${gwmac_table} ${ARP_RESPONSE_REGEX}
- ${match} = Should Match Regexp ${gwmac_table} ${ARP_REQUEST_REGEX}
+ ${arpchk_table} = Get Lines Containing String ${flow_output} table=${ARP_CHECK_TABLE}
+ Should Match Regexp ${arpchk_table} ${ARP_RESPONSE_REGEX}
+ ${match} = Should Match Regexp ${arpchk_table} ${ARP_REQUEST_REGEX}
${groupID} = Split String ${match} separator=:
Log groupID
Verify ARP REQUEST in groupTable ${group_output} ${groupID[1]}