aws-sdk 1.1.3 → 1.1.4

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 (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