amazon-ec2 0.2.5 → 0.2.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.
@@ -9,13 +9,13 @@
9
9
  #++
10
10
 
11
11
  module EC2
12
-
12
+
13
13
  class Base
14
-
15
-
14
+
15
+
16
16
  #Amazon Developer Guide Docs:
17
17
  #
18
- # The CreateKeyPair operation creates a new 2048 bit RSA keypair and returns a unique ID that can be
18
+ # The CreateKeyPair operation creates a new 2048 bit RSA keypair and returns a unique ID that can be
19
19
  # used to reference this keypair when launching new instances.
20
20
  #
21
21
  #Required Arguments:
@@ -27,23 +27,23 @@ module EC2
27
27
  # none
28
28
  #
29
29
  def create_keypair( options = {} )
30
-
30
+
31
31
  # defaults
32
32
  options = { :key_name => "" }.merge(options)
33
-
33
+
34
34
  raise ArgumentError, "No :key_name provided" if options[:key_name].nil? || options[:key_name].empty?
35
-
35
+
36
36
  params = { "KeyName" => options[:key_name] }
37
-
37
+
38
38
  return response_generator(:action => "CreateKeyPair", :params => params)
39
-
39
+
40
40
  end
41
-
42
-
41
+
42
+
43
43
  #Amazon Developer Guide Docs:
44
44
  #
45
- # The DescribeKeyPairs operation returns information about keypairs available for use by the user
46
- # making the request. Selected keypairs may be specified or the list may be left empty if information for
45
+ # The DescribeKeyPairs operation returns information about keypairs available for use by the user
46
+ # making the request. Selected keypairs may be specified or the list may be left empty if information for
47
47
  # all registered keypairs is required.
48
48
  #
49
49
  #Required Arguments:
@@ -55,16 +55,16 @@ module EC2
55
55
  # none
56
56
  #
57
57
  def describe_keypairs( options = {} )
58
-
58
+
59
59
  options = { :key_name => [] }.merge(options)
60
-
60
+
61
61
  params = pathlist("KeyName", options[:key_name] )
62
-
62
+
63
63
  return response_generator(:action => "DescribeKeyPairs", :params => params)
64
-
64
+
65
65
  end
66
-
67
-
66
+
67
+
68
68
  #Amazon Developer Guide Docs:
69
69
  #
70
70
  # The DeleteKeyPair operation deletes a keypair.
@@ -78,17 +78,17 @@ module EC2
78
78
  # none
79
79
  #
80
80
  def delete_keypair( options = {} )
81
-
81
+
82
82
  options = { :key_name => "" }.merge(options)
83
-
83
+
84
84
  raise ArgumentError, "No :key_name provided" if options[:key_name].nil? || options[:key_name].empty?
85
-
85
+
86
86
  params = { "KeyName" => options[:key_name] }
87
-
87
+
88
88
  return response_generator(:action => "DeleteKeyPair", :params => params)
89
-
89
+
90
90
  end
91
-
91
+
92
92
  end
93
-
93
+
94
94
  end
@@ -9,12 +9,12 @@
9
9
  #++
10
10
 
11
11
  module EC2
12
-
12
+
13
13
  class Base
14
-
14
+
15
15
  #Amazon Developer Guide Docs:
16
- #
17
- # The ConfirmProductInstance operation returns true if the given product code is attached to the instance
16
+ #
17
+ # The ConfirmProductInstance operation returns true if the given product code is attached to the instance
18
18
  # with the given instance id. False is returned if the product code is not attached to the instance.
19
19
  #
20
20
  #Required Arguments:
@@ -27,17 +27,17 @@ module EC2
27
27
  # none
28
28
  #
29
29
  def confirm_product_instance( options ={} )
30
-
30
+
31
31
  options = {:product_code => "", :instance_id => ""}.merge(options)
32
-
32
+
33
33
  raise ArgumentError, "No product code provided" if options[:product_code].nil? || options[:product_code].empty?
34
34
  raise ArgumentError, "No instance ID provided" if options[:instance_id].nil? || options[:instance_id].empty?
35
-
35
+
36
36
  params = { "ProductCode" => options[:product_code], "InstanceId" => options[:instance_id] }
37
-
37
+
38
38
  return response_generator(:action => "ConfirmProductInstance", :params => params)
39
-
39
+
40
40
  end
41
41
  end
42
-
42
+
43
43
  end
@@ -9,12 +9,12 @@
9
9
  #++
