amazon-ec2 0.5.1 → 0.5.2
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/.gitignore +2 -0
- data/.yardopts +1 -0
- data/ChangeLog +3 -0
- data/LICENSE +1 -1
- data/README.rdoc +13 -1
- data/Rakefile +6 -16
- data/VERSION +1 -1
- data/amazon-ec2.gemspec +4 -4
- data/lib/AWS.rb +59 -11
- data/lib/AWS/EC2.rb +6 -40
- data/lib/AWS/EC2/availability_zones.rb +4 -26
- data/lib/AWS/EC2/console.rb +5 -28
- data/lib/AWS/EC2/elastic_ips.rb +7 -80
- data/lib/AWS/EC2/image_attributes.rb +10 -45
- data/lib/AWS/EC2/images.rb +5 -40
- data/lib/AWS/EC2/instances.rb +15 -56
- data/lib/AWS/EC2/keypairs.rb +3 -38
- data/lib/AWS/EC2/products.rb +3 -27
- data/lib/AWS/EC2/security_groups.rb +19 -70
- data/lib/AWS/EC2/snapshots.rb +4 -41
- data/lib/AWS/EC2/volumes.rb +15 -72
- data/lib/AWS/ELB.rb +5 -40
- data/lib/AWS/ELB/load_balancers.rb +27 -47
- data/lib/AWS/exceptions.rb +78 -122
- data/lib/AWS/responses.rb +6 -46
- data/test/test_helper.rb +4 -0
- metadata +6 -3
data/.gitignore
CHANGED
data/.yardopts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--title amazon-ec2 - ChangeLog LICENSE
|
data/ChangeLog
CHANGED
data/LICENSE
CHANGED
data/README.rdoc
CHANGED
@@ -305,12 +305,24 @@ So, for example, if you wanted to get the image ID of the third image listed in
|
|
305
305
|
|
306
306
|
EC2 will typically return sets of things (imagesSet, reservationSet, etc.) which we map to ruby Arrays (.imagesSet.item in the example above). If you want to iterate over a response set you will need to iterate over this array. The Arrays will typically contain additional AWS::Response objects that represent each individual item. You'll find that you can use the 'ec2sh' to help you understand the structure more completely if you try issuing commands there as a way to practice seeing what will be returned and making sure you get exactly what you want.
|
307
307
|
|
308
|
+
=== Handling Exceptions
|
309
|
+
If for some reason an error occurs when executing a method (e.g. its arguments were
|
310
|
+
incorrect, or it simply failed) then an exception will be thrown. The exceptions are
|
311
|
+
defined in exceptions.rb as individual classes and should match the exceptions that
|
312
|
+
AWS has defined in the API. If the exception raised cannot be identified then a
|
313
|
+
more generic exception class will be thrown.
|
314
|
+
|
315
|
+
The implication of this is that you need to be prepared to handle any exceptions that
|
316
|
+
may be raised by this library in YOUR code with a 'rescue' clause. It is up to you
|
317
|
+
to determine how you want to handle these exceptions in your code.
|
318
|
+
|
308
319
|
|
309
320
|
== Additional Resources
|
310
321
|
|
311
322
|
=== Project Websites
|
312
323
|
|
313
324
|
* Project Home : http://github.com/grempe/amazon-ec2/tree/master
|
325
|
+
* API Documentation : http://rdoc.info/projects/grempe/amazon-ec2
|
314
326
|
* Discussion Group : http://groups.google.com/group/amazon-ec2
|
315
327
|
* Report Bugs / Request Features : http://github.com/grempe/amazon-ec2/issues
|
316
328
|
* Amazon Web Services : http://aws.amazon.com
|
@@ -321,7 +333,7 @@ The original code for this library was provided by Amazon Web Services, LLC as s
|
|
321
333
|
|
322
334
|
== Contact
|
323
335
|
|
324
|
-
Comments, patches, Git pull requests and bug reports are welcome. Send an email to mailto:glenn@rempe.us or
|
336
|
+
Comments, patches, Git pull requests and bug reports are welcome. Send an email to mailto:glenn@rempe.us or join the Google Groups forum.
|
325
337
|
|
326
338
|
Enjoy!
|
327
339
|
|
data/Rakefile
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'rake'
|
3
|
+
require 'yard'
|
3
4
|
|
4
5
|
require 'jeweler'
|
5
6
|
Jeweler::Tasks.new do |gem|
|
@@ -47,19 +48,8 @@ end
|
|
47
48
|
|
48
49
|
task :default => :test
|
49
50
|
|
50
|
-
|
51
|
-
|
52
|
-
if File.exist?('VERSION.yml')
|
53
|
-
config = YAML.load(File.read('VERSION.yml'))
|
54
|
-
version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
|
55
|
-
else
|
56
|
-
version = ""
|
57
|
-
end
|
58
|
-
|
59
|
-
rdoc.rdoc_dir = 'rdoc'
|
60
|
-
rdoc.title = "amazon-ec2 #{version}"
|
61
|
-
rdoc.rdoc_files.include('README*')
|
62
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
51
|
+
YARD::Rake::YardocTask.new do |t|
|
52
|
+
#t.files = ['lib/**/*.rb']
|
63
53
|
end
|
64
54
|
|
65
55
|
begin
|
@@ -70,15 +60,15 @@ begin
|
|
70
60
|
task :release => ["rubyforge:release:gem", "rubyforge:release:docs"]
|
71
61
|
|
72
62
|
namespace :release do
|
73
|
-
desc "Publish
|
74
|
-
task :docs => [:
|
63
|
+
desc "Publish YARD docs to RubyForge."
|
64
|
+
task :docs => [:doc] do
|
75
65
|
config = YAML.load(
|
76
66
|
File.read(File.expand_path('~/.rubyforge/user-config.yml'))
|
77
67
|
)
|
78
68
|
|
79
69
|
host = "#{config['username']}@rubyforge.org"
|
80
70
|
remote_dir = "/var/www/gforge-projects/amazon-ec2/"
|
81
|
-
local_dir = '
|
71
|
+
local_dir = 'doc'
|
82
72
|
|
83
73
|
Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
|
84
74
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.2
|
data/amazon-ec2.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{amazon-ec2}
|
8
|
-
s.version = "0.5.
|
8
|
+
s.version = "0.5.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Glenn Rempe"]
|
@@ -21,6 +21,7 @@ Gem::Specification.new do |s|
|
|
21
21
|
]
|
22
22
|
s.files = [
|
23
23
|
".gitignore",
|
24
|
+
".yardopts",
|
24
25
|
"ChangeLog",
|
25
26
|
"LICENSE",
|
26
27
|
"README.rdoc",
|
@@ -75,12 +76,11 @@ Gem::Specification.new do |s|
|
|
75
76
|
"wsdl/2008-05-05.ec2.wsdl",
|
76
77
|
"wsdl/2008-12-01.ec2.wsdl"
|
77
78
|
]
|
78
|
-
s.has_rdoc = true
|
79
79
|
s.homepage = %q{http://github.com/grempe/amazon-ec2}
|
80
80
|
s.rdoc_options = ["--title", "amazon-ec2 documentation", "--line-numbers", "--main", "README.rdoc"]
|
81
81
|
s.require_paths = ["lib"]
|
82
82
|
s.rubyforge_project = %q{amazon-ec2}
|
83
|
-
s.rubygems_version = %q{1.3.
|
83
|
+
s.rubygems_version = %q{1.3.5}
|
84
84
|
s.summary = %q{Amazon EC2 Ruby Gem}
|
85
85
|
s.test_files = [
|
86
86
|
"test/test_EC2.rb",
|
@@ -103,7 +103,7 @@ Gem::Specification.new do |s|
|
|
103
103
|
|
104
104
|
if s.respond_to? :specification_version then
|
105
105
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
106
|
-
s.specification_version =
|
106
|
+
s.specification_version = 3
|
107
107
|
|
108
108
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
109
109
|
s.add_runtime_dependency(%q<xml-simple>, [">= 1.0.12"])
|
data/lib/AWS.rb
CHANGED
@@ -1,16 +1,47 @@
|
|
1
|
-
|
2
|
-
#
|
3
|
-
#
|
4
|
-
#
|
5
|
-
|
1
|
+
#--
|
2
|
+
# Amazon Web Services EC2 + ELB API Ruby library
|
3
|
+
#
|
4
|
+
# Ruby Gem Name:: amazon-ec2
|
5
|
+
# Author:: Glenn Rempe (mailto:glenn@rempe.us)
|
6
|
+
# Copyright:: Copyright (c) 2007-2009 Glenn Rempe
|
7
|
+
# License:: Distributes under the same terms as Ruby
|
8
|
+
# Home:: http://github.com/grempe/amazon-ec2/tree/master
|
9
|
+
#++
|
6
10
|
|
7
11
|
%w[ base64 cgi openssl digest/sha1 net/https rexml/document time ostruct ].each { |f| require f }
|
8
12
|
|
13
|
+
begin
|
14
|
+
require 'xmlsimple' unless defined? XmlSimple
|
15
|
+
rescue Exception => e
|
16
|
+
require 'xml-simple' unless defined? XmlSimple
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
# A custom implementation of Hash that allows us to access hash values using dot notation
|
21
|
+
#
|
22
|
+
# @example Access the hash keys in the standard way or using dot notation
|
23
|
+
# foo[:bar] => "baz"
|
24
|
+
# foo.bar => "baz"
|
25
|
+
class Hash
|
26
|
+
def method_missing(meth, *args, &block)
|
27
|
+
if args.size == 0
|
28
|
+
self[meth.to_s] || self[meth.to_sym]
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
|
9
34
|
module AWS
|
10
|
-
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
35
|
+
|
36
|
+
# Builds the canonical string for signing requests. This strips out all '&', '?', and '='
|
37
|
+
# from the query string to be signed. The parameters in the path passed in must already
|
38
|
+
# be sorted in case-insensitive alphabetical order and must not be url encoded.
|
39
|
+
#
|
40
|
+
# @param [String] params the params that will be sorted and encoded as a canonical string.
|
41
|
+
# @param [String] host the hostname of the API endpoint.
|
42
|
+
# @param [String] method the HTTP method that will be used to submit the params.
|
43
|
+
# @param [String] base the URI path that this information will be submitted to.
|
44
|
+
# @return [String] the canonical request description string.
|
14
45
|
def AWS.canonical_string(params, host, method="POST", base="/")
|
15
46
|
# Sort, and encode parameters into a canonical string.
|
16
47
|
sorted_params = params.sort {|x,y| x[0] <=> y[0]}
|
@@ -31,10 +62,15 @@ module AWS
|
|
31
62
|
|
32
63
|
end
|
33
64
|
|
34
|
-
# Encodes the given string with the secret_access_key
|
65
|
+
# Encodes the given string with the secret_access_key by taking the
|
35
66
|
# hmac-sha1 sum, and then base64 encoding it. Optionally, it will also
|
36
67
|
# url encode the result of that to protect the string if it's going to
|
37
68
|
# be used as a query string parameter.
|
69
|
+
#
|
70
|
+
# @param [String] secret_access_key the user's secret access key for signing.
|
71
|
+
# @param [String] str the string to be hashed and encoded.
|
72
|
+
# @param [Boolean] urlencode whether or not to url encode the result., true or false
|
73
|
+
# @return [String] the signed and encoded string.
|
38
74
|
def AWS.encode(secret_access_key, str, urlencode=true)
|
39
75
|
digest = OpenSSL::Digest::Digest.new('sha1')
|
40
76
|
b64_hmac =
|
@@ -48,10 +84,21 @@ module AWS
|
|
48
84
|
end
|
49
85
|
end
|
50
86
|
|
87
|
+
# This class provides all the methods for using the EC2 or ELB service
|
88
|
+
# including the handling of header signing and other security concerns.
|
89
|
+
# This class uses the Net::HTTP library to interface with the AWS Query API
|
90
|
+
# interface. You should not instantiate this directly, instead
|
91
|
+
# you should setup an instance of 'AWS::EC2::Base' or 'AWS::ELB::Base'.
|
51
92
|
class Base
|
52
93
|
|
53
94
|
attr_reader :use_ssl, :server, :proxy_server, :port
|
54
95
|
|
96
|
+
# @option options [String] :access_key_id ("") The user's AWS Access Key ID
|
97
|
+
# @option options [String] :secret_access_key ("") The user's AWS Secret Access Key
|
98
|
+
# @option options [Boolean] :use_ssl (true) Connect using SSL?
|
99
|
+
# @option options [String] :server ("ec2.amazonaws.com") The server API endpoint host
|
100
|
+
# @option options [String] :proxy_server (nil) An HTTP proxy server FQDN
|
101
|
+
# @return [Object] the object.
|
55
102
|
def initialize( options = {} )
|
56
103
|
|
57
104
|
options = { :access_key_id => "",
|
@@ -242,4 +289,5 @@ module AWS
|
|
242
289
|
end
|
243
290
|
end
|
244
291
|
|
245
|
-
Dir[File.join(File.dirname(__FILE__), 'AWS
|
292
|
+
Dir[File.join(File.dirname(__FILE__), 'AWS/**/*.rb')].sort.each { |lib| require lib }
|
293
|
+
|
data/lib/AWS/EC2.rb
CHANGED
@@ -1,58 +1,23 @@
|
|
1
|
-
#--
|
2
|
-
# Amazon Web Services EC2 Query API Ruby library
|
3
|
-
#
|
4
|
-
# Ruby Gem Name:: amazon-ec2
|
5
|
-
# Author:: Glenn Rempe (mailto:glenn@rempe.us)
|
6
|
-
# Copyright:: Copyright (c) 2007-2008 Glenn Rempe
|
7
|
-
# License:: Distributes under the same terms as Ruby
|
8
|
-
# Home:: http://github.com/grempe/amazon-ec2/tree/master
|
9
|
-
#++
|
10
|
-
|
11
|
-
# Require any lib files that we have bundled with this Ruby Gem in the lib/EC2 directory.
|
12
|
-
# Parts of the EC2 module and Base class are broken out into separate
|
13
|
-
# files for maintainability and are organized by the functional groupings defined
|
14
|
-
# in the EC2 API developers guide.
|
15
|
-
Dir[File.join(File.dirname(__FILE__), 'EC2/**/*.rb')].sort.each { |lib| require lib }
|
16
|
-
|
17
1
|
module AWS
|
18
2
|
module EC2
|
19
3
|
|
20
4
|
# Which host FQDN will we connect to for all API calls to AWS?
|
21
|
-
# If EC2_URL is defined in the users ENV we can
|
22
|
-
# expected that this var is set with something like:
|
23
|
-
# export EC2_URL='https://ec2.amazonaws.com'
|
5
|
+
# If EC2_URL is defined in the users ENV we can override the default with that.
|
24
6
|
#
|
7
|
+
# @example
|
8
|
+
# export EC2_URL='https://ec2.amazonaws.com'
|
25
9
|
if ENV['EC2_URL']
|
26
10
|
EC2_URL = ENV['EC2_URL']
|
27
11
|
VALID_HOSTS = ['https://ec2.amazonaws.com', 'https://us-east-1.ec2.amazonaws.com', 'https://eu-west-1.ec2.amazonaws.com']
|
28
12
|
raise ArgumentError, "Invalid EC2_URL environment variable : #{EC2_URL}" unless VALID_HOSTS.include?(EC2_URL)
|
29
13
|
DEFAULT_HOST = URI.parse(EC2_URL).host
|
30
14
|
else
|
31
|
-
#
|
15
|
+
# Default US API endpoint
|
32
16
|
DEFAULT_HOST = 'ec2.amazonaws.com'
|
33
17
|
end
|
34
18
|
|
35
|
-
# This is the version of the API as defined by Amazon Web Services
|
36
19
|
API_VERSION = '2008-12-01'
|
37
20
|
|
38
|
-
#Introduction:
|
39
|
-
#
|
40
|
-
# The library exposes one main interface class, 'AWS::EC2::Base'.
|
41
|
-
# This class provides all the methods for using the EC2 service
|
42
|
-
# including the handling of header signing and other security issues .
|
43
|
-
# This class uses Net::HTTP to interface with the EC2 Query API interface.
|
44
|
-
#
|
45
|
-
#Required Arguments:
|
46
|
-
#
|
47
|
-
# :access_key_id => String (default : "")
|
48
|
-
# :secret_access_key => String (default : "")
|
49
|
-
#
|
50
|
-
#Optional Arguments:
|
51
|
-
#
|
52
|
-
# :use_ssl => Boolean (default : true)
|
53
|
-
# :server => String (default : 'ec2.amazonaws.com')
|
54
|
-
# :proxy_server => String (default : nil)
|
55
|
-
#
|
56
21
|
class Base < AWS::Base
|
57
22
|
def api_version
|
58
23
|
API_VERSION
|
@@ -64,4 +29,5 @@ module AWS
|
|
64
29
|
end
|
65
30
|
|
66
31
|
end
|
67
|
-
end
|
32
|
+
end
|
33
|
+
|
@@ -1,43 +1,21 @@
|
|
1
|
-
#--
|
2
|
-
# Amazon Web Services EC2 Query API Ruby library
|
3
|
-
#
|
4
|
-
# Ruby Gem Name:: amazon-ec2
|
5
|
-
# Author:: Glenn Rempe (mailto:glenn@rempe.us)
|
6
|
-
# Copyright:: Copyright (c) 2007-2008 Glenn Rempe
|
7
|
-
# License:: Distributes under the same terms as Ruby
|
8
|
-
# Home:: http://github.com/grempe/amazon-ec2/tree/master
|
9
|
-
#++
|
10
|
-
|
11
1
|
module AWS
|
12
2
|
module EC2
|
13
|
-
|
14
3
|
class Base < AWS::Base
|
15
4
|
|
16
|
-
#Amazon Developer Guide Docs:
|
17
|
-
#
|
18
5
|
# The DescribeAvailabilityZones operation describes availability zones that are currently
|
19
6
|
# available to the account and their states.
|
20
7
|
#
|
21
8
|
# An optional list of zone names can be passed.
|
22
9
|
#
|
23
|
-
#
|
24
|
-
#
|
25
|
-
# none
|
10
|
+
# @option options [optional, String] :zone_name ([]) an Array of zone names
|
26
11
|
#
|
27
|
-
#Optional Arguments:
|
28
|
-
#
|
29
|
-
# :zone_name => Array (default : [])
|
30
|
-
#
|
31
|
-
|
32
12
|
def describe_availability_zones( options = {} )
|
33
|
-
|
34
13
|
options = { :zone_name => [] }.merge(options)
|
35
|
-
|
36
14
|
params = pathlist("ZoneName", options[:zone_name] )
|
37
|
-
|
38
15
|
return response_generator(:action => "DescribeAvailabilityZones", :params => params)
|
39
|
-
|
40
16
|
end
|
17
|
+
|
41
18
|
end
|
42
19
|
end
|
43
|
-
end
|
20
|
+
end
|
21
|
+
|
data/lib/AWS/EC2/console.rb
CHANGED
@@ -1,46 +1,23 @@
|
|
1
|
-
#--
|
2
|
-
# Amazon Web Services EC2 Query API Ruby library
|
3
|
-
#
|
4
|
-
# Ruby Gem Name:: amazon-ec2
|
5
|
-
# Author:: Glenn Rempe (mailto:glenn@rempe.us)
|
6
|
-
# Copyright:: Copyright (c) 2007-2008 Glenn Rempe
|
7
|
-
# License:: Distributes under the same terms as Ruby
|
8
|
-
# Home:: http://github.com/grempe/amazon-ec2/tree/master
|
9
|
-
#++
|
10
|
-
|
11
1
|
module AWS
|
12
2
|
module EC2
|
13
|
-
|
14
3
|
class Base < AWS::Base
|
15
4
|
|
16
|
-
#Amazon Developer Guide Docs:
|
17
|
-
#
|
18
5
|
# The GetConsoleOutput operation retrieves console output that has been posted for the specified instance.
|
19
6
|
#
|
20
7
|
# Instance console output is buffered and posted shortly after instance boot, reboot and once the instance
|
21
8
|
# is terminated. Only the most recent 64 KB of posted output is available. Console output is available for
|
22
9
|
# at least 1 hour after the most recent post.
|
23
10
|
#
|
24
|
-
#
|
25
|
-
#
|
26
|
-
# :instance_id => String (default : "")
|
11
|
+
# @option options [String] :instance_id ("") an Instance ID
|
27
12
|
#
|
28
|
-
|
29
|
-
#
|
30
|
-
# none
|
31
|
-
#
|
32
|
-
def get_console_output( options ={} )
|
33
|
-
|
13
|
+
def get_console_output( options = {} )
|
34
14
|
options = {:instance_id => ""}.merge(options)
|
35
|
-
|
36
15
|
raise ArgumentError, "No instance ID provided" if options[:instance_id].nil? || options[:instance_id].empty?
|
37
|
-
|
38
16
|
params = { "InstanceId" => options[:instance_id] }
|
39
|
-
|
40
17
|
return response_generator(:action => "GetConsoleOutput", :params => params)
|
41
|
-
|
42
18
|
end
|
43
|
-
end
|
44
19
|
|
20
|
+
end
|
45
21
|
end
|
46
|
-
end
|
22
|
+
end
|
23
|
+
|
data/lib/AWS/EC2/elastic_ips.rb
CHANGED
@@ -1,60 +1,23 @@
|
|
1
|
-
#--
|
2
|
-
# Amazon Web Services EC2 Query API Ruby library
|
3
|
-
#
|
4
|
-
# Ruby Gem Name:: amazon-ec2
|
5
|
-
# Author:: Glenn Rempe (mailto:glenn@rempe.us)
|
6
|
-
# Copyright:: Copyright (c) 2007-2008 Glenn Rempe
|
7
|
-
# License:: Distributes under the same terms as Ruby
|
8
|
-
# Home:: http://github.com/grempe/amazon-ec2/tree/master
|
9
|
-
#++
|
10
|
-
|
11
1
|
module AWS
|
12
2
|
module EC2
|
13
3
|
class Base < AWS::Base
|
14
4
|
|
15
|
-
|
16
|
-
#Amazon Developer Guide Docs:
|
17
|
-
#
|
18
5
|
# The AllocateAddress operation acquires an elastic IP address for use with your account.
|
19
6
|
#
|
20
|
-
#Required Arguments:
|
21
|
-
#
|
22
|
-
# none
|
23
|
-
#
|
24
|
-
#Optional Arguments:
|
25
|
-
#
|
26
|
-
# none
|
27
|
-
#
|
28
7
|
def allocate_address
|
29
|
-
|
30
8
|
return response_generator(:action => "AllocateAddress")
|
31
|
-
|
32
9
|
end
|
33
10
|
|
34
|
-
#Amazon Developer Guide Docs:
|
35
|
-
#
|
36
11
|
# The DescribeAddresses operation lists elastic IP addresses assigned to your account.
|
37
12
|
#
|
38
|
-
#
|
39
|
-
#
|
40
|
-
# :public_ip => Array (default : [], can be empty)
|
41
|
-
#
|
42
|
-
#Optional Arguments:
|
43
|
-
#
|
44
|
-
# none
|
13
|
+
# @option options [Array] :public_ip ([]) an IP address to be described
|
45
14
|
#
|
46
15
|
def describe_addresses( options = {} )
|
47
|
-
|
48
16
|
options = { :public_ip => [] }.merge(options)
|
49
|
-
|
50
17
|
params = pathlist("PublicIp", options[:public_ip])
|
51
|
-
|
52
18
|
return response_generator(:action => "DescribeAddresses", :params => params)
|
53
|
-
|
54
19
|
end
|
55
20
|
|
56
|
-
#Amazon Developer Guide Docs:
|
57
|
-
#
|
58
21
|
# The ReleaseAddress operation releases an elastic IP address associated with your account.
|
59
22
|
#
|
60
23
|
# If you run this operation on an elastic IP address that is already released, the address
|
@@ -68,87 +31,51 @@ module AWS
|
|
68
31
|
# to update your DNS records and any servers or devices that communicate
|
69
32
|
# with the address.
|
70
33
|
#
|
71
|
-
#
|
72
|
-
#
|
73
|
-
# :public_ip => String (default : '')
|
74
|
-
#
|
75
|
-
#Optional Arguments:
|
76
|
-
#
|
77
|
-
# none
|
34
|
+
# @option options [String] :public_ip ('') an IP address to be released.
|
78
35
|
#
|
79
36
|
def release_address( options = {} )
|
80
|
-
|
81
37
|
options = { :public_ip => '' }.merge(options)
|
82
|
-
|
83
38
|
raise ArgumentError, "No ':public_ip' provided" if options[:public_ip].nil? || options[:public_ip].empty?
|
84
|
-
|
85
39
|
params = { "PublicIp" => options[:public_ip] }
|
86
|
-
|
87
40
|
return response_generator(:action => "ReleaseAddress", :params => params)
|
88
|
-
|
89
41
|
end
|
90
42
|
|
91
|
-
#Amazon Developer Guide Docs:
|
92
|
-
#
|
93
43
|
# The AssociateAddress operation associates an elastic IP address with an instance.
|
94
44
|
#
|
95
45
|
# If the IP address is currently assigned to another instance, the IP address
|
96
46
|
# is assigned to the new instance. This is an idempotent operation. If you enter
|
97
47
|
# it more than once, Amazon EC2 does not return an error.
|
98
48
|
#
|
99
|
-
#
|
100
|
-
#
|
101
|
-
# :instance_id => String (default : '')
|
102
|
-
# :public_ip => String (default : '')
|
103
|
-
#
|
104
|
-
#Optional Arguments:
|
105
|
-
#
|
106
|
-
# none
|
49
|
+
# @option options [String] :instance_id ('') the instance ID to associate an IP with.
|
50
|
+
# @option options [String] :public_ip ('') the public IP to associate an instance with.
|
107
51
|
#
|
108
52
|
def associate_address( options = {} )
|
109
|
-
|
110
53
|
options = { :instance_id => '', :public_ip => '' }.merge(options)
|
111
|
-
|
112
54
|
raise ArgumentError, "No ':instance_id' provided" if options[:instance_id].nil? || options[:instance_id].empty?
|
113
55
|
raise ArgumentError, "No ':public_ip' provided" if options[:public_ip].nil? || options[:public_ip].empty?
|
114
|
-
|
115
56
|
params = {
|
116
57
|
"InstanceId" => options[:instance_id],
|
117
58
|
"PublicIp" => options[:public_ip]
|
118
59
|
}
|
119
|
-
|
120
60
|
return response_generator(:action => "AssociateAddress", :params => params)
|
121
|
-
|
122
61
|
end
|
123
62
|
|
124
|
-
#Amazon Developer Guide Docs:
|
125
|
-
#
|
126
63
|
# The DisassociateAddress operation disassociates the specified elastic IP
|
127
64
|
# address from the instance to which it is assigned. This is an idempotent
|
128
65
|
# operation. If you enter it more than once, Amazon EC2 does not return
|
129
66
|
# an error.
|
130
67
|
#
|
131
|
-
#
|
132
|
-
#
|
133
|
-
# :public_ip => String (default : '')
|
134
|
-
#
|
135
|
-
#Optional Arguments:
|
136
|
-
#
|
137
|
-
# none
|
68
|
+
# @option options [String] :public_ip ('') the public IP to be dis-associated.
|
138
69
|
#
|
139
70
|
def disassociate_address( options = {} )
|
140
|
-
|
141
71
|
options = { :public_ip => '' }.merge(options)
|
142
|
-
|
143
72
|
raise ArgumentError, "No ':public_ip' provided" if options[:public_ip].nil? || options[:public_ip].empty?
|
144
|
-
|
145
73
|
params = { "PublicIp" => options[:public_ip] }
|
146
|
-
|
147
74
|
return response_generator(:action => "DisassociateAddress", :params => params)
|
148
|
-
|
149
75
|
end
|
150
76
|
|
151
77
|
end
|
152
78
|
|
153
79
|
end
|
154
|
-
end
|
80
|
+
end
|
81
|
+
|