aws-sdk 1.1.3 → 1.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (233) hide show
  1. data/ca-bundle.crt +2 -348
  2. data/lib/aws.rb +24 -49
  3. data/lib/aws/{common.rb → core.rb} +120 -9
  4. data/lib/aws/{api_config.rb → core/api_config.rb} +19 -20
  5. data/lib/aws/core/api_config_transform.rb +36 -0
  6. data/lib/aws/core/async_handle.rb +91 -0
  7. data/lib/aws/core/authorize_v2.rb +39 -0
  8. data/lib/aws/{authorize_v3.rb → core/authorize_v3.rb} +16 -15
  9. data/lib/aws/{api_config_transform.rb → core/authorize_with_session_token.rb} +9 -12
  10. data/lib/aws/core/autoloader.rb +64 -0
  11. data/lib/aws/core/cacheable.rb +78 -0
  12. data/lib/aws/core/client.rb +471 -0
  13. data/lib/aws/core/client_logging.rb +125 -0
  14. data/lib/aws/core/collections.rb +229 -0
  15. data/lib/aws/core/configuration.rb +358 -0
  16. data/lib/aws/core/configured_client_methods.rb +76 -0
  17. data/lib/aws/core/configured_grammars.rb +63 -0
  18. data/lib/aws/{configured_option_grammars.rb → core/configured_option_grammars.rb} +18 -20
  19. data/lib/aws/{configured_xml_grammars.rb → core/configured_xml_grammars.rb} +19 -21
  20. data/lib/aws/core/default_signer.rb +67 -0
  21. data/lib/aws/core/http/curb_handler.rb +129 -0
  22. data/lib/aws/core/http/handler.rb +77 -0
  23. data/lib/aws/core/http/httparty_handler.rb +113 -0
  24. data/lib/aws/core/http/net_http_handler.rb +124 -0
  25. data/lib/aws/core/http/request.rb +207 -0
  26. data/lib/aws/core/http/response.rb +73 -0
  27. data/lib/aws/{ignore_result_element.rb → core/ignore_result_element.rb} +14 -18
  28. data/lib/aws/core/indifferent_hash.rb +88 -0
  29. data/lib/aws/core/inflection.rb +47 -0
  30. data/lib/aws/core/lazy_error_classes.rb +62 -0
  31. data/lib/aws/{uri_escape.rb → core/meta_utils.rb} +24 -23
  32. data/lib/aws/core/model.rb +57 -0
  33. data/lib/aws/{authorize_with_session_token.rb → core/naming.rb} +9 -8
  34. data/lib/aws/core/option_grammar.rb +562 -0
  35. data/lib/aws/core/policy.rb +914 -0
  36. data/lib/aws/core/resource.rb +380 -0
  37. data/lib/aws/core/resource_cache.rb +40 -0
  38. data/lib/aws/core/response.rb +125 -0
  39. data/lib/aws/core/response_cache.rb +50 -0
  40. data/lib/aws/core/service_interface.rb +60 -0
  41. data/lib/aws/core/uri_escape.rb +46 -0
  42. data/lib/aws/core/xml_grammar.rb +926 -0
  43. data/lib/aws/ec2.rb +47 -16
  44. data/lib/aws/ec2/attachment.rb +0 -2
  45. data/lib/aws/ec2/attachment_collection.rb +1 -6
  46. data/lib/aws/ec2/availability_zone.rb +0 -2
  47. data/lib/aws/ec2/availability_zone_collection.rb +0 -3
  48. data/lib/aws/ec2/client.rb +6 -9
  49. data/lib/aws/ec2/client/xml.rb +3 -6
  50. data/lib/aws/ec2/collection.rb +1 -4
  51. data/lib/aws/ec2/config.rb +18 -0
  52. data/lib/aws/ec2/elastic_ip.rb +0 -2
  53. data/lib/aws/ec2/elastic_ip_collection.rb +0 -4
  54. data/lib/aws/ec2/errors.rb +1 -4
  55. data/lib/aws/ec2/has_permissions.rb +0 -2
  56. data/lib/aws/ec2/image.rb +0 -5
  57. data/lib/aws/ec2/image_collection.rb +0 -6
  58. data/lib/aws/ec2/instance.rb +23 -9
  59. data/lib/aws/ec2/instance_collection.rb +85 -22
  60. data/lib/aws/ec2/key_pair.rb +0 -2
  61. data/lib/aws/ec2/key_pair_collection.rb +1 -4
  62. data/lib/aws/ec2/permission_collection.rb +2 -5
  63. data/lib/aws/ec2/region.rb +0 -2
  64. data/lib/aws/ec2/region_collection.rb +0 -4
  65. data/lib/aws/ec2/request.rb +4 -9
  66. data/lib/aws/ec2/reserved_instances.rb +0 -3
  67. data/lib/aws/ec2/reserved_instances_collection.rb +0 -4
  68. data/lib/aws/ec2/reserved_instances_offering.rb +0 -3
  69. data/lib/aws/ec2/reserved_instances_offering_collection.rb +0 -4
  70. data/lib/aws/ec2/resource.rb +3 -5
  71. data/lib/aws/ec2/resource_tag_collection.rb +1 -6
  72. data/lib/aws/ec2/security_group.rb +204 -72
  73. data/lib/aws/ec2/security_group/egress_ip_permission_collection.rb +53 -0
  74. data/lib/aws/ec2/security_group/ip_permission.rb +92 -10
  75. data/lib/aws/ec2/security_group/ip_permission_collection.rb +14 -15
  76. data/lib/aws/ec2/security_group_collection.rb +11 -8
  77. data/lib/aws/ec2/snapshot.rb +0 -4
  78. data/lib/aws/ec2/snapshot_collection.rb +0 -4
  79. data/lib/aws/ec2/tag.rb +0 -3
  80. data/lib/aws/ec2/tag_collection.rb +1 -8
  81. data/lib/aws/ec2/tagged_item.rb +1 -3
  82. data/lib/aws/ec2/volume.rb +0 -6
  83. data/lib/aws/ec2/volume_collection.rb +0 -4
  84. data/lib/aws/errors.rb +0 -3
  85. data/lib/aws/iam.rb +33 -12
  86. data/lib/aws/iam/access_key.rb +0 -3
  87. data/lib/aws/iam/access_key_collection.rb +0 -3
  88. data/lib/aws/iam/account_alias_collection.rb +0 -2
  89. data/lib/aws/iam/client.rb +6 -8
  90. data/lib/aws/iam/client/xml.rb +4 -8
  91. data/lib/aws/iam/collection.rb +2 -5
  92. data/lib/aws/iam/config.rb +18 -0
  93. data/lib/aws/iam/errors.rb +2 -4
  94. data/lib/aws/iam/group.rb +0 -5
  95. data/lib/aws/iam/group_collection.rb +0 -3
  96. data/lib/aws/iam/group_policy_collection.rb +0 -2
  97. data/lib/aws/iam/group_user_collection.rb +1 -4
  98. data/lib/aws/iam/login_profile.rb +0 -2
  99. data/lib/aws/iam/mfa_device.rb +1 -3
  100. data/lib/aws/iam/mfa_device_collection.rb +0 -3
  101. data/lib/aws/iam/policy.rb +2 -4
  102. data/lib/aws/iam/policy_collection.rb +0 -3
  103. data/lib/aws/iam/request.rb +3 -7
  104. data/lib/aws/iam/resource.rb +1 -4
  105. data/lib/aws/iam/server_certificate.rb +0 -2
  106. data/lib/aws/iam/server_certificate_collection.rb +0 -3
  107. data/lib/aws/iam/signing_certificate.rb +0 -2
  108. data/lib/aws/iam/signing_certificate_collection.rb +0 -3
  109. data/lib/aws/iam/user.rb +0 -7
  110. data/lib/aws/iam/user_collection.rb +0 -3
  111. data/lib/aws/iam/user_group_collection.rb +0 -3
  112. data/lib/aws/iam/user_policy.rb +0 -2
  113. data/lib/aws/iam/user_policy_collection.rb +0 -3
  114. data/lib/aws/rails.rb +5 -4
  115. data/lib/aws/record.rb +4 -1
  116. data/lib/aws/record/base.rb +3 -2
  117. data/lib/aws/record/errors.rb +1 -3
  118. data/lib/aws/s3.rb +31 -6
  119. data/lib/aws/s3/access_control_list.rb +0 -2
  120. data/lib/aws/s3/acl_object.rb +10 -12
  121. data/lib/aws/s3/bucket.rb +1 -9
  122. data/lib/aws/s3/bucket_collection.rb +2 -5
  123. data/lib/aws/s3/bucket_version_collection.rb +1 -5
  124. data/lib/aws/s3/client.rb +34 -37
  125. data/lib/aws/s3/client/xml.rb +11 -14
  126. data/lib/aws/{resource_cache.rb → s3/config.rb} +6 -20
  127. data/lib/aws/s3/errors.rb +6 -7
  128. data/lib/aws/s3/multipart_upload.rb +1 -4
  129. data/lib/aws/s3/multipart_upload_collection.rb +1 -6
  130. data/lib/aws/s3/object_collection.rb +1 -5
  131. data/lib/aws/s3/object_metadata.rb +1 -3
  132. data/lib/aws/s3/object_upload_collection.rb +1 -7
  133. data/lib/aws/s3/object_version.rb +1 -4
  134. data/lib/aws/s3/object_version_collection.rb +1 -4
  135. data/lib/aws/s3/policy.rb +3 -5
  136. data/lib/aws/s3/prefix_and_delimiter_collection.rb +0 -2
  137. data/lib/aws/s3/prefixed_collection.rb +0 -2
  138. data/lib/aws/s3/presigned_post.rb +1 -3
  139. data/lib/aws/s3/request.rb +2 -5
  140. data/lib/aws/s3/s3_object.rb +1 -8
  141. data/lib/aws/s3/tree.rb +8 -6
  142. data/lib/aws/s3/tree/branch_node.rb +0 -3
  143. data/lib/aws/s3/tree/child_collection.rb +1 -5
  144. data/lib/aws/s3/tree/leaf_node.rb +0 -5
  145. data/lib/aws/s3/tree/parent.rb +1 -4
  146. data/lib/aws/s3/uploaded_part.rb +1 -3
  147. data/lib/aws/s3/uploaded_part_collection.rb +1 -5
  148. data/lib/aws/simple_db.rb +21 -6
  149. data/lib/aws/simple_db/attribute.rb +1 -6
  150. data/lib/aws/simple_db/attribute_collection.rb +1 -7
  151. data/lib/aws/simple_db/client.rb +7 -9
  152. data/lib/aws/simple_db/client/options.rb +2 -4
  153. data/lib/aws/simple_db/client/xml.rb +5 -10
  154. data/lib/aws/{naming.rb → simple_db/config.rb} +3 -14
  155. data/lib/aws/simple_db/delete_attributes.rb +0 -2
  156. data/lib/aws/simple_db/domain.rb +1 -6
  157. data/lib/aws/simple_db/domain_collection.rb +1 -4
  158. data/lib/aws/simple_db/domain_metadata.rb +1 -3
  159. data/lib/aws/simple_db/errors.rb +1 -4
  160. data/lib/aws/simple_db/item.rb +1 -7
  161. data/lib/aws/simple_db/item_collection.rb +22 -23
  162. data/lib/aws/simple_db/put_attributes.rb +0 -2
  163. data/lib/aws/simple_db/request.rb +3 -7
  164. data/lib/aws/simple_email_service.rb +11 -6
  165. data/lib/aws/simple_email_service/client.rb +7 -9
  166. data/lib/aws/simple_email_service/client/options.rb +3 -6
  167. data/lib/aws/simple_email_service/client/xml.rb +4 -8
  168. data/lib/aws/simple_email_service/config.rb +19 -0
  169. data/lib/aws/simple_email_service/email_address_collection.rb +1 -3
  170. data/lib/aws/simple_email_service/errors.rb +1 -4
  171. data/lib/aws/simple_email_service/quotas.rb +1 -3
  172. data/lib/aws/simple_email_service/request.rb +3 -7
  173. data/lib/aws/sns.rb +15 -8
  174. data/lib/aws/sns/client.rb +7 -8
  175. data/lib/aws/sns/client/options.rb +3 -6
  176. data/lib/aws/sns/client/xml.rb +4 -8
  177. data/lib/aws/sns/config.rb +18 -0
  178. data/lib/aws/sns/errors.rb +1 -4
  179. data/lib/aws/sns/policy.rb +3 -5
  180. data/lib/aws/sns/request.rb +4 -9
  181. data/lib/aws/sns/subscription.rb +1 -5
  182. data/lib/aws/sns/subscription_collection.rb +1 -5
  183. data/lib/aws/sns/topic.rb +1 -6
  184. data/lib/aws/sns/topic_collection.rb +1 -4
  185. data/lib/aws/sns/topic_subscription_collection.rb +1 -4
  186. data/lib/aws/sqs.rb +14 -5
  187. data/lib/aws/sqs/client.rb +6 -9
  188. data/lib/aws/sqs/client/xml.rb +4 -7
  189. data/lib/aws/sqs/config.rb +18 -0
  190. data/lib/aws/sqs/errors.rb +1 -4
  191. data/lib/aws/sqs/policy.rb +3 -5
  192. data/lib/aws/sqs/queue.rb +2 -7
  193. data/lib/aws/sqs/queue_collection.rb +4 -5
  194. data/lib/aws/sqs/received_message.rb +1 -3
  195. data/lib/aws/sqs/received_sns_message.rb +2 -2
  196. data/lib/aws/sqs/request.rb +4 -7
  197. data/lib/aws/sts.rb +12 -6
  198. data/lib/aws/sts/client.rb +6 -8
  199. data/lib/aws/sts/client/xml.rb +4 -8
  200. data/lib/aws/sts/config.rb +18 -0
  201. data/lib/aws/sts/errors.rb +1 -4
  202. data/lib/aws/sts/federated_session.rb +0 -2
  203. data/lib/aws/sts/policy.rb +3 -5
  204. data/lib/aws/sts/request.rb +3 -7
  205. metadata +60 -50
  206. data/lib/aws/async_handle.rb +0 -90
  207. data/lib/aws/authorize_v2.rb +0 -37
  208. data/lib/aws/base_client.rb +0 -488
  209. data/lib/aws/cacheable.rb +0 -79
  210. data/lib/aws/client_logging.rb +0 -122
  211. data/lib/aws/collections.rb +0 -230
  212. data/lib/aws/configuration.rb +0 -357
  213. data/lib/aws/configured_client_methods.rb +0 -81
  214. data/lib/aws/configured_grammars.rb +0 -65
  215. data/lib/aws/default_signer.rb +0 -65
  216. data/lib/aws/http/curb_handler.rb +0 -127
  217. data/lib/aws/http/handler.rb +0 -77
  218. data/lib/aws/http/httparty_handler.rb +0 -103
  219. data/lib/aws/http/request.rb +0 -165
  220. data/lib/aws/http/request_param.rb +0 -64
  221. data/lib/aws/http/response.rb +0 -72
  222. data/lib/aws/indifferent_hash.rb +0 -86
  223. data/lib/aws/inflection.rb +0 -46
  224. data/lib/aws/lazy_error_classes.rb +0 -64
  225. data/lib/aws/meta_utils.rb +0 -43
  226. data/lib/aws/model.rb +0 -57
  227. data/lib/aws/option_grammar.rb +0 -565
  228. data/lib/aws/policy.rb +0 -914
  229. data/lib/aws/resource.rb +0 -381
  230. data/lib/aws/response.rb +0 -125
  231. data/lib/aws/response_cache.rb +0 -50
  232. data/lib/aws/service_interface.rb +0 -60
  233. data/lib/aws/xml_grammar.rb +0 -925