10
10
 
11
11
  module EC2
12
-
13
- # The make_request() and ec2_error? methods, which are shared by all, will raise any
12
+
13
+ # The make_request() and ec2_error? methods, which are shared by all, will raise any
14
14
  # exceptions encountered along the way as it converses with EC2.
15
15
  #
16
16
  # Exception Handling: If for some reason an error occurrs when executing a method
17
- # (e.g. its arguments were incorrect, or it simply failed) then an exception will
17
+ # (e.g. its arguments were incorrect, or it simply failed) then an exception will
18
18
  # be thrown. The exceptions are defined in exceptions.rb as individual classes and should
19
19
  # match the exceptions that Amazon has defined for EC2. If the exception raised cannot be
20
20
  # identified then a more generic exception class will be thrown.
@@ -22,52 +22,52 @@ module EC2
22
22
  # The implication of this is that you need to be prepared to handle any exceptions that
23
23
  # may be raised by this library in YOUR code with a 'rescue' clauses. It is up to you
24
24
  # how gracefully you want to handle these exceptions that are raised.
25
-
25
+
26
26
  # Credits :
27
- # I learned the magic of making an OpenStruct object able to respond as a fully Enumerable
28
- # object (responds to .each, etc.) thanks to a great blog article on Struct and OpenStruct
27
+ # I learned the magic of making an OpenStruct object able to respond as a fully Enumerable
28
+ # object (responds to .each, etc.) thanks to a great blog article on Struct and OpenStruct
29
29
  # at http://errtheblog.com/post/30
30
30
  #
31
31
  # Thanks to Sean Knapp for the XmlSimple response patch which greatly simplified the response
32
32
  # mechanism for the whole library while making it more accurate and much less brittle to boot!
33
33
  #
34
-
34
+
35
35
  require 'rubygems'
36
36
  begin
37
37
  require 'xmlsimple' unless defined? XmlSimple
38
38
  rescue Exception => e
39
39
  require 'xml-simple' unless defined? XmlSimple
40
40
  end
41
-
42
-
41
+
42
+
43
43
  class Response < OpenStruct
44
-
44
+
45
45
  include Enumerable
46
-
47
-
46
+
47
+
48
48
  def self.parse(options = {})
49
49
  options = {
50
50
  :xml => "",
51
51
  :parse_options => { 'ForceArray' => ['item'], 'SuppressEmpty' => nil }
52
52
  }.merge(options)
53
53
  response = Response.new(XmlSimple.xml_in(options[:xml], options[:parse_options]))
54
-
54
+
55
55
  # set the xml attribute of the response object to contain the original XML that was
56
56
  # returned by amazon. This allows anyone to bypass our parsing if desired and just
57
57
  # get right at the raw XML response.
58
58
  response.xml = options[:xml]
59
59
  return response
60
60
  end
61
-
62
-
61
+
62
+
63
63
  # Every member of an OpenStruct object has getters and setters, the latter of which
64
64
  # has a method ending in "=". Find all of these methods, excluding those defined on
65
65
  # parent classes.
66
66
  def members
67
- methods(false).sort.grep(/=/).map { |m| m[0...-1] }
67
+ methods(false).sort.grep(/=/).map { |m| m[0...-1] }
68
68
  end
69
-
70
-
69
+
70
+
71
71
  # Required by the Enumerable module. Iterate over each item in the members array
72
72
  # and pass as a value the block passed to each using yield.
73
73
  def each
@@ -76,32 +76,32 @@ module EC2
76
76
  end
77
77
  self
78
78
  end
79
-
80
-
79
+
80
+
81
81
  # Same as the each method, but with both key and value.
82
82
  #
83
83
  #Sample Use:
84
84
  # obj.each_pair { |k,v| puts "key: #{k}, value: #{v}" }
85
- def each_pair
85
+ def each_pair
86
86
  members.each do |method|
87
87
  yield method, send(method)
88
88
  end
89
89
  self
90
90
  end
91
-
92
-
91
+
92
+
93
93
  # Alternative method for getting members.
94
94
  def [](member)
95
95
  send(member)
96
96
  end
97
-
98
-
97
+
98
+
99
99
  # Alternative method for setting members.
100
100
  def []=(member, value)
101
101
  send("#{member}=", value)
102
102
  end
103
-
104
-
103
+
104
+
105
105
  # Helper for converting to string which support a long and short version
106
106
  # to avoid recursion problems with parents.
