heat-templates/hot/mistral/templates/autoscaling_using_mistral.yaml
Kanagaraj Manickam 96a0b0b3d2 Fix for heat-template build failure
In mitaka, a new feature is introduced to ignore a given
set of errors and is used here to fix the zuul faliure.

In addition, it fixes the invalid template errors.

For those templates which causes circular error is
moved to invalid folder

NOTE: openshift-origin/centos65/highly-available is marked
as invald to make the build jobs to pass.

depends-on: I4a3043fd17b69a346d447dfbd17488040cf9b387
Change-Id: I7b5b72cb8f6ff53b82edf92799a57917c718e032
Closes-bug: #1554380
2016-03-10 19:49:28 +05:30

160 lines
4.7 KiB
YAML

heat_template_version: 2015-04-30
description: >
Example of using mistral resources for autoscale testing. In this template
workflows are used to get ip of the server and to load/release cpu and
triggers allow to execute these workflows (every 10 minutes by default).
parameters:
flavor:
type: string
default: m1.heat
description: Name or ID of flavor
image:
type: string
default: cirros-0.3.4-x86_64-uec
description: Name or ID of image
security_group_name:
type: string
user:
type: string
default: cirros
description: User to access instances
password:
type: string
default: 'cubswin:)'
description: Password to access instances
pattern_release:
type: string
default: "0,20,40 * * * *"
description: Time to execute workflow wf_release_cpu
pattern_load:
type: string
default: "10,30,50 * * * *"
description: Time to execute workflow wf_load_cpu
remaining_executions:
type: number
default: 3
description: The number of occurrences after which the triggers should be deleted.
resources:
my_asg:
type: OS::Heat::AutoScalingGroup
properties:
resource:
type: NovaNetwork::Server
properties:
image: { get_param: image }
flavor: { get_param: flavor }
security_group: {get_param: security_group_name}
metadata: {"metering.stack": {get_param: "OS::stack_id"}}
min_size: 1
max_size: 2
scale_up_policy:
type: OS::Heat::ScalingPolicy
properties:
adjustment_type: change_in_capacity
auto_scaling_group_id: {get_resource: my_asg}
cooldown: 60
scaling_adjustment: 1
scale_down_policy:
type: OS::Heat::ScalingPolicy
properties:
adjustment_type: change_in_capacity
auto_scaling_group_id: {get_resource: my_asg}
cooldown: 60
scaling_adjustment: '-1'
cpu_alarm_high:
type: OS::Ceilometer::Alarm
properties:
description: Scale-up if the average CPU > 50% for 1 minute
meter_name: cpu_util
statistic: avg
period: 60
evaluation_periods: 1
threshold: 50
alarm_actions:
- {get_attr: [scale_up_policy, alarm_url]}
matching_metadata: {'metadata.user_metadata.stack': {get_param: "OS::stack_id"}}
comparison_operator: gt
cpu_alarm_low:
type: OS::Ceilometer::Alarm
properties:
description: Scale-down if the average CPU < 15% for 1 minutes
meter_name: cpu_util
statistic: avg
period: 60
evaluation_periods: 1
threshold: 15
alarm_actions:
- {get_attr: [scale_down_policy, alarm_url]}
matching_metadata: {'metadata.user_metadata.stack': {get_param: "OS::stack_id"}}
comparison_operator: lt
wf_load_cpu:
type: OS::Mistral::Workflow
properties:
type: direct
tasks:
- name: get_output
action: heat.stacks_get stack_id=<% $.stack_id %>
publish:
vm_ip: <% $.get_output._info.outputs[0].output_value %>
on_success:
- run_ssh
- name: run_ssh
action: std.ssh cmd='cat /dev/urandom | gzip -9 > /dev/null &' host=<% $.vm_ip %> username=<% $.user %> password=<% $.password %>
input: {'user': {get_param: user}, 'password': {get_param: password}, 'stack_id': {get_param: "OS::stack_id"}}
wf_release_cpu:
type: OS::Mistral::Workflow
properties:
type: direct
tasks:
- name: get_output
action: heat.stacks_get stack_id=<% $.stack_id %>
publish:
vm_ip: <% $.get_output._info.outputs[0].output_value %>
on_success:
- run_ssh
- name: run_ssh
action: std.ssh cmd="kill -9 $(ps aux | grep 'cat /dev/urandom' | awk '{print $1}')" host=<% $.vm_ip %> username=<% $.user %> password=<% $.password %>
input: {'user': {get_param: user}, 'password': {get_param: password}, 'stack_id': {get_param: "OS::stack_id"}}
trigger_load_cpu:
type: OS::Mistral::CronTrigger
properties:
count: {get_param: remaining_executions}
pattern: {get_param: pattern_load}
workflow: {get_attr: [wf_load_cpu, data]}
trigger_release_cpu:
type: OS::Mistral::CronTrigger
properties:
count: {get_param: remaining_executions}
pattern: {get_param: pattern_release}
workflow: {get_attr: [wf_release_cpu, data]}
outputs:
servers_ips:
value: {get_attr: [my_asg, outputs, ip]}
next_load:
value: {get_attr: [trigger_load_cpu, next_execution_time]}
description: Time of the next execution of trigger_load_cpu
next_release:
value: {get_attr: [trigger_release_cpu, next_execution_time]}
description: Time of the next execution of trigger_release_cpu