@@ -0,0 +1,53 @@
1
+ # Copyright 2011 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 SecurityGroup < Resource
17
+ class EgressIpPermissionCollection < IpPermissionCollection
18
+
19
+ def each
20
+ security_group.ip_permissions_list_egress.each do |p|
21
+
22
+ # egress permissions don't always have ports
23
+ if p.respond_to?(:from_port)
24
+ ports = [p.from_port, p.to_port]
25
+ else
26
+ ports = nil
27
+ end
28
+
29
+ ip_ranges = p.ip_ranges.collect{|ip| ip.cidr_ip }
30
+
31
+ groups = p.groups.collect do |group|
32
+ SecurityGroup.new(group.group_id,
33
+ :name => group.group_name,
34
+ :owner_id => group.user_id,
35
+ :vpc_id => group.vpc_id,
36
+ :config => config)
37
+ end
38
+
39
+ permission = IpPermission.new(security_group, p.ip_protocol, ports,
40
+ :ip_ranges => ip_ranges,
41
+ :groups => groups,
42
+ :egress => true,
43
+ :config => config)
44
+
45
+ yield(permission)
46
+
47
+ end
48
+ end
49
+
50
+ end
51
+ end
52
+ end
53
+ end
@@ -11,14 +11,12 @@
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 'aws/model'
15
-
16
14
  module AWS
