1
0
Fork 0
mirror of https://github.com/fog/fog-aws.git synced 2022-11-09 13:50:52 -05:00
fog--fog-aws/lib/fog/aws/models/cloud_watch/alarm_datum.rb

64 lines
2.8 KiB
Ruby
Raw Normal View History

module Fog
module AWS
class CloudWatch
class AlarmDatum < Fog::Model
attribute :alarm_name, :aliases => 'AlarmName'
attribute :metric_name, :aliases => 'MetricName'
attribute :namespace, :aliases => 'Namespace'
attribute :dimensions, :aliases => 'Dimensions'
attribute :alarm_description, :aliases => 'AlarmDescription'
attribute :alarm_arn, :aliases => 'AlarmArn'
attribute :state_value, :aliases => 'StateValue'
attribute :statistic, :aliases => 'Statistic'
attribute :comparison_operator, :aliases => 'ComparisonOperator'
attribute :state_reason, :aliases => 'StateReason'
attribute :action_enabled, :aliases => 'ActionsEnabled'
attribute :period, :aliases => 'Period'
attribute :evaluation_periods, :aliases => 'EvaluationPeriods'
attribute :threshold, :aliases => 'Threshold'
attribute :alarm_actions, :aliases => 'AlarmActions'
attribute :ok_actions, :aliases => 'OKActions'
attribute :insufficient_actions, :aliases => 'InsufficientDataActions'
attribute :unit, :aliases => 'Unit'
attribute :state_updated_timestamp, :aliases => 'StateUpdatedTimestamp'
attribute :alarm_configuration_updated_timestamp, :aliases => 'AlarmConfigurationUpdatedTimestamp'
def save
requires :alarm_name
requires :comparison_operator
requires :evaluation_periods
requires :metric_name
requires :namespace
requires :period
requires :statistic
requires :threshold
alarm_definition = {
'AlarmName' => alarm_name,
'ComparisonOperator' => comparison_operator,
'EvaluationPeriods' => evaluation_periods,
'MetricName' => metric_name,
'Namespace' => namespace,
'Period' => period,
'Statistic' => statistic,
'Threshold' => threshold
}
alarm_definition.merge!('ActionsEnabled' => action_enabled) if action_enabled
alarm_definition.merge!('AlarmActions' => alarm_actions) if alarm_actions
alarm_definition.merge!('AlarmDescription' => alarm_description) if alarm_description
#dimension is an array of Name/Value pairs, ex. [{'Name'=>'host', 'Value'=>'localhost'},{'Name'=>'version', 'Value'=>'0.11.0'}]
alarm_definition.merge!('Dimensions' => dimensions) if dimensions
alarm_definition.merge!('InsufficientDataActions' => insufficient_actions) if insufficient_actions
alarm_definition.merge!('OKActions' => ok_actions) if ok_actions
alarm_definition.merge!('Unit' => unit) if unit
service.put_metric_alarm(alarm_definition)
true
end
end
end
end
end