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.
Files changed (57) hide show
  1. data/lib/aws/api_config/EC2-2011-12-15.yml +2791 -0
  2. data/lib/aws/core.rb +4 -4
  3. data/lib/aws/core/client.rb +1 -0
  4. data/lib/aws/core/client_logging.rb +9 -2
  5. data/lib/aws/core/lazy_error_classes.rb +1 -1
  6. data/lib/aws/core/response.rb +5 -0
  7. data/lib/aws/core/service_interface.rb +3 -2
  8. data/lib/aws/core/uri_escape.rb +1 -2
  9. data/lib/aws/ec2.rb +80 -1
  10. data/lib/aws/ec2/client.rb +29 -10
  11. data/lib/aws/ec2/client/xml.rb +51 -1
  12. data/lib/aws/ec2/customer_gateway.rb +90 -0
  13. data/lib/aws/ec2/customer_gateway_collection.rb +73 -0
  14. data/lib/aws/ec2/dhcp_options.rb +106 -0
  15. data/lib/aws/ec2/dhcp_options_collection.rb +87 -0
  16. data/lib/aws/ec2/filtered_collection.rb +27 -2
  17. data/lib/aws/ec2/image.rb +7 -4
  18. data/lib/aws/ec2/instance.rb +54 -2
  19. data/lib/aws/ec2/instance_collection.rb +5 -3
  20. data/lib/aws/ec2/internet_gateway.rb +122 -0
  21. data/lib/aws/ec2/internet_gateway/attachment.rb +78 -0
  22. data/lib/aws/ec2/internet_gateway_collection.rb +54 -0
  23. data/lib/aws/ec2/network_acl.rb +254 -0
  24. data/lib/aws/ec2/network_acl/association.rb +56 -0
  25. data/lib/aws/ec2/network_acl/entry.rb +147 -0
  26. data/lib/aws/ec2/network_acl_collection.rb +65 -0
  27. data/lib/aws/ec2/network_interface.rb +174 -0
  28. data/lib/aws/ec2/network_interface/attachment.rb +100 -0
  29. data/lib/aws/ec2/network_interface_collection.rb +103 -0
  30. data/lib/aws/ec2/region.rb +11 -1
  31. data/lib/aws/ec2/resource.rb +6 -2
  32. data/lib/aws/ec2/route_table.rb +204 -0
  33. data/lib/aws/ec2/route_table/association.rb +119 -0
  34. data/lib/aws/ec2/route_table/route.rb +113 -0
  35. data/lib/aws/ec2/route_table_collection.rb +73 -0
  36. data/lib/aws/ec2/security_group.rb +15 -5
  37. data/lib/aws/ec2/security_group_collection.rb +15 -12
  38. data/lib/aws/ec2/subnet.rb +161 -0
  39. data/lib/aws/ec2/subnet_collection.rb +115 -0
  40. data/lib/aws/ec2/vpc.rb +166 -0
  41. data/lib/aws/ec2/vpc_collection.rb +71 -0
  42. data/lib/aws/ec2/vpn_connection.rb +99 -0
  43. data/lib/aws/ec2/vpn_connection/telemetry.rb +49 -0
  44. data/lib/aws/ec2/vpn_connection_collection.rb +96 -0
  45. data/lib/aws/ec2/vpn_gateway.rb +123 -0
  46. data/lib/aws/ec2/vpn_gateway/attachment.rb +45 -0
  47. data/lib/aws/ec2/vpn_gateway_collection.rb +77 -0
  48. data/lib/aws/iam/login_profile.rb +4 -0
  49. data/lib/aws/iam/user.rb +6 -0
  50. data/lib/aws/record/hash_model.rb +3 -3
  51. data/lib/aws/simple_workflow.rb +6 -3
  52. data/lib/aws/simple_workflow/activity_task_collection.rb +7 -2
  53. data/lib/aws/simple_workflow/decision_task_collection.rb +11 -5
  54. data/lib/aws/simple_workflow/option_formatters.rb +7 -0
  55. data/lib/net/http/connection_pool.rb +19 -5
  56. metadata +33 -5
  57. data/lib/aws/api_config/EC2-2011-02-28.yml +0 -2314