17
15
  class EC2
18
16
  class SecurityGroup < Resource
19
17
  class IpPermission
20
18
 
21
- include Model
19
+ include Core::Model
22
20
 
23
21
  # @param protocol [:tcp, :udp, :icmp]
24
22
  # @param port [Range,Integer] An integer or a range of integers
@@ -28,13 +26,28 @@ module AWS
28
26
  # to grant permission to.
29
27
  # @option options [Array] :groups An array of SecurityGroup objects to
30
28
  # grant permission to.
29
+ # @option options [Boolean] :egress (false) When true this IpPermission
30
+ # is assumed to be an egree permission.
31
31
  def initialize security_group, protocol, ports, options = {}
32
+
32
33
  @security_group = security_group
33
- @protocol = protocol.to_s.downcase.to_sym
34
- @port_range = (Array(ports).first..Array(ports).last)
34
+
35
+ @protocol = protocol == '-1' ? :any : protocol.to_s.downcase.to_sym
36
+
35
37
  @ip_ranges = Array(options[:ip_ranges])
38
+
36
39
  @groups = Array(options[:groups])
40
+
41
+ @egress = options[:egress]
42
+
43
+ # not all egress permissions require port ranges, depends on the
44
+ # protocol
45
+ if ports
46
+ @port_range = Array(ports).first.to_i..Array(ports).last.to_i
47
+ end
48
+
37
49
  super
