aboutsummaryrefslogtreecommitdiffstats
path: root/ci/pingtests/scenario001-multinode.yaml
diff options
context:
space:
mode:
authorEmilien Macchi <emilien@redhat.com>2016-11-24 10:59:58 -0500
committerEmilien Macchi <emilien@redhat.com>2016-11-25 07:54:33 -0500
commit2819cb391b3935e244888bdbaeb3b9d7d4310c8e (patch)
treeebbd495e16e6129cefd0db624d29d2724d863cb3 /ci/pingtests/scenario001-multinode.yaml
parent56c98446e7def74d898a2e38427ab93e625ab89b (diff)
Import TripleO CI environments from tripleo-ci
Import TripleO CI environments from tripleo-ci into THT for some reasons: 1) THT is branched while tripleo-ci is not. Having them here would allow to make scenarios able to evolve over the releases without adding more scenarios. 2) Help our developers to run TripleO CI scenarios themselves from THT by exposing the templates here. The whole discussion is here: http://lists.openstack.org/pipermail/openstack-dev/2016-November/107816.html Change-Id: I3527a64c0c8f56ca77115d32849fa23fe710112d
Diffstat (limited to 'ci/pingtests/scenario001-multinode.yaml')
-rw-r--r--ci/pingtests/scenario001-multinode.yaml174
1 files changed, 174 insertions, 0 deletions
diff --git a/ci/pingtests/scenario001-multinode.yaml b/ci/pingtests/scenario001-multinode.yaml
new file mode 100644
index 00000000..9dcbd390
--- /dev/null
+++ b/ci/pingtests/scenario001-multinode.yaml
@@ -0,0 +1,174 @@
+heat_template_version: 2013-05-23
+
+description: >
+ HOT template to created resources deployed by scenario001.
+parameters:
+ key_name:
+ type: string
+ description: Name of keypair to assign to servers
+ default: 'pingtest_key'
+ image:
+ type: string
+ description: Name of image to use for servers
+ default: 'pingtest_image'
+ public_net_name:
+ type: string
+ default: 'nova'
+ description: >
+ ID or name of public network for which floating IP addresses will be allocated
+ private_net_name:
+ type: string
+ description: Name of private network to be created
+ default: 'default-net'
+ private_net_cidr:
+ type: string
+ description: Private network address (CIDR notation)
+ default: '192.168.2.0/24'
+ private_net_gateway:
+ type: string
+ description: Private network gateway address
+ default: '192.168.2.1'
+ private_net_pool_start:
+ type: string
+ description: Start of private network IP address allocation pool
+ default: '192.168.2.100'
+ private_net_pool_end:
+ type: string
+ default: '192.168.2.200'
+ description: End of private network IP address allocation pool
+
+resources:
+
+ key_pair:
+ type: OS::Nova::KeyPair
+ properties:
+ save_private_key: true
+ name: {get_param: key_name }
+
+ 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_name }
+
+ router_interface:
+ type: OS::Neutron::RouterInterface
+ properties:
+ router_id: { get_resource: router }
+ subnet_id: { get_resource: private_subnet }
+
+ server1:
+ type: OS::Nova::Server
+ properties:
+ name: Server1
+ flavor: { get_resource: test_flavor }
+ image: { get_param: image }
+ key_name: { get_resource: key_pair }
+ networks:
+ - port: { get_resource: server1_port }
+
+ server1_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 }]
+
+ server1_floating_ip:
+ type: OS::Neutron::FloatingIP
+ # TODO: investigate why we need this depends_on and if we could
+ # replace it by router_id with get_resource: router_interface
+ depends_on: router_interface
+ properties:
+ floating_network: { get_param: public_net_name }
+ port_id: { get_resource: server1_port }
+
+ server_security_group:
+ type: OS::Neutron::SecurityGroup
+ properties:
+ description: Add security group rules for server
+ name: pingtest-security-group
+ rules:
+ - 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
+ protocol: icmp
+
+ test_flavor:
+ type: OS::Nova::Flavor
+ properties:
+ ram: 512
+ vcpus: 1
+
+ gnocchi_res_alarm:
+ type: OS::Aodh::GnocchiResourcesAlarm
+ properties:
+ description: Do stuff with gnocchi
+ metric: cpu_util
+ aggregation_method: mean
+ granularity: 60
+ evaluation_periods: 1
+ threshold: 50
+ alarm_actions: []
+ resource_type: instance
+ resource_id: { get_resource: server1 }
+ comparison_operator: gt
+
+ asg:
+ type: OS::Heat::AutoScalingGroup
+ properties:
+ max_size: 5
+ min_size: 1
+ resource:
+ type: OS::Heat::RandomString
+
+ scaleup_policy:
+ type: OS::Heat::ScalingPolicy
+ properties:
+ adjustment_type: change_in_capacity
+ auto_scaling_group_id: {get_resource: asg}
+ cooldown: 0
+ scaling_adjustment: 1
+
+ alarm:
+ type: OS::Aodh::Alarm
+ properties:
+ description: Scale-up if the average CPU > 50% for 1 minute
+ meter_name: test_meter
+ statistic: count
+ comparison_operator: ge
+ threshold: 1
+ period: 60
+ evaluation_periods: 1
+ alarm_actions:
+ - {get_attr: [scaleup_policy, alarm_url]}
+ matching_metadata:
+ metadata.metering.stack_id: {get_param: "OS::stack_id"}
+
+outputs:
+ server1_private_ip:
+ description: IP address of server1 in private network
+ value: { get_attr: [ server1, first_address ] }
+ server1_public_ip:
+ description: Floating IP address of server1 in public network
+ value: { get_attr: [ server1_floating_ip, floating_ip_address ] }
+ asg_size:
+ value: {get_attr: [asg, current_size]}