@@ -0,0 +1,65 @@
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 NetworkACLCollection < Collection
18
+
19
+ include TaggedCollection
20
+ include Core::Collection::Simple
21
+
22
+ # Creates a network ACL.
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 subnet. This option is required if this collection
28
+ # does not have a populated vpc ({#vpc} returns nil).
29
+ #
30
+ # @return [NetworkACL]
31
+ #
32
+ def create options = {}
33
+
34
+ client_opts = {}
35
+ client_opts[:vpc_id] = vpc_id_option(options)
36
+
37
+ resp = client.create_network_acl(client_opts)
38
+
39
+ NetworkACL.new_from(:create_network_acl, resp.network_acl,
40
+ resp.network_acl.network_acl_id, :config => config)
41
+
42
+ end
43
+
44
+ # @param [String] network_acl_id
45
+ # @return [NetworkACL]
46
+ def [] network_acl_id
47
+ NetworkACL.new(network_acl_id, :config => config)
48
+ end
49
+
50
+ protected
51
+ def _each_item options = {}, &block
52
+ response = filtered_request(:describe_network_acls, options, &block)
53
+ response.network_acl_set.each do |a|
54
+
55
+ network_acl = NetworkACL.new_from(:describe_network_acls, a,
56
+ a.network_acl_id, :config => config)
57
+
58
+ yield(network_acl)
59
+
60
+ end
61
+ end
62
+
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,174 @@
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/ec2/network_interface/attachment'
15
+
16
+ module AWS
17
+ class EC2
18
+
19
+ # Represents a network interface in EC2.
20
+ class NetworkInterface < Resource
21
+
22
+ include TaggedItem
23
+
24
+ def initialize network_interface_id, options = {}
25
+ @network_interface_id = network_interface_id
26
+ super
27
+ end
28
+
29
+ # @return [String]
30
+ attr_reader :network_interface_id
31
+
32
+ alias_method :id, :network_interface_id
33
+
34
+ attribute :vpc_id, :static => true
35
+
36
+ attribute :subnet_id, :static => true
37
+
38
+ mutable_attribute :description
39
+
40
+ attribute :owner_id, :static => true
41
+
42
+ attribute :status, :to_sym => true
43
+
44
+ attribute :private_ip_address, :static => true
45
+
46
+ attribute :private_dns_name, :static => true
47
+
48
+ mutable_attribute :source_dest_check?,
49
+ :set_as => :source_dest_check
50
+
51
+ alias_method :source_dest_check, :source_dest_check?
52
+
53
+ attribute :attachment_details, :as => :attachment
54
+
55
+ protected :attachment_details
56
+
57
+ mutable_attribute :groups
58
+
59
+ protected :groups
60
+
61
+ populates_from(:create_network_interface) do |resp|
62
+ resp.network_interface if resp.network_interface.network_interface_id == id
63
+ end
64
+
65
+ populates_from(:describe_network_interfaces) do |resp|
66
+ resp.network_interface_set.find{|i| i.network_interface_id == id }
67
+ end
68
+
69
+ # @return [VPC] Returns the VPC this network interface belongs to.
70
+ def vpc
71
+ VPC.new(vpc_id, :config => config)
72
+ end
73
+
74
+ # @return [Subnet] Returns the Subnet this network interface
75
+ # belongs to.
76
+ def subnet
77
+ Subnet.new(subnet_id, :vpc_id => vpc_id, :config => config)
78
+ end
79
+
80
+ # @return [Array<SecurityGroup>]
81
+ def security_groups
82
+ groups.collect do |g|
83
+ SecurityGroup.new(g.group_id, :name => g.group_name, :config => config)
84
+ end
85
+ end
86
+
87
+ # @param [Array<SecurityGroup>,Array<String>] groups A list of
88
+ # security groups objects or security group ids. This replaces
89
+ # the security group set on this network interface.
90
+ #
91
+ # @return [nil]
92
+ #
93
+ def set_security_groups *groups
94
+ self.groups = [groups].flatten.collect do |g|
95
+ g.is_a?(SecurityGroup) ? g.security_group_id : g
96
+ end
97
+ nil
98
+ end
99
+ alias_method :security_groups=, :set_security_groups
100
+
101
+ # @return [Instance,nil] Returns the instance this network interface
102
+ # is attached to. If it has not been attached, then nil is
103
+ # returned.
104
+ def instance
105
+ if attachment = self.attachment
106
+ attachment.instance
107
+ end
108
+ end
109
+
110
+ def attachment
111
+ if details = attachment_details
112
+ Attachment.new(self, details)
113
+ end
114
+ end
115
+
116
+ # @param [Instance,String] instance The instance to attach this network
117
+ # interface to, may be an {Instance} object or an instance id string.
118
+ #
119
+ # @param [Hash] options
120
+ #
121
+ # @option options [Integer] :device_index (1) The index of the device
122
+ # for the network interface attachment on the instance. Defaults to 1.
123
+ #
124
+ # @return [nil]
125
+ #
126
+ def attach instance, options = {}
127
+
128
+ instance_id = instance.is_a?(Instance) ? instance.instance_id : instance
129
+
130
+ client_opts = {}
131
+ client_opts[:network_interface_id] = network_interface_id
132
+ client_opts[:instance_id] = instance_id
133
+ client_opts[:device_index] = options[:device_index] || 1
134
+
135
+ client.attach_network_interface(client_opts)
136
+
137
+ nil
138
+
139
+ end
140
+
141
+ # Detaches this network interface.
142
+ # @param [Hash] options
143
+ # @option (see NetworkInterface::Attachment#detach)
144
+ # @return (see NetworkInterface::Attachment#detach)
145
+ def detach options = {}
146
+ if attachment = self.attachment
147
+ attachment.detach(options)
148
+ else
149
+ raise 'unable to detach network interface, no attachment present'
150
+ end
151
+ end
152
+
153
+ # Deletes this network interface.
154
+ # @return [nil]
155
+ def delete
156
+ client_opts = {}
157
+ client_opts[:network_interface_id] = network_interface_id
158
+ client.delete_network_interface(client_opts)
159
+ nil
160
+ end
161
+
162
+ # @return [Boolean] Returns true if this network interface exists.
163
+ def exists?
164
+ begin
165
+ get_resource
166
+ true
167
+ rescue Errors::InvalidNetworkInterfaceID::NotFound
168
+ false
169
+ end
170
+ end
171
+
172
+ end
173
+ end
174
+ end
@@ -0,0 +1,100 @@
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/ec2/network_interface/attachment'
15
+
16
+ module AWS
17
+ class EC2
18
+ class NetworkInterface < Resource
19
+ class Attachment
20
+
21
+ def initialize network_interface, details
22
+ @network_interface = network_interface
23
+ @attachment_id = details.attachment_id
24
+ @instance = Instance.new(details.instance_id,
25
+ :owner_id => details.instance_owner_id,
26
+ :config => network_interface.config)
27
+ @instance_owner_id = details.instance_owner_id
28
+ @device_index = details.device_index
29
+ @status = details.status.to_sym
30
+ @attach_time = details.attach_time
31
+ @delete_on_termination = details.delete_on_termination?
32
+ end
33
+
34
+ # @return [String] Returns the attachment id.
35
+ attr_reader :attachment_id
36
+
37
+ alias_method :id, :attachment_id
38
+
39
+ # @return [NetworkInterface] Returns the network interface this
40
+ # is an attachment for.
41
+ attr_reader :network_interface
42
+
43
+ # @return [Instance] Returns the instance the network interface
44
+ # is attached to.
45
+ attr_reader :instance
46
+
47
+ # @return [String] Returns the instance owner id.
48
+ attr_reader :instance_owner_id
49
+
50
+ # @return [Integer] The index of the device for the network
51
+ # interface attachment on the instance.
52
+ attr_reader :device_index
53
+
54
+ # @return [Symbol] Returns the attachment status.
55
+ attr_reader :status
56
+
57
+ # @return [Time]
58
+ attr_reader :attach_time
59
+
60
+ # @return [Boolean]
61
+ attr_reader :delete_on_termination
62
+
63
+ alias_method :delete_on_termination?, :delete_on_termination
64
+
65
+ # Allows you to toggle the delete on termination state.
66
+ #
67
+ # network_interface.attachment.delete_on_termination = false
68
+ #
69
+ # @param [Boolean] state
70
+ #
71
+ def delete_on_termination= state
72
+ opts = {}
73
+ opts[:network_interface_id] = network_interface.id
74
+ opts[:attachment] = {}
75
+ opts[:attachment][:attachment_id] = id
76
+ opts[:attachment][:delete_on_termination] = state
77
+ network_interface.client.modify_network_interface_attribute(opts)
78
+ end
79
+
80
+ # Detaches the network interface from the instance.
81
+ #
82
+ # @param [Hash] options
83
+ #
84
+ # @option options [Boolean] :force (false) Set true to force
85
+ # a detachment.
86
+ #
87
+ # @return [nil]
88
+ #
89
+ def detach options = {}
90
+ client_opts = {}
91
+ client_opts[:attachment_id] = attachment_id
92
+ client_opts[:force] = options[:force] == true
93
+ network_interface.client.detach_network_interface(client_opts)
94
+ end
95
+ alias_method :delete, :detach
96
+
97
+ end
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,103 @@
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
+ class NetworkInterfaceCollection < Collection
17
+
18
+ include TaggedCollection
19
+ include Core::Collection::Simple
20
+
21
+ # Creates a network interface.
22
+ #
23
+ # @param [Hash] options
24
+ #
25
+ # @option options [Subnet,String] :subnet The subnet or subnet id
26
+ # to associate with the network interface.
27
+ #
28
+ # @option options [String] :private_ip_address The private IP address
29
+ # of the network interface.
30
+ #
31
+ # @option options [String] :description The description of the
32
+ # network interface.
33
+ #
34
+ # @option options [Array<SecurityGroup>,Array<String>] :security_groups
35
+ # A list of security groups (or security group id strings) that
36
+ # should be used by this network interface.
37
+ #
38
+ # @return [NetworkInterface]
39
+ #
40
+ def create options = {}
41
+
42
+ client_opts = {}
43
+
44
+ client_opts[:subnet_id] = subnet_id_option(options)
45
+
46
+ client_opts[:private_ip_address] = options[:private_ip_address] if
47
+ options.key?(:private_ip_address)
48
+
49
+ client_opts[:description] = options[:description] if
50
+ options.key?(:description)
51
+
52
+ groups = groups_options(options)
53
+ client_opts[:groups] = groups if groups
54
+
55
+ resp = client.create_network_interface(client_opts)
56
+
57
+ NetworkInterface.new_from(:create_network_interface,
58
+ resp.network_interface,
59
+ resp.network_interface.network_interface_id,
60
+ :config => config)
61
+
62
+ end
63
+
64
+ # @param [String] network_interface_id
65
+ # @return [NetworkInterface]
66
+ def [] network_interface_id
67
+ NetworkInterface.new(network_interface_id, :config => config)
68
+ end
69
+
70
+ protected
71
+ def groups_options options
72
+
73
+ # accept this option a variety of different ways
74
+ groups = options[:security_groups]
75
+ groups ||= options[:security_group_ids]
76
+ groups ||= options[:security_group]
77
+ groups ||= options[:security_group_id]
78
+
79
+ if groups
80
+ [groups].flatten.map{|sg| sg.is_a?(SecurityGroup) ? sg.id : sg }
81
+ else
82
+ nil
83
+ end
84
+
85
+ end
86
+
87
+ protected
88
+ def _each_item options = {}, &block
89
+ resp = filtered_request(:describe_network_interfaces, options, &block)
90
+ resp.network_interface_set.each do |n|
91
+
92
+ network_interface = NetworkInterface.new_from(
93
+ :describe_network_interfaces, n,
94
+ n.network_interface_id, :config => config)
95
+
96
+ yield(network_interface)
97
+
98
+ end
99
+ end
100
+
101
+ end
102
+ end
103
+ end
@@ -66,7 +66,17 @@ module AWS
66
66
  :volumes,
67
67
  :snapshots,
68
68
  :reserved_instances,
69
- :reserved_instances_offerings
69
+ :reserved_instances_offerings,
70
+ :vpcs,
71
+ :subnets,
72
+ :network_acls,
73
+ :route_tables,
74
+ :network_interfaces,
75
+ :internet_gateways,
76
+ :customer_gateways,
77
+ :vpn_gateways,
78
+ :dhcp_options,
79
+ :vpn_connections,
70
80
  ]
71
81
 
72
82
  PROXIED_METHODS.each do |method|