50
+
38
51
  end
39
52
 
40
53
  # @return [SecurityGroup] The security group this permission is
@@ -47,21 +60,90 @@ module AWS
47
60
  # @return [Range] The port range (e.g. 80..80, 4000..4010, etc)
48
61
  attr_reader :port_range
49
62
 
50
- # @return [Array] An array if string CIDR ip addresses.
63
+ # @return [Array] An array of string CIDR ip addresses.
51
64
  attr_reader :ip_ranges
52
65
 
53
66
  # @return [Array] An array of security groups that have been
54
67
  # granted access with this permission.
55
68
  attr_reader :groups
56
69
 
70
+ # @return [Boolean] Returns true if this is an egress permission.
71
+ def egress?
72
+ @egress ? true : false
73
+ end
74
+
75
+ # Authorizes this permission from its security group.
76
+ # @return [IpPermission] Returns self
57
77
  def authorize
58
- sources = groups + ip_ranges
59
- security_group.authorize_ingress(protocol, port_range, *sources)
78
+
79
+ method = egress? ?
80
+ :authorize_security_group_egress :
81
+ :authorize_security_group_ingress
82
+
83
+ client.send(method,
84
+ :group_id => security_group.id,
85
+ :ip_permissions => [format_permission])
86
+
87
+ self
88
+
60
89
  end
