aws-sdk-cloudwatch 0.0.6 → 1.0.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,424 @@
1
+ # WARNING ABOUT GENERATED CODE
2
+ #
3
+ # This file is generated. See the contributing for info on making contributions:
4
+ # https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
5
+ #
6
+ # WARNING ABOUT GENERATED CODE
7
+
8
+ module Aws
9
+ module CloudWatch
10
+ class Metric
11
+
12
+ extend Aws::Deprecations
13
+
14
+ # @overload def initialize(namespace, name, options = {})
15
+ # @param [String] namespace
16
+ # @param [String] name
17
+ # @option options [Client] :client
18
+ # @overload def initialize(options = {})
19
+ # @option options [required, String] :namespace
20
+ # @option options [required, String] :name
21
+ # @option options [Client] :client
22
+ def initialize(*args)
23
+ options = Hash === args.last ? args.pop.dup : {}
24
+ @namespace = extract_namespace(args, options)
25
+ @name = extract_name(args, options)
26
+ @data = options.delete(:data)
27
+ @client = options.delete(:client) || Client.new(options)
28
+ end
29
+
30
+ # @!group Read-Only Attributes
31
+
32
+ # @return [String]
33
+ def namespace
34
+ @namespace
35
+ end
36
+
37
+ # @return [String]
38
+ def name
39
+ @name
40
+ end
41
+ alias :metric_name :name
42
+
43
+ # The dimensions for the metric.
44
+ # @return [Array<Types::Dimension>]
45
+ def dimensions
46
+ data.dimensions
47
+ end
48
+
49
+ # @!endgroup
50
+
51
+ # @return [Client]
52
+ def client
53
+ @client
54
+ end
55
+
56
+ # Loads, or reloads {#data} for the current {Metric}.
57
+ # Returns `self` making it possible to chain methods.
58
+ #
59
+ # metric.reload.data
60
+ #
61
+ # @return [self]
62
+ def load
63
+ resp = @client.list_metrics(
64
+ metric_name: @name,
65
+ namespace: @namespace
66
+ )
67
+ @data = resp.metrics[0]
68
+ self
69
+ end
70
+ alias :reload :load
71
+
72
+ # @return [Types::Metric]
73
+ # Returns the data for this {Metric}. Calls
74
+ # {Client#list_metrics} if {#data_loaded?} is `false`.
75
+ def data
76
+ load unless @data
77
+ @data
78
+ end
79
+
80
+ # @return [Boolean]
81
+ # Returns `true` if this resource is loaded. Accessing attributes or
82
+ # {#data} on an unloaded resource will trigger a call to {#load}.
83
+ def data_loaded?
84
+ !!@data
85
+ end
86
+
87
+ # @!group Actions
88
+
89
+ # @example Request syntax with placeholder values
90
+ #
91
+ # metric.get_statistics({
92
+ # dimensions: [
93
+ # {
94
+ # name: "DimensionName", # required
95
+ # value: "DimensionValue", # required
96
+ # },
97
+ # ],
98
+ # start_time: Time.now, # required
99
+ # end_time: Time.now, # required
100
+ # period: 1, # required
101
+ # statistics: ["SampleCount"], # accepts SampleCount, Average, Sum, Minimum, Maximum
102
+ # extended_statistics: ["ExtendedStatistic"],
103
+ # unit: "Seconds", # accepts Seconds, Microseconds, Milliseconds, Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes, Bits, Kilobits, Megabits, Gigabits, Terabits, Percent, Count, Bytes/Second, Kilobytes/Second, Megabytes/Second, Gigabytes/Second, Terabytes/Second, Bits/Second, Kilobits/Second, Megabits/Second, Gigabits/Second, Terabits/Second, Count/Second, None
104
+ # })
105
+ # @param [Hash] options ({})
106
+ # @option options [Array<Types::Dimension>] :dimensions
107
+ # The dimensions. CloudWatch treats each unique combination of
108
+ # dimensions as a separate metric. You can't retrieve statistics using
109
+ # combinations of dimensions that were not specially published. You must
110
+ # specify the same dimensions that were used when the metrics were
111
+ # created. For an example, see [Dimension Combinations][1] in the
112
+ # *Amazon CloudWatch User Guide*.
113
+ #
114
+ #
115
+ #
116
+ # [1]: http://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#dimension-combinations
117
+ # @option options [required, Time,DateTime,Date,Integer,String] :start_time
118
+ # The time stamp that determines the first data point to return. Note
119
+ # that start times are evaluated relative to the time that CloudWatch
120
+ # receives the request.
121
+ #
122
+ # The value specified is inclusive; results include data points with the
123
+ # specified time stamp. The time stamp must be in ISO 8601 UTC format
124
+ # (for example, 2016-10-03T23:00:00Z).
125
+ #
126
+ # CloudWatch rounds the specified time stamp as follows:
127
+ #
128
+ # * Start time less than 15 days ago - Round down to the nearest whole
129
+ # minute. For example, 12:32:34 is rounded down to 12:32:00.
130
+ #
131
+ # * Start time between 15 and 63 days ago - Round down to the nearest
132
+ # 5-minute clock interval. For example, 12:32:34 is rounded down to
133
+ # 12:30:00.
134
+ #
135
+ # * Start time greater than 63 days ago - Round down to the nearest
136
+ # 1-hour clock interval. For example, 12:32:34 is rounded down to
137
+ # 12:00:00.
138
+ # @option options [required, Time,DateTime,Date,Integer,String] :end_time
139
+ # The time stamp that determines the last data point to return.
140
+ #
141
+ # The value specified is exclusive; results will include data points up
142
+ # to the specified time stamp. The time stamp must be in ISO 8601 UTC
143
+ # format (for example, 2016-10-10T23:00:00Z).
144
+ # @option options [required, Integer] :period
145
+ # The granularity, in seconds, of the returned data points. A period can
146
+ # be as short as one minute (60 seconds) and must be a multiple of 60.
147
+ # The default value is 60.
148
+ #
149
+ # If the `StartTime` parameter specifies a time stamp that is greater
150
+ # than 15 days ago, you must specify the period as follows or no data
151
+ # points in that time range is returned:
152
+ #
153
+ # * Start time between 15 and 63 days ago - Use a multiple of 300
154
+ # seconds (5 minutes).
155
+ #
156
+ # * Start time greater than 63 days ago - Use a multiple of 3600 seconds
157
+ # (1 hour).
158
+ # @option options [Array<String>] :statistics
159
+ # The metric statistics, other than percentile. For percentile
160
+ # statistics, use `ExtendedStatistic`.
161
+ # @option options [Array<String>] :extended_statistics
162
+ # The percentile statistics. Specify values between p0.0 and p100.
163
+ # @option options [String] :unit
164
+ # The unit for a given metric. Metrics may be reported in multiple
165
+ # units. Not supplying a unit results in all units being returned. If
166
+ # the metric only ever reports one unit, specifying a unit has no
167
+ # effect.
168
+ # @return [Types::GetMetricStatisticsOutput]
169
+ def get_statistics(options = {})
170
+ options = options.merge(
171
+ namespace: @namespace,
172
+ metric_name: @name
173
+ )
174
+ resp = @client.get_metric_statistics(options)
175
+ resp.data
176
+ end
177
+
178
+ # @example Request syntax with placeholder values
179
+ #
180
+ # alarm = metric.put_alarm({
181
+ # alarm_name: "AlarmName", # required
182
+ # alarm_description: "AlarmDescription",
183
+ # actions_enabled: false,
184
+ # ok_actions: ["ResourceName"],
185
+ # alarm_actions: ["ResourceName"],
186
+ # insufficient_data_actions: ["ResourceName"],
187
+ # statistic: "SampleCount", # accepts SampleCount, Average, Sum, Minimum, Maximum
188
+ # extended_statistic: "ExtendedStatistic",
189
+ # dimensions: [
190
+ # {
191
+ # name: "DimensionName", # required
192
+ # value: "DimensionValue", # required
193
+ # },
194
+ # ],
195
+ # period: 1, # required
196
+ # unit: "Seconds", # accepts Seconds, Microseconds, Milliseconds, Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes, Bits, Kilobits, Megabits, Gigabits, Terabits, Percent, Count, Bytes/Second, Kilobytes/Second, Megabytes/Second, Gigabytes/Second, Terabytes/Second, Bits/Second, Kilobits/Second, Megabits/Second, Gigabits/Second, Terabits/Second, Count/Second, None
197
+ # evaluation_periods: 1, # required
198
+ # threshold: 1.0, # required
199
+ # comparison_operator: "GreaterThanOrEqualToThreshold", # required, accepts GreaterThanOrEqualToThreshold, GreaterThanThreshold, LessThanThreshold, LessThanOrEqualToThreshold
200
+ # })
201
+ # @param [Hash] options ({})
202
+ # @option options [required, String] :alarm_name
203
+ # The name for the alarm. This name must be unique within the AWS
204
+ # account.
205
+ # @option options [String] :alarm_description
206
+ # The description for the alarm.
207
+ # @option options [Boolean] :actions_enabled
208
+ # Indicates whether actions should be executed during any changes to the
209
+ # alarm state.
210
+ # @option options [Array<String>] :ok_actions
211
+ # The actions to execute when this alarm transitions to an `OK` state
212
+ # from any other state. Each action is specified as an Amazon Resource
213
+ # Name (ARN).
214
+ #
215
+ # Valid Values: arn:aws:automate:*region*\:ec2:stop \|
216
+ # arn:aws:automate:*region*\:ec2:terminate \|
217
+ # arn:aws:automate:*region*\:ec2:recover
218
+ #
219
+ # Valid Values (for use with IAM roles):
220
+ # arn:aws:swf:us-east-1:\\\{*customer-account*\\}:action/actions/AWS\_EC2.InstanceId.Stop/1.0
221
+ # \|
222
+ # arn:aws:swf:us-east-1:\\\{*customer-account*\\}:action/actions/AWS\_EC2.InstanceId.Terminate/1.0
223
+ # \|
224
+ # arn:aws:swf:us-east-1:\\\{*customer-account*\\}:action/actions/AWS\_EC2.InstanceId.Reboot/1.0
225
+ # @option options [Array<String>] :alarm_actions
226
+ # The actions to execute when this alarm transitions to the `ALARM`
227
+ # state from any other state. Each action is specified as an Amazon
228
+ # Resource Name (ARN).
229
+ #
230
+ # Valid Values: arn:aws:automate:*region*\:ec2:stop \|
231
+ # arn:aws:automate:*region*\:ec2:terminate \|
232
+ # arn:aws:automate:*region*\:ec2:recover
233
+ #
234
+ # Valid Values (for use with IAM roles):
235
+ # arn:aws:swf:us-east-1:\\\{*customer-account*\\}:action/actions/AWS\_EC2.InstanceId.Stop/1.0
236
+ # \|
237
+ # arn:aws:swf:us-east-1:\\\{*customer-account*\\}:action/actions/AWS\_EC2.InstanceId.Terminate/1.0
238
+ # \|
239
+ # arn:aws:swf:us-east-1:\\\{*customer-account*\\}:action/actions/AWS\_EC2.InstanceId.Reboot/1.0
240
+ # @option options [Array<String>] :insufficient_data_actions
241
+ # The actions to execute when this alarm transitions to the
242
+ # `INSUFFICIENT_DATA` state from any other state. Each action is
243
+ # specified as an Amazon Resource Name (ARN).
244
+ #
245
+ # Valid Values: arn:aws:automate:*region*\:ec2:stop \|
246
+ # arn:aws:automate:*region*\:ec2:terminate \|
247
+ # arn:aws:automate:*region*\:ec2:recover
248
+ #
249
+ # Valid Values (for use with IAM roles):
250
+ # arn:aws:swf:us-east-1:\\\{*customer-account*\\}:action/actions/AWS\_EC2.InstanceId.Stop/1.0
251
+ # \|
252
+ # arn:aws:swf:us-east-1:\\\{*customer-account*\\}:action/actions/AWS\_EC2.InstanceId.Terminate/1.0
253
+ # \|
254
+ # arn:aws:swf:us-east-1:\\\{*customer-account*\\}:action/actions/AWS\_EC2.InstanceId.Reboot/1.0
255
+ # @option options [String] :statistic
256
+ # The statistic for the metric associated with the alarm, other than
257
+ # percentile. For percentile statistics, use `ExtendedStatistic`.
258
+ # @option options [String] :extended_statistic
259
+ # The percentile statistic for the metric associated with the alarm.
260
+ # Specify a value between p0.0 and p100.
261
+ # @option options [Array<Types::Dimension>] :dimensions
262
+ # The dimensions for the metric associated with the alarm.
263
+ # @option options [required, Integer] :period
264
+ # The period, in seconds, over which the specified statistic is applied.
265
+ # @option options [String] :unit
266
+ # The unit of measure for the statistic. For example, the units for the
267
+ # Amazon EC2 NetworkIn metric are Bytes because NetworkIn tracks the
268
+ # number of bytes that an instance receives on all network interfaces.
269
+ # You can also specify a unit when you create a custom metric. Units
270
+ # help provide conceptual meaning to your data. Metric data points that
271
+ # specify a unit of measure, such as Percent, are aggregated separately.
272
+ #
273
+ # If you specify a unit, you must use a unit that is appropriate for the
274
+ # metric. Otherwise, the Amazon CloudWatch alarm can get stuck in the
275
+ # `INSUFFICIENT DATA` state.
276
+ # @option options [required, Integer] :evaluation_periods
277
+ # The number of periods over which data is compared to the specified
278
+ # threshold.
279
+ # @option options [required, Float] :threshold
280
+ # The value against which the specified statistic is compared.
281
+ # @option options [required, String] :comparison_operator
282
+ # The arithmetic operation to use when comparing the specified statistic
283
+ # and threshold. The specified statistic value is used as the first
284
+ # operand.
285
+ # @return [Alarm]
286
+ def put_alarm(options = {})
287
+ options = options.merge(
288
+ namespace: @namespace,
289
+ metric_name: @name
290
+ )
291
+ resp = @client.put_metric_alarm(options)
292
+ Alarm.new(
293
+ name: options[:alarm_name],
294
+ client: @client
295
+ )
296
+ end
297
+
298
+ # @example Request syntax with placeholder values
299
+ #
300
+ # metric.put_data({
301
+ # metric_data: [ # required
302
+ # {
303
+ # metric_name: "MetricName", # required
304
+ # dimensions: [
305
+ # {
306
+ # name: "DimensionName", # required
307
+ # value: "DimensionValue", # required
308
+ # },
309
+ # ],
310
+ # timestamp: Time.now,
311
+ # value: 1.0,
312
+ # statistic_values: {
313
+ # sample_count: 1.0, # required
314
+ # sum: 1.0, # required
315
+ # minimum: 1.0, # required
316
+ # maximum: 1.0, # required
317
+ # },
318
+ # unit: "Seconds", # accepts Seconds, Microseconds, Milliseconds, Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes, Bits, Kilobits, Megabits, Gigabits, Terabits, Percent, Count, Bytes/Second, Kilobytes/Second, Megabytes/Second, Gigabytes/Second, Terabytes/Second, Bits/Second, Kilobits/Second, Megabits/Second, Gigabits/Second, Terabits/Second, Count/Second, None
319
+ # },
320
+ # ],
321
+ # })
322
+ # @param [Hash] options ({})
323
+ # @option options [required, Array<Types::MetricDatum>] :metric_data
324
+ # The data for the metric.
325
+ # @return [EmptyStructure]
326
+ def put_data(options = {})
327
+ options = Aws::Util.deep_merge(options,
328
+ namespace: @namespace,
329
+ metric_data: [{ metric_name: @name }]
330
+ )
331
+ resp = @client.put_metric_data(options)
332
+ resp.data
333
+ end
334
+
335
+ # @!group Associations
336
+
337
+ # @example Request syntax with placeholder values
338
+ #
339
+ # alarms = metric.alarms({
340
+ # statistic: "SampleCount", # accepts SampleCount, Average, Sum, Minimum, Maximum
341
+ # extended_statistic: "ExtendedStatistic",
342
+ # dimensions: [
343
+ # {
344
+ # name: "DimensionName", # required
345
+ # value: "DimensionValue", # required
346
+ # },
347
+ # ],
348
+ # period: 1,
349
+ # unit: "Seconds", # accepts Seconds, Microseconds, Milliseconds, Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes, Bits, Kilobits, Megabits, Gigabits, Terabits, Percent, Count, Bytes/Second, Kilobytes/Second, Megabytes/Second, Gigabytes/Second, Terabytes/Second, Bits/Second, Kilobits/Second, Megabits/Second, Gigabits/Second, Terabits/Second, Count/Second, None
350
+ # })
351
+ # @param [Hash] options ({})
352
+ # @option options [String] :statistic
353
+ # The statistic for the metric, other than percentiles. For percentile
354
+ # statistics, use `ExtendedStatistics`.
355
+ # @option options [String] :extended_statistic
356
+ # The percentile statistic for the metric. Specify a value between p0.0
357
+ # and p100.
358
+ # @option options [Array<Types::Dimension>] :dimensions
359
+ # The dimensions associated with the metric. If the metric has any
360
+ # associated dimensions, you must specify them in order for the call to
361
+ # succeed.
362
+ # @option options [Integer] :period
363
+ # The period, in seconds, over which the statistic is applied.
364
+ # @option options [String] :unit
365
+ # The unit for the metric.
366
+ # @return [Alarm::Collection]
367
+ def alarms(options = {})
368
+ batches = Enumerator.new do |y|
369
+ batch = []
370
+ options = options.merge(
371
+ namespace: @namespace,
372
+ metric_name: @name
373
+ )
374
+ resp = @client.describe_alarms_for_metric(options)
375
+ resp.data.metric_alarms.each do |m|
376
+ batch << Alarm.new(
377
+ name: m.alarm_name,
378
+ data: m,
379
+ client: @client
380
+ )
381
+ end
382
+ y.yield(batch)
383
+ end
384
+ Alarm::Collection.new(batches)
385
+ end
386
+
387
+ # @deprecated
388
+ # @api private
389
+ def identifiers
390
+ {
391
+ namespace: @namespace,
392
+ name: @name
393
+ }
394
+ end
395
+ deprecated(:identifiers)
396
+
397
+ private
398
+
399
+ def extract_namespace(args, options)
400
+ value = args[0] || options.delete(:namespace)
401
+ case value
402
+ when String then value
403
+ when nil then raise ArgumentError, "missing required option :namespace"
404
+ else
405
+ msg = "expected :namespace to be a String, got #{value.class}"
406
+ raise ArgumentError, msg
407
+ end
408
+ end
409
+
410
+ def extract_name(args, options)
411
+ value = args[1] || options.delete(:name)
412
+ case value
413
+ when String then value
414
+ when nil then raise ArgumentError, "missing required option :name"
415
+ else
416
+ msg = "expected :name to be a String, got #{value.class}"
417
+ raise ArgumentError, msg
418
+ end
419
+ end
420
+
421
+ class Collection < Aws::Resources::Collection; end
422
+ end
423
+ end
424
+ end
@@ -0,0 +1,123 @@
1
+ # WARNING ABOUT GENERATED CODE
2
+ #
3
+ # This file is generated. See the contributing for info on making contributions:
4
+ # https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
5
+ #
6
+ # WARNING ABOUT GENERATED CODE
7
+
8
+ module Aws
9
+ module CloudWatch
10
+ class Resource
11
+
12
+ # @param options ({})
13
+ # @option options [Client] :client
14
+ def initialize(options = {})
15
+ @client = options[:client] || Client.new(options)
16
+ end
17
+
18
+ # @return [Client]
19
+ def client
20
+ @client
21
+ end
22
+
23
+ # @!group Associations
24
+
25
+ # @param [String] name
26
+ # @return [Alarm]
27
+ def alarm(name)
28
+ Alarm.new(
29
+ name: name,
30
+ client: @client
31
+ )
32
+ end
33
+
34
+ # @example Request syntax with placeholder values
35
+ #
36
+ # alarms = cloud_watch.alarms({
37
+ # alarm_names: ["AlarmName"],
38
+ # alarm_name_prefix: "AlarmNamePrefix",
39
+ # state_value: "OK", # accepts OK, ALARM, INSUFFICIENT_DATA
40
+ # action_prefix: "ActionPrefix",
41
+ # })
42
+ # @param [Hash] options ({})
43
+ # @option options [Array<String>] :alarm_names
44
+ # The names of the alarms.
45
+ # @option options [String] :alarm_name_prefix
46
+ # The alarm name prefix. You cannot specify `AlarmNames` if this
47
+ # parameter is specified.
48
+ # @option options [String] :state_value
49
+ # The state value to be used in matching alarms.
50
+ # @option options [String] :action_prefix
51
+ # The action name prefix.
52
+ # @return [Alarm::Collection]
53
+ def alarms(options = {})
54
+ batches = Enumerator.new do |y|
55
+ resp = @client.describe_alarms(options)
56
+ resp.each_page do |page|
57
+ batch = []
58
+ page.data.metric_alarms.each do |m|
59
+ batch << Alarm.new(
60
+ name: m.alarm_name,
61
+ data: m,
62
+ client: @client
63
+ )
64
+ end
65
+ y.yield(batch)
66
+ end
67
+ end
68
+ Alarm::Collection.new(batches)
69
+ end
70
+
71
+ # @param [String] namespace
72
+ # @param [String] name
73
+ # @return [Metric]
74
+ def metric(namespace, name)
75
+ Metric.new(
76
+ namespace: namespace,
77
+ name: name,
78
+ client: @client
79
+ )
80
+ end
81
+
82
+ # @example Request syntax with placeholder values
83
+ #
84
+ # metrics = cloud_watch.metrics({
85
+ # namespace: "Namespace",
86
+ # metric_name: "MetricName",
87
+ # dimensions: [
88
+ # {
89
+ # name: "DimensionName", # required
90
+ # value: "DimensionValue",
91
+ # },
92
+ # ],
93
+ # })
94
+ # @param [Hash] options ({})
95
+ # @option options [String] :namespace
96
+ # The namespace to filter against.
97
+ # @option options [String] :metric_name
98
+ # The name of the metric to filter against.
99
+ # @option options [Array<Types::DimensionFilter>] :dimensions
100
+ # The dimensions to filter against.
101
+ # @return [Metric::Collection]
102
+ def metrics(options = {})
103
+ batches = Enumerator.new do |y|
104
+ resp = @client.list_metrics(options)
105
+ resp.each_page do |page|
106
+ batch = []
107
+ page.data.metrics.each do |m|
108
+ batch << Metric.new(
109
+ namespace: m.namespace,
110
+ name: m.metric_name,
111
+ data: m,
112
+ client: @client
113
+ )
114
+ end
115
+ y.yield(batch)
116
+ end
117
+ end
118
+ Metric::Collection.new(batches)
119
+ end
120
+
121
+ end
122
+ end
123
+ end