aws-sdk 1.5.6 → 1.5.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. data/lib/aws.rb +2 -0
  2. data/lib/aws/api_config/CloudWatch-2010-08-01.yml +424 -0
  3. data/lib/aws/api_config/STS-2011-06-15.yml +4 -0
  4. data/lib/aws/auto_scaling/activity.rb +2 -2
  5. data/lib/aws/auto_scaling/activity_collection.rb +1 -1
  6. data/lib/aws/auto_scaling/group_collection.rb +1 -1
  7. data/lib/aws/auto_scaling/instance_collection.rb +1 -1
  8. data/lib/aws/auto_scaling/launch_configuration_collection.rb +1 -1
  9. data/lib/aws/auto_scaling/notification_configuration_collection.rb +1 -1
  10. data/lib/aws/auto_scaling/scaling_policy_collection.rb +1 -1
  11. data/lib/aws/auto_scaling/scheduled_action_collection.rb +1 -1
  12. data/lib/aws/auto_scaling/tag_collection.rb +1 -1
  13. data/lib/aws/cloud_watch.rb +75 -0
  14. data/lib/aws/cloud_watch/alarm.rb +272 -0
  15. data/lib/aws/cloud_watch/alarm_collection.rb +153 -0
  16. data/lib/aws/cloud_watch/alarm_history_item.rb +50 -0
  17. data/lib/aws/cloud_watch/alarm_history_item_collection.rb +84 -0
  18. data/lib/aws/cloud_watch/client.rb +333 -0
  19. data/lib/aws/cloud_watch/config.rb +18 -0
  20. data/lib/aws/cloud_watch/errors.rb +22 -0
  21. data/lib/aws/cloud_watch/metric.rb +135 -0
  22. data/lib/aws/cloud_watch/metric_alarm_collection.rb +160 -0
  23. data/lib/aws/cloud_watch/metric_collection.rb +131 -0
  24. data/lib/aws/cloud_watch/metric_statistics.rb +69 -0
  25. data/lib/aws/cloud_watch/request.rb +23 -0
  26. data/lib/aws/core.rb +1 -1
  27. data/lib/aws/core/client.rb +2 -2
  28. data/lib/aws/core/client/query_json.rb +2 -0
  29. data/lib/aws/core/collection.rb +58 -25
  30. data/lib/aws/core/collection/simple.rb +18 -26
  31. data/lib/aws/core/collection/with_limit_and_next_token.rb +71 -0
  32. data/lib/aws/core/collection/with_next_token.rb +97 -0
  33. data/lib/aws/core/credential_providers.rb +36 -0
  34. data/lib/aws/core/option_grammar.rb +19 -0
  35. data/lib/aws/core/page_result.rb +5 -3
  36. data/lib/aws/dynamo_db/client.rb +0 -16
  37. data/lib/aws/dynamo_db/item_collection.rb +1 -1
  38. data/lib/aws/dynamo_db/request.rb +5 -1
  39. data/lib/aws/dynamo_db/table_collection.rb +1 -1
  40. data/lib/aws/iam/collection.rb +1 -1
  41. data/lib/aws/s3/client.rb +1 -1
  42. data/lib/aws/s3/paginated_collection.rb +1 -1
  43. data/lib/aws/simple_db/domain_collection.rb +14 -41
  44. data/lib/aws/simple_db/item_collection.rb +2 -2
  45. data/lib/aws/simple_email_service/identity_collection.rb +1 -1
  46. data/lib/aws/simple_workflow/domain_collection.rb +1 -1
  47. data/lib/aws/simple_workflow/history_event_collection.rb +1 -1
  48. data/lib/aws/simple_workflow/type_collection.rb +1 -1
  49. data/lib/aws/simple_workflow/workflow_execution_collection.rb +1 -1
  50. data/lib/aws/sns/topic.rb +1 -1
  51. data/lib/aws/sts.rb +9 -1
  52. data/lib/aws/sts/client.rb +31 -14
  53. data/lib/net/http/connection_pool.rb +11 -5
  54. metadata +19 -4
  55. data/lib/aws/core/collection/limitable.rb +0 -99