61
90
 
91
+ # Revokes this permission from its security group.
92
+ # @return [IpPermission] Returns self
62
93
  def revoke
63
- sources = groups + ip_ranges
64
- security_group.revoke_ingress(protocol, port_range, *sources)
94
+
95
+ method = egress? ?
96
+ :revoke_security_group_egress :
97
+ :revoke_security_group_ingress
98
+
99
+ client.send(method,
100
+ :group_id => security_group.id,
101
+ :ip_permissions => [format_permission])
102
+
103
+ self
104
+
105
+ end
106
+
107
+ # @return [Boolean] Returns true if the other IpPermission matches
108
+ # this one.
109
+ def == other
110
+ other.is_a?(IpPermission) and
111
+ other.security_group == security_group and
112
+ other.protocol == protocol and
113
+ other.port_range == port_range and
114
+ other.ip_ranges == ip_ranges and
115
+ other.groups == groups and
116
+ other.egress == egress?
117
+ end
118
+
119
+ alias_method :eql?, :==
120
+
121
+ # @private
122
+ protected
123
+ def format_permission
124
+
125
+ permission = {}
126
+
127
+ permission[:ip_protocol] = protocol == :any ? '-1' : protocol.to_s
128
+
129
+ if port_range
130
+ permission[:from_port] = port_range.first
131
+ permission[:to_port] = port_range.last
132
+ end
133
+
134
+ unless ip_ranges.empty?
135
+ permission[:ip_ranges] = ip_ranges.collect{|ip| { :cidr_ip => ip } }
136
+ end
137
+
138
+ unless groups.empty?
139
+ permission[:user_id_group_pairs] = groups.inject([]) do |list,group|
140
+ list << { :group_id => group.id, :user_id => group.owner_id }
141
+ list
142
+ end
143
+ end
144
+
145
+ permission
146
+
65
147
  end
