From 3dcc7e7801c39053e08bdc6c45402267d31ae56d Mon Sep 17 00:00:00 2001 From: nikoskarandreas Date: Mon, 15 Oct 2018 17:26:21 +0300 Subject: Using heat orchestrator for sdnvpn - test case 4 Heat orchestrator and the use of Heat Orchestrator Templates is introduced in sdnvpn test cases. The deployment of the nodes and networks under test is performed as a stack with the use of the openstack api and the use of the other apis is kept to as little as possible. The scenarios that are executed are the same as in the orginal test cases. This is the implementation of sdnvpn test case 4: VPN provides connectivity between subnets using router association JIRA: SDNVPN-219 Change-Id: If3783dd25577d22c18be5f088ab6657c38531d73 Signed-off-by: nikoskarandreas --- sdnvpn/artifacts/testcase_4bis.yaml | 247 ++++++++++++++++++++++++++++++++++++ 1 file changed, 247 insertions(+) create mode 100644 sdnvpn/artifacts/testcase_4bis.yaml (limited to 'sdnvpn/artifacts/testcase_4bis.yaml') diff --git a/sdnvpn/artifacts/testcase_4bis.yaml b/sdnvpn/artifacts/testcase_4bis.yaml new file mode 100644 index 0000000..ee59e1d --- /dev/null +++ b/sdnvpn/artifacts/testcase_4bis.yaml @@ -0,0 +1,247 @@ +heat_template_version: 2013-05-23 + +description: > + Template for SDNVPN testcase 4 + VPN provides connectivity between subnets using router association + +parameters: + flavor: + type: string + description: flavor for the servers to be created + constraints: + - custom_constraint: nova.flavor + image_n: + type: string + description: image for the servers to be created + constraints: + - custom_constraint: glance.image + av_zone_1: + type: string + description: availability zone 1 + av_zone_2: + type: string + description: availability zone 2 + + net_1_name: + type: string + description: network 1 + subnet_1_name: + type: string + description: subnet 1 name + subnet_1_cidr: + type: string + description: subnet 1 cidr + router_1_name: + type: string + description: router 1 cidr + net_2_name: + type: string + description: network 2 + subnet_2_name: + type: string + description: subnet 2 name + subnet_2_cidr: + type: string + description: subnet 1 cidr + + secgroup_name: + type: string + description: security group name + secgroup_descr: + type: string + description: security group slogan + + instance_1_name: + type: string + description: instance name + instance_2_name: + type: string + description: instance name + instance_3_name: + type: string + description: instance name + instance_4_name: + type: string + description: instance name + instance_5_name: + type: string + description: instance name + + ping_count: + type: string + description: ping count for user data script + default: 10 + +resources: + net_1: + type: OS::Neutron::Net + properties: + name: { get_param: net_1_name } + subnet_1: + type: OS::Neutron::Subnet + properties: + name: { get_param: subnet_1_name } + network: { get_resource: net_1 } + cidr: { get_param: subnet_1_cidr } + router_1: + type: OS::Neutron::Router + properties: + name: { get_param: router_1_name } + routerinterface_1: + type: OS::Neutron::RouterInterface + properties: + router_id: { get_resource: router_1 } + subnet_id: { get_resource: subnet_1 } + + net_2: + type: OS::Neutron::Net + properties: + name: { get_param: net_2_name } + subnet_2: + type: OS::Neutron::Subnet + properties: + name: { get_param: subnet_2_name } + network: { get_resource: net_2 } + cidr: { get_param: subnet_2_cidr } + + sec_group: + type: OS::Neutron::SecurityGroup + properties: + name: { get_param: secgroup_name } + description: { get_param: secgroup_descr } + rules: + - protocol: icmp + remote_ip_prefix: 0.0.0.0/0 + - protocol: tcp + port_range_min: 22 + port_range_max: 22 + remote_ip_prefix: 0.0.0.0/0 + + vm1: + type: OS::Nova::Server + depends_on: [ vm2, vm3, vm4, vm5 ] + properties: + name: { get_param: instance_1_name } + image: { get_param: image_n } + flavor: { get_param: flavor } + availability_zone: { get_param: av_zone_1 } + security_groups: + - { get_resource: sec_group } + networks: + - subnet: { get_resource: subnet_1 } + config_drive: True + user_data_format: RAW + user_data: + str_replace: + template: | + #!/bin/sh + set $IP_VM2 $IP_VM3 $IP_VM4 $IP_VM5 + while true; do + for i do + ip=$i + ping -c $COUNT $ip 2>&1 >/dev/null + RES=$? + if [ \"Z$RES\" = \"Z0\" ] ; then + echo ping $ip OK + else echo ping $ip KO + fi + done + sleep 1 + done + params: + $IP_VM2: { get_attr: [vm2, addresses, { get_resource: net_1}, 0, addr] } + $IP_VM3: { get_attr: [vm3, addresses, { get_resource: net_1}, 0, addr] } + $IP_VM4: { get_attr: [vm4, addresses, { get_resource: net_2}, 0, addr] } + $IP_VM5: { get_attr: [vm5, addresses, { get_resource: net_2}, 0, addr] } + $COUNT: { get_param: ping_count } + vm2: + type: OS::Nova::Server + properties: + name: { get_param: instance_2_name } + image: { get_param: image_n } + flavor: { get_param: flavor } + availability_zone: { get_param: av_zone_1 } + security_groups: + - { get_resource: sec_group } + networks: + - subnet: { get_resource: subnet_1 } + vm3: + type: OS::Nova::Server + properties: + name: { get_param: instance_3_name } + image: { get_param: image_n } + flavor: { get_param: flavor } + availability_zone: { get_param: av_zone_2 } + security_groups: + - { get_resource: sec_group } + networks: + - subnet: { get_resource: subnet_1 } + vm4: + type: OS::Nova::Server + depends_on: vm5 + properties: + name: { get_param: instance_4_name } + image: { get_param: image_n } + flavor: { get_param: flavor } + availability_zone: { get_param: av_zone_1 } + security_groups: + - { get_resource: sec_group } + networks: + - subnet: { get_resource: subnet_2 } + config_drive: True + user_data_format: RAW + user_data: + str_replace: + template: | + #!/bin/sh + set $IP_VM5 + while true; do + for i do + ip=$i + ping -c $COUNT $ip 2>&1 >/dev/null + RES=$? + if [ \"Z$RES\" = \"Z0\" ] ; then + echo ping $ip OK + else echo ping $ip KO + fi + done + sleep 1 + done + params: + $IP_VM5: { get_attr: [vm5, addresses, { get_resource: net_2}, 0, addr] } + $COUNT: { get_param: ping_count } + + vm5: + type: OS::Nova::Server + properties: + name: { get_param: instance_5_name } + image: { get_param: image_n } + flavor: { get_param: flavor } + availability_zone: { get_param: av_zone_2 } + security_groups: + - { get_resource: sec_group } + networks: + - subnet: { get_resource: subnet_2 } + +outputs: + router_1_o: + description: the id of network 1 + value: { get_attr: [router_1, show, id] } + net_2_o: + description: the id of network 2 + value: { get_attr: [net_2, show, id] } + vm1_o: + description: the deployed vm resource + value: { get_attr: [vm1, show, name] } + vm2_o: + description: the deployed vm resource + value: { get_attr: [vm2, show, name] } + vm3_o: + description: the deployed vm resource + value: { get_attr: [vm3, show, name] } + vm4_o: + description: the deployed vm resource + value: { get_attr: [vm4, show, name] } + vm5_o: + description: the deployed vm resource + value: { get_attr: [vm5, show, name] } -- cgit 1.2.3-korg