107
107
  def to_string(short=false)
@@ -123,26 +123,26 @@ module EC2
123
123
  s += ">"
124
124
  return s
125
125
  end
126
-
127
-
126
+
127
+
128
128
  # Override of to string method.
129
129
  def to_s
130
130
  return to_string
131
131
  end
132
-
133
-
134
- private
135
-
132
+
133
+
134
+ private
135
+
136
136
  # Initialize the object by passing data to the OpenStruct initialize method
137
- # and then converting ourself to guarantee we have top-to-bottom data
137
+ # and then converting ourself to guarantee we have top-to-bottom data
138
138
  # representation as a Response object.
139
139
  def initialize(data, parent=nil)
140
140
  super(data)
141
141
  self.parent = parent
142
142
  Response.convert(self, parent)
143
143
  end
144
-
145
-
144
+
145
+
146
146
  # The "brains" of our Response class. This method takes an arbitray object and
147
147
  # depending on its class attempts to convert it.
148
148
  def self.convert(obj, parent)
@@ -171,5 +171,5 @@ module EC2
171
171
  end
172
172
 
173
173
  end # class Response < OpenStruct
174
-
174
+
175
175
  end # module EC2
@@ -9,17 +9,17 @@
9
9
  #++
10
10
 
11
11
  module EC2
12
-
12
+
13
13
  class Base
14
-
15
-
14
+
15
+
16
16
  #Amazon Developer Guide Docs:
17
17
  #
18
- # The CreateSecurityGroup operation creates a new security group. Every instance is launched
19
- # in a security group. If none is specified as part of the launch request then instances
20
- # are launched in the default security group. Instances within the same security group have
21
- # unrestricted network access to one another. Instances will reject network access attempts from other
22
- # instances in a different security group. As the owner of instances you may grant or revoke specific
18
+ # The CreateSecurityGroup operation creates a new security group. Every instance is launched
19
+ # in a security group. If none is specified as part of the launch request then instances
20
+ # are launched in the default security group. Instances within the same security group have
21
+ # unrestricted network access to one another. Instances will reject network access attempts from other
22
+ # instances in a different security group. As the owner of instances you may grant or revoke specific
23
23
  # permissions using the AuthorizeSecurityGroupIngress and RevokeSecurityGroupIngress operations.
24
24
  #
25
25
  #Required Arguments:
@@ -32,31 +32,31 @@ module EC2
32
32
  # none
33
33
  #
34
34
  def create_security_group( options = {} )
35
-
35
+
36
36
  options = {:group_name => "",
37
37
  :group_description => ""
38
38
  }.merge(options)
39
-
39
+
40
40
  raise ArgumentError, "No :group_name provided" if options[:group_name].nil? || options[:group_name].empty?
41
41
  raise ArgumentError, "No :group_description provided" if options[:group_description].nil? || options[:group_description].empty?
42
-
42
+
43
43
  params = {
44
44
  "GroupName" => options[:group_name],
45
45
  "GroupDescription" => options[:group_description]
46
46
  }
47
-
47
+
48
48
  return response_generator(:action => "CreateSecurityGroup", :params => params)
49
-
49
+
50
50
  end
51
-
52
-
51
+
52
+
53
53
  #Amazon Developer Guide Docs:
54
54
  #
55
- # The DescribeSecurityGroups operation returns information about security groups owned by the
56
- # user making the request.
55
+ # The DescribeSecurityGroups operation returns information about security groups owned by the
56
+ # user making the request.
57
57
  #
58
- # An optional list of security group names may be provided to request information for those security
59
- # groups only. If no security group names are provided, information of all security groups will be
58
+ # An optional list of security group names may be provided to request information for those security
59
+ # groups only. If no security group names are provided, information of all security groups will be
60
60
  # returned. If a group is specified that does not exist a fault is returned.
61
61
  #
62
62
  #Required Arguments:
@@ -68,21 +68,21 @@ module EC2
68
68
  # :group_name => Array (default : [])
69
69
  #
70
70
  def describe_security_groups( options = {} )
71
-
71
+
72
72
  options = { :group_name => [] }.merge(options)
73
-
73
+
74
74
  params = pathlist("GroupName", options[:group_name] )
75
-
75
+
76
76
  return response_generator(:action => "DescribeSecurityGroups", :params => params)
77
-
77
+
78
78
  end
79
-
80
-
79
+
80
+
81
81
  #Amazon Developer Guide Docs:
