aws-sdk 1.3.8 → 1.3.9
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/aws.rb +2 -0
- data/lib/aws/api_config/AutoScaling-2011-01-01.yml +563 -0
- data/lib/aws/auto_scaling.rb +162 -0
- data/lib/aws/auto_scaling/activity.rb +102 -0
- data/lib/aws/auto_scaling/activity_collection.rb +82 -0
- data/lib/aws/auto_scaling/client.rb +50 -0
- data/lib/aws/auto_scaling/client/xml.rb +32 -0
- data/lib/aws/auto_scaling/config.rb +18 -0
- data/lib/aws/auto_scaling/errors.rb +26 -0
- data/lib/aws/auto_scaling/group.rb +420 -0
- data/lib/aws/auto_scaling/group_collection.rb +96 -0
- data/lib/aws/auto_scaling/group_options.rb +146 -0
- data/lib/aws/auto_scaling/instance.rb +192 -0
- data/lib/aws/auto_scaling/instance_collection.rb +63 -0
- data/lib/aws/auto_scaling/launch_configuration.rb +150 -0
- data/lib/aws/auto_scaling/launch_configuration_collection.rb +144 -0
- data/lib/aws/auto_scaling/notification_configuration.rb +89 -0
- data/lib/aws/auto_scaling/notification_configuration_collection.rb +184 -0
- data/lib/aws/auto_scaling/request.rb +24 -0
- data/lib/aws/auto_scaling/scaling_policy.rb +125 -0
- data/lib/aws/auto_scaling/scaling_policy_collection.rb +72 -0
- data/lib/aws/auto_scaling/scaling_policy_options.rb +61 -0
- data/lib/aws/auto_scaling/scheduled_action.rb +145 -0
- data/lib/aws/auto_scaling/scheduled_action_collection.rb +195 -0
- data/lib/aws/auto_scaling/tag.rb +59 -0
- data/lib/aws/auto_scaling/tag_collection.rb +112 -0
- data/lib/aws/core.rb +40 -8
- data/lib/aws/core/client.rb +28 -3
- data/lib/aws/core/configuration.rb +38 -31
- data/lib/aws/core/http/request.rb +3 -3
- data/lib/aws/core/http/response.rb +2 -1
- data/lib/aws/core/log_formatter.rb +454 -0
- data/lib/aws/core/resource.rb +2 -1
- data/lib/aws/core/response.rb +5 -0
- data/lib/aws/core/uri_escape.rb +1 -1
- data/lib/aws/core/xml_grammar.rb +21 -0
- data/lib/aws/dynamo_db/request.rb +1 -1
- data/lib/aws/ec2/network_acl_collection.rb +1 -2
- data/lib/aws/ec2/route_table_collection.rb +1 -2
- data/lib/aws/ec2/vpn_gateway_collection.rb +1 -1
- data/lib/aws/elb/load_balancer.rb +0 -2
- data/lib/aws/errors.rb +2 -2
- data/lib/aws/s3/object_version_collection.rb +1 -1
- data/lib/aws/s3/s3_object.rb +4 -4
- data/lib/aws/sqs/queue.rb +2 -2
- metadata +52 -27
- data/lib/aws/core/client_logging.rb +0 -133
@@ -0,0 +1,162 @@
|
|
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
|
+
require 'aws/core'
|
15
|
+
require 'aws/auto_scaling/config'
|
16
|
+
|
17
|
+
module AWS
|
18
|
+
|
19
|
+
# This class is the starting point for working with Auto Scaling.
|
20
|
+
#
|
21
|
+
# To use Auto Scaling you must first
|
22
|
+
# {sign up here}[http://aws.amazon.com/autoscaling/].
|
23
|
+
#
|
24
|
+
# For more information about Auto Scaling:
|
25
|
+
#
|
26
|
+
# * {Auto Scaling}[http://aws.amazon.com/autoscaling/]
|
27
|
+
# * {Auto Scaling Documentation}[http://aws.amazon.com/documentation/autoscaling/]
|
28
|
+
#
|
29
|
+
# = Credentials
|
30
|
+
#
|
31
|
+
# You can setup default credentials for all AWS services via
|
32
|
+
# AWS.config:
|
33
|
+
#
|
34
|
+
# AWS.config(
|
35
|
+
# :access_key_id => 'YOUR_ACCESS_KEY_ID',
|
36
|
+
# :secret_access_key => 'YOUR_SECRET_ACCESS_KEY')
|
37
|
+
#
|
38
|
+
# Or you can set them directly on the AWS::AutoSclaing interface:
|
39
|
+
#
|
40
|
+
# auto_scaling = AWS::AutoScaling.new(
|
41
|
+
# :access_key_id => 'YOUR_ACCESS_KEY_ID',
|
42
|
+
# :secret_access_key => 'YOUR_SECRET_ACCESS_KEY')
|
43
|
+
#
|
44
|
+
# = Launch Configurations
|
45
|
+
#
|
46
|
+
# You need to create a launch configuration before you can create
|
47
|
+
# an Auto Scaling Group.
|
48
|
+
#
|
49
|
+
# # needs a name, image id, and instance type
|
50
|
+
# launch_config = auto_scaling.launch_configurations.create(
|
51
|
+
# 'launch-config-name', 'ami-12345', 'm1-small')
|
52
|
+
#
|
53
|
+
# If you have previously created a launch configuration you can
|
54
|
+
# reference using the {LaunchConfigurationCollection}.
|
55
|
+
#
|
56
|
+
# launch_config = auto_scaling.launch_configurations['launch-config-name']
|
57
|
+
#
|
58
|
+
# = Auto Scaling Groups
|
59
|
+
#
|
60
|
+
# Given a launch configuration, you can now create an Auto Scaling {Group}.
|
61
|
+
#
|
62
|
+
# group = auto_scaling.groups.create('group-name',
|
63
|
+
# :launch_configuration => launch_config,
|
64
|
+
# :availability_zones => %(us-east-1a us-east-1b),
|
65
|
+
# :min_size => 1,
|
66
|
+
# :max_size => 4)
|
67
|
+
#
|
68
|
+
class AutoScaling
|
69
|
+
|
70
|
+
AWS.register_autoloads(self, 'aws/auto_scaling') do
|
71
|
+
autoload :Activity, 'activity'
|
72
|
+
autoload :ActivityCollection, 'activity_collection'
|
73
|
+
autoload :Client, 'client'
|
74
|
+
autoload :Errors, 'errors'
|
75
|
+
autoload :Group, 'group'
|
76
|
+
autoload :GroupCollection, 'group_collection'
|
77
|
+
autoload :GroupOptions, 'group_options'
|
78
|
+
autoload :Instance, 'instance'
|
79
|
+
autoload :InstanceCollection, 'instance_collection'
|
80
|
+
autoload :LaunchConfiguration, 'launch_configuration'
|
81
|
+
autoload :LaunchConfigurationCollection, 'launch_configuration_collection'
|
82
|
+
autoload :NotificationConfiguration, 'notification_configuration'
|
83
|
+
autoload :NotificationConfigurationCollection, 'notification_configuration_collection'
|
84
|
+
autoload :Request, 'request'
|
85
|
+
autoload :ScalingPolicy, 'scaling_policy'
|
86
|
+
autoload :ScalingPolicyCollection, 'scaling_policy_collection'
|
87
|
+
autoload :ScalingPolicyOptions, 'scaling_policy_options'
|
88
|
+
autoload :ScheduledAction, 'scheduled_action'
|
89
|
+
autoload :ScheduledActionCollection, 'scheduled_action_collection'
|
90
|
+
autoload :Tag, 'tag'
|
91
|
+
autoload :TagCollection, 'tag_collection'
|
92
|
+
end
|
93
|
+
|
94
|
+
include Core::ServiceInterface
|
95
|
+
|
96
|
+
# @return [LaunchConfigurationCollection]
|
97
|
+
def launch_configurations
|
98
|
+
LaunchConfigurationCollection.new(:config => config)
|
99
|
+
end
|
100
|
+
|
101
|
+
# @return [GroupCollection]
|
102
|
+
def groups
|
103
|
+
GroupCollection.new(:config => config)
|
104
|
+
end
|
105
|
+
|
106
|
+
# @return [TagCollection]
|
107
|
+
def tags
|
108
|
+
TagCollection.new(:config => config)
|
109
|
+
end
|
110
|
+
|
111
|
+
# @return [NotificationConfigurationCollection]
|
112
|
+
def notification_configurations
|
113
|
+
NotificationConfigurationCollection.new(:config => config)
|
114
|
+
end
|
115
|
+
|
116
|
+
# @return [AutoScaling::InstancesCollection] Returns a collection of
|
117
|
+
# {AutoScaling::Instance} objects. Each of these is a small
|
118
|
+
# wrapper around an {EC::Instance} with additional attributes.
|
119
|
+
def instances
|
120
|
+
InstanceCollection.new(:config => config)
|
121
|
+
end
|
122
|
+
|
123
|
+
# @return [ActivityCollection]
|
124
|
+
def activities
|
125
|
+
ActivityCollection.new(:config => config)
|
126
|
+
end
|
127
|
+
|
128
|
+
# @return [ScheduledActionCollection]
|
129
|
+
def scheduled_actions
|
130
|
+
ScheduledActionCollection.new(:config => config)
|
131
|
+
end
|
132
|
+
|
133
|
+
# Returns a list of all notification types that are supported by
|
134
|
+
# Auto Scaling.
|
135
|
+
# @return [Array<String>]
|
136
|
+
def notification_types
|
137
|
+
resp = client.describe_auto_scaling_notification_types
|
138
|
+
resp.auto_scaling_notification_types
|
139
|
+
end
|
140
|
+
|
141
|
+
# @return [Array<String>] Returns the list of valid adjustmet types.
|
142
|
+
def adjustment_types
|
143
|
+
client.describe_adjustment_types.adjustment_types.map(&:adjustment_type)
|
144
|
+
end
|
145
|
+
|
146
|
+
# @return [Array<String>] Returns the list of valid scaling process types.
|
147
|
+
def scaling_process_types
|
148
|
+
client.describe_scaling_process_types.processes.map(&:process_name)
|
149
|
+
end
|
150
|
+
|
151
|
+
# @return [Array<String>] Returns the list of valid metric collection types.
|
152
|
+
def metric_collection_types
|
153
|
+
client.describe_metric_collection_types.metrics.map(&:metric)
|
154
|
+
end
|
155
|
+
|
156
|
+
# @return [Array<String>] Returns the list of valid metric granularities.
|
157
|
+
def metric_collection_granularities
|
158
|
+
client.describe_metric_collection_types.granularities.map(&:granularity)
|
159
|
+
end
|
160
|
+
|
161
|
+
end
|
162
|
+
end
|
@@ -0,0 +1,102 @@
|
|
1
|
+
# Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
2
|
+
#.kkk:w
|
3
|
+
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
5
|
+
# may not use this file except in compliance with the License. A copy of
|
6
|
+
# the License is located at
|
7
|
+
#
|
8
|
+
# http://aws.amazon.com/apache2.0/
|
9
|
+
#
|
10
|
+
# or in the "license" file accompanying this file. This file is
|
11
|
+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
12
|
+
# ANY KIND, either express or implied. See the License for the specific
|
13
|
+
# language governing permissions and limitations under the License.
|
14
|
+
|
15
|
+
module AWS
|
16
|
+
class AutoScaling
|
17
|
+
|
18
|
+
# @attr_reader [String] auto_scaling_group_name
|
19
|
+
#
|
20
|
+
# @attr_reader [String] cause
|
21
|
+
#
|
22
|
+
# @attr_reader [nil,String] description
|
23
|
+
#
|
24
|
+
# @attr_reader [String] details
|
25
|
+
#
|
26
|
+
# @attr_reader [Time] start_time
|
27
|
+
#
|
28
|
+
# @attr_reader [nil,Time] end_time
|
29
|
+
#
|
30
|
+
# @attr_reader [Integer] progress
|
31
|
+
#
|
32
|
+
# @attr_reader [nil,String] status_code
|
33
|
+
#
|
34
|
+
# @attr_reader [nil,String] status_message
|
35
|
+
#
|
36
|
+
class Activity < Core::Resource
|
37
|
+
|
38
|
+
# @private
|
39
|
+
def initialize activity_id, options = {}
|
40
|
+
@activity_id = activity_id
|
41
|
+
super
|
42
|
+
end
|
43
|
+
|
44
|
+
# @return [String]
|
45
|
+
attr_reader :activity_id
|
46
|
+
|
47
|
+
alias_method :id, :activity_id
|
48
|
+
|
49
|
+
attribute :auto_scaling_group_name, :static => true
|
50
|
+
|
51
|
+
attribute :cause, :static => true
|
52
|
+
|
53
|
+
attribute :description, :static => true
|
54
|
+
|
55
|
+
attribute :details
|
56
|
+
|
57
|
+
attribute :start_time, :static => true
|
58
|
+
|
59
|
+
attribute :end_time
|
60
|
+
|
61
|
+
attribute :progress
|
62
|
+
|
63
|
+
attribute :status_code
|
64
|
+
|
65
|
+
attribute :status_message
|
66
|
+
|
67
|
+
populates_from(:describe_scaling_activities) do |resp|
|
68
|
+
resp.activities.find {|a| a.activity_id == activity_id }
|
69
|
+
end
|
70
|
+
|
71
|
+
populates_from(:terminate_instance_in_auto_scaling_group) do |resp|
|
72
|
+
resp.activity if resp.activity.activity_id == activity_id
|
73
|
+
end
|
74
|
+
|
75
|
+
# @return [Group]
|
76
|
+
def group
|
77
|
+
Group.new(auto_scaling_group_name, :config => config)
|
78
|
+
end
|
79
|
+
|
80
|
+
# @return [Boolean]
|
81
|
+
def exists?
|
82
|
+
client_opts = {}
|
83
|
+
client_opts[:activity_ids] = [activity_id]
|
84
|
+
resp = client.describe_scaling_activities(client_opts)
|
85
|
+
!resp.activities.empty?
|
86
|
+
end
|
87
|
+
|
88
|
+
protected
|
89
|
+
|
90
|
+
def get_resource attr_name = nil
|
91
|
+
client_opts = {}
|
92
|
+
client_opts[:activity_ids] = [activity_id]
|
93
|
+
client.describe_scaling_activities(client_opts)
|
94
|
+
end
|
95
|
+
|
96
|
+
def resource_identifiers
|
97
|
+
[[:activity_id, activity_id]]
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
@@ -0,0 +1,82 @@
|
|
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 AutoScaling
|
16
|
+
|
17
|
+
# Allows you to enumerate Auto Scaling activities
|
18
|
+
#
|
19
|
+
# Enumerating ALL activities:
|
20
|
+
#
|
21
|
+
# auto_scaling = AWS::AutoScaling.new
|
22
|
+
# auto_scaling.activities.each do |activity|
|
23
|
+
# # ...
|
24
|
+
# end
|
25
|
+
#
|
26
|
+
# Enumerating activities for a single Auto Scaling group:
|
27
|
+
#
|
28
|
+
# group = auto_scaling.groups['group-name']
|
29
|
+
# group.activities.each do |activity|
|
30
|
+
# # ...
|
31
|
+
# end
|
32
|
+
#
|
33
|
+
# If you know the id of an activity you can get a refernce to it:
|
34
|
+
#
|
35
|
+
# activity = auto_scaling.activities['activity-id']
|
36
|
+
#
|
37
|
+
class ActivityCollection
|
38
|
+
|
39
|
+
include Core::Collection::Limitable
|
40
|
+
|
41
|
+
# @private
|
42
|
+
def initialize options = {}
|
43
|
+
@group = options[:group]
|
44
|
+
if @group
|
45
|
+
super(@group, options)
|
46
|
+
else
|
47
|
+
super
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
# @param [String] activity_id
|
52
|
+
# @return [Activity]
|
53
|
+
def [] activity_id
|
54
|
+
Activity.new(activity_id, :config => config)
|
55
|
+
end
|
56
|
+
|
57
|
+
protected
|
58
|
+
|
59
|
+
def _each_item next_token, limit, options = {}, &block
|
60
|
+
|
61
|
+
options[:next_token] = next_token if next_token
|
62
|
+
options[:max_records] = limit if limit
|
63
|
+
options[:auto_scaling_group_name] = @group.name if @group
|
64
|
+
|
65
|
+
resp = client.describe_scaling_activities(options)
|
66
|
+
resp.activities.each do |details|
|
67
|
+
|
68
|
+
activity = Activity.new_from(
|
69
|
+
:describe_scaling_activities, details,
|
70
|
+
details.activity_id, :config => config)
|
71
|
+
|
72
|
+
yield(activity)
|
73
|
+
|
74
|
+
end
|
75
|
+
|
76
|
+
resp.next_token if resp.respond_to?(:next_token)
|
77
|
+
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
@@ -0,0 +1,50 @@
|
|
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 AutoScaling
|
16
|
+
|
17
|
+
# @private
|
18
|
+
class Client < Core::Client
|
19
|
+
|
20
|
+
AWS.register_autoloads(self, 'aws/auto_scaling/client') do
|
21
|
+
autoload :XML, 'xml'
|
22
|
+
end
|
23
|
+
|
24
|
+
include Core::ConfiguredClientMethods
|
25
|
+
|
26
|
+
API_VERSION = '2011-01-01'
|
27
|
+
|
28
|
+
REQUEST_CLASS = AutoScaling::Request
|
29
|
+
|
30
|
+
# @private
|
31
|
+
CACHEABLE_REQUESTS = Set[
|
32
|
+
:describe_adjustment_types,
|
33
|
+
:describe_auto_scaling_groups,
|
34
|
+
:describe_auto_scaling_instances,
|
35
|
+
:describe_auto_scaling_notification_types,
|
36
|
+
:describe_launch_configurations,
|
37
|
+
:describe_metric_collection_types,
|
38
|
+
:describe_notification_configurations,
|
39
|
+
:describe_policies,
|
40
|
+
:describe_scaling_activities,
|
41
|
+
:describe_scaling_process_types,
|
42
|
+
:describe_scheduled_actions,
|
43
|
+
:describe_tags,
|
44
|
+
]
|
45
|
+
|
46
|
+
configure_client
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,32 @@
|
|
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 AutoScaling
|
16
|
+
class Client < Core::Client
|
17
|
+
module XML
|
18
|
+
|
19
|
+
include Core::ConfiguredXmlGrammars
|
20
|
+
|
21
|
+
extend Core::IgnoreResultElement
|
22
|
+
|
23
|
+
BaseError = Core::XmlGrammar.customize do
|
24
|
+
element("Error") { ignore }
|
25
|
+
end
|
26
|
+
|
27
|
+
define_configured_grammars
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,18 @@
|
|
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
|
+
AWS::Core::Configuration.module_eval do
|
15
|
+
|
16
|
+
add_service 'AutoScaling', 'auto_scaling', 'autoscaling.us-east-1.amazonaws.com'
|
17
|
+
|
18
|
+
end
|