Class: Ufo::Cfn::Stack::Builder::Resources::Scaling::Policy

Inherits:
Base show all
Defined in:
lib/ufo/cfn/stack/builder/resources/scaling/policy.rb

Instance Attribute Summary

Attributes inherited from Base

#vars

Attributes inherited from Ufo::CLI::Base

#task_definition

Instance Method Summary collapse

Methods included from Ufo::Concerns::Autoscaling

#autoscaling, #autoscaling_enabled?

Methods inherited from Base

build, #initialize, #managed_security_group, #managed_security_groups?, #security_groups

Methods included from Ufo::Concerns

#deploy, #info, #ps

Methods included from Ufo::Concerns::Names

#names

Methods included from AwsServices

#acm, #applicationautoscaling, #aws_options, #cfn, #cloudwatchlogs, #ec2, #ecr, #ecs, #elb, #s3, #ssm_client, #waf_client

Methods included from AwsServices::Concerns

#find_stack, #find_stack_resources, #stack_resources, #status, #task_definition_arns

Methods inherited from Ufo::CLI::Base

#initialize

Methods included from Utils::Sure

#sure?

Methods included from Utils::Pretty

#pretty_home, #pretty_path, #pretty_time

Methods included from Utils::Logging

#logger

Constructor Details

This class inherits a constructor from Ufo::Cfn::Stack::Builder::Base

Instance Method Details

#buildObject



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/ufo/cfn/stack/builder/resources/scaling/policy.rb', line 3

def build
  return unless autoscaling_enabled?

  text =<<~EOL
    Type: AWS::ApplicationAutoScaling::ScalingPolicy
    Properties:
      PolicyName: !Sub "${AWS::StackName}-auto-scaling-policy"
      PolicyType: TargetTrackingScaling
      ScalingTargetId: !Ref ScalingTarget
      TargetTrackingScalingPolicyConfiguration:
        PredefinedMetricSpecification:
          PredefinedMetricType: #{autoscaling.predefined_metric_type}
        TargetValue: #{autoscaling.target_value}
  EOL

  attrs = Ufo::Yaml.load(text).deep_symbolize_keys
  props = attrs[:Properties]
  conf = props[:TargetTrackingScalingPolicyConfiguration]
  conf[:ScaleInCooldown] = autoscaling.scale_in_cooldown if autoscaling.scale_in_cooldown
  conf[:ScaleOutCooldown] = autoscaling.scale_out_cooldown if autoscaling.scale_out_cooldown

  attrs
end