82
82
  #
83
- # The DeleteSecurityGroup operation deletes a security group.
83
+ # The DeleteSecurityGroup operation deletes a security group.
84
84
  #
85
- # If an attempt is made to delete a security group and any instances exist that are members of that group a
85
+ # If an attempt is made to delete a security group and any instances exist that are members of that group a
86
86
  # fault is returned.
87
87
  #
88
88
  #Required Arguments:
@@ -94,34 +94,34 @@ module EC2
94
94
  # none
95
95
  #
96
96
  def delete_security_group( options = {} )
97
-
97
+
98
98
  options = { :group_name => "" }.merge(options)
99
-
99
+
100
100
  raise ArgumentError, "No :group_name provided" if options[:group_name].nil? || options[:group_name].empty?
101
-
101
+
102
102
  params = { "GroupName" => options[:group_name] }
103
-
103
+
104
104
  return response_generator(:action => "DeleteSecurityGroup", :params => params)
105
-
105
+
106
106
  end
107
-
108
-
107
+
108
+
109
109
  #Amazon Developer Guide Docs:
110
110
  #
111
- # The AuthorizeSecurityGroupIngress operation adds permissions to a security group.
112
- #
113
- # Permissions are specified in terms of the IP protocol (TCP, UDP or ICMP), the source of the request (by
114
- # IP range or an Amazon EC2 user-group pair), source and destination port ranges (for TCP and UDP),
115
- # and ICMP codes and types (for ICMP). When authorizing ICMP, -1 may be used as a wildcard in the
111
+ # The AuthorizeSecurityGroupIngress operation adds permissions to a security group.
112
+ #
113
+ # Permissions are specified in terms of the IP protocol (TCP, UDP or ICMP), the source of the request (by
114
+ # IP range or an Amazon EC2 user-group pair), source and destination port ranges (for TCP and UDP),
115
+ # and ICMP codes and types (for ICMP). When authorizing ICMP, -1 may be used as a wildcard in the
116
116
  # type and code fields.
117
- #
118
- # Permission changes are propagated to instances within the security group being modified as quickly as
117
+ #
118
+ # Permission changes are propagated to instances within the security group being modified as quickly as
119
119
  # possible. However, a small delay is likely, depending on the number of instances that are members of
120
120
  # the indicated group.
121
- #
122
- # When authorizing a user/group pair permission, GroupName, SourceSecurityGroupName and
123
- # SourceSecurityGroupOwnerId must be specified. When authorizing a CIDR IP permission,
124
- # GroupName, IpProtocol, FromPort, ToPort and CidrIp must be specified. Mixing these two types
121
+ #
122
+ # When authorizing a user/group pair permission, GroupName, SourceSecurityGroupName and
123
+ # SourceSecurityGroupOwnerId must be specified. When authorizing a CIDR IP permission,
124
+ # GroupName, IpProtocol, FromPort, ToPort and CidrIp must be specified. Mixing these two types
125
125
  # of parameters is not allowed.
126
126
  #
127
127
  #Required Arguments:
@@ -138,52 +138,52 @@ module EC2
138
138
  # :source_security_group_owner_id => String (default : nil) : Required when authorizing user group pair permissions
139
139
  #
140
140
  def authorize_security_group_ingress( options = {} )
141
-
141
+
142
142
  # defaults
143
143
  options = { :group_name => nil,
144
144
  :ip_protocol => nil,
145
- :from_port => nil,
146
- :to_port => nil,
147
- :cidr_ip => nil,
145
+ :from_port => nil,
146
+ :to_port => nil,
147
+ :cidr_ip => nil,
148
148
  :source_security_group_name => nil,
149
149
  :source_security_group_owner_id => nil }.merge(options)
150
-
150
+
151
151
  # lets not validate the rest of the possible permutations of required params and instead let
152
152
  # EC2 sort it out on the server side. We'll only require :group_name as that is always needed.
153
153
  raise ArgumentError, "No :group_name provided" if options[:group_name].nil? || options[:group_name].empty?
154
-
154
+
155
155
  params = { "GroupName" => options[:group_name],
156
156
  "IpProtocol" => options[:ip_protocol],
157
157
  "FromPort" => options[:from_port].to_s,
158
- "ToPort" => options[:to_port].to_s,
159
- "CidrIp" => options[:cidr_ip],
158
+ "ToPort" => options[:to_port].to_s,
159
+ "CidrIp" => options[:cidr_ip],
160
160
  "SourceSecurityGroupName" => options[:source_security_group_name],
161
161
  "SourceSecurityGroupOwnerId" => options[:source_security_group_owner_id]
162
162
  }
