aws 2.1.0 → 2.1.1
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/lib/ec2/right_ec2.rb +226 -194
- data/lib/ec2/right_mon_interface.rb +1 -1
- metadata +2 -2
data/lib/ec2/right_ec2.rb
CHANGED
@@ -34,7 +34,7 @@ module Aws
|
|
34
34
|
# Examples:
|
35
35
|
#
|
36
36
|
# Create an EC2 interface handle:
|
37
|
-
#
|
37
|
+
#
|
38
38
|
# @ec2 = Aws::Ec2.new(aws_access_key_id,
|
39
39
|
# aws_secret_access_key)
|
40
40
|
# Create a new SSH key pair:
|
@@ -56,33 +56,33 @@ module Aws
|
|
56
56
|
#
|
57
57
|
# Launch an instance:
|
58
58
|
# ec2.run_instances('ami-9a9e7bf3', 1, 1, ['default'], @key, 'SomeImportantUserData', 'public')
|
59
|
-
#
|
59
|
+
#
|
60
60
|
#
|
61
61
|
# Describe running instances:
|
62
62
|
# @ec2.describe_instances
|
63
63
|
#
|
64
64
|
# Error handling: all operations raise an Aws::AwsError in case
|
65
65
|
# of problems. Note that transient errors are automatically retried.
|
66
|
-
|
66
|
+
|
67
67
|
class Ec2 < AwsBase
|
68
68
|
include AwsBaseInterface
|
69
|
-
|
69
|
+
|
70
70
|
# Amazon EC2 API version being used
|
71
|
-
API_VERSION = "
|
71
|
+
API_VERSION = "2009-08-15"
|
72
72
|
DEFAULT_HOST = "ec2.amazonaws.com"
|
73
73
|
DEFAULT_PATH = '/'
|
74
74
|
DEFAULT_PROTOCOL = 'http'
|
75
75
|
DEFAULT_PORT = 80
|
76
|
-
|
76
|
+
|
77
77
|
# Default addressing type (public=NAT, direct=no-NAT) used when launching instances.
|
78
78
|
DEFAULT_ADDRESSING_TYPE = 'public'
|
79
79
|
DNS_ADDRESSING_SET = ['public','direct']
|
80
|
-
|
80
|
+
|
81
81
|
# Amazon EC2 Instance Types : http://www.amazon.com/b?ie=UTF8&node=370375011
|
82
|
-
# Default EC2 instance type (platform)
|
83
|
-
DEFAULT_INSTANCE_TYPE = 'm1.small'
|
82
|
+
# Default EC2 instance type (platform)
|
83
|
+
DEFAULT_INSTANCE_TYPE = 'm1.small'
|
84
84
|
INSTANCE_TYPES = ['m1.small','c1.medium','m1.large','m1.xlarge','c1.xlarge']
|
85
|
-
|
85
|
+
|
86
86
|
@@bench = AwsBenchmarkingBlock.new
|
87
87
|
def self.bench_xml
|
88
88
|
@@bench.xml
|
@@ -90,13 +90,13 @@ module Aws
|
|
90
90
|
def self.bench_ec2
|
91
91
|
@@bench.service
|
92
92
|
end
|
93
|
-
|
93
|
+
|
94
94
|
# Current API version (sometimes we have to check it outside the GEM).
|
95
95
|
@@api = ENV['EC2_API_VERSION'] || API_VERSION
|
96
|
-
def self.api
|
96
|
+
def self.api
|
97
97
|
@@api
|
98
98
|
end
|
99
|
-
|
99
|
+
|
100
100
|
# Create a new handle to an EC2 account. All handles share the same per process or per thread
|
101
101
|
# HTTP connection to Amazon EC2. Each handle is for a specific account. The params have the
|
102
102
|
# following options:
|
@@ -110,16 +110,16 @@ module Aws
|
|
110
110
|
# * <tt>:signature_version</tt>: The signature version : '0' or '1'(default)
|
111
111
|
# * <tt>:cache</tt>: true/false: caching for: ec2_describe_images, describe_instances,
|
112
112
|
# describe_images_by_owner, describe_images_by_executable_by, describe_availability_zones,
|
113
|
-
# describe_security_groups, describe_key_pairs, describe_addresses,
|
113
|
+
# describe_security_groups, describe_key_pairs, describe_addresses,
|
114
114
|
# describe_volumes, describe_snapshots methods, default: false.
|
115
115
|
#
|
116
116
|
def initialize(aws_access_key_id=nil, aws_secret_access_key=nil, params={})
|
117
|
-
init({ :name => 'EC2',
|
118
|
-
:default_host => ENV['EC2_URL'] ? URI.parse(ENV['EC2_URL']).host : DEFAULT_HOST,
|
117
|
+
init({ :name => 'EC2',
|
118
|
+
:default_host => ENV['EC2_URL'] ? URI.parse(ENV['EC2_URL']).host : DEFAULT_HOST,
|
119
119
|
:default_port => ENV['EC2_URL'] ? URI.parse(ENV['EC2_URL']).port : DEFAULT_PORT,
|
120
|
-
:default_service => ENV['EC2_URL'] ? URI.parse(ENV['EC2_URL']).path : DEFAULT_PATH,
|
121
|
-
:default_protocol => ENV['EC2_URL'] ? URI.parse(ENV['EC2_URL']).scheme : DEFAULT_PROTOCOL },
|
122
|
-
aws_access_key_id || ENV['AWS_ACCESS_KEY_ID'] ,
|
120
|
+
:default_service => ENV['EC2_URL'] ? URI.parse(ENV['EC2_URL']).path : DEFAULT_PATH,
|
121
|
+
:default_protocol => ENV['EC2_URL'] ? URI.parse(ENV['EC2_URL']).scheme : DEFAULT_PROTOCOL },
|
122
|
+
aws_access_key_id || ENV['AWS_ACCESS_KEY_ID'] ,
|
123
123
|
aws_secret_access_key|| ENV['AWS_SECRET_ACCESS_KEY'],
|
124
124
|
params)
|
125
125
|
# EC2 doesn't really define any transient errors to retry, and in fact,
|
@@ -137,7 +137,7 @@ module Aws
|
|
137
137
|
"Version" => @@api }
|
138
138
|
service_hash.update(params)
|
139
139
|
service_params = signed_service_params(@aws_secret_access_key, service_hash, :get, @params[:server], @params[:service])
|
140
|
-
|
140
|
+
|
141
141
|
# use POST method if the length of the query string is too large
|
142
142
|
if service_params.size > 2000
|
143
143
|
if signature_version == '2'
|
@@ -151,7 +151,7 @@ module Aws
|
|
151
151
|
request = Net::HTTP::Get.new("#{@params[:service]}?#{service_params}")
|
152
152
|
end
|
153
153
|
# prepare output hash
|
154
|
-
{ :request => request,
|
154
|
+
{ :request => request,
|
155
155
|
:server => @params[:server],
|
156
156
|
:port => @params[:port],
|
157
157
|
:protocol => @params[:protocol] }
|
@@ -175,11 +175,11 @@ module Aws
|
|
175
175
|
# Images
|
176
176
|
#-----------------------------------------------------------------
|
177
177
|
|
178
|
-
# params:
|
178
|
+
# params:
|
179
179
|
# { 'ImageId' => ['id1', ..., 'idN'],
|
180
180
|
# 'Owner' => ['self', ..., 'userN'],
|
181
181
|
# 'ExecutableBy' => ['self', 'all', ..., 'userN']
|
182
|
-
# }
|
182
|
+
# }
|
183
183
|
def ec2_describe_images(params={}, image_type=nil, cache_for=nil) #:nodoc:
|
184
184
|
request_hash = {}
|
185
185
|
params.each do |list_by, list|
|
@@ -193,8 +193,8 @@ module Aws
|
|
193
193
|
end
|
194
194
|
|
195
195
|
# Retrieve a list of images. Returns array of hashes describing the images or an exception:
|
196
|
-
# +image_type+ = 'machine' || 'kernel' || 'ramdisk'
|
197
|
-
#
|
196
|
+
# +image_type+ = 'machine' || 'kernel' || 'ramdisk'
|
197
|
+
#
|
198
198
|
# ec2.describe_images #=>
|
199
199
|
# [{:aws_owner => "522821470517",
|
200
200
|
# :aws_id => "ami-e4b6538d",
|
@@ -249,25 +249,25 @@ module Aws
|
|
249
249
|
end
|
250
250
|
|
251
251
|
|
252
|
-
# Register new image at Amazon.
|
252
|
+
# Register new image at Amazon.
|
253
253
|
# Returns new image id or an exception.
|
254
254
|
#
|
255
255
|
# ec2.register_image('bucket/key/manifest') #=> 'ami-e444444d'
|
256
256
|
#
|
257
257
|
def register_image(image_location)
|
258
|
-
link = generate_request("RegisterImage",
|
258
|
+
link = generate_request("RegisterImage",
|
259
259
|
'ImageLocation' => image_location.to_s)
|
260
260
|
request_info(link, QEc2RegisterImageParser.new(:logger => @logger))
|
261
261
|
rescue Exception
|
262
262
|
on_exception
|
263
263
|
end
|
264
|
-
|
264
|
+
|
265
265
|
# Deregister image at Amazon. Returns +true+ or an exception.
|
266
266
|
#
|
267
267
|
# ec2.deregister_image('ami-e444444d') #=> true
|
268
268
|
#
|
269
269
|
def deregister_image(image_id)
|
270
|
-
link = generate_request("DeregisterImage",
|
270
|
+
link = generate_request("DeregisterImage",
|
271
271
|
'ImageId' => image_id.to_s)
|
272
272
|
request_info(link, RightBoolResponseParser.new(:logger => @logger))
|
273
273
|
rescue Exception
|
@@ -280,20 +280,20 @@ module Aws
|
|
280
280
|
# ec2.describe_image_attribute('ami-e444444d') #=> {:groups=>["all"], :users=>["000000000777"]}
|
281
281
|
#
|
282
282
|
def describe_image_attribute(image_id, attribute='launchPermission')
|
283
|
-
link = generate_request("DescribeImageAttribute",
|
283
|
+
link = generate_request("DescribeImageAttribute",
|
284
284
|
'ImageId' => image_id,
|
285
285
|
'Attribute' => attribute)
|
286
286
|
request_info(link, QEc2DescribeImageAttributeParser.new(:logger => @logger))
|
287
287
|
rescue Exception
|
288
288
|
on_exception
|
289
289
|
end
|
290
|
-
|
290
|
+
|
291
291
|
# Reset image attribute. Currently, only 'launchPermission' is supported. Returns +true+ or an exception.
|
292
292
|
#
|
293
293
|
# ec2.reset_image_attribute('ami-e444444d') #=> true
|
294
294
|
#
|
295
295
|
def reset_image_attribute(image_id, attribute='launchPermission')
|
296
|
-
link = generate_request("ResetImageAttribute",
|
296
|
+
link = generate_request("ResetImageAttribute",
|
297
297
|
'ImageId' => image_id,
|
298
298
|
'Attribute' => attribute)
|
299
299
|
request_info(link, RightBoolResponseParser.new(:logger => @logger))
|
@@ -303,13 +303,13 @@ module Aws
|
|
303
303
|
|
304
304
|
# Modify an image's attributes. It is recommended that you use
|
305
305
|
# modify_image_launch_perm_add_users, modify_image_launch_perm_remove_users, etc.
|
306
|
-
# instead of modify_image_attribute because the signature of
|
306
|
+
# instead of modify_image_attribute because the signature of
|
307
307
|
# modify_image_attribute may change with EC2 service changes.
|
308
308
|
#
|
309
309
|
# attribute : currently, only 'launchPermission' is supported.
|
310
310
|
# operation_type : currently, only 'add' & 'remove' are supported.
|
311
|
-
# vars:
|
312
|
-
# :user_group : currently, only 'all' is supported.
|
311
|
+
# vars:
|
312
|
+
# :user_group : currently, only 'all' is supported.
|
313
313
|
# :user_id
|
314
314
|
# :product_code
|
315
315
|
def modify_image_attribute(image_id, attribute, operation_type = nil, vars = {})
|
@@ -342,7 +342,7 @@ module Aws
|
|
342
342
|
modify_image_attribute(image_id, 'launchPermission', 'remove', :user_id => user_id.to_a)
|
343
343
|
end
|
344
344
|
|
345
|
-
# Add image launch permissions for users groups (currently only 'all' is supported, which gives public launch permissions).
|
345
|
+
# Add image launch permissions for users groups (currently only 'all' is supported, which gives public launch permissions).
|
346
346
|
# Returns +true+ or an exception.
|
347
347
|
#
|
348
348
|
# ec2.modify_image_launch_perm_add_groups('ami-e444444d') #=> true
|
@@ -350,15 +350,15 @@ module Aws
|
|
350
350
|
def modify_image_launch_perm_add_groups(image_id, user_group=['all'])
|
351
351
|
modify_image_attribute(image_id, 'launchPermission', 'add', :user_group => user_group.to_a)
|
352
352
|
end
|
353
|
-
|
354
|
-
# Remove image launch permissions for users groups (currently only 'all' is supported, which gives public launch permissions).
|
353
|
+
|
354
|
+
# Remove image launch permissions for users groups (currently only 'all' is supported, which gives public launch permissions).
|
355
355
|
#
|
356
356
|
# ec2.modify_image_launch_perm_remove_groups('ami-e444444d') #=> true
|
357
357
|
#
|
358
358
|
def modify_image_launch_perm_remove_groups(image_id, user_group=['all'])
|
359
359
|
modify_image_attribute(image_id, 'launchPermission', 'remove', :user_group => user_group.to_a)
|
360
360
|
end
|
361
|
-
|
361
|
+
|
362
362
|
# Add product code to image
|
363
363
|
#
|
364
364
|
# ec2.modify_image_product_code('ami-e444444d','0ABCDEF') #=> true
|
@@ -370,7 +370,7 @@ module Aws
|
|
370
370
|
#-----------------------------------------------------------------
|
371
371
|
# Instances
|
372
372
|
#-----------------------------------------------------------------
|
373
|
-
|
373
|
+
|
374
374
|
def get_desc_instances(instances) # :nodoc:
|
375
375
|
result = []
|
376
376
|
instances.each do |reservation|
|
@@ -388,11 +388,11 @@ module Aws
|
|
388
388
|
rescue Exception
|
389
389
|
on_exception
|
390
390
|
end
|
391
|
-
|
391
|
+
|
392
392
|
# Retrieve information about EC2 instances. If +list+ is omitted then returns the
|
393
393
|
# list of all instances.
|
394
394
|
#
|
395
|
-
# ec2.describe_instances #=>
|
395
|
+
# ec2.describe_instances #=>
|
396
396
|
# [{:aws_image_id => "ami-e444444d",
|
397
397
|
# :aws_reason => "",
|
398
398
|
# :aws_state_code => "16",
|
@@ -409,6 +409,7 @@ module Aws
|
|
409
409
|
# :aws_availability_zone => "us-east-1b",
|
410
410
|
# :aws_kernel_id => "aki-ba3adfd3",
|
411
411
|
# :aws_ramdisk_id => "ari-badbad00",
|
412
|
+
# :monitoring_state => ...,
|
412
413
|
# ..., {...}]
|
413
414
|
#
|
414
415
|
def describe_instances(list=[])
|
@@ -419,7 +420,7 @@ module Aws
|
|
419
420
|
rescue Exception
|
420
421
|
on_exception
|
421
422
|
end
|
422
|
-
|
423
|
+
|
423
424
|
# Return the product code attached to instance or +nil+ otherwise.
|
424
425
|
#
|
425
426
|
# ec2.confirm_product_instance('ami-e444444d','12345678') #=> nil
|
@@ -430,7 +431,7 @@ module Aws
|
|
430
431
|
'InstanceId' => instance })
|
431
432
|
request_info(link, QEc2ConfirmProductInstanceParser.new(:logger => @logger))
|
432
433
|
end
|
433
|
-
|
434
|
+
|
434
435
|
# Launch new EC2 instances. Returns a list of launched instances or an exception.
|
435
436
|
#
|
436
437
|
# ec2.run_instances('ami-e444444d',1,1,['my_awesome_group'],'my_awesome_key', 'Woohoo!!!', 'public') #=>
|
@@ -453,82 +454,84 @@ module Aws
|
|
453
454
|
# :aws_availability_zone => "us-east-1b"
|
454
455
|
# }]
|
455
456
|
#
|
456
|
-
def run_instances(image_id, min_count, max_count, group_ids, key_name, user_data='',
|
457
|
+
def run_instances(image_id, min_count, max_count, group_ids, key_name, user_data='',
|
457
458
|
addressing_type = nil, instance_type = nil,
|
458
|
-
kernel_id = nil, ramdisk_id = nil, availability_zone = nil,
|
459
|
-
block_device_mappings = nil)
|
460
|
-
launch_instances(image_id, { :min_count => min_count,
|
461
|
-
:max_count => max_count,
|
462
|
-
:user_data => user_data,
|
463
|
-
:group_ids => group_ids,
|
464
|
-
:key_name => key_name,
|
465
|
-
:instance_type => instance_type,
|
459
|
+
kernel_id = nil, ramdisk_id = nil, availability_zone = nil,
|
460
|
+
block_device_mappings = nil)
|
461
|
+
launch_instances(image_id, { :min_count => min_count,
|
462
|
+
:max_count => max_count,
|
463
|
+
:user_data => user_data,
|
464
|
+
:group_ids => group_ids,
|
465
|
+
:key_name => key_name,
|
466
|
+
:instance_type => instance_type,
|
466
467
|
:addressing_type => addressing_type,
|
467
468
|
:kernel_id => kernel_id,
|
468
469
|
:ramdisk_id => ramdisk_id,
|
469
470
|
:availability_zone => availability_zone,
|
470
471
|
:block_device_mappings => block_device_mappings
|
471
|
-
})
|
472
|
+
})
|
472
473
|
end
|
473
|
-
|
474
|
-
|
475
|
-
# Launch new EC2 instances. Returns a list of launched instances or an exception.
|
474
|
+
|
475
|
+
|
476
|
+
# Launch new EC2 instances. Returns a list of launched instances or an exception.
|
476
477
|
#
|
477
478
|
# +lparams+ keys (default values in parenthesis):
|
478
479
|
# :min_count fixnum, (1)
|
479
480
|
# :max_count fixnum, (1)
|
480
481
|
# :group_ids array or string ([] == 'default')
|
481
482
|
# :instance_type string (DEFAULT_INSTACE_TYPE)
|
482
|
-
# :addressing_type string (DEFAULT_ADDRESSING_TYPE
|
483
|
+
# :addressing_type string (DEFAULT_ADDRESSING_TYPE
|
483
484
|
# :key_name string
|
484
485
|
# :kernel_id string
|
485
|
-
# :ramdisk_id string
|
486
|
+
# :ramdisk_id string
|
486
487
|
# :availability_zone string
|
487
488
|
# :block_device_mappings string
|
488
489
|
# :user_data string
|
489
|
-
#
|
490
|
-
#
|
491
|
-
#
|
492
|
-
# :
|
493
|
-
# :
|
494
|
-
# :
|
495
|
-
#
|
496
|
-
#
|
497
|
-
# :
|
498
|
-
# :
|
499
|
-
# :
|
500
|
-
# :
|
501
|
-
# :
|
502
|
-
# :
|
503
|
-
# :
|
504
|
-
# :
|
505
|
-
# :
|
490
|
+
# :monitoring_enabled boolean (default=false)
|
491
|
+
#
|
492
|
+
# ec2.launch_instances('ami-e444444d', :group_ids => 'my_awesome_group',
|
493
|
+
# :user_data => "Woohoo!!!",
|
494
|
+
# :addressing_type => "public",
|
495
|
+
# :key_name => "my_awesome_key",
|
496
|
+
# :availability_zone => "us-east-1c") #=>
|
497
|
+
# [{:aws_image_id => "ami-e444444d",
|
498
|
+
# :aws_reason => "",
|
499
|
+
# :aws_state_code => "0",
|
500
|
+
# :aws_owner => "000000000888",
|
501
|
+
# :aws_instance_id => "i-123f1234",
|
502
|
+
# :aws_reservation_id => "r-aabbccdd",
|
503
|
+
# :aws_state => "pending",
|
504
|
+
# :dns_name => "",
|
505
|
+
# :ssh_key_name => "my_awesome_key",
|
506
|
+
# :aws_groups => ["my_awesome_group"],
|
507
|
+
# :private_dns_name => "",
|
506
508
|
# :aws_instance_type => "m1.small",
|
507
509
|
# :aws_launch_time => "2008-1-1T00:00:00.000Z",
|
508
510
|
# :aws_ramdisk_id => "ari-8605e0ef"
|
509
511
|
# :aws_kernel_id => "aki-9905e0f0",
|
510
512
|
# :ami_launch_index => "0",
|
511
513
|
# :aws_availability_zone => "us-east-1c"
|
512
|
-
# }]
|
513
|
-
#
|
514
|
-
def launch_instances(image_id, lparams={})
|
515
|
-
@logger.info("Launching instance of image #{image_id} for #{@aws_access_key_id}, " +
|
514
|
+
# }]
|
515
|
+
#
|
516
|
+
def launch_instances(image_id, lparams={})
|
517
|
+
@logger.info("Launching instance of image #{image_id} for #{@aws_access_key_id}, " +
|
516
518
|
"key: #{lparams[:key_name]}, groups: #{(lparams[:group_ids]).to_a.join(',')}")
|
517
519
|
# careful: keyName and securityGroups may be nil
|
518
520
|
params = hash_params('SecurityGroup', lparams[:group_ids].to_a)
|
519
521
|
params.update( {'ImageId' => image_id,
|
520
|
-
'MinCount' => (lparams[:min_count] || 1).to_s,
|
521
|
-
'MaxCount' => (lparams[:max_count] || 1).to_s,
|
522
|
-
'AddressingType' => lparams[:addressing_type] || DEFAULT_ADDRESSING_TYPE,
|
522
|
+
'MinCount' => (lparams[:min_count] || 1).to_s,
|
523
|
+
'MaxCount' => (lparams[:max_count] || 1).to_s,
|
524
|
+
'AddressingType' => lparams[:addressing_type] || DEFAULT_ADDRESSING_TYPE,
|
523
525
|
'InstanceType' => lparams[:instance_type] || DEFAULT_INSTANCE_TYPE })
|
524
526
|
# optional params
|
525
|
-
params['KeyName'] = lparams[:key_name] unless lparams[:key_name].blank?
|
526
|
-
params['KernelId'] = lparams[:kernel_id] unless lparams[:kernel_id].blank?
|
527
|
-
params['RamdiskId'] = lparams[:ramdisk_id] unless lparams[:ramdisk_id].blank?
|
528
|
-
params['Placement.AvailabilityZone'] = lparams[:availability_zone] unless lparams[:availability_zone].blank?
|
527
|
+
params['KeyName'] = lparams[:key_name] unless lparams[:key_name].blank?
|
528
|
+
params['KernelId'] = lparams[:kernel_id] unless lparams[:kernel_id].blank?
|
529
|
+
params['RamdiskId'] = lparams[:ramdisk_id] unless lparams[:ramdisk_id].blank?
|
530
|
+
params['Placement.AvailabilityZone'] = lparams[:availability_zone] unless lparams[:availability_zone].blank?
|
529
531
|
params['BlockDeviceMappings'] = lparams[:block_device_mappings] unless lparams[:block_device_mappings].blank?
|
530
|
-
unless lparams[:
|
531
|
-
|
532
|
+
params['Monitoring.Enabled'] = lparams[:monitoring_enabled] unless lparams[:monitoring_enabled].blank?
|
533
|
+
unless lparams[:user_data].blank?
|
534
|
+
lparams[:user_data].strip!
|
532
535
|
# Do not use CGI::escape(encode64(...)) as it is done in Amazons EC2 library.
|
533
536
|
# Amazon 169.254.169.254 does not like escaped symbols!
|
534
537
|
# And it doesn't like "\n" inside of encoded string! Grrr....
|
@@ -542,19 +545,26 @@ module Aws
|
|
542
545
|
rescue Exception
|
543
546
|
on_exception
|
544
547
|
end
|
545
|
-
|
548
|
+
|
549
|
+
def monitor_instances(list=[])
|
550
|
+
link = generate_request("MonitorInstances", hash_params('InstanceId',list.to_a))
|
551
|
+
request_info(link, QEc2TerminateInstancesParser.new(:logger => @logger))
|
552
|
+
rescue Exception
|
553
|
+
on_exception
|
554
|
+
end
|
555
|
+
|
546
556
|
# Terminates EC2 instances. Returns a list of termination params or an exception.
|
547
557
|
#
|
548
558
|
# ec2.terminate_instances(['i-f222222d','i-f222222e']) #=>
|
549
|
-
# [{:aws_shutdown_state => "shutting-down",
|
550
|
-
# :aws_instance_id => "i-f222222d",
|
551
|
-
# :aws_shutdown_state_code => 32,
|
552
|
-
# :aws_prev_state => "running",
|
553
|
-
# :aws_prev_state_code => 16},
|
554
|
-
# {:aws_shutdown_state => "shutting-down",
|
555
|
-
# :aws_instance_id => "i-f222222e",
|
556
|
-
# :aws_shutdown_state_code => 32,
|
557
|
-
# :aws_prev_state => "running",
|
559
|
+
# [{:aws_shutdown_state => "shutting-down",
|
560
|
+
# :aws_instance_id => "i-f222222d",
|
561
|
+
# :aws_shutdown_state_code => 32,
|
562
|
+
# :aws_prev_state => "running",
|
563
|
+
# :aws_prev_state_code => 16},
|
564
|
+
# {:aws_shutdown_state => "shutting-down",
|
565
|
+
# :aws_instance_id => "i-f222222e",
|
566
|
+
# :aws_shutdown_state_code => 32,
|
567
|
+
# :aws_prev_state => "running",
|
558
568
|
# :aws_prev_state_code => 16}]
|
559
569
|
#
|
560
570
|
def terminate_instances(list=[])
|
@@ -592,7 +602,7 @@ module Aws
|
|
592
602
|
#-----------------------------------------------------------------
|
593
603
|
# Instances: Windows addons
|
594
604
|
#-----------------------------------------------------------------
|
595
|
-
|
605
|
+
|
596
606
|
# Get initial Windows Server setup password from an instance console output.
|
597
607
|
#
|
598
608
|
# my_awesome_key = ec2.create_key_pair('my_awesome_key') #=>
|
@@ -638,7 +648,7 @@ module Aws
|
|
638
648
|
# :aws_instance_id => "i-878a25ee",
|
639
649
|
# :aws_start_time => "2008-10-16T13:58:02.000Z"}]
|
640
650
|
#
|
641
|
-
def bundle_instance(instance_id, s3_bucket, s3_prefix,
|
651
|
+
def bundle_instance(instance_id, s3_bucket, s3_prefix,
|
642
652
|
s3_owner_aws_access_key_id=nil, s3_owner_aws_secret_access_key=nil,
|
643
653
|
s3_expires = S3Interface::DEFAULT_EXPIRES_AFTER,
|
644
654
|
s3_upload_policy='ec2-bundle-read')
|
@@ -666,7 +676,7 @@ module Aws
|
|
666
676
|
rescue Exception
|
667
677
|
on_exception
|
668
678
|
end
|
669
|
-
|
679
|
+
|
670
680
|
# Describe the status of the Windows AMI bundlings.
|
671
681
|
# If +list+ is omitted the returns the whole list of tasks.
|
672
682
|
#
|
@@ -731,7 +741,7 @@ module Aws
|
|
731
741
|
def describe_security_groups(list=[])
|
732
742
|
link = generate_request("DescribeSecurityGroups", hash_params('GroupName',list.to_a))
|
733
743
|
request_cache_or_info( :describe_security_groups, link, QEc2DescribeSecurityGroupsParser, @@bench, list.blank?) do |parser|
|
734
|
-
result = []
|
744
|
+
result = []
|
735
745
|
parser.result.each do |item|
|
736
746
|
perms = []
|
737
747
|
item.ipPermissions.each do |perm|
|
@@ -740,8 +750,8 @@ module Aws
|
|
740
750
|
:owner => ngroup.userId}
|
741
751
|
end
|
742
752
|
perm.ipRanges.each do |cidr_ip|
|
743
|
-
perms << {:from_port => perm.fromPort,
|
744
|
-
:to_port => perm.toPort,
|
753
|
+
perms << {:from_port => perm.fromPort,
|
754
|
+
:to_port => perm.toPort,
|
745
755
|
:protocol => perm.ipProtocol,
|
746
756
|
:cidr_ips => cidr_ip}
|
747
757
|
end
|
@@ -755,18 +765,18 @@ module Aws
|
|
755
765
|
end
|
756
766
|
perms.compact!
|
757
767
|
|
758
|
-
result << {:aws_owner => item.ownerId,
|
759
|
-
:aws_group_name => item.groupName,
|
768
|
+
result << {:aws_owner => item.ownerId,
|
769
|
+
:aws_group_name => item.groupName,
|
760
770
|
:aws_description => item.groupDescription,
|
761
771
|
:aws_perms => perms}
|
762
|
-
|
772
|
+
|
763
773
|
end
|
764
774
|
result
|
765
775
|
end
|
766
776
|
rescue Exception
|
767
777
|
on_exception
|
768
778
|
end
|
769
|
-
|
779
|
+
|
770
780
|
# Create new Security Group. Returns +true+ or an exception.
|
771
781
|
#
|
772
782
|
# ec2.create_security_group('default-1',"Default allowing SSH, HTTP, and HTTPS ingress") #=> true
|
@@ -774,7 +784,7 @@ module Aws
|
|
774
784
|
def create_security_group(name, description)
|
775
785
|
# EC2 doesn't like an empty description...
|
776
786
|
description = " " if description.blank?
|
777
|
-
link = generate_request("CreateSecurityGroup",
|
787
|
+
link = generate_request("CreateSecurityGroup",
|
778
788
|
'GroupName' => name.to_s,
|
779
789
|
'GroupDescription' => description.to_s)
|
780
790
|
request_info(link, RightBoolResponseParser.new(:logger => @logger))
|
@@ -787,20 +797,20 @@ module Aws
|
|
787
797
|
# ec2.delete_security_group('default-1') #=> true
|
788
798
|
#
|
789
799
|
def delete_security_group(name)
|
790
|
-
link = generate_request("DeleteSecurityGroup",
|
800
|
+
link = generate_request("DeleteSecurityGroup",
|
791
801
|
'GroupName' => name.to_s)
|
792
802
|
request_info(link, RightBoolResponseParser.new(:logger => @logger))
|
793
803
|
rescue Exception
|
794
804
|
on_exception
|
795
805
|
end
|
796
|
-
|
806
|
+
|
797
807
|
# Authorize named ingress for security group. Allows instances that are member of someone
|
798
808
|
# else's security group to open connections to instances in my group.
|
799
809
|
#
|
800
810
|
# ec2.authorize_security_group_named_ingress('my_awesome_group', '7011-0219-8268', 'their_group_name') #=> true
|
801
811
|
#
|
802
812
|
def authorize_security_group_named_ingress(name, owner, group)
|
803
|
-
link = generate_request("AuthorizeSecurityGroupIngress",
|
813
|
+
link = generate_request("AuthorizeSecurityGroupIngress",
|
804
814
|
'GroupName' => name.to_s,
|
805
815
|
'SourceSecurityGroupName' => group.to_s,
|
806
816
|
'SourceSecurityGroupOwnerId' => owner.to_s.gsub(/-/,''))
|
@@ -808,13 +818,13 @@ module Aws
|
|
808
818
|
rescue Exception
|
809
819
|
on_exception
|
810
820
|
end
|
811
|
-
|
821
|
+
|
812
822
|
# Revoke named ingress for security group.
|
813
823
|
#
|
814
824
|
# ec2.revoke_security_group_named_ingress('my_awesome_group', aws_user_id, 'another_group_name') #=> true
|
815
825
|
#
|
816
826
|
def revoke_security_group_named_ingress(name, owner, group)
|
817
|
-
link = generate_request("RevokeSecurityGroupIngress",
|
827
|
+
link = generate_request("RevokeSecurityGroupIngress",
|
818
828
|
'GroupName' => name.to_s,
|
819
829
|
'SourceSecurityGroupName' => group.to_s,
|
820
830
|
'SourceSecurityGroupOwnerId' => owner.to_s.gsub(/-/,''))
|
@@ -822,14 +832,14 @@ module Aws
|
|
822
832
|
rescue Exception
|
823
833
|
on_exception
|
824
834
|
end
|
825
|
-
|
835
|
+
|
826
836
|
# Add permission to a security group. Returns +true+ or an exception. +protocol+ is one of :'tcp'|'udp'|'icmp'.
|
827
837
|
#
|
828
838
|
# ec2.authorize_security_group_IP_ingress('my_awesome_group', 80, 82, 'udp', '192.168.1.0/8') #=> true
|
829
839
|
# ec2.authorize_security_group_IP_ingress('my_awesome_group', -1, -1, 'icmp') #=> true
|
830
840
|
#
|
831
841
|
def authorize_security_group_IP_ingress(name, from_port, to_port, protocol='tcp', cidr_ip='0.0.0.0/0')
|
832
|
-
link = generate_request("AuthorizeSecurityGroupIngress",
|
842
|
+
link = generate_request("AuthorizeSecurityGroupIngress",
|
833
843
|
'GroupName' => name.to_s,
|
834
844
|
'IpProtocol' => protocol.to_s,
|
835
845
|
'FromPort' => from_port.to_s,
|
@@ -839,13 +849,13 @@ module Aws
|
|
839
849
|
rescue Exception
|
840
850
|
on_exception
|
841
851
|
end
|
842
|
-
|
843
|
-
# Remove permission from a security group. Returns +true+ or an exception. +protocol+ is one of :'tcp'|'udp'|'icmp' ('tcp' is default).
|
852
|
+
|
853
|
+
# Remove permission from a security group. Returns +true+ or an exception. +protocol+ is one of :'tcp'|'udp'|'icmp' ('tcp' is default).
|
844
854
|
#
|
845
855
|
# ec2.revoke_security_group_IP_ingress('my_awesome_group', 80, 82, 'udp', '192.168.1.0/8') #=> true
|
846
856
|
#
|
847
857
|
def revoke_security_group_IP_ingress(name, from_port, to_port, protocol='tcp', cidr_ip='0.0.0.0/0')
|
848
|
-
link = generate_request("RevokeSecurityGroupIngress",
|
858
|
+
link = generate_request("RevokeSecurityGroupIngress",
|
849
859
|
'GroupName' => name.to_s,
|
850
860
|
'IpProtocol' => protocol.to_s,
|
851
861
|
'FromPort' => from_port.to_s,
|
@@ -859,7 +869,7 @@ module Aws
|
|
859
869
|
#-----------------------------------------------------------------
|
860
870
|
# Keys
|
861
871
|
#-----------------------------------------------------------------
|
862
|
-
|
872
|
+
|
863
873
|
# Retrieve a list of SSH keys. Returns an array of keys or an exception. Each key is
|
864
874
|
# represented as a two-element hash.
|
865
875
|
#
|
@@ -874,7 +884,7 @@ module Aws
|
|
874
884
|
rescue Exception
|
875
885
|
on_exception
|
876
886
|
end
|
877
|
-
|
887
|
+
|
878
888
|
# Create new SSH key. Returns a hash of the key's data or an exception.
|
879
889
|
#
|
880
890
|
# ec2.create_key_pair('my_awesome_key') #=>
|
@@ -883,7 +893,7 @@ module Aws
|
|
883
893
|
# :aws_material => "-----BEGIN RSA PRIVATE KEY-----\nMIIEpQIBAAK...Q8MDrCbuQ=\n-----END RSA PRIVATE KEY-----"}
|
884
894
|
#
|
885
895
|
def create_key_pair(name)
|
886
|
-
link = generate_request("CreateKeyPair",
|
896
|
+
link = generate_request("CreateKeyPair",
|
887
897
|
'KeyName' => name.to_s)
|
888
898
|
request_info(link, QEc2CreateKeyPairParser.new(:logger => @logger))
|
889
899
|
rescue Exception
|
@@ -895,13 +905,13 @@ module Aws
|
|
895
905
|
# ec2.delete_key_pair('my_awesome_key') #=> true
|
896
906
|
#
|
897
907
|
def delete_key_pair(name)
|
898
|
-
link = generate_request("DeleteKeyPair",
|
908
|
+
link = generate_request("DeleteKeyPair",
|
899
909
|
'KeyName' => name.to_s)
|
900
910
|
request_info(link, RightBoolResponseParser.new(:logger => @logger))
|
901
911
|
rescue Exception
|
902
912
|
on_exception
|
903
913
|
end
|
904
|
-
|
914
|
+
|
905
915
|
#-----------------------------------------------------------------
|
906
916
|
# Elastic IPs
|
907
917
|
#-----------------------------------------------------------------
|
@@ -924,7 +934,7 @@ module Aws
|
|
924
934
|
# ec2.associate_address('i-d630cbbf', '75.101.154.140') #=> true
|
925
935
|
#
|
926
936
|
def associate_address(instance_id, public_ip)
|
927
|
-
link = generate_request("AssociateAddress",
|
937
|
+
link = generate_request("AssociateAddress",
|
928
938
|
"InstanceId" => instance_id.to_s,
|
929
939
|
"PublicIp" => public_ip.to_s)
|
930
940
|
request_info(link, RightBoolResponseParser.new(:logger => @logger))
|
@@ -941,7 +951,7 @@ module Aws
|
|
941
951
|
# ec2.describe_addresses('75.101.154.140') #=> [{:instance_id=>"i-d630cbbf", :public_ip=>"75.101.154.140"}]
|
942
952
|
#
|
943
953
|
def describe_addresses(list=[])
|
944
|
-
link = generate_request("DescribeAddresses",
|
954
|
+
link = generate_request("DescribeAddresses",
|
945
955
|
hash_params('PublicIp',list.to_a))
|
946
956
|
request_cache_or_info :describe_addresses, link, QEc2DescribeAddressesParser, @@bench, list.blank?
|
947
957
|
rescue Exception
|
@@ -950,11 +960,11 @@ module Aws
|
|
950
960
|
|
951
961
|
# Disassociate the specified elastic IP address from the instance to which it is assigned.
|
952
962
|
# Returns +true+ or an exception.
|
953
|
-
#
|
963
|
+
#
|
954
964
|
# ec2.disassociate_address('75.101.154.140') #=> true
|
955
965
|
#
|
956
966
|
def disassociate_address(public_ip)
|
957
|
-
link = generate_request("DisassociateAddress",
|
967
|
+
link = generate_request("DisassociateAddress",
|
958
968
|
"PublicIp" => public_ip.to_s)
|
959
969
|
request_info(link, RightBoolResponseParser.new(:logger => @logger))
|
960
970
|
rescue Exception
|
@@ -967,7 +977,7 @@ module Aws
|
|
967
977
|
# ec2.release_address('75.101.154.140') #=> true
|
968
978
|
#
|
969
979
|
def release_address(public_ip)
|
970
|
-
link = generate_request("ReleaseAddress",
|
980
|
+
link = generate_request("ReleaseAddress",
|
971
981
|
"PublicIp" => public_ip.to_s)
|
972
982
|
request_info(link, RightBoolResponseParser.new(:logger => @logger))
|
973
983
|
rescue Exception
|
@@ -977,7 +987,7 @@ module Aws
|
|
977
987
|
#-----------------------------------------------------------------
|
978
988
|
# Availability zones
|
979
989
|
#-----------------------------------------------------------------
|
980
|
-
|
990
|
+
|
981
991
|
# Describes availability zones that are currently available to the account and their states.
|
982
992
|
# Returns an array of 2 keys (:zone_name and :zone_state) hashes:
|
983
993
|
#
|
@@ -985,12 +995,12 @@ module Aws
|
|
985
995
|
# :zone_name=>"us-east-1a",
|
986
996
|
# :zone_state=>"available"}, ... ]
|
987
997
|
#
|
988
|
-
# ec2.describe_availability_zones('us-east-1c') #=> [{:region_name=>"us-east-1",
|
998
|
+
# ec2.describe_availability_zones('us-east-1c') #=> [{:region_name=>"us-east-1",
|
989
999
|
# :zone_state=>"available",
|
990
1000
|
# :zone_name=>"us-east-1c"}]
|
991
1001
|
#
|
992
1002
|
def describe_availability_zones(list=[])
|
993
|
-
link = generate_request("DescribeAvailabilityZones",
|
1003
|
+
link = generate_request("DescribeAvailabilityZones",
|
994
1004
|
hash_params('ZoneName',list.to_a))
|
995
1005
|
request_cache_or_info :describe_availability_zones, link, QEc2DescribeAvailabilityZonesParser, @@bench, list.blank?
|
996
1006
|
rescue Exception
|
@@ -1017,10 +1027,10 @@ module Aws
|
|
1017
1027
|
#-----------------------------------------------------------------
|
1018
1028
|
# EBS: Volumes
|
1019
1029
|
#-----------------------------------------------------------------
|
1020
|
-
|
1030
|
+
|
1021
1031
|
# Describe all EBS volumes.
|
1022
1032
|
#
|
1023
|
-
# ec2.describe_volumes #=>
|
1033
|
+
# ec2.describe_volumes #=>
|
1024
1034
|
# [{:aws_size => 94,
|
1025
1035
|
# :aws_device => "/dev/sdc",
|
1026
1036
|
# :aws_attachment_status => "attached",
|
@@ -1039,17 +1049,17 @@ module Aws
|
|
1039
1049
|
# :aws_created_at => Wed Jun 18 08:19:21 UTC 2008,}, ... ]
|
1040
1050
|
#
|
1041
1051
|
def describe_volumes(list=[])
|
1042
|
-
link = generate_request("DescribeVolumes",
|
1052
|
+
link = generate_request("DescribeVolumes",
|
1043
1053
|
hash_params('VolumeId',list.to_a))
|
1044
1054
|
request_cache_or_info :describe_volumes, link, QEc2DescribeVolumesParser, @@bench, list.blank?
|
1045
1055
|
rescue Exception
|
1046
1056
|
on_exception
|
1047
1057
|
end
|
1048
|
-
|
1049
|
-
# Create new EBS volume based on previously created snapshot.
|
1058
|
+
|
1059
|
+
# Create new EBS volume based on previously created snapshot.
|
1050
1060
|
# +Size+ in Gigabytes.
|
1051
1061
|
#
|
1052
|
-
# ec2.create_volume('snap-000000', 10, zone) #=>
|
1062
|
+
# ec2.create_volume('snap-000000', 10, zone) #=>
|
1053
1063
|
# {:snapshot_id => "snap-e21df98b",
|
1054
1064
|
# :aws_status => "creating",
|
1055
1065
|
# :aws_id => "vol-fc9f7a95",
|
@@ -1058,7 +1068,7 @@ module Aws
|
|
1058
1068
|
# :aws_size => 94}
|
1059
1069
|
#
|
1060
1070
|
def create_volume(snapshot_id, size, zone)
|
1061
|
-
link = generate_request("CreateVolume",
|
1071
|
+
link = generate_request("CreateVolume",
|
1062
1072
|
"SnapshotId" => snapshot_id.to_s,
|
1063
1073
|
"Size" => size.to_s,
|
1064
1074
|
"AvailabilityZone" => zone.to_s )
|
@@ -1067,19 +1077,19 @@ module Aws
|
|
1067
1077
|
on_exception
|
1068
1078
|
end
|
1069
1079
|
|
1070
|
-
# Delete the specified EBS volume.
|
1080
|
+
# Delete the specified EBS volume.
|
1071
1081
|
# This does not deletes any snapshots created from this volume.
|
1072
1082
|
#
|
1073
1083
|
# ec2.delete_volume('vol-b48a6fdd') #=> true
|
1074
1084
|
#
|
1075
1085
|
def delete_volume(volume_id)
|
1076
|
-
link = generate_request("DeleteVolume",
|
1086
|
+
link = generate_request("DeleteVolume",
|
1077
1087
|
"VolumeId" => volume_id.to_s)
|
1078
1088
|
request_info(link, RightBoolResponseParser.new(:logger => @logger))
|
1079
1089
|
rescue Exception
|
1080
1090
|
on_exception
|
1081
1091
|
end
|
1082
|
-
|
1092
|
+
|
1083
1093
|
# Attach the specified EBS volume to a specified instance, exposing the
|
1084
1094
|
# volume using the specified device name.
|
1085
1095
|
#
|
@@ -1091,7 +1101,7 @@ module Aws
|
|
1091
1101
|
# :aws_id => "vol-898a6fe0" }
|
1092
1102
|
#
|
1093
1103
|
def attach_volume(volume_id, instance_id, device)
|
1094
|
-
link = generate_request("AttachVolume",
|
1104
|
+
link = generate_request("AttachVolume",
|
1095
1105
|
"VolumeId" => volume_id.to_s,
|
1096
1106
|
"InstanceId" => instance_id.to_s,
|
1097
1107
|
"Device" => device.to_s)
|
@@ -1099,10 +1109,10 @@ module Aws
|
|
1099
1109
|
rescue Exception
|
1100
1110
|
on_exception
|
1101
1111
|
end
|
1102
|
-
|
1112
|
+
|
1103
1113
|
# Detach the specified EBS volume from the instance to which it is attached.
|
1104
|
-
#
|
1105
|
-
# ec2.detach_volume('vol-898a6fe0') #=>
|
1114
|
+
#
|
1115
|
+
# ec2.detach_volume('vol-898a6fe0') #=>
|
1106
1116
|
# { :aws_instance_id => "i-7c905415",
|
1107
1117
|
# :aws_device => "/dev/sdh",
|
1108
1118
|
# :aws_status => "detaching",
|
@@ -1121,14 +1131,14 @@ module Aws
|
|
1121
1131
|
on_exception
|
1122
1132
|
end
|
1123
1133
|
|
1124
|
-
|
1134
|
+
|
1125
1135
|
#-----------------------------------------------------------------
|
1126
1136
|
# EBS: Snapshots
|
1127
1137
|
#-----------------------------------------------------------------
|
1128
1138
|
|
1129
1139
|
# Describe all EBS snapshots.
|
1130
1140
|
#
|
1131
|
-
# ec2.describe_snapshots #=>
|
1141
|
+
# ec2.describe_snapshots #=>
|
1132
1142
|
# [ { :aws_progress => "100%",
|
1133
1143
|
# :aws_status => "completed",
|
1134
1144
|
# :aws_id => "snap-72a5401b",
|
@@ -1141,7 +1151,7 @@ module Aws
|
|
1141
1151
|
# :aws_started_at => "2008-02-23T16:23:19.000Z" },...]
|
1142
1152
|
#
|
1143
1153
|
def describe_snapshots(list=[])
|
1144
|
-
link = generate_request("DescribeSnapshots",
|
1154
|
+
link = generate_request("DescribeSnapshots",
|
1145
1155
|
hash_params('SnapshotId',list.to_a))
|
1146
1156
|
request_cache_or_info :describe_snapshots, link, QEc2DescribeSnapshotsParser, @@bench, list.blank?
|
1147
1157
|
rescue Exception
|
@@ -1150,7 +1160,7 @@ module Aws
|
|
1150
1160
|
|
1151
1161
|
# Create a snapshot of specified volume.
|
1152
1162
|
#
|
1153
|
-
# ec2.create_snapshot('vol-898a6fe0') #=>
|
1163
|
+
# ec2.create_snapshot('vol-898a6fe0') #=>
|
1154
1164
|
# {:aws_volume_id => "vol-fd9f7a94",
|
1155
1165
|
# :aws_started_at => Tue Jun 24 18:40:40 UTC 2008,
|
1156
1166
|
# :aws_progress => "",
|
@@ -1158,19 +1168,19 @@ module Aws
|
|
1158
1168
|
# :aws_id => "snap-d56783bc"}
|
1159
1169
|
#
|
1160
1170
|
def create_snapshot(volume_id)
|
1161
|
-
link = generate_request("CreateSnapshot",
|
1171
|
+
link = generate_request("CreateSnapshot",
|
1162
1172
|
"VolumeId" => volume_id.to_s)
|
1163
1173
|
request_info(link, QEc2CreateSnapshotParser.new(:logger => @logger))
|
1164
1174
|
rescue Exception
|
1165
1175
|
on_exception
|
1166
1176
|
end
|
1167
|
-
|
1177
|
+
|
1168
1178
|
# Create a snapshot of specified volume, but with the normal retry algorithms disabled.
|
1169
1179
|
# This method will return immediately upon error. The user can specify connect and read timeouts (in s)
|
1170
1180
|
# for the connection to AWS. If the user does not specify timeouts, try_create_snapshot uses the default values
|
1171
1181
|
# in Rightscale::HttpConnection.
|
1172
1182
|
#
|
1173
|
-
# ec2.try_create_snapshot('vol-898a6fe0') #=>
|
1183
|
+
# ec2.try_create_snapshot('vol-898a6fe0') #=>
|
1174
1184
|
# {:aws_volume_id => "vol-fd9f7a94",
|
1175
1185
|
# :aws_started_at => Tue Jun 24 18:40:40 UTC 2008,
|
1176
1186
|
# :aws_progress => "",
|
@@ -1178,25 +1188,25 @@ module Aws
|
|
1178
1188
|
# :aws_id => "snap-d56783bc"}
|
1179
1189
|
#
|
1180
1190
|
def try_create_snapshot(volume_id, connect_timeout = nil, read_timeout = nil)
|
1181
|
-
# For safety in the ensure block...we don't want to restore values
|
1191
|
+
# For safety in the ensure block...we don't want to restore values
|
1182
1192
|
# if we never read them in the first place
|
1183
1193
|
orig_reiteration_time = nil
|
1184
1194
|
orig_http_params = nil
|
1185
|
-
|
1195
|
+
|
1186
1196
|
orig_reiteration_time = Aws::AWSErrorHandler::reiteration_time
|
1187
1197
|
Aws::AWSErrorHandler::reiteration_time = 0
|
1188
|
-
|
1198
|
+
|
1189
1199
|
orig_http_params = Rightscale::HttpConnection::params()
|
1190
1200
|
new_http_params = orig_http_params.dup
|
1191
1201
|
new_http_params[:http_connection_retry_count] = 0
|
1192
1202
|
new_http_params[:http_connection_open_timeout] = connect_timeout if !connect_timeout.nil?
|
1193
1203
|
new_http_params[:http_connection_read_timeout] = read_timeout if !read_timeout.nil?
|
1194
1204
|
Rightscale::HttpConnection::params = new_http_params
|
1195
|
-
|
1196
|
-
link = generate_request("CreateSnapshot",
|
1205
|
+
|
1206
|
+
link = generate_request("CreateSnapshot",
|
1197
1207
|
"VolumeId" => volume_id.to_s)
|
1198
1208
|
request_info(link, QEc2CreateSnapshotParser.new(:logger => @logger))
|
1199
|
-
|
1209
|
+
|
1200
1210
|
rescue Exception
|
1201
1211
|
on_exception
|
1202
1212
|
ensure
|
@@ -1209,17 +1219,17 @@ module Aws
|
|
1209
1219
|
# ec2.delete_snapshot('snap-55a5403c') #=> true
|
1210
1220
|
#
|
1211
1221
|
def delete_snapshot(snapshot_id)
|
1212
|
-
link = generate_request("DeleteSnapshot",
|
1222
|
+
link = generate_request("DeleteSnapshot",
|
1213
1223
|
"SnapshotId" => snapshot_id.to_s)
|
1214
1224
|
request_info(link, RightBoolResponseParser.new(:logger => @logger))
|
1215
1225
|
rescue Exception
|
1216
1226
|
on_exception
|
1217
1227
|
end
|
1218
|
-
|
1228
|
+
|
1219
1229
|
#-----------------------------------------------------------------
|
1220
1230
|
# PARSERS: Boolean Response Parser
|
1221
1231
|
#-----------------------------------------------------------------
|
1222
|
-
|
1232
|
+
|
1223
1233
|
class RightBoolResponseParser < AwsParser #:nodoc:
|
1224
1234
|
def tagend(name)
|
1225
1235
|
@result = @text=='true' ? true : false if name == 'return'
|
@@ -1235,14 +1245,14 @@ module Aws
|
|
1235
1245
|
@item = {} if name == 'item'
|
1236
1246
|
end
|
1237
1247
|
def tagend(name)
|
1238
|
-
case name
|
1248
|
+
case name
|
1239
1249
|
when 'keyName' then @item[:aws_key_name] = @text
|
1240
1250
|
when 'keyFingerprint' then @item[:aws_fingerprint] = @text
|
1241
1251
|
when 'item' then @result << @item
|
1242
1252
|
end
|
1243
1253
|
end
|
1244
1254
|
def reset
|
1245
|
-
@result = [];
|
1255
|
+
@result = [];
|
1246
1256
|
end
|
1247
1257
|
end
|
1248
1258
|
|
@@ -1251,7 +1261,7 @@ module Aws
|
|
1251
1261
|
@result = {} if name == 'CreateKeyPairResponse'
|
1252
1262
|
end
|
1253
1263
|
def tagend(name)
|
1254
|
-
case name
|
1264
|
+
case name
|
1255
1265
|
when 'keyName' then @result[:aws_key_name] = @text
|
1256
1266
|
when 'keyFingerprint' then @result[:aws_fingerprint] = @text
|
1257
1267
|
when 'keyMaterial' then @result[:aws_material] = @text
|
@@ -1287,9 +1297,9 @@ module Aws
|
|
1287
1297
|
class QEc2DescribeSecurityGroupsParser < AwsParser #:nodoc:
|
1288
1298
|
def tagstart(name, attributes)
|
1289
1299
|
case name
|
1290
|
-
when 'item'
|
1300
|
+
when 'item'
|
1291
1301
|
if @xmlpath=='DescribeSecurityGroupsResponse/securityGroupInfo'
|
1292
|
-
@group = QEc2SecurityGroupItemType.new
|
1302
|
+
@group = QEc2SecurityGroupItemType.new
|
1293
1303
|
@group.ipPermissions = []
|
1294
1304
|
elsif @xmlpath=='DescribeSecurityGroupsResponse/securityGroupInfo/item/ipPermissions'
|
1295
1305
|
@perm = QEc2IpPermissionType.new
|
@@ -1306,9 +1316,9 @@ module Aws
|
|
1306
1316
|
when 'groupDescription' then @group.groupDescription = @text
|
1307
1317
|
when 'groupName'
|
1308
1318
|
if @xmlpath=='DescribeSecurityGroupsResponse/securityGroupInfo/item'
|
1309
|
-
@group.groupName = @text
|
1319
|
+
@group.groupName = @text
|
1310
1320
|
elsif @xmlpath=='DescribeSecurityGroupsResponse/securityGroupInfo/item/ipPermissions/item/groups/item'
|
1311
|
-
@sgroup.groupName = @text
|
1321
|
+
@sgroup.groupName = @text
|
1312
1322
|
end
|
1313
1323
|
when 'ipProtocol' then @perm.ipProtocol = @text
|
1314
1324
|
when 'fromPort' then @perm.fromPort = @text
|
@@ -1333,7 +1343,7 @@ module Aws
|
|
1333
1343
|
#-----------------------------------------------------------------
|
1334
1344
|
# PARSERS: Images
|
1335
1345
|
#-----------------------------------------------------------------
|
1336
|
-
|
1346
|
+
|
1337
1347
|
class QEc2DescribeImagesParser < AwsParser #:nodoc:
|
1338
1348
|
def tagstart(name, attributes)
|
1339
1349
|
if name == 'item' && @xmlpath[%r{.*/imagesSet$}]
|
@@ -1381,8 +1391,8 @@ module Aws
|
|
1381
1391
|
end
|
1382
1392
|
end
|
1383
1393
|
def tagend(name)
|
1384
|
-
# right now only 'launchPermission' is supported by Amazon.
|
1385
|
-
# But nobody know what will they xml later as attribute. That is why we
|
1394
|
+
# right now only 'launchPermission' is supported by Amazon.
|
1395
|
+
# But nobody know what will they xml later as attribute. That is why we
|
1386
1396
|
# check for 'group' and 'userId' inside of 'launchPermission/item'
|
1387
1397
|
case name
|
1388
1398
|
when 'imageId' then @result[:aws_id] = @text
|
@@ -1406,18 +1416,18 @@ module Aws
|
|
1406
1416
|
class QEc2DescribeInstancesParser < AwsParser #:nodoc:
|
1407
1417
|
def tagstart(name, attributes)
|
1408
1418
|
# DescribeInstances property
|
1409
|
-
if (name == 'item' && @xmlpath == 'DescribeInstancesResponse/reservationSet') ||
|
1419
|
+
if (name == 'item' && @xmlpath == 'DescribeInstancesResponse/reservationSet') ||
|
1410
1420
|
# RunInstances property
|
1411
|
-
(name == 'RunInstancesResponse')
|
1421
|
+
(name == 'RunInstancesResponse')
|
1412
1422
|
@reservation = { :aws_groups => [],
|
1413
1423
|
:instances_set => [] }
|
1414
|
-
|
1415
|
-
elsif (name == 'item') &&
|
1424
|
+
|
1425
|
+
elsif (name == 'item') &&
|
1416
1426
|
# DescribeInstances property
|
1417
1427
|
( @xmlpath=='DescribeInstancesResponse/reservationSet/item/instancesSet' ||
|
1418
1428
|
# RunInstances property
|
1419
1429
|
@xmlpath=='RunInstancesResponse/instancesSet' )
|
1420
|
-
# the optional params (sometimes are missing and we dont want them to be nil)
|
1430
|
+
# the optional params (sometimes are missing and we dont want them to be nil)
|
1421
1431
|
@instance = { :aws_reason => '',
|
1422
1432
|
:dns_name => '',
|
1423
1433
|
:private_dns_name => '',
|
@@ -1428,12 +1438,12 @@ module Aws
|
|
1428
1438
|
end
|
1429
1439
|
end
|
1430
1440
|
def tagend(name)
|
1431
|
-
case name
|
1441
|
+
case name
|
1432
1442
|
# reservation
|
1433
1443
|
when 'reservationId' then @reservation[:aws_reservation_id] = @text
|
1434
1444
|
when 'ownerId' then @reservation[:aws_owner] = @text
|
1435
1445
|
when 'groupId' then @reservation[:aws_groups] << @text
|
1436
|
-
# instance
|
1446
|
+
# instance
|
1437
1447
|
when 'instanceId' then @instance[:aws_instance_id] = @text
|
1438
1448
|
when 'imageId' then @instance[:aws_image_id] = @text
|
1439
1449
|
when 'dnsName' then @instance[:dns_name] = @text
|
@@ -1450,6 +1460,11 @@ module Aws
|
|
1450
1460
|
when 'ramdiskId' then @instance[:aws_ramdisk_id] = @text
|
1451
1461
|
when 'platform' then @instance[:aws_platform] = @text
|
1452
1462
|
when 'availabilityZone' then @instance[:aws_availability_zone] = @text
|
1463
|
+
when 'state'
|
1464
|
+
if @xmlpath == 'DescribeInstancesResponse/reservationSet/item/instancesSet/item/monitoring' || # DescribeInstances property
|
1465
|
+
@xmlpath == 'RunInstancesResponse/instancesSet/item/monitoring' # RunInstances property
|
1466
|
+
@instance[:monitoring_state] = @text
|
1467
|
+
end
|
1453
1468
|
when 'item'
|
1454
1469
|
if @xmlpath == 'DescribeInstancesResponse/reservationSet/item/instancesSet' || # DescribeInstances property
|
1455
1470
|
@xmlpath == 'RunInstancesResponse/instancesSet' # RunInstances property
|
@@ -1471,6 +1486,23 @@ module Aws
|
|
1471
1486
|
end
|
1472
1487
|
end
|
1473
1488
|
|
1489
|
+
class QEc2MonitorInstancesParser < AwsParser #:nodoc:
|
1490
|
+
def tagstart(name, attributes)
|
1491
|
+
@instance = {} if name == 'item'
|
1492
|
+
end
|
1493
|
+
def tagend(name)
|
1494
|
+
case name
|
1495
|
+
when 'instanceId' then @instance[:aws_instance_id] = @text
|
1496
|
+
when 'state' then @instance[:aws_monitoring_state] = @text
|
1497
|
+
when 'item' then @result << @instance
|
1498
|
+
end
|
1499
|
+
end
|
1500
|
+
def reset
|
1501
|
+
@result = []
|
1502
|
+
end
|
1503
|
+
end
|
1504
|
+
|
1505
|
+
|
1474
1506
|
class QEc2TerminateInstancesParser < AwsParser #:nodoc:
|
1475
1507
|
def tagstart(name, attributes)
|
1476
1508
|
@instance = {} if name == 'item'
|
@@ -1564,20 +1596,20 @@ module Aws
|
|
1564
1596
|
#-----------------------------------------------------------------
|
1565
1597
|
# PARSERS: Elastic IPs
|
1566
1598
|
#-----------------------------------------------------------------
|
1567
|
-
|
1599
|
+
|
1568
1600
|
class QEc2AllocateAddressParser < AwsParser #:nodoc:
|
1569
1601
|
def tagend(name)
|
1570
1602
|
@result = @text if name == 'publicIp'
|
1571
1603
|
end
|
1572
1604
|
end
|
1573
|
-
|
1605
|
+
|
1574
1606
|
class QEc2DescribeAddressesParser < AwsParser #:nodoc:
|
1575
1607
|
def tagstart(name, attributes)
|
1576
1608
|
@address = {} if name == 'item'
|
1577
1609
|
end
|
1578
1610
|
def tagend(name)
|
1579
1611
|
case name
|
1580
|
-
when 'instanceId' then @address[:instance_id] = @text.blank? ? nil : @text
|
1612
|
+
when 'instanceId' then @address[:instance_id] = @text.blank? ? nil : @text
|
1581
1613
|
when 'publicIp' then @address[:public_ip] = @text
|
1582
1614
|
when 'item' then @result << @address
|
1583
1615
|
end
|
@@ -1624,10 +1656,10 @@ module Aws
|
|
1624
1656
|
#-----------------------------------------------------------------
|
1625
1657
|
# PARSERS: EBS - Volumes
|
1626
1658
|
#-----------------------------------------------------------------
|
1627
|
-
|
1659
|
+
|
1628
1660
|
class QEc2CreateVolumeParser < AwsParser #:nodoc:
|
1629
1661
|
def tagend(name)
|
1630
|
-
case name
|
1662
|
+
case name
|
1631
1663
|
when 'volumeId' then @result[:aws_id] = @text
|
1632
1664
|
when 'status' then @result[:aws_status] = @text
|
1633
1665
|
when 'createTime' then @result[:aws_created_at] = Time.parse(@text)
|
@@ -1640,10 +1672,10 @@ module Aws
|
|
1640
1672
|
@result = {}
|
1641
1673
|
end
|
1642
1674
|
end
|
1643
|
-
|
1675
|
+
|
1644
1676
|
class QEc2AttachAndDetachVolumeParser < AwsParser #:nodoc:
|
1645
1677
|
def tagend(name)
|
1646
|
-
case name
|
1678
|
+
case name
|
1647
1679
|
when 'volumeId' then @result[:aws_id] = @text
|
1648
1680
|
when 'instanceId' then @result[:aws_instance_id] = @text
|
1649
1681
|
when 'device' then @result[:aws_device] = @text
|
@@ -1655,7 +1687,7 @@ module Aws
|
|
1655
1687
|
@result = {}
|
1656
1688
|
end
|
1657
1689
|
end
|
1658
|
-
|
1690
|
+
|
1659
1691
|
class QEc2DescribeVolumesParser < AwsParser #:nodoc:
|
1660
1692
|
def tagstart(name, attributes)
|
1661
1693
|
case name
|
@@ -1666,7 +1698,7 @@ module Aws
|
|
1666
1698
|
end
|
1667
1699
|
end
|
1668
1700
|
def tagend(name)
|
1669
|
-
case name
|
1701
|
+
case name
|
1670
1702
|
when 'volumeId'
|
1671
1703
|
case @xmlpath
|
1672
1704
|
when 'DescribeVolumesResponse/volumeSet/item' then @volume[:aws_id] = @text
|
@@ -1683,7 +1715,7 @@ module Aws
|
|
1683
1715
|
when 'attachTime' then @volume[:aws_attached_at] = Time.parse(@text)
|
1684
1716
|
when 'snapshotId' then @volume[:snapshot_id] = @text.blank? ? nil : @text
|
1685
1717
|
when 'availabilityZone' then @volume[:zone] = @text
|
1686
|
-
when 'item'
|
1718
|
+
when 'item'
|
1687
1719
|
case @xmlpath
|
1688
1720
|
when 'DescribeVolumesResponse/volumeSet' then @result << @volume
|
1689
1721
|
end
|
@@ -1697,13 +1729,13 @@ module Aws
|
|
1697
1729
|
#-----------------------------------------------------------------
|
1698
1730
|
# PARSERS: EBS - Snapshots
|
1699
1731
|
#-----------------------------------------------------------------
|
1700
|
-
|
1732
|
+
|
1701
1733
|
class QEc2DescribeSnapshotsParser < AwsParser #:nodoc:
|
1702
1734
|
def tagstart(name, attributes)
|
1703
1735
|
@snapshot = {} if name == 'item'
|
1704
1736
|
end
|
1705
1737
|
def tagend(name)
|
1706
|
-
case name
|
1738
|
+
case name
|
1707
1739
|
when 'volumeId' then @snapshot[:aws_volume_id] = @text
|
1708
1740
|
when 'snapshotId' then @snapshot[:aws_id] = @text
|
1709
1741
|
when 'status' then @snapshot[:aws_status] = @text
|
@@ -1719,7 +1751,7 @@ module Aws
|
|
1719
1751
|
|
1720
1752
|
class QEc2CreateSnapshotParser < AwsParser #:nodoc:
|
1721
1753
|
def tagend(name)
|
1722
|
-
case name
|
1754
|
+
case name
|
1723
1755
|
when 'volumeId' then @result[:aws_volume_id] = @text
|
1724
1756
|
when 'snapshotId' then @result[:aws_id] = @text
|
1725
1757
|
when 'status' then @result[:aws_status] = @text
|
@@ -1731,7 +1763,7 @@ module Aws
|
|
1731
1763
|
@result = {}
|
1732
1764
|
end
|
1733
1765
|
end
|
1734
|
-
|
1766
|
+
|
1735
1767
|
end
|
1736
1768
|
|
1737
1769
|
end
|
@@ -114,7 +114,7 @@ module Aws
|
|
114
114
|
#
|
115
115
|
# Optional parameters:
|
116
116
|
# period: Integer 60 or multiple of 60
|
117
|
-
#
|
117
|
+
# dimensions: Hash containing keys ImageId, AutoScalingGroupName, InstanceId, InstanceType
|
118
118
|
# customUnit: nil. not supported currently.
|
119
119
|
# namespace: AWS/EC2
|
120
120
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aws
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Travis Reeder
|
@@ -11,7 +11,7 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
|
14
|
-
date: 2009-
|
14
|
+
date: 2009-11-01 00:00:00 -07:00
|
15
15
|
default_executable:
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|