From 9c18734887ec207073344d51e40bbe4da87178d7 Mon Sep 17 00:00:00 2001 From: MatthewLi Date: Fri, 1 Apr 2016 03:05:14 -0400 Subject: [PATCH] add unittest for basic heat api management and template creation functions JIRA: BOTTLENECK-58 Change-Id: Ie563f3f5e42f43bc9ac379b56bed23f33d96791d Signed-off-by: MatthewLi --- .../data/generated_templates/experiment_1.yaml | 300 ++++++++++++++++++++ .../data/generated_templates/experiment_2.yaml | 0 .../generated_templates/rubbos_1-1-1_template.tmp | 311 +++++++++++++++++++++ .../tests/data/test_templates/test_template_1.yaml | 311 +++++++++++++++++++++ .../heat/tests/generate_template_test.py | 78 ++++++ 5 files changed, 1000 insertions(+) create mode 100644 utils/infra_setup/heat/tests/data/generated_templates/experiment_1.yaml create mode 100644 utils/infra_setup/heat/tests/data/generated_templates/experiment_2.yaml create mode 100755 utils/infra_setup/heat/tests/data/generated_templates/rubbos_1-1-1_template.tmp create mode 100755 utils/infra_setup/heat/tests/data/test_templates/test_template_1.yaml create mode 100755 utils/infra_setup/heat/tests/generate_template_test.py diff --git a/utils/infra_setup/heat/tests/data/generated_templates/experiment_1.yaml b/utils/infra_setup/heat/tests/data/generated_templates/experiment_1.yaml new file mode 100644 index 00000000..53600443 --- /dev/null +++ b/utils/infra_setup/heat/tests/data/generated_templates/experiment_1.yaml @@ -0,0 +1,300 @@ +heat_template_version: 2013-05-23 + +description: > + HOT template to create a new neutron network plus a router to the public + network, and for deploying nine servers into the new network. The template also + assigns floating IP addresses to rubbos_control server so it is routable from the + public network. +parameters: + key_name: + type: string + description: Name of keypair to assign to servers + default: bottlenecks-key + image: + type: string + description: Name of image to use for servers + default: bottlenecks-trusty-server + flavor: + type: string + description: Flavor to use for servers + default: bottlenecks-flavor + public_net: + type: string + description: > + ID or name of public network for which floating IP addresses will be allocated + default: net04_ext + private_net_name: + type: string + description: Name of private network to be created + default: bottlenecks-private + private_net_cidr: + type: string + description: Private network address (CIDR notation) + default: "10.0.10.0/24" + private_net_gateway: + type: string + description: Private network gateway address + default: "10.0.10.1" + private_net_pool_start: + type: string + description: Start of private network IP address allocation pool + default: "10.0.10.2" + private_net_pool_end: + type: string + description: End of private network IP address allocation pool + default: "10.0.10.199" + +resources: + private_net: + type: OS::Neutron::Net + properties: + name: { get_param: private_net_name } + + private_subnet: + type: OS::Neutron::Subnet + properties: + network_id: { get_resource: private_net } + cidr: { get_param: private_net_cidr } + gateway_ip: { get_param: private_net_gateway } + allocation_pools: + - start: { get_param: private_net_pool_start } + end: { get_param: private_net_pool_end } + + router: + type: OS::Neutron::Router + properties: + external_gateway_info: + network: { get_param: public_net } + + router_interface: + type: OS::Neutron::RouterInterface + properties: + router_id: { get_resource: router } + subnet_id: { get_resource: private_subnet } + + rubbos_control: + type: OS::Nova::Server + properties: + name: rubbos_control + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_control_port } + admin_user: ubuntu + + rubbos_control_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_control_floating_ip: + type: OS::Neutron::FloatingIP + properties: + floating_network: { get_param: public_net } + port_id: { get_resource: rubbos_control_port } + + rubbos_httpd: + type: OS::Nova::Server + properties: + name: rubbos_httpd + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_httpd_port } + admin_user: ubuntu + + rubbos_httpd_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_mysql1: + type: OS::Nova::Server + properties: + name: rubbos_mysql1 + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_mysql1_port } + admin_user: ubuntu + + rubbos_mysql1_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_tomcat1: + type: OS::Nova::Server + properties: + name: rubbos_tomcat1 + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_tomcat1_port } + admin_user: ubuntu + + rubbos_tomcat1_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_client1: + type: OS::Nova::Server + properties: + name: rubbos_client1 + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_client1_port } + admin_user: ubuntu + + rubbos_client1_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_client2: + type: OS::Nova::Server + properties: + name: rubbos_client2 + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_client2_port } + admin_user: ubuntu + + rubbos_client2_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_client3: + type: OS::Nova::Server + properties: + name: rubbos_client3 + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_client3_port } + admin_user: ubuntu + + rubbos_client3_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_client4: + type: OS::Nova::Server + properties: + name: rubbos_client4 + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_client4_port } + admin_user: ubuntu + + rubbos_client4_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_benchmark: + type: OS::Nova::Server + properties: + name: rubbos_benchmark + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_benchmark_port } + admin_user: ubuntu + + rubbos_benchmark_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + server_security_group: + type: OS::Neutron::SecurityGroup + properties: + description: Rubbos group for servers access. + name: rubbos-security-group + rules: [ + {remote_ip_prefix: 0.0.0.0/0, + protocol: tcp, + port_range_min: 1, + port_range_max: 65535}, + {remote_ip_prefix: 0.0.0.0/0, + protocol: udp, + port_range_min: 1, + port_range_max: 65535}, + {remote_ip_prefix: 0.0.0.0/0, + protocol: icmp}] + +outputs: + rubbos_control_private_ip: + description: IP address of rubbos_control in private network + value: { get_attr: [ rubbos_control, first_address ] } + rubbos_control_public_ip: + description: Floating IP address of rubbos_control in public network + value: { get_attr: [ rubbos_control_floating_ip, floating_ip_address ] } + rubbos_httpd_private_ip: + description: IP address of rubbos_httpd in private network + value: { get_attr: [ rubbos_httpd, first_address ] } + rubbos_mysql1_private_ip: + description: IP address of rubbos_mysql1 in private network + value: { get_attr: [ rubbos_mysql1, first_address ] } + rubbos_tomcat1_private_ip: + description: IP address of rubbos_tomcat1 in private network + value: { get_attr: [ rubbos_tomcat1, first_address ] } + rubbos_client1_private_ip: + description: IP address of rubbos_client1 in private network + value: { get_attr: [ rubbos_client1, first_address ] } + rubbos_client2_private_ip: + description: IP address of rubbos_client2 in private network + value: { get_attr: [ rubbos_client2, first_address ] } + rubbos_client3_private_ip: + description: IP address of rubbos_client3 in private network + value: { get_attr: [ rubbos_client3, first_address ] } + rubbos_client4_private_ip: + description: IP address of rubbos_client4 in private network + value: { get_attr: [ rubbos_client4, first_address ] } + rubbos_benchmark_private_ip: + description: IP address of rubbos_benchmark in private network + value: { get_attr: [ rubbos_benchmark, first_address ] } + diff --git a/utils/infra_setup/heat/tests/data/generated_templates/experiment_2.yaml b/utils/infra_setup/heat/tests/data/generated_templates/experiment_2.yaml new file mode 100644 index 00000000..e69de29b diff --git a/utils/infra_setup/heat/tests/data/generated_templates/rubbos_1-1-1_template.tmp b/utils/infra_setup/heat/tests/data/generated_templates/rubbos_1-1-1_template.tmp new file mode 100755 index 00000000..0f417dd3 --- /dev/null +++ b/utils/infra_setup/heat/tests/data/generated_templates/rubbos_1-1-1_template.tmp @@ -0,0 +1,311 @@ +heat_template_version: 2013-05-23 + +description: > + HOT template to create a new neutron network plus a router to the public + network, and for deploying nine servers into the new network. The template also + assigns floating IP addresses to rubbos_control server so it is routable from the + public network. +parameters: + key_name: + type: string + description: Name of keypair to assign to servers + default: bottlenecks-key + image: + type: string + description: Name of image to use for servers + default: bottlenecks-trusty-server + flavor: + type: string + description: Flavor to use for servers + default: bottlenecks-flavor + public_net: + type: string + description: > + ID or name of public network for which floating IP addresses will be allocated + default: net04_ext + private_net_name: + type: string + description: Name of private network to be created + default: bottlenecks-private + private_net_cidr: + type: string + description: Private network address (CIDR notation) + default: "10.0.10.0/24" + private_net_gateway: + type: string + description: Private network gateway address + default: "10.0.10.1" + private_net_pool_start: + type: string + description: Start of private network IP address allocation pool + default: "10.0.10.2" + private_net_pool_end: + type: string + description: End of private network IP address allocation pool + default: "10.0.10.199" + +resources: + private_net: + type: OS::Neutron::Net + properties: + name: { get_param: private_net_name } + + private_subnet: + type: OS::Neutron::Subnet + properties: + network_id: { get_resource: private_net } + cidr: { get_param: private_net_cidr } + gateway_ip: { get_param: private_net_gateway } + allocation_pools: + - start: { get_param: private_net_pool_start } + end: { get_param: private_net_pool_end } + + router: + type: OS::Neutron::Router + properties: + external_gateway_info: + network: { get_param: public_net } + + router_interface: + type: OS::Neutron::RouterInterface + properties: + router_id: { get_resource: router } + subnet_id: { get_resource: private_subnet } + + rubbos_control: + type: OS::Nova::Server + properties: + name: rubbos_control + image: { get_param: image } + flavor: #flavor + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_control_port } + admin_user: ubuntu + + rubbos_control_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_control_floating_ip: + type: OS::Neutron::FloatingIP + properties: + floating_network: { get_param: public_net } + port_id: { get_resource: rubbos_control_port } + + rubbos_httpd: + type: OS::Nova::Server + properties: + name: rubbos_httpd + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_httpd_port } + admin_user: ubuntu + + rubbos_httpd_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_mysql1: + type: OS::Nova::Server + properties: + name: rubbos_mysql1 + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_mysql1_port } + admin_user: ubuntu + + rubbos_mysql1_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_tomcat1: + type: OS::Nova::Server + properties: + name: rubbos_tomcat1 + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_tomcat1_port } + admin_user: ubuntu + + rubbos_tomcat1_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_client1: + type: OS::Nova::Server + properties: + name: rubbos_client1 + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_client1_port } + admin_user: ubuntu + + rubbos_client1_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_client2: + type: OS::Nova::Server + properties: + name: rubbos_client2 + image: #image + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_client2_port } + admin_user: ubuntu + + rubbos_client2_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_client3: + type: OS::Nova::Server + properties: + name: rubbos_client3 + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_client3_port } + admin_user: ubuntu + + rubbos_client3_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_client4: + type: OS::Nova::Server + properties: + name: rubbos_client4 + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_client4_port } + admin_user: ubuntu + + rubbos_client4_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + #rubbos_client5: + type: OS::Nova::Server + properties: + name: rubbos_client4 + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_client4_port } + admin_user: ubuntu + + rubbos_benchmark: + type: OS::Nova::Server + properties: + name: rubbos_benchmark + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_benchmark_port } + admin_user: ubuntu + + rubbos_benchmark_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + server_security_group: + type: OS::Neutron::SecurityGroup + properties: + description: Rubbos group for servers access. + name: rubbos-security-group + rules: [ + {remote_ip_prefix: 0.0.0.0/0, + protocol: tcp, + port_range_min: 1, + port_range_max: 65535}, + {remote_ip_prefix: 0.0.0.0/0, + protocol: udp, + port_range_min: 1, + port_range_max: 65535}, + {remote_ip_prefix: 0.0.0.0/0, + protocol: icmp}] + +outputs: + rubbos_control_private_ip: + description: IP address of rubbos_control in private network + value: { get_attr: [ rubbos_control, first_address ] } + rubbos_control_public_ip: + description: Floating IP address of rubbos_control in public network + value: { get_attr: [ rubbos_control_floating_ip, floating_ip_address ] } + rubbos_httpd_private_ip: + description: IP address of rubbos_httpd in private network + value: { get_attr: [ rubbos_httpd, first_address ] } + rubbos_mysql1_private_ip: + description: IP address of rubbos_mysql1 in private network + value: { get_attr: [ rubbos_mysql1, first_address ] } + rubbos_tomcat1_private_ip: + description: IP address of rubbos_tomcat1 in private network + value: { get_attr: [ rubbos_tomcat1, first_address ] } + rubbos_client1_private_ip: + description: IP address of rubbos_client1 in private network + value: { get_attr: [ rubbos_client1, first_address ] } + rubbos_client2_private_ip: + description: IP address of rubbos_client2 in private network + value: { get_attr: [ rubbos_client2, first_address ] } + rubbos_client3_private_ip: + description: IP address of rubbos_client3 in private network + value: { get_attr: [ rubbos_client3, first_address ] } + rubbos_client4_private_ip: + description: IP address of rubbos_client4 in private network + value: { get_attr: [ rubbos_client4, first_address ] } + rubbos_benchmark_private_ip: + description: IP address of rubbos_benchmark in private network + value: { get_attr: [ rubbos_benchmark, first_address ] } + diff --git a/utils/infra_setup/heat/tests/data/test_templates/test_template_1.yaml b/utils/infra_setup/heat/tests/data/test_templates/test_template_1.yaml new file mode 100755 index 00000000..ca347e0a --- /dev/null +++ b/utils/infra_setup/heat/tests/data/test_templates/test_template_1.yaml @@ -0,0 +1,311 @@ +heat_template_version: 2013-05-23 + +description: > + HOT template to create a new neutron network plus a router to the public + network, and for deploying nine servers into the new network. The template also + assigns floating IP addresses to rubbos_control server so it is routable from the + public network. +parameters: + key_name: + type: string + description: Name of keypair to assign to servers + default: bottlenecks-key + image: + type: string + description: Name of image to use for servers + default: bottlenecks-trusty-server + flavor: + type: string + description: Flavor to use for servers + default: bottlenecks-flavor + public_net: + type: string + description: > + ID or name of public network for which floating IP addresses will be allocated + default: net04_ext + private_net_name: + type: string + description: Name of private network to be created + default: bottlenecks-private + private_net_cidr: + type: string + description: Private network address (CIDR notation) + default: "10.0.10.0/24" + private_net_gateway: + type: string + description: Private network gateway address + default: "10.0.10.1" + private_net_pool_start: + type: string + description: Start of private network IP address allocation pool + default: "10.0.10.2" + private_net_pool_end: + type: string + description: End of private network IP address allocation pool + default: "10.0.10.199" + +resources: + private_net: + type: OS::Neutron::Net + properties: + name: { get_param: private_net_name } + + private_subnet: + type: OS::Neutron::Subnet + properties: + network_id: { get_resource: private_net } + cidr: { get_param: private_net_cidr } + gateway_ip: { get_param: private_net_gateway } + allocation_pools: + - start: { get_param: private_net_pool_start } + end: { get_param: private_net_pool_end } + + router: + type: OS::Neutron::Router + properties: + external_gateway_info: + network: { get_param: public_net } + + router_interface: + type: OS::Neutron::RouterInterface + properties: + router_id: { get_resource: router } + subnet_id: { get_resource: private_subnet } + + rubbos_control: + type: OS::Nova::Server + properties: + name: rubbos_control + image: { get_param: image } + flavor: medium + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_control_port } + admin_user: ubuntu + + rubbos_control_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_control_floating_ip: + type: OS::Neutron::FloatingIP + properties: + floating_network: { get_param: public_net } + port_id: { get_resource: rubbos_control_port } + + rubbos_httpd: + type: OS::Nova::Server + properties: + name: rubbos_httpd + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_httpd_port } + admin_user: ubuntu + + rubbos_httpd_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_mysql1: + type: OS::Nova::Server + properties: + name: rubbos_mysql1 + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_mysql1_port } + admin_user: ubuntu + + rubbos_mysql1_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_tomcat1: + type: OS::Nova::Server + properties: + name: rubbos_tomcat1 + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_tomcat1_port } + admin_user: ubuntu + + rubbos_tomcat1_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_client1: + type: OS::Nova::Server + properties: + name: rubbos_client1 + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_client1_port } + admin_user: ubuntu + + rubbos_client1_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_client2: + type: OS::Nova::Server + properties: + name: rubbos_client2 + image: #image + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_client2_port } + admin_user: ubuntu + + rubbos_client2_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_client3: + type: OS::Nova::Server + properties: + name: rubbos_client3 + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_client3_port } + admin_user: ubuntu + + rubbos_client3_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_client4: + type: OS::Nova::Server + properties: + name: rubbos_client4 + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_client4_port } + admin_user: ubuntu + + rubbos_client4_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + #rubbos_client5: + type: OS::Nova::Server + properties: + name: rubbos_client4 + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_client4_port } + admin_user: ubuntu + + rubbos_benchmark: + type: OS::Nova::Server + properties: + name: rubbos_benchmark + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_benchmark_port } + admin_user: ubuntu + + rubbos_benchmark_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + server_security_group: + type: OS::Neutron::SecurityGroup + properties: + description: Rubbos group for servers access. + name: rubbos-security-group + rules: [ + {remote_ip_prefix: 0.0.0.0/0, + protocol: tcp, + port_range_min: 1, + port_range_max: 65535}, + {remote_ip_prefix: 0.0.0.0/0, + protocol: udp, + port_range_min: 1, + port_range_max: 65535}, + {remote_ip_prefix: 0.0.0.0/0, + protocol: icmp}] + +outputs: + rubbos_control_private_ip: + description: IP address of rubbos_control in private network + value: { get_attr: [ rubbos_control, first_address ] } + rubbos_control_public_ip: + description: Floating IP address of rubbos_control in public network + value: { get_attr: [ rubbos_control_floating_ip, floating_ip_address ] } + rubbos_httpd_private_ip: + description: IP address of rubbos_httpd in private network + value: { get_attr: [ rubbos_httpd, first_address ] } + rubbos_mysql1_private_ip: + description: IP address of rubbos_mysql1 in private network + value: { get_attr: [ rubbos_mysql1, first_address ] } + rubbos_tomcat1_private_ip: + description: IP address of rubbos_tomcat1 in private network + value: { get_attr: [ rubbos_tomcat1, first_address ] } + rubbos_client1_private_ip: + description: IP address of rubbos_client1 in private network + value: { get_attr: [ rubbos_client1, first_address ] } + rubbos_client2_private_ip: + description: IP address of rubbos_client2 in private network + value: { get_attr: [ rubbos_client2, first_address ] } + rubbos_client3_private_ip: + description: IP address of rubbos_client3 in private network + value: { get_attr: [ rubbos_client3, first_address ] } + rubbos_client4_private_ip: + description: IP address of rubbos_client4 in private network + value: { get_attr: [ rubbos_client4, first_address ] } + rubbos_benchmark_private_ip: + description: IP address of rubbos_benchmark in private network + value: { get_attr: [ rubbos_benchmark, first_address ] } + diff --git a/utils/infra_setup/heat/tests/generate_template_test.py b/utils/infra_setup/heat/tests/generate_template_test.py new file mode 100755 index 00000000..d4e0a234 --- /dev/null +++ b/utils/infra_setup/heat/tests/generate_template_test.py @@ -0,0 +1,78 @@ +############################################################################## +# Copyright (c) 2015 Huawei Technologies Co.,Ltd and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +import os +import unittest +import mock + +import sys +sys.path.append("..") +import template +import common + +def reset_common(): + common.LOG = None + common.CONF_FILE = None + common.DEPLOYMENT_UNIT = None + common.ITERATIONS = None + common.BASE_DIR = None + common.TEMPLATE_DIR = None + common.TEMPLATE_NAME = None + common.TEMPLATE_EXTENSION = None + +class TestGeneratesTemplate(unittest.TestCase): + def setUp(self): + self.deployment_configuration = { + 'flavor': ['medium'] + } + self.template_name = 'rubbos_1-1-1_template.tmp' + # common.init() + + def tearDown(self): + reset_common() + + @mock.patch('common.LOG') + @mock.patch('common.get_template_dir') + def test_generates_template_for_success(self, mock_template_dir, + mock_log): + tmp_generated_templates_dir = '/data/generated_templates/' + generated_templates_dir = "{}{}".format(os.getcwd(), tmp_generated_templates_dir) + mock_template_dir.return_value = generated_templates_dir + tmp_test_templates = '/data/test_templates/' + test_templates = "{}{}".format(os.getcwd(), tmp_test_templates) + template.generates_templates(self.template_name, + self.deployment_configuration) + for dirname, dirnames, filenames in os.walk(test_templates): + for filename in filenames: + with open(test_templates + filename) as test: + with open(generated_templates_dir + filename) as generated: + self.assertListEqual(test.readlines(), + generated.readlines()) + + t_name = '/data/generated_templates/rubbos_1-1-1_template.tmp' + self.template_name = "{}{}".format(os.getcwd(), t_name) + template.generates_templates(self.template_name, + self.deployment_configuration) + for dirname, dirnames, filenames in os.walk(test_templates): + for filename in filenames: + with open(test_templates + filename) as test: + with open(generated_templates_dir + filename) as generated: + self.assertListEqual(test.readlines(), + generated.readlines()) + + @mock.patch('common.get_template_dir') + def test_get_all_heat_templates_for_success(self, template_dir): + tmp_generated_templates = '/data/generated_templates/' + generated_templates = "{}{}".format(os.getcwd(), tmp_generated_templates) + template_dir.return_value = generated_templates + extension = '.yaml' + expected = ['test_template_1.yaml'] + result = template.get_all_heat_templates(generated_templates, + extension) + self.assertListEqual(expected, result) -- 2.16.6