@@ -0,0 +1,69 @@
1
+ # Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License"). You
4
+ # may not use this file except in compliance with the License. A copy of
5
+ # the License is located at
6
+ #
7
+ # http://aws.amazon.com/apache2.0/
8
+ #
9
+ # or in the "license" file accompanying this file. This file is
10
+ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
11
+ # ANY KIND, either express or implied. See the License for the specific
12
+ # language governing permissions and limitations under the License.
13
+
14
+ module AWS
15
+ class CloudWatch
16
+
17
+ # Statistics for a metric.
18
+ #
19
+ # This class is an enumerable collection of data points.
20
+ #
21
+ # == Enumerating Statistics
22
+ #
23
+ # metric = CloudWatch::Metric.new('my/namepace', 'metric-name')
24
+ #
25
+ # stats = metric.statistics(
26
+ # :start_time => Time.now - 3600,
27
+ # :end_time => Time.now,
28
+ # :statistics => ['Average'])
29
+ #
30
+ # stats.label #=> 'some-label'
31
+ # stats.each do |datapoint|
32
+ # # datapoint is a hash
33
+ # end
34
+ #
35
+ # @see Core::Collection
36
+ #
37
+ class MetricStatistics
38
+
39
+ include Core::Collection::Simple
40
+
41
+ # @param [Metric] metric
42
+ # @param [String] label
43
+ # @param [Array<Hash>] datapoints
44
+ def initialize metric, label, datapoints
45
+ @metric = metric
46
+ @label = label
47
+ @datapoints = datapoints
48
+ end
49
+
50
+ # @return [Metric]
51
+ attr_reader :metric
52
+
53
+ # @return [String]
54
+ attr_reader :label
55
+
56
+ # @return [Array<Hash>]
57
+ attr_reader :datapoints
58
+
59
+ protected
60
+
61
+ def _each_item options = {}
62
+ datapoints.each do |point|
63
+ yield(point)
64
+ end
65
+ end
66
+
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,23 @@
1
+ # Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License"). You
4
+ # may not use this file except in compliance with the License. A copy of
5
+ # the License is located at
6
+ #
7
+ # http://aws.amazon.com/apache2.0/
8
+ #
9
+ # or in the "license" file accompanying this file. This file is
10
+ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
11
+ # ANY KIND, either express or implied. See the License for the specific
12
+ # language governing permissions and limitations under the License.
13
+
14
+ module AWS
15
+ class CloudWatch
16
+
17
+ # @private
18
+ class Request < Core::Http::Request
19
+ include Core::Signature::Version2
20
+ end
21
+
22
+ end
23
+ end
@@ -66,7 +66,7 @@ require 'aws/core/autoloader'
66
66
  module AWS
67
67
 
68
68
  # Current version of the AWS SDK for Ruby
69
- VERSION = "1.5.6"
69
+ VERSION = "1.5.7"
70
70
 
71
71
  register_autoloads(self) do
72
72
  autoload :Errors, 'errors'
@@ -11,10 +11,10 @@
11
11
  # ANY KIND, either express or implied. See the License for the specific
12
12
  # language governing permissions and limitations under the License.
13
13
 
14
- require 'set'
15
14
  require 'aws/core/client/query_xml'
16
15
  require 'aws/core/client/query_json'
17
- require 'json'
16
+ require 'set'
17
+ require 'yaml'
18
18
 
19
19
  module AWS
20
20
  module Core
@@ -11,6 +11,8 @@
11
11
  # ANY KIND, either express or implied. See the License for the specific
12
12
  # language governing permissions and limitations under the License.
13
13
 
14
+ require 'json'
15
+
14
16
  module AWS
15
17
  module Core
16
18
  class Client
@@ -13,28 +13,13 @@
13
13
  module AWS
14
14
  module Core
15
15
 
16
- # = Different Collection Types in AWS
17
- #
18
- # The Collection module acts as a namespace and base implementation for
19
- # the primary collection types in AWS:
20
- #
21
- # * {AWS::Core::Collection::Simple}
22
- # * {AWS::Core::Collection::Limitable}
23
- #
24
- # Each AWS service allows provides a method to enumerate resources.
25
- #
26
- # * Services that return all results in a single response use
27
- # {AWS::Core::Collection::Simple}.
28
- #
29
- # * Services that truncate large results sets *AND* allow you to provide
30
- # a perfered maximum number of results use
31
- # {AWS::Core::Collection::Limitable}.
32
- #
16
+ # Provides useful methods for enumerating items in a collection.
33
17
  module Collection
34
18
 
35
19
  AWS.register_autoloads(self) do
36
- autoload :Simple, 'simple'
37
- autoload :Limitable, 'limitable'
20
+ autoload :Simple, 'simple'
21
+ autoload :WithNextToken, 'with_next_token'
22
+ autoload :WithLimitAndNextToken, 'with_limit_and_next_token'
38
23
  end
39
24
 
40
25
  include Enumerable
@@ -89,16 +74,12 @@ module AWS
89
74
  # a single collection. Each batch represents all of the items returned
90
75
  # in a single resopnse.
91
76
  #
92
- # @note If you require fixed size batches, see {#in_groups_of}.
93
- #
77
+ # @note If you require fixed batch sizes, see {#in_groups_of}.
94
78
  # @param (see #each)
