aws-sdk 1.3.5 → 1.3.6
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.
- data/lib/aws/api_config/EC2-2011-12-15.yml +2791 -0
- data/lib/aws/core.rb +4 -4
- data/lib/aws/core/client.rb +1 -0
- data/lib/aws/core/client_logging.rb +9 -2
- data/lib/aws/core/lazy_error_classes.rb +1 -1
- data/lib/aws/core/response.rb +5 -0
- data/lib/aws/core/service_interface.rb +3 -2
- data/lib/aws/core/uri_escape.rb +1 -2
- data/lib/aws/ec2.rb +80 -1
- data/lib/aws/ec2/client.rb +29 -10
- data/lib/aws/ec2/client/xml.rb +51 -1
- data/lib/aws/ec2/customer_gateway.rb +90 -0
- data/lib/aws/ec2/customer_gateway_collection.rb +73 -0
- data/lib/aws/ec2/dhcp_options.rb +106 -0
- data/lib/aws/ec2/dhcp_options_collection.rb +87 -0
- data/lib/aws/ec2/filtered_collection.rb +27 -2
- data/lib/aws/ec2/image.rb +7 -4
- data/lib/aws/ec2/instance.rb +54 -2
- data/lib/aws/ec2/instance_collection.rb +5 -3
- data/lib/aws/ec2/internet_gateway.rb +122 -0
- data/lib/aws/ec2/internet_gateway/attachment.rb +78 -0
- data/lib/aws/ec2/internet_gateway_collection.rb +54 -0
- data/lib/aws/ec2/network_acl.rb +254 -0
- data/lib/aws/ec2/network_acl/association.rb +56 -0
- data/lib/aws/ec2/network_acl/entry.rb +147 -0
- data/lib/aws/ec2/network_acl_collection.rb +65 -0
- data/lib/aws/ec2/network_interface.rb +174 -0
- data/lib/aws/ec2/network_interface/attachment.rb +100 -0
- data/lib/aws/ec2/network_interface_collection.rb +103 -0
- data/lib/aws/ec2/region.rb +11 -1
- data/lib/aws/ec2/resource.rb +6 -2
- data/lib/aws/ec2/route_table.rb +204 -0
- data/lib/aws/ec2/route_table/association.rb +119 -0
- data/lib/aws/ec2/route_table/route.rb +113 -0
- data/lib/aws/ec2/route_table_collection.rb +73 -0
- data/lib/aws/ec2/security_group.rb +15 -5
- data/lib/aws/ec2/security_group_collection.rb +15 -12
- data/lib/aws/ec2/subnet.rb +161 -0
- data/lib/aws/ec2/subnet_collection.rb +115 -0
- data/lib/aws/ec2/vpc.rb +166 -0
- data/lib/aws/ec2/vpc_collection.rb +71 -0
- data/lib/aws/ec2/vpn_connection.rb +99 -0
- data/lib/aws/ec2/vpn_connection/telemetry.rb +49 -0
- data/lib/aws/ec2/vpn_connection_collection.rb +96 -0
- data/lib/aws/ec2/vpn_gateway.rb +123 -0
- data/lib/aws/ec2/vpn_gateway/attachment.rb +45 -0
- data/lib/aws/ec2/vpn_gateway_collection.rb +77 -0
- data/lib/aws/iam/login_profile.rb +4 -0
- data/lib/aws/iam/user.rb +6 -0
- data/lib/aws/record/hash_model.rb +3 -3
- data/lib/aws/simple_workflow.rb +6 -3
- data/lib/aws/simple_workflow/activity_task_collection.rb +7 -2
- data/lib/aws/simple_workflow/decision_task_collection.rb +11 -5
- data/lib/aws/simple_workflow/option_formatters.rb +7 -0
- data/lib/net/http/connection_pool.rb +19 -5
- metadata +33 -5
- data/lib/aws/api_config/EC2-2011-02-28.yml +0 -2314
@@ -0,0 +1,73 @@
|
|
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 EC2
|
16
|
+
|
17
|
+
class RouteTableCollection < Collection
|
18
|
+
|
19
|
+
include TaggedCollection
|
20
|
+
include Core::Collection::Simple
|
21
|
+
|
22
|
+
# Creates a route table.
|
23
|
+
#
|
24
|
+
# @param [Hash] options
|
25
|
+
#
|
26
|
+
# @option options [VPC,String] :vpc The vpc or vpc id of where you want
|
27
|
+
# to create the route table. This option is required if this
|
28
|
+
# collection does not have a populated vpc ({#vpc} returns nil).
|
29
|
+
#
|
30
|
+
# @return [RouteTable]
|
31
|
+
#
|
32
|
+
def create options = {}
|
33
|
+
|
34
|
+
client_opts = {}
|
35
|
+
client_opts[:vpc_id] = vpc_id_option(options)
|
36
|
+
|
37
|
+
resp = client.create_route_table(client_opts)
|
38
|
+
|
39
|
+
RouteTable.new_from(:create_route_table, resp.route_table,
|
40
|
+
resp.route_table.route_table_id, :config => config)
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
# @param [String] route_table_id
|
45
|
+
# @return [RouteTable]
|
46
|
+
def [] route_table_id
|
47
|
+
RouteTable.new(route_table_id, :config => config)
|
48
|
+
end
|
49
|
+
|
50
|
+
# @return [RouteTable] Returns the main (default) route table.
|
51
|
+
# This route table is automatically assigned to new subnets
|
52
|
+
# and can not be deleted.
|
53
|
+
def main_route_table
|
54
|
+
@main = AWS.memoize { self.find {|rt| rt.main? } } if @main.nil?
|
55
|
+
@main
|
56
|
+
end
|
57
|
+
|
58
|
+
protected
|
59
|
+
def _each_item options = {}, &block
|
60
|
+
response = filtered_request(:describe_route_tables, options, &block)
|
61
|
+
response.route_table_set.each do |t|
|
62
|
+
|
63
|
+
route_table = RouteTable.new_from(:describe_route_tables, t,
|
64
|
+
t.route_table_id, :config => config)
|
65
|
+
|
66
|
+
yield(route_table)
|
67
|
+
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -38,15 +38,17 @@ module AWS
|
|
38
38
|
|
39
39
|
include TaggedItem
|
40
40
|
|
41
|
-
def initialize
|
42
|
-
@
|
41
|
+
def initialize security_group_id, options = {}
|
42
|
+
@security_group_id = security_group_id
|
43
43
|
super
|
44
44
|
end
|
45
45
|
|
46
|
-
# @return [String]
|
47
|
-
attr_reader :
|
46
|
+
# @return [String]
|
47
|
+
attr_reader :security_group_id
|
48
48
|
|
49
|
-
alias_method :group_id, :
|
49
|
+
alias_method :group_id, :security_group_id
|
50
|
+
|
51
|
+
alias_method :id, :security_group_id
|
50
52
|
|
51
53
|
attribute :name, :as => :group_name, :static => true
|
52
54
|
|
@@ -80,6 +82,14 @@ module AWS
|
|
80
82
|
vpc_id ? true : false
|
81
83
|
end
|
82
84
|
|
85
|
+
# @return [VPC,nil] Returns the VPC this security group belongs to,
|
86
|
+
# or nil if this is not a VPC security group.
|
87
|
+
def vpc
|
88
|
+
if vpc_id
|
89
|
+
VPC.new(vpc_id, :config => config)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
83
93
|
# @return [SecurityGroup::IngressIpPermissionCollection] Returns a
|
84
94
|
# collection of {IpPermission} objects that represents all of
|
85
95
|
# the (ingress) permissions this security group has
|
@@ -26,11 +26,13 @@ module AWS
|
|
26
26
|
# of this security group. Accepts alphanumeric characters, spaces,
|
27
27
|
# dashes, and underscores. If left blank the description will be set
|
28
28
|
# to the name.
|
29
|
-
#
|
30
|
-
#
|
31
|
-
#
|
32
|
-
#
|
29
|
+
#
|
30
|
+
# @option options [VPC,String] :vpc (nil) A VPC or VPC id string to
|
31
|
+
# create the security group in. When specified a VPC security
|
32
|
+
# group is created.
|
33
|
+
#
|
33
34
|
# @return [SecurityGroup]
|
35
|
+
#
|
34
36
|
def create name, options = {}
|
35
37
|
|
36
38
|
description = options[:description] || name
|
@@ -38,14 +40,20 @@ module AWS
|
|
38
40
|
create_opts = {}
|
39
41
|
create_opts[:group_name] = name
|
40
42
|
create_opts[:description] = description
|
41
|
-
|
43
|
+
|
44
|
+
vpc_id = options[:vpc]
|
45
|
+
vpc_id ||= options[:vpc_id] # for backwards compatability
|
46
|
+
vpc_id ||= filter_value_for('vpc-id')
|
47
|
+
vpc_id = vpc_id.id if vpc_id.is_a?(VPC)
|
48
|
+
|
49
|
+
create_opts[:vpc_id] = vpc_id if vpc_id
|
42
50
|
|
43
51
|
response = client.create_security_group(create_opts)
|
44
52
|
|
45
53
|
SecurityGroup.new(response.group_id, {
|
46
54
|
:name => name,
|
47
55
|
:description => description,
|
48
|
-
:vpc_id =>
|
56
|
+
:vpc_id => create_opts[:vpc_id],
|
49
57
|
:config => config })
|
50
58
|
|
51
59
|
end
|
@@ -53,7 +61,7 @@ module AWS
|
|
53
61
|
# @param [String] group_id The group id of a security group.
|
54
62
|
# @return [SecurityGroup] The group with the given id.
|
55
63
|
def [] group_id
|
56
|
-
|
64
|
+
SecurityGroup.new(group_id, :config => config)
|
57
65
|
end
|
58
66
|
|
59
67
|
# Specify one or more criteria to filter security groups by.
|
@@ -122,11 +130,6 @@ module AWS
|
|
122
130
|
nil
|
123
131
|
end
|
124
132
|
|
125
|
-
protected
|
126
|
-
def member_class
|
127
|
-
SecurityGroup
|
128
|
-
end
|
129
|
-
|
130
133
|
end
|
131
134
|
end
|
132
135
|
end
|
@@ -0,0 +1,161 @@
|
|
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 EC2
|
16
|
+
|
17
|
+
# @attr_reader [String] vpc_id
|
18
|
+
#
|
19
|
+
# @attr_reader [Symbol] state
|
20
|
+
#
|
21
|
+
# @attr_reader [String] cidr_block
|
22
|
+
#
|
23
|
+
# @attr_reader [Integer] available_ip_address_count
|
24
|
+
#
|
25
|
+
# @attr_reader [String] availability_zone_name
|
26
|
+
#
|
27
|
+
class Subnet < Resource
|
28
|
+
|
29
|
+
include TaggedItem
|
30
|
+
|
31
|
+
def initialize subnet_id, options = {}
|
32
|
+
@subnet_id = subnet_id
|
33
|
+
super
|
34
|
+
end
|
35
|
+
|
36
|
+
# @return [String]
|
37
|
+
attr_reader :subnet_id
|
38
|
+
|
39
|
+
alias_method :id, :subnet_id
|
40
|
+
|
41
|
+
attribute :vpc_id, :static => true
|
42
|
+
|
43
|
+
attribute :state, :to_sym => true
|
44
|
+
|
45
|
+
attribute :cidr_block, :static => true
|
46
|
+
|
47
|
+
attribute :available_ip_address_count, :integer => true, :static => true
|
48
|
+
|
49
|
+
attribute :availability_zone_name,
|
50
|
+
:as => :availability_zone, :static => true
|
51
|
+
|
52
|
+
populates_from(:create_subnet) do |resp|
|
53
|
+
resp.subnet if resp.subnet.subnet_id == subnet_id
|
54
|
+
end
|
55
|
+
|
56
|
+
populates_from(:describe_subnets) do |resp|
|
57
|
+
resp.subnet_set.find{|s| s.subnet_id == subnet_id }
|
58
|
+
end
|
59
|
+
|
60
|
+
# @return [VPC] Returns the VPC this subnet belongs to.
|
61
|
+
def vpc
|
62
|
+
VPC.new(vpc_id, :config => config)
|
63
|
+
end
|
64
|
+
|
65
|
+
# @return [NetworkACL] Returns the network ACL currently assigned
|
66
|
+
# to this subnet.
|
67
|
+
def network_acl
|
68
|
+
network_acl_association.network_acl
|
69
|
+
end
|
70
|
+
|
71
|
+
# Replaces the currently assigned network ACL with the passed one.
|
72
|
+
# @param [NetworkACL,String] network_acl A {NetworkACL} or network
|
73
|
+
# ACL id to assign to this subnet.
|
74
|
+
def network_acl= network_acl
|
75
|
+
network_acl_association.replace_network_acl(network_acl)
|
76
|
+
end
|
77
|
+
|
78
|
+
# @return [NetworkACL::Association] Returns the association between
|
79
|
+
# this subnet and its network ACL.
|
80
|
+
def network_acl_association
|
81
|
+
associations = AWS.memoize { vpc.network_acls.map(&:associations) }.flatten
|
82
|
+
associations.first{|a| a.subnet == self }
|
83
|
+
end
|
84
|
+
|
85
|
+
# @return [RouteTable] Returns the route table currently associated
|
86
|
+
# with this subnet.
|
87
|
+
def route_table
|
88
|
+
route_table_association.route_table
|
89
|
+
end
|
90
|
+
|
91
|
+
# Sets the route table for this subnet. If there is already a
|
92
|
+
# route table associated with this subnet, that association
|
93
|
+
# is replaced.
|
94
|
+
#
|
95
|
+
# @param [RouteTable,String] route_Table A {RouteTable} object or
|
96
|
+
# a route table id string.
|
97
|
+
#
|
98
|
+
# @return [RouteTable::Association]
|
99
|
+
#
|
100
|
+
def set_route_table route_table
|
101
|
+
|
102
|
+
unless route_table.is_a?(RouteTable)
|
103
|
+
route_table = RouteTable.new(route_table, :config => config)
|
104
|
+
end
|
105
|
+
|
106
|
+
client_opts = {}
|
107
|
+
client_opts[:route_table_id] = route_table.id
|
108
|
+
|
109
|
+
assoc = route_table_association
|
110
|
+
|
111
|
+
if assoc.main?
|
112
|
+
client_opts[:subnet_id] = subnet_id
|
113
|
+
response = client.associate_route_table(client_opts)
|
114
|
+
association_id = response.association_id
|
115
|
+
else
|
116
|
+
client_opts[:association_id] = assoc.association_id
|
117
|
+
resp = client.replace_route_table_association(client_opts)
|
118
|
+
association_id = resp.new_association_id
|
119
|
+
end
|
120
|
+
|
121
|
+
RouteTable::Association.new(route_table, association_id, subnet_id)
|
122
|
+
|
123
|
+
end
|
124
|
+
alias_method :route_table=, :set_route_table
|
125
|
+
|
126
|
+
# @return [RouteTable::Association] Returns the association between
|
127
|
+
# this subnet and its route table.
|
128
|
+
def route_table_association
|
129
|
+
assocs = AWS.memoize { vpc.route_tables.map(&:associations) }.flatten
|
130
|
+
assocs.find{|a| a.subnet == self } || assocs.find{|a| a.main? }
|
131
|
+
end
|
132
|
+
|
133
|
+
# See also {#availability_zone_name}.
|
134
|
+
# @return [AvailabilityZone]
|
135
|
+
def availability_zone
|
136
|
+
AvailabilityZone.new(availability_zone_name, :config => config)
|
137
|
+
end
|
138
|
+
|
139
|
+
# @return [InstanceCollection] Returns a filtered collection of
|
140
|
+
# instances launched in this subnet.
|
141
|
+
def instances
|
142
|
+
InstanceCollection.new(:config => config).filter('subnet-id', id)
|
143
|
+
end
|
144
|
+
|
145
|
+
# @return [NetworkInterfaceCollection] Returns a collection that
|
146
|
+
# represents all of the network interfaces for this subnet.
|
147
|
+
def network_interfaces
|
148
|
+
NetworkInterfaceCollection.new(:config => config).filter('subnet-id', id)
|
149
|
+
end
|
150
|
+
|
151
|
+
# Deletes the current subnet. The subnet must be empty before it can
|
152
|
+
# be deleted.
|
153
|
+
# @return [nil]
|
154
|
+
def delete
|
155
|
+
client.delete_subnet(:subnet_id => subnet_id)
|
156
|
+
nil
|
157
|
+
end
|
158
|
+
|
159
|
+
end
|
160
|
+
end
|
161
|
+
end
|
@@ -0,0 +1,115 @@
|
|
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 EC2
|
16
|
+
|
17
|
+
# Represents a collection of VPC subnets. You can get a subnet collection
|
18
|
+
# two ways. You can get a collection that represents ALL subnets (across
|
19
|
+
# all your VPCs). You can also get a subnet collection that represents
|
20
|
+
# subnets within a single vpc.
|
21
|
+
#
|
22
|
+
# # represents all subnets
|
23
|
+
# subnets = ec2.subnets
|
24
|
+
#
|
25
|
+
# # represents subnets within the named vpc
|
26
|
+
# subnets = ec2.vpcs['vpc-12345'].subnets
|
27
|
+
#
|
28
|
+
# == Creating a Subnet
|
29
|
+
#
|
30
|
+
# To create a subnet, call {#create} on a subnet collection, passing in
|
31
|
+
# a suitable CIDR block.
|
32
|
+
#
|
33
|
+
# subnet = subnets.create('10.0.0.0/20')
|
34
|
+
#
|
35
|
+
# You can optionally pass the availability zone you want the subnet
|
36
|
+
# created in.
|
37
|
+
#
|
38
|
+
# == Getting a Subnet
|
39
|
+
#
|
40
|
+
# If you know the subnet id, you can get a subnet using {#[]}.
|
41
|
+
#
|
42
|
+
# subnet = subnets['subnet-id-here']
|
43
|
+
#
|
44
|
+
# You can filter subnets as well. See the EC2 API documentation
|
45
|
+
# (http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeSubnets.html) for a complete list of accepted filters.
|
46
|
+
#
|
47
|
+
# subnet = subnets.filter('state', 'available').first
|
48
|
+
#
|
49
|
+
class SubnetCollection < Collection
|
50
|
+
|
51
|
+
include TaggedCollection
|
52
|
+
include Core::Collection::Simple
|
53
|
+
|
54
|
+
# Creates a Subnet. Subnets require a valid CIDR block and
|
55
|
+
# are created inside a VPC. If this collection does not
|
56
|
+
# have a
|
57
|
+
#
|
58
|
+
# @param [String] cidr_block The CIDR block you want the subnet to
|
59
|
+
# cover (e.g., 10.0.0.0/24).
|
60
|
+
#
|
61
|
+
# @param [Hash] options
|
62
|
+
#
|
63
|
+
# @option options [VPC,String] :vpc The VPC (or VPC id string) to
|
64
|
+
# create the subnet in.
|
65
|
+
#
|
66
|
+
# @option options [String,AvailabilityZone] :availability_zone
|
67
|
+
# The Availability Zone you want the subnet in.
|
68
|
+
# AWS selects a default zone for you (recommended).
|
69
|
+
#
|
70
|
+
# @return [Subnet]
|
71
|
+
#
|
72
|
+
def create cidr_block, options = {}
|
73
|
+
|
74
|
+
client_opts = {}
|
75
|
+
client_opts[:vpc_id] = vpc_id_option(options)
|
76
|
+
client_opts[:cidr_block] = cidr_block
|
77
|
+
client_opts[:availability_zone] = az_option(options) if
|
78
|
+
options[:availability_zone]
|
79
|
+
|
80
|
+
resp = client.create_subnet(client_opts)
|
81
|
+
|
82
|
+
Subnet.new_from(:create_subnet, resp.subnet,
|
83
|
+
resp.subnet.subnet_id, :config => config)
|
84
|
+
|
85
|
+
end
|
86
|
+
|
87
|
+
# @param [String] subnet_id
|
88
|
+
# @return [Subnet] Returns a subnet with the given id.
|
89
|
+
def [] subnet_id
|
90
|
+
Subnet.new(subnet_id, :config => config)
|
91
|
+
end
|
92
|
+
|
93
|
+
protected
|
94
|
+
def az_option options
|
95
|
+
options[:availability_zone].is_a?(AvailabilityZone) ?
|
96
|
+
options[:availability_zone].name :
|
97
|
+
options[:availability_zone]
|
98
|
+
end
|
99
|
+
|
100
|
+
protected
|
101
|
+
def _each_item options = {}, &block
|
102
|
+
response = filtered_request(:describe_subnets, options, &block)
|
103
|
+
response.subnet_set.each do |s|
|
104
|
+
|
105
|
+
subnet = Subnet.new_from(:describe_subnets,
|
106
|
+
s, s.subnet_id, :config => config)
|
107
|
+
|
108
|
+
yield(subnet)
|
109
|
+
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|