66
148
 
67
149
  end
@@ -11,41 +11,40 @@
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 'aws/model'
15
-
16
14
  module AWS
17
15
  class EC2
18
16
  class SecurityGroup < Resource
19
17
 
20
18
  class IpPermissionCollection
21
19
 
22
- include Model
20
+ include Core::Model
23
21
  include Enumerable
24
22
 
25
23
  attr_reader :security_group
26
24
 
27
- def initialize(security_group, opts = {})
28
- super
25
+ def initialize security_group, options = {}
29
26
  @security_group = security_group
27
+ super
30
28
  end
31
29
 
32
30
  def each
33
31
  security_group.ip_permissions_list.each do |p|
34
32
 
33
+ ports = [p.from_port, p.to_port]
34
+
35
+ ip_ranges = p.ip_ranges.collect{|ip| ip.cidr_ip }
36
+
35
37
  groups = p.groups.collect do |group|
36
38
  SecurityGroup.new(group.group_id,
37
- :name => group.group_name,
38
- :owner_id => group.user_id,
39
- :config => config)
39
+ :name => group.group_name,
40
+ :owner_id => group.user_id,
41
+ :config => config)
40
42
  end
41
43
 
42
- ip_ranges = p.ip_ranges.collect{|ip| ip.cidr_ip }
43
-
44
- permission =
45
- IpPermission.new(self, p.ip_protocol, [p.from_port, p.to_port],
46
- :ip_ranges => ip_ranges,
47
- :groups => groups,
48
- :config => config)
44
+ permission = IpPermission.new(security_group, p.ip_protocol, ports,
45
+ :ip_ranges => ip_ranges,
46
+ :groups => groups,
47
+ :config => config)
49
48
 
