class Terraforming::Resource::CloudWatchAlarm
Public Class Methods
new(client)
click to toggle source
# File lib/terraforming/resource/cloud_watch_alarm.rb, line 14 def initialize(client) @client = client end
tf(client: Aws::CloudWatch::Client.new)
click to toggle source
# File lib/terraforming/resource/cloud_watch_alarm.rb, line 6 def self.tf(client: Aws::CloudWatch::Client.new) self.new(client).tf end
tfstate(client: Aws::CloudWatch::Client.new)
click to toggle source
# File lib/terraforming/resource/cloud_watch_alarm.rb, line 10 def self.tfstate(client: Aws::CloudWatch::Client.new) self.new(client).tfstate end
Public Instance Methods
tf()
click to toggle source
# File lib/terraforming/resource/cloud_watch_alarm.rb, line 18 def tf apply_template(@client, "tf/cloud_watch_alarm") end
tfstate()
click to toggle source
# File lib/terraforming/resource/cloud_watch_alarm.rb, line 22 def tfstate alarms.inject({}) do |resources, alarm| resources["aws_cloudwatch_metric_alarm.#{module_name_of(alarm)}"] = { "type" => "aws_cloudwatch_metric_alarm", "primary" => { "id" => alarm.alarm_name, "attributes" => alarm_attributes(alarm) } } resources end end
Private Instance Methods
add_checksummed_attributes(attributes, alarm)
click to toggle source
# File lib/terraforming/resource/cloud_watch_alarm.rb, line 67 def add_checksummed_attributes(attributes, alarm) %w(insufficient_data_actions alarm_actions ok_actions dimensions).each do |action| attribute = alarm.send(action.to_sym) attributes["#{action}.#"] = attribute.size.to_s attribute.each do |attr| if attr.is_a? String checksum = Zlib.crc32(attr) value = attr else checksum = attr.name value = attr.value end attributes["#{action}.#{checksum}"] = value end end attributes end
alarm_attributes(alarm)
click to toggle source
# File lib/terraforming/resource/cloud_watch_alarm.rb, line 37 def alarm_attributes(alarm) attributes = { "actions_enabled" => alarm.actions_enabled.to_s, "alarm_description" => sanitize(alarm.alarm_description), "alarm_name" => alarm.alarm_name, "comparison_operator" => alarm.comparison_operator, "evaluation_periods" => alarm.evaluation_periods.to_s, "id" => alarm.alarm_name, "metric_name" => alarm.metric_name, "namespace" => alarm.namespace, "period" => alarm.period.to_s, "statistic" => alarm.statistic, "threshold" => alarm.threshold.to_s, "unit" => sanitize(alarm.unit) } add_checksummed_attributes(attributes, alarm) end
alarms()
click to toggle source
# File lib/terraforming/resource/cloud_watch_alarm.rb, line 55 def alarms @client.describe_alarms.map(&:metric_alarms).flatten end
module_name_of(alarm)
click to toggle source
# File lib/terraforming/resource/cloud_watch_alarm.rb, line 59 def module_name_of(alarm) normalize_module_name(alarm.alarm_name) end
sanitize(argument)
click to toggle source
# File lib/terraforming/resource/cloud_watch_alarm.rb, line 63 def sanitize(argument) argument.nil? ? "" : argument end