95
- #
96
79
  # @option (see #each)
97
- #
98
80
  # @return (see #each)
99
- #
100
81
  def each_batch options = {}, &block
101
- raise NotImplementedError
82
+ _each_batch(options.dup, &block)
102
83
  end
103
84
 
104
85
  # Use this method when you want to call a method provided by
@@ -228,7 +209,59 @@ module AWS
228
209
  Core::PageResult.new(self, items, per_page, next_token)
229
210
 
230
211
  end
212
+
213
+ protected
214
+
215
+ def _each_batch options, &block
216
+ # should be defined in the collection modules
217
+ raise NotImplementedError
218
+ end
219
+
220
+ def _each_item next_token, options = {}, &block
221
+ # should be defined in classes included the collection modules
222
+ raise NotImplementedError
223
+ end
224
+
225
+ def _extract_next_token options
226
+ next_token = options.delete(:next_token)
227
+ next_token = nil if next_token == ''
228
+ next_token
229
+ end
230
+
231
+ def _extract_batch_size options
232
+ batch_size = options.delete(:batch_size)
233
+ batch_size = nil if batch_size == ''
234
+ batch_size = batch_size.to_i if batch_size
235
+ batch_size
236
+ end
237
+
238
+ def _extract_limit options
239
+ limit = options.delete(:limit) || _limit
240
+ limit = nil if limit == ''
241
+ limit = limit.to_i if limit
242
+ limit
243
+ end
231
244
 
245
+ # Override this method in collection classes that provide
246
+ # an alternative way to provide the limit than passinging
247
+ # it to the enumerable method as :limit.
248
+ #
249
+ # An example of when this would be useful:
250
+ #
251
+ # collection.limit(10).each {|item| ... }
252
+ #
253
+ # The collection class including this module should define _limit
254
+ # and return the cached limit value (of 10 from this example).
255
+ # This value may still be overridden by a locally passed
256
+ # +:limit+ option:
257
+ #
258
+ # # limit 5 wins out
259
+ # collection.limit(10).each(:limit => 5) {|item| ... }
260
+ #
261
+ def _limit
262
+ nil
263
+ end
264
+
232
265
  end
233
266
  end
234
267
  end
@@ -15,7 +15,7 @@ module AWS
15
15
  module Core
16
16
  module Collection
17
17
 
18
- # AWS::Core::Collection::Simple is used by collections that always
18
+ # AWS::Core::Collection::Simple is used by collections that always
19
19
  # recieve every matching items in a single response.
20
20
  #
21
21
  # This means:
@@ -25,7 +25,7 @@ module AWS
25
25
  # * Next tokens are artificial (guessable numeric offsets)
26
26
  #
27
27
  # AWS services generally return all items only for requests with a
28
- # small maximum number of results.
28
+ # small maximum number of results.
29
29
  #
30
30
  # See {AWS::Core::Collection} for documentation on the available
31
31
  # collection methods.
@@ -35,37 +35,36 @@ module AWS
35
35
  include Enumerable
36
36
  include Collection
37
37
 
38
- # (see AWS::Core::Collection#each_batch)
39
- def each_batch options = {}, &block
38
+ protected
39
+
40
+ def _each_batch options = {}, &block
40
41
 
41
- each_opts = options.dup
42
- limit = each_opts.delete(:limit)
43
- limit = limit.to_i if limit
44
- next_token = each_opts.delete(:next_token)
45
- offset = next_token ? next_token.to_i - 1 : 0
46
- total = 0
42
+ limit = _extract_limit(options)
43
+ next_token = _extract_next_token(options)
44
+ offset = next_token ? next_token.to_i - 1 : 0
47
45
 
48
- nil_or_next_token = nil
46
+ total = 0
47
+ skipped = 0
48
+ simulated_next_token = nil
49
49
 
50
50
  batch = []
51
- _each_item(each_opts.dup) do |item|
51
+ _each_item(options.dup) do |item|
52
52
 
53
53
  total += 1
54
54
 
55
55
  # skip until we reach our offset (derived from the "next token")
56
- next if total <= offset
56
+ if skipped < offset
57
+ skipped += 1
58
+ next
59
+ end
57
60
 
58
61
  if limit
59
-
60
62
  if batch.size < limit
61
63
  batch << item
62
64
  else
63
- # allow _each_item to yield one more item than needed
64
- # so we can determine if we should return a "next token"
65
- nil_or_next_token = total
65
+ simulated_next_token = total
66
66
  break
67
67
  end
68
-
69
68
  else
70
69
  batch << item
71
70
  end
@@ -74,17 +73,10 @@ module AWS
74
73
 
75
74
  yield(batch)
76
75
 