50
49
  yield(permission)
51
50
 
@@ -11,11 +11,6 @@
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 'aws/model'
15
- require 'aws/ec2/collection'
16
- require 'aws/ec2/tagged_collection'
17
- require 'aws/ec2/security_group'
18
-
19
14
  module AWS
20
15
  class EC2
21
16
 
@@ -31,18 +26,26 @@ module AWS
31
26
  # of this security group. Accepts alphanumeric characters, spaces,
32
27
  # dashes, and underscores. If left blank the description will be set
33
28
  # to the name.
29
+ # @option options [String] :vpc_id (nil) The ID of a VPC to create
30
+ # a security group in. If this option is left blank then an
31
+ # EC2 security group is created. If this option is provided a VPC
32
+ # security group will be created.
34
33
  # @return [SecurityGroup]
35
34
  def create name, options = {}
36
35
 
37
36
  description = options[:description] || name
38
37
 
39
- response = client.create_security_group(
40
- :group_name => name,
41
- :description => description)
38
+ create_opts = {}
39
+ create_opts[:group_name] = name
40
+ create_opts[:description] = description
41
+ create_opts[:vpc_id] = options[:vpc_id] if options[:vpc_id]
42
+
43
+ response = client.create_security_group(create_opts)
42
44
 
43
45
  SecurityGroup.new(response.group_id, {
44
46
  :name => name,
45
47
  :description => description,
48
+ :vpc_id => options[:vpc_id],
46
49
  :config => config })
47
50
 
48
51
  end
@@ -11,10 +11,6 @@
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 'aws/ec2/resource'
15
- require 'aws/ec2/has_permissions'
16
- require 'aws/ec2/tagged_item'
17
-
18
14
  module AWS
19
15
  class EC2
20
16
 
@@ -11,10 +11,6 @@
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 'aws/ec2/collection'
15
- require 'aws/ec2/tagged_collection'
16
- require 'aws/ec2/snapshot'
17
-
18
14
  module AWS
19
15
  class EC2
20
16
 
@@ -11,9 +11,6 @@
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 'aws/model'
15
- require 'aws/cacheable'
16
-
17
14
  module AWS
18
15
  class EC2
19
16
 
@@ -11,13 +11,6 @@
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 'aws/model'
15
- require 'aws/inflection'
16
- require 'aws/ec2/collection'
17
- require 'aws/ec2/tag'
18
- require 'aws/ec2/tagged_item'
19
- require 'aws/ec2/resource'
20
-
21
14
  module AWS
22
15
  class EC2
23
16
 
@@ -87,7 +80,7 @@ module AWS
87
80
  response = filtered_request(:describe_tags)
88
81
  response.tag_set.each do |tag|
89
82
 
90
- resource_class_name = Inflection.class_name(tag.resource_type)
83
+ resource_class_name = Core::Inflection.class_name(tag.resource_type)
91
84
  if EC2.const_defined?(resource_class_name)
92
85
  resource_class = EC2.const_get(resource_class_name)
93
86
  resource = resource_class.new(tag.resource_id, :config => config)
@@ -11,8 +11,6 @@
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 'aws/ec2/resource_tag_collection'
15
-
16
14
  module AWS
17
15
  class EC2
18
16
  module TaggedItem
@@ -79,7 +77,7 @@ module AWS
79
77
 
80
78
  # @private
81
79
  def tagging_resource_type