163
-
163
+
164
164
  return response_generator(:action => "AuthorizeSecurityGroupIngress", :params => params)
165
-
165
+
166
166
  end
167
-
168
-
167
+
168
+
169
169
  #Amazon Developer Guide Docs:
170
170
  #
171
- # The RevokeSecurityGroupIngress operation revokes existing permissions that were previously
172
- # granted to a security group. The permissions to revoke must be specified using the same values
171
+ # The RevokeSecurityGroupIngress operation revokes existing permissions that were previously
172
+ # granted to a security group. The permissions to revoke must be specified using the same values
173
173
  # originally used to grant the permission.
174
174
  #
175
- # Permissions are specified in terms of the IP protocol (TCP, UDP or ICMP), the source of the request (by
176
- # IP range or an Amazon EC2 user-group pair), source and destination port ranges (for TCP and UDP),
177
- # and ICMP codes and types (for ICMP). When authorizing ICMP, -1 may be used as a wildcard in the
175
+ # Permissions are specified in terms of the IP protocol (TCP, UDP or ICMP), the source of the request (by
176
+ # IP range or an Amazon EC2 user-group pair), source and destination port ranges (for TCP and UDP),
177
+ # and ICMP codes and types (for ICMP). When authorizing ICMP, -1 may be used as a wildcard in the
178
178
  # type and code fields.
179
179
  #
180
- # Permission changes are propagated to instances within the security group being modified as quickly as
181
- # possible. However, a small delay is likely, depending on the number of instances that are members of
180
+ # Permission changes are propagated to instances within the security group being modified as quickly as
181
+ # possible. However, a small delay is likely, depending on the number of instances that are members of
182
182
  # the indicated group.
183
183
  #
184
- # When revoking a user/group pair permission, GroupName, SourceSecurityGroupName and
185
- # SourceSecurityGroupOwnerId must be specified. When authorizing a CIDR IP permission,
186
- # GroupName, IpProtocol, FromPort, ToPort and CidrIp must be specified. Mixing these two types
184
+ # When revoking a user/group pair permission, GroupName, SourceSecurityGroupName and
185
+ # SourceSecurityGroupOwnerId must be specified. When authorizing a CIDR IP permission,
186
+ # GroupName, IpProtocol, FromPort, ToPort and CidrIp must be specified. Mixing these two types
187
187
  # of parameters is not allowed.
188
188
  #
189
189
  #Required Arguments:
@@ -200,33 +200,33 @@ module EC2
200
200
  # :source_security_group_owner_id => String (default : nil) : Required when revoking user group pair permissions
201
201
  #
202
202
  def revoke_security_group_ingress( options = {} )
203
-
203
+
204
204
  # defaults
205
205
  options = { :group_name => nil,
206
206
  :ip_protocol => nil,
207
- :from_port => nil,
208
- :to_port => nil,
209
- :cidr_ip => nil,
207
+ :from_port => nil,
208
+ :to_port => nil,
209
+ :cidr_ip => nil,
210
210
  :source_security_group_name => nil,
211
211
  :source_security_group_owner_id => nil }.merge(options)
212
-
212
+
213
213
  # lets not validate the rest of the possible permutations of required params and instead let
214
214
  # EC2 sort it out on the server side. We'll only require :group_name as that is always needed.
215
215
  raise ArgumentError, "No :group_name provided" if options[:group_name].nil? || options[:group_name].empty?
216
-
216
+
217
217
  params = { "GroupName" => options[:group_name],
218
218
  "IpProtocol" => options[:ip_protocol],
219
219
  "FromPort" => options[:from_port].to_s,
220
- "ToPort" => options[:to_port].to_s,
221
- "CidrIp" => options[:cidr_ip],
220
+ "ToPort" => options[:to_port].to_s,
221
+ "CidrIp" => options[:cidr_ip],
222
222
  "SourceSecurityGroupName" => options[:source_security_group_name],
223
223
  "SourceSecurityGroupOwnerId" => options[:source_security_group_owner_id]
224
224
  }
225
-
225
+
226
226
  return response_generator(:action => "RevokeSecurityGroupIngress", :params => params)
227
-
227
+
228
228
  end
229
-
229
+
230
230
  end
231
-
231
+
232
232
  end