File: alarm_datum.rb

package info (click to toggle)
ruby-fog-aws 3.8.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 8,092 kB
  • sloc: ruby: 72,795; javascript: 14; makefile: 9; sh: 4
file content (63 lines) | stat: -rw-r--r-- 2,844 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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