82
- Inflection.ruby_name(self.class.to_s).tr("_","-")
80
+ Core::Inflection.ruby_name(self.class.to_s).tr("_","-")
83
81
  end
84
82
 
85
83
  end
@@ -11,12 +11,6 @@
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 'aws/ec2/resource'
15
- require 'aws/ec2/tagged_item'
16
- require 'aws/ec2/availability_zone'
17
- require 'aws/ec2/attachment'
18
- require 'aws/ec2/attachment_collection'
19
-
20
14
  module AWS
21
15
  class EC2
22
16
 
@@ -11,10 +11,6 @@
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 'aws/ec2/collection'
15
- require 'aws/ec2/tagged_collection'
16
- require 'aws/ec2/volume'
17
-
18
14
  module AWS
19
15
  class EC2
20
16
 
@@ -11,9 +11,6 @@
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 'thread'
15
- require 'aws/xml_grammar'
16
-
17
14
  module AWS
18
15
  module Errors
19
16
 
@@ -11,16 +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 'aws/common'
15
- require 'aws/inflection'
16
- require 'aws/service_interface'
17
- require 'aws/iam/client'
18
- require 'aws/iam/user_collection'
19
- require 'aws/iam/group_collection'
20
- require 'aws/iam/signing_certificate_collection'
21
- require 'aws/iam/server_certificate_collection'
22
- require 'aws/iam/account_alias_collection'
23
- require 'aws/iam/access_key_collection'
14
+ require 'aws/core'
15
+ require 'aws/iam/config'
24
16
 
25
17
  module AWS
26
18
 
@@ -142,7 +134,36 @@ module AWS
142
134
  #
143
135
  class IAM
144
136
 
145
- include ServiceInterface
137
+ AWS.register_autoloads(self) do
138
+ autoload :AccessKey, 'access_key'
139
+ autoload :AccessKeyCollection, 'access_key_collection'
140
+ autoload :AccountAliasCollection, 'account_alias_collection'
141
+ autoload :Client, 'client'
142
+ autoload :Collection, 'collection'
143
+ autoload :Errors, 'errors'
144
+ autoload :Group, 'group'
145
+ autoload :GroupCollection, 'group_collection'
146
+ autoload :GroupPolicyCollection, 'group_policy_collection'
147
+ autoload :GroupUserCollection, 'group_user_collection'
148
+ autoload :LoginProfile, 'login_profile'
149
+ autoload :MFADevice, 'mfa_device'
150
+ autoload :MFADeviceCollection, 'mfa_device_collection'
151
+ autoload :Policy, 'policy'
152
+ autoload :PolicyCollection, 'policy_collection'
153
+ autoload :Request, 'request'
154
+ autoload :Resource, 'resource'
155
+ autoload :ServerCertificate, 'server_certificate'
156
+ autoload :ServerCertificateCollection, 'server_certificate_collection'
157
+ autoload :SigningCertificate, 'signing_certificate'
158
+ autoload :SigningCertificateCollection, 'signing_certificate_collection'
159
+ autoload :User, 'user'
160
+ autoload :UserCollection, 'user_collection'
161
+ autoload :UserGroupCollection, 'user_group_collection'
162
+ autoload :UserPolicy, 'user_policy'
163
+ autoload :UserPolicyCollection, 'user_policy_collection'
164
+ end
165
+
166
+ include Core::ServiceInterface
146
167
 
147
168
  # Returns a collection that represents all AWS users for this account:
148
169
  #
@@ -297,7 +318,7 @@ module AWS
297
318
  # @return [Hash]
298
319
  def account_summary
299
320
  client.get_account_summary.summary_map.inject({}) do |h, (k,v)|
300
- h[Inflection.ruby_name(k).to_sym] = v
321
+ h[Core::Inflection.ruby_name(k).to_sym] = v
301
322
  h
302
323
  end
303
324
  end