77
- nil_or_next_token
76
+ simulated_next_token
78
77
 
79
78
  end
80
-
81
- protected
82
- def _each_item options = {}, &block
83
- raise NotImplementedError
84
- end
85
-
86
79
  end
87
-
88
80
  end
89
81
  end
90
82
  end
@@ -0,0 +1,71 @@
1
+ # Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License"). You
4
+ # may not use this file except in compliance with the License. A copy of
5
+ # the License is located at
6
+ #
7
+ # http://aws.amazon.com/apache2.0/
8
+ #
9
+ # or in the "license" file accompanying this file. This file is
10
+ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
11
+ # ANY KIND, either express or implied. See the License for the specific
12
+ # language governing permissions and limitations under the License.
13
+
14
+ module AWS
15
+ module Core
16
+ module Collection
17
+
18
+ # = Collection::WithLimitAndNextToken
19
+ #
20
+ # This module is used by collections where the service may truncate
21
+ # responses but that also accept a upper limit of results to
22
+ # return in a single request.
23
+ #
24
+ # See {AWS::Core::Collection} for documentation on the available
25
+ # methods.
26
+ #
27
+ module WithLimitAndNextToken
28
+
29
+ include Model
30
+ include Collection
31
+ include Enumerable
32
+
33
+ protected
34
+
35
+ def _each_batch options = {}, &block
36
+
37
+ limit = _extract_limit(options)
38
+ batch_size = _extract_batch_size(options)
39
+ next_token = _extract_next_token(options)
40
+
41
+ total = 0 # count of items yeilded across all batches
42
+
43
+ begin
44
+
45
+ max = nil
46
+ if limit or batch_size
47
+ max = []
48
+ max << (limit - total) if limit
49
+ max << batch_size if batch_size
50
+ max = max.min
51
+ end
52
+
53
+ batch = []
54
+ next_token = _each_item(next_token, max, options.dup) do |item|
55
+
56
+ total += 1
57
+ batch << item
58
+
59
+ end
60
+
61
+ yield(batch)
62
+
63
+ end until next_token.nil? or (limit and limit == total)
64
+
65
+ next_token
66
+
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,97 @@
1
+ # Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License"). You
4
+ # may not use this file except in compliance with the License. A copy of
5
+ # the License is located at
6
+ #
7
+ # http://aws.amazon.com/apache2.0/
8
+ #
9
+ # or in the "license" file accompanying this file. This file is
10
+ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
11
+ # ANY KIND, either express or implied. See the License for the specific
12
+ # language governing permissions and limitations under the License.
13
+
14
+ module AWS
15
+ module Core
16
+ module Collection
17
+
18
+ # = Collection::WithNextToken
19
+ #
20
+ # When making a request to list elements from one of these
21
+ # collections, the response may return a next token. This indicates
22
+ # there are more results than were returned. You can not control
23
+ # the number of elements returned with each response.
24
+ #
25
+ # See {AWS::Core::Collection} for documentation on the available
26
+ # collection methods.
27
+ #
28
+ module WithNextToken
29
+
30
+ include Model
31
+ include Enumerable
32
+ include Collection
33
+
34
+ protected
35
+
36
+ def _each_batch options = {}, &block
37
+
38
+ limit = _extract_limit(options)
39
+
40
+ next_token, skip_count = _extract_next_token(options)
41
+
42
+ skipped = 0
43
+ collected = 0
44
+
45
+ begin
46
+
47
+ offset = 0
48
+ batch = []
49
+
50
+ next_token = _each_item(next_token, options.dup) do |item|
51
+
52
+ if skipped < skip_count
53
+ skipped += 1
54
+ next
55
+ end
56
+
57
+ if limit
58
+ if collected < limit
59
+ batch << item
60
+ collected += 1
61
+ else
62
+ yield(batch)
63
+ simulated_next_token = {}
64
+ simulated_next_token[:token] = next_token if next_token
65
+ simulated_next_token[:offset] = offset + skipped
66
+ return simulated_next_token
67
+ end
68
+ else
69
+ batch << item
70
+ collected += 1
71
+ end
72
+
73
+ offset += 1
74
+
75
+ end # _each_item
76
+
77
+ yield(batch)
78
+
79
+ end until next_token.nil? or (limit and limit == collected)
80
+
81
+ next_token.nil? ? nil : { :token => next_token }
82
+
83
+ end
84
+
85
+ def _extract_next_token options
86
+ next_token = super
87
+ case next_token
88
+ when nil then [nil, 0]
89
+ when Hash then [next_token[:token], next_token[:offset] || 0]
90
+ else [next_token, 0]
91
+ end
92
+ end
93
+
94
+ end
95
+ end
96
+ end
97
+ end