aws 2.5.6 → 2.5.7

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.
@@ -314,12 +314,12 @@ module Aws
314
314
  puts 'RETRYING QUERY due to QueryTimeout...' if count > 0
315
315
  begin
316
316
  ret = request_info_impl(http_conn, bench, request, parser, options, &block)
317
- break
318
317
  rescue Aws::AwsError => ex
319
318
  if !ex.include?(/QueryTimeout/) || count == retry_count
320
319
  raise ex
321
320
  end
322
321
  end
322
+ break if ret
323
323
  count += 1
324
324
  end
325
325
  ensure
@@ -214,7 +214,7 @@ module Aws
214
214
  last_errors_text = @aws.last_errors.flatten.join("\n")
215
215
  # on redirect :
216
216
  if redirect_detected
217
- location = response['location']
217
+ location = response['location'] || "#{request[:protocol]}://#{error_parser.instance_variable_get(:'@endpoint')}"
218
218
  # ... log information and ...
219
219
  @aws.logger.info("##### #{@aws.class.name} redirect requested: #{response.code} #{response.message} #####")
220
220
  @aws.logger.info("##### New location: #{location} #####")
@@ -196,9 +196,9 @@ module Aws
196
196
  @code = @text
197
197
  when 'Message';
198
198
  @message = @text
199
- # when 'Endpoint' ; @endpoint = @text
200
- # when 'HostId' ; @host_id = @text
201
- # when 'Bucket' ; @bucket = @text
199
+ when 'Endpoint' ; @endpoint = @text
200
+ when 'HostId' ; @host_id = @text
201
+ when 'Bucket' ; @bucket = @text
202
202
  when 'Error';
203
203
  @errors << [@code, @message]
204
204
  end
@@ -224,4 +224,4 @@ module Aws
224
224
  @result = response.is_a?(Net::HTTPSuccess)
225
225
  end
226
226
  end
227
- end
227
+ end
@@ -1,11 +1,20 @@
1
1
  # require_relative was introduced in 1.9.2. This makes it
2
- # available to younger rubies.
3
- # From: http://stackoverflow.com/questions/4333286/ruby-require-vs-require-relative-best-practice-to-workaround-running-in-both-r/4338241#4338241
2
+ # available to younger rubies. It trys hard to not re-require
3
+ # files.
4
+
4
5
  unless Kernel.respond_to?(:require_relative)
5
6
  module Kernel
6
7
  def require_relative(path)
7
- # puts 'IN NEW REQUIRE_RELATIVE ' + path.to_s
8
- require File.join(File.dirname(caller[0]), path.to_str)
8
+ desired_path = File.expand_path('../' + path.to_str, caller[0])
9
+ shortest = desired_path
10
+ $:.each do |path|
11
+ path += '/'
12
+ if desired_path.index(path) == 0
13
+ candidate = desired_path.sub(path, '')
14
+ shortest = candidate if candidate.size < shortest.size
15
+ end
16
+ end
17
+ require shortest
9
18
  end
10
19
  end
11
20
  end
@@ -183,6 +183,12 @@ module Aws
183
183
  return groups
184
184
  end
185
185
 
186
+ def hash_params_with_suffix(prefix, suffix, list) #:nodoc:
187
+ groups = {}
188
+ list.each_index { |i| groups.update("#{prefix}.#{i+1}.suffix"=>list[i]) }
189
+ return groups
190
+ end
191
+
186
192
  #-----------------------------------------------------------------
187
193
  # Images
188
194
  #-----------------------------------------------------------------
@@ -321,19 +327,18 @@ module Aws
321
327
  # instead of modify_image_attribute because the signature of
322
328
  # modify_image_attribute may change with EC2 service changes.
323
329
  #
324
- # attribute : currently, only 'launchPermission' is supported.
325
- # operation_type : currently, only 'add' & 'remove' are supported.
330
+ # operation_type : currently, only 'Add' & 'Remove' are supported.
326
331
  # vars:
327
332
  # :user_group : currently, only 'all' is supported.
328
333
  # :user_id
329
334
  # :product_code
330
- def modify_image_attribute(image_id, attribute, operation_type = nil, vars = {})
331
- params = {'ImageId' => image_id,
332
- 'Attribute' => attribute}
333
- params['OperationType'] = operation_type if operation_type
334
- params.update(hash_params('UserId', vars[:user_id].to_a)) if vars[:user_id]
335
- params.update(hash_params('UserGroup', vars[:user_group].to_a)) if vars[:user_group]
335
+ # :description
336
+ def modify_image_attribute(image_id, operation_type = nil, vars = {})
337
+ params = {'ImageId' => image_id }
338
+ params.update(hash_params_with_suffix("LaunchPermission.#{operation_type}", 'UserId', vars[:user_id].to_a)) if vars[:user_id]
339
+ params.update(hash_params_with_suffix("LaunchPermission.#{operation_type}", 'Group', vars[:user_group].to_a)) if vars[:user_group]
336
340
  params.update(hash_params('ProductCode', vars[:product_code])) if vars[:product_code]
341
+ params.update('Description.Value' => vars[:description].to_s) if vars[:description]
337
342
  link = generate_request("ModifyImageAttribute", params)
338
343
  request_info(link, RightBoolResponseParser.new(:logger => @logger))
339
344
  rescue Exception
@@ -346,7 +351,7 @@ module Aws
346
351
  #
347
352
  # ec2.modify_image_launch_perm_add_users('ami-e444444d',['000000000777','000000000778']) #=> true
348
353
  def modify_image_launch_perm_add_users(image_id, user_id=[])
349
- modify_image_attribute(image_id, 'launchPermission', 'add', :user_id => user_id.to_a)
354
+ modify_image_attribute(image_id, 'Add', :user_id => user_id.to_a)
350
355
  end
351
356
 
352
357
  # Revokes image launch permissions for users. +userId+ is a list of users AWS accounts ids. Returns +true+ or an exception.
@@ -354,7 +359,7 @@ module Aws
354
359
  # ec2.modify_image_launch_perm_remove_users('ami-e444444d',['000000000777','000000000778']) #=> true
355
360
  #
356
361
  def modify_image_launch_perm_remove_users(image_id, user_id=[])
357
- modify_image_attribute(image_id, 'launchPermission', 'remove', :user_id => user_id.to_a)
362
+ modify_image_attribute(image_id, 'Remove', :user_id => user_id.to_a)
358
363
  end
359
364
 
360
365
  # Add image launch permissions for users groups (currently only 'all' is supported, which gives public launch permissions).
@@ -363,7 +368,7 @@ module Aws
363
368
  # ec2.modify_image_launch_perm_add_groups('ami-e444444d') #=> true
364
369
  #
365
370
  def modify_image_launch_perm_add_groups(image_id, user_group=['all'])
366
- modify_image_attribute(image_id, 'launchPermission', 'add', :user_group => user_group.to_a)
371
+ modify_image_attribute(image_id, 'Add', :user_group => user_group.to_a)
367
372
  end
368
373
 
369
374
  # Remove image launch permissions for users groups (currently only 'all' is supported, which gives public launch permissions).
@@ -371,7 +376,7 @@ module Aws
371
376
  # ec2.modify_image_launch_perm_remove_groups('ami-e444444d') #=> true
372
377
  #
373
378
  def modify_image_launch_perm_remove_groups(image_id, user_group=['all'])
374
- modify_image_attribute(image_id, 'launchPermission', 'remove', :user_group => user_group.to_a)
379
+ modify_image_attribute(image_id, 'Remove', :user_group => user_group.to_a)
375
380
  end
376
381
 
377
382
  # Add product code to image
@@ -379,7 +384,15 @@ module Aws
379
384
  # ec2.modify_image_product_code('ami-e444444d','0ABCDEF') #=> true
380
385
  #
381
386
  def modify_image_product_code(image_id, product_code=[])
382
- modify_image_attribute(image_id, 'productCodes', nil, :product_code => product_code.to_a)
387
+ modify_image_attribute(image_id, nil, :product_code => product_code.to_a)
388
+ end
389
+
390
+ # Change image description
391
+ #
392
+ # ec2.modify_image_description('ami-e444444d','My new AMI') #=> true
393
+ #
394
+ def modify_image_description(image_id, description='')
395
+ modify_image_attribute(image_id, nil, :description => description)
383
396
  end
384
397
 
385
398
  #-----------------------------------------------------------------
@@ -562,13 +575,13 @@ module Aws
562
575
  unless Aws::Utils.blank?(options[:block_device_mappings])
563
576
  options[:block_device_mappings].size.times do |n|
564
577
  if options[:block_device_mappings][n][:virtual_name]
565
- params["BlockDeviceMapping.#{n+1}.VirtualName"] = options[:block_device_mappings][n][:virtual_name]
578
+ params["BlockDeviceMapping.#{n+1}.VirtualName"] = options[:block_device_mappings][n][:virtual_name]
566
579
  end
567
580
  if options[:block_device_mappings][n][:device_name]
568
- params["BlockDeviceMapping.#{n+1}.DeviceName"] = options[:block_device_mappings][n][:device_name]
581
+ params["BlockDeviceMapping.#{n+1}.DeviceName"] = options[:block_device_mappings][n][:device_name]
569
582
  end
570
583
  if options[:block_device_mappings][n][:ebs_snapshot_id]
571
- params["BlockDeviceMapping.#{n+1}.Ebs.SnapshotId"] = options[:block_device_mappings][n][:ebs_snapshot_id]
584
+ params["BlockDeviceMapping.#{n+1}.Ebs.SnapshotId"] = options[:block_device_mappings][n][:ebs_snapshot_id]
572
585
  end
573
586
  end
574
587
  end
@@ -607,7 +620,7 @@ module Aws
607
620
  rescue Exception
608
621
  on_exception
609
622
  end
610
-
623
+
611
624
  # Stop EBS-backed EC2 instances. Returns a list of instance state changes or an exception.
612
625
  #
613
626
  # ec2.stop_instances(['i-f222222d', 'i-f222222e']) #=>
@@ -628,7 +641,7 @@ module Aws
628
641
  rescue Exception
629
642
  on_exception
630
643
  end
631
-
644
+
632
645
  # Start EBS-backed EC2 instances. Returns a list of instance state changes or an exception.
633
646
  #
634
647
  # ec2.start_instances(['i-f222222d', 'i-f222222e']) #=>
@@ -649,7 +662,7 @@ module Aws
649
662
  rescue Exception
650
663
  on_exception
651
664
  end
652
-
665
+
653
666
  # Retreive EC2 instance OS logs. Returns a hash of data or an exception.
654
667
  #
655
668
  # ec2.get_console_output('i-f222222d') =>
@@ -806,23 +819,23 @@ module Aws
806
819
  # :aws_owner => "000000000888",
807
820
  # :aws_description => "a default security group",
808
821
  # :aws_perms =>
809
- # [ {:protocol => "tcp", :from_port=>"1000", :to_port=>"2000",
822
+ # [ {:protocol => "tcp", :from_port=>"1000", :to_port=>"2000",
810
823
  # :ip_ranges=>[{cidr_ip=>"10.1.2.3/32"}, {cidr_ip=>"192.168.1.10/24"}],
811
824
  # :groups => [{:owner=>"123456789012", :group_name="default"}] },
812
- #
825
+ #
813
826
  # {:protocol ="icmp", :from_port="-1", :to_port=>"-1",
814
- # :ip_ranges=>[{:cidr_ip=>"0.0.0.0/0"}],
827
+ # :ip_ranges=>[{:cidr_ip=>"0.0.0.0/0"}],
815
828
  # :groups=>[] },
816
- #
817
- # {:protocol=>"udp", :from_port=>"0", :to_port=>"65535",
818
- # :ip_ranges=>[],
819
- # :groups=>[{:owner=>"123456789012", :group_name=>"newgroup"}, {:owner=>"123456789012", :group_name=>"default"}],
820
- #
829
+ #
830
+ # {:protocol=>"udp", :from_port=>"0", :to_port=>"65535",
831
+ # :ip_ranges=>[],
832
+ # :groups=>[{:owner=>"123456789012", :group_name=>"newgroup"}, {:owner=>"123456789012", :group_name=>"default"}],
833
+ #
821
834
  # {:protocol=>"tcp", :from_port="22", :to_port=>"22",
822
835
  # :ip_ranges=>[{:cidr_ip=>"0.0.0.0/0"}],
823
836
  # :groups=>[{:owner=>"", :group_name=>"default"}] },
824
- #
825
- # ..., {...}
837
+ #
838
+ # ..., {...}
826
839
  # ]
827
840
  #
828
841
  def describe_security_groups(list=[])
@@ -883,19 +896,19 @@ module Aws
883
896
  end
884
897
 
885
898
  # Authorize OR Revoke ingress for security group, depending on the value of the 'action' parameter.
886
- # If you 'authorize' then you allow instances that are member of some other
887
- # security groups, or some range of ip addresses to open connections to instances in
899
+ # If you 'authorize' then you allow instances that are member of some other
900
+ # security groups, or some range of ip addresses to open connections to instances in
888
901
  # my group. Can specify an array of ip addresses, source groups or mix of both in a single rule:
889
902
  #
890
903
  # ec2.manage_security_group_ingress('authorize', 'new_firewall', 80, 80, 'tcp', ['192.168.0.1/32', '10.0.0.1/24'],
891
904
  # [{'group_name'=>'default', 'owner'=>'297467797945'}, {'group_name'=>'test', 'owner'=>'123456789012'}])
892
905
  #
893
- # ec2.manage_security_group_ingress('new_firewall', 0, 1000, 'udp', 'revoke', [],
906
+ # ec2.manage_security_group_ingress('new_firewall', 0, 1000, 'udp', 'revoke', [],
894
907
  # [{'group_name'=>'default', 'owner'=>'123456789012'}])
895
908
  #
896
- # ec2.manage_security_group_ingress('new_firewall', 0, 1000, 'udp', 'authorize', ['0.0.0.0/0'])
909
+ # ec2.manage_security_group_ingress('new_firewall', 0, 1000, 'udp', 'authorize', ['0.0.0.0/0'])
897
910
  #
898
- # Similarly, if you specify 'revoke' as the action parameter then you will remove the specified
911
+ # Similarly, if you specify 'revoke' as the action parameter then you will remove the specified
899
912
  # source ip addresses or source groups from access to instances in the named group:
900
913
  #
901
914
  def manage_security_group_ingress(name, from_port, to_port, protocol, action, source_ip_ranges, source_groups = [])
@@ -903,11 +916,11 @@ module Aws
903
916
  'IpPermissions.1.IpProtocol' => protocol.to_s,
904
917
  'IpPermissions.1.FromPort' => from_port.to_s,
905
918
  'IpPermissions.1.ToPort' => to_port.to_s }
906
- source_ip_ranges.each_index do |i|
919
+ source_ip_ranges.each_index do |i|
907
920
  call_params.merge!({"IpPermissions.1.IpRanges.#{i+1}.CidrIp" => source_ip_ranges[i].to_s})
908
921
  end
909
922
  source_groups.each_index do |i|
910
- call_params.merge!({"IpPermissions.1.Groups.#{i+1}.GroupName" => source_groups[i]['group_name'].to_s,
923
+ call_params.merge!({"IpPermissions.1.Groups.#{i+1}.GroupName" => source_groups[i]['group_name'].to_s,
911
924
  "IpPermissions.1.Groups.#{i+1}.UserId"=> source_groups[i]['owner'].to_s.gsub(/-/,'')})
912
925
  end
913
926
  unless ['Authorize', 'Revoke'].include?(action.capitalize)
@@ -916,7 +929,7 @@ module Aws
916
929
  link = generate_request("#{action.capitalize}SecurityGroupIngress", call_params)
917
930
  request_info(link, RightBoolResponseParser.new(:logger => @logger))
918
931
  rescue Exception
919
- on_exception
932
+ on_exception
920
933
  end
921
934
 
922
935
  # Authorize named ingress for security group. Allows instances that are member of someone
@@ -1310,6 +1323,18 @@ module Aws
1310
1323
  on_exception
1311
1324
  end
1312
1325
 
1326
+ def describe_owned_snapshots(list=[])
1327
+ params = {"Owner" => "self"}
1328
+ snap_ids = hash_params('SnapshotId', list.to_a)
1329
+ params.update(snap_ids)
1330
+ link = generate_request("DescribeSnapshots",
1331
+ params)
1332
+ request_cache_or_info :describe_owned_snapshots, link, QEc2DescribeSnapshotsParser, @@bench, list.nil? || list.empty?
1333
+ rescue Exception
1334
+ on_exception
1335
+ end
1336
+
1337
+
1313
1338
  # Create a snapshot of specified volume.
1314
1339
  #
1315
1340
  # ec2.create_snapshot('vol-898a6fe0') #=>
@@ -1430,6 +1455,102 @@ module Aws
1430
1455
  on_exception
1431
1456
  end
1432
1457
 
1458
+ #-----------------------------------------------------------------
1459
+ # VPC related
1460
+ #-----------------------------------------------------------------
1461
+
1462
+ # Create VPC
1463
+ # http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-CreateVpc.html
1464
+ #
1465
+ # ec2.create_vpc("10.0.0.0/16")
1466
+ # FIXME: EVen though the EC2 docs describe the parameter instanceTenancy,
1467
+ # I could not get it to recognize that
1468
+ def create_vpc(cidr_block = "10.0.0.0/16")
1469
+ params = { "CidrBlock" => cidr_block }
1470
+ link = generate_request("CreateVpc", params)
1471
+ request_info(link, QEc2VpcsParser.new("vpc", :logger => @logger))
1472
+ rescue Exception
1473
+ on_exception
1474
+ end
1475
+
1476
+
1477
+ # Describe VPC's
1478
+ # http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeVpcs.html
1479
+ #
1480
+ # ec2.describe_vpcs
1481
+ # ec2.describe_vpcs(vpcId1, vpcId2, 'Filter.1.Name' => 'state', 'Filter.1.Value' = > 'pending', ...)
1482
+ def describe_vpcs(*args)
1483
+ if args.last.is_a?(Hash)
1484
+ params = args.pop.dup
1485
+ else
1486
+ params = {}
1487
+ end
1488
+ 1.upto(args.size) { |i| params["VpcId.#{i}"] = args[i-1] }
1489
+ link = generate_request("DescribeVpcs", params)
1490
+ request_info(link, QEc2VpcsParser.new("item", :logger => @logger))
1491
+ rescue Exception
1492
+ on_exception
1493
+ end
1494
+
1495
+ # Delete VPC
1496
+ # http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DeleteVpc.html
1497
+ #
1498
+ # ec2.delete_vpc(vpc_id)
1499
+ def delete_vpc(vpc_id)
1500
+ params = { "VpcId" => vpc_id }
1501
+ link = generate_request("DeleteVpc", params)
1502
+ request_info(link, RightBoolResponseParser.new(:logger => @logger))
1503
+ rescue Exception
1504
+ on_exception
1505
+ end
1506
+
1507
+ # Create subnet in a VPC
1508
+ # http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-CreateSubnet.html
1509
+ #
1510
+ # ec2.create_subnet(vpc_id, cidr_block)
1511
+ # ec2.create_subnet(vpc_id, cidr_block, availability_zone))
1512
+ def create_subnet(vpc_id, cidr_block, availability_zone = nil)
1513
+ params = { "VpcId" => vpc_id, "CidrBlock" => cidr_block }
1514
+ params["AvailabilityZone"] = availability_zone if availability_zone
1515
+ link = generate_request("CreateSubnet", params)
1516
+ request_info(link, QEc2SubnetsParser.new("subnet", :logger => @logger))
1517
+ rescue Exception
1518
+ on_exception
1519
+ end
1520
+
1521
+ # Describe subnets
1522
+ # http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeSubnets.html
1523
+ #
1524
+ # ec2.describe_subnets
1525
+ # ecs.describe_subnets(subnetId1, SubnetId2, ...,
1526
+ # 'Filter.1.Name' => 'state',
1527
+ # 'Filter.1.Value.1' => 'pending',
1528
+ # 'Filter.2.Name' => ...)
1529
+ def describe_subnets(*args)
1530
+ if args.last.is_a?(Hash)
1531
+ params = args.pop.dup
1532
+ else
1533
+ params = {}
1534
+ end
1535
+ 1.upto(args.size) { |i| params["SubnetId.#{i}"] = args[i-1] }
1536
+ link = generate_request("DescribeSubnets", params)
1537
+ request_info(link, QEc2SubnetsParser.new("item", :logger => @logger))
1538
+ rescue Exception
1539
+ on_exception
1540
+ end
1541
+
1542
+ # Delete Subnet
1543
+ # http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DeleteSubnet.html
1544
+ #
1545
+ # ec2.delete_subnet(subnet_id)
1546
+ def delete_subnet(subnet_id)
1547
+ params = { "SubnetId" => subnet_id }
1548
+ link = generate_request("DeleteSubnet", params)
1549
+ request_info(link, RightBoolResponseParser.new(:logger => @logger))
1550
+ rescue Exception
1551
+ on_exception
1552
+ end
1553
+
1433
1554
  #-----------------------------------------------------------------
1434
1555
  # PARSERS: Boolean Response Parser
1435
1556
  #-----------------------------------------------------------------
@@ -1493,7 +1614,7 @@ module Aws
1493
1614
 
1494
1615
  class QEc2IpRangeItemType #:nodoc:
1495
1616
  attr_accessor :cidrIp
1496
- end
1617
+ end
1497
1618
 
1498
1619
  class QEc2IpPermissionType #:nodoc:
1499
1620
  attr_accessor :ipProtocol
@@ -1600,6 +1721,12 @@ module Aws
1600
1721
  @image[:aws_kernel_id] = @text
1601
1722
  when 'ramdiskId' then
1602
1723
  @image[:aws_ramdisk_id] = @text
1724
+ when 'rootDeviceType' then
1725
+ @image[:aws_root_device_type] = @text
1726
+ when 'rootDeviceName' then
1727
+ @image[:aws_root_device_name] = @text
1728
+ when 'hypervisor' then
1729
+ @image[:aws_hypervisor] = @text
1603
1730
  when 'item' then
1604
1731
  @result << @image if @xmlpath[%r{.*/imagesSet$}]
1605
1732
  end
@@ -1686,6 +1813,8 @@ module Aws
1686
1813
  :root_device_type => '',
1687
1814
  :root_device_name => '',
1688
1815
  :architecture => '',
1816
+ :subnet_id => '',
1817
+ :vpc_id => '',
1689
1818
  :block_device_mappings => [],
1690
1819
  :aws_product_codes => [],
1691
1820
  :tags => {}}
@@ -1742,6 +1871,10 @@ module Aws
1742
1871
  @instance[:aws_availability_zone] = @text
1743
1872
  when 'privateIpAddress' then
1744
1873
  @instance[:aws_private_ip_address] = @text
1874
+ when 'subnetId' then
1875
+ @instance[:subnet_id] = @text
1876
+ when 'vpcId' then
1877
+ @instance[:vpc_id] = @text
1745
1878
  when 'key' then
1746
1879
  @tag_key = @text
1747
1880
  when 'value' then
@@ -1840,12 +1973,12 @@ module Aws
1840
1973
  @result = []
1841
1974
  end
1842
1975
  end
1843
-
1976
+
1844
1977
  class QEc2StopInstancesParser < AwsParser #:nodoc:
1845
1978
  def tagstart(name, attributes)
1846
1979
  @instance = {} if name == 'item'
1847
1980
  end
1848
-
1981
+
1849
1982
  def tagend(name)
1850
1983
  case name
1851
1984
  when 'instanceId' then
@@ -1866,7 +1999,7 @@ module Aws
1866
1999
  @result << @instance
1867
2000
  end
1868
2001
  end
1869
-
2002
+
1870
2003
  def reset
1871
2004
  @result = []
1872
2005
  end
@@ -1876,7 +2009,7 @@ module Aws
1876
2009
  def tagstart(name, attributes)
1877
2010
  @instance = {} if name == 'item'
1878
2011
  end
1879
-
2012
+
1880
2013
  def tagend(name)
1881
2014
  case name
1882
2015
  when 'instanceId' then
@@ -1897,12 +2030,12 @@ module Aws
1897
2030
  @result << @instance
1898
2031
  end
1899
2032
  end
1900
-
2033
+
1901
2034
  def reset
1902
2035
  @result = []
1903
2036
  end
1904
2037
  end
1905
-
2038
+
1906
2039
 
1907
2040
  #-----------------------------------------------------------------
1908
2041
  # PARSERS: Console
@@ -2176,12 +2309,12 @@ module Aws
2176
2309
  #-----------------------------------------------------------------
2177
2310
 
2178
2311
  class QEc2DescribeSnapshotsParser < AwsParser #:nodoc:
2179
-
2312
+
2180
2313
  def initialize (params={})
2181
2314
  @inside_tagset = false
2182
2315
  super(params)
2183
2316
  end
2184
-
2317
+
2185
2318
  def tagstart(name, attributes)
2186
2319
  case name
2187
2320
  when 'tagSet'
@@ -2275,8 +2408,73 @@ module Aws
2275
2408
  end
2276
2409
  end
2277
2410
 
2278
- end
2411
+ #-----------------------------------------------------------------
2412
+ # PARSERS: Vpc
2413
+ #-----------------------------------------------------------------
2279
2414
 
2280
- end
2415
+ class QEc2VpcsParser < AwsParser #:nodoc:
2416
+ def initialize(wrapper, opts = {})
2417
+ super(opts)
2418
+ @wrapper = wrapper
2419
+ end
2420
+
2421
+ def tagstart(name, attribute)
2422
+ @vpc = {} if name == @wrapper
2423
+ end
2424
+
2425
+ def tagend(name)
2426
+ case name
2427
+ when 'vpcId' then
2428
+ @vpc[:vpc_id] = @text
2429
+ when 'state' then
2430
+ @vpc[:state] = @text
2431
+ when 'cidrBlock' then
2432
+ @vpc[:cidr_block] = @text
2433
+ when 'dhcpOptionsId' then
2434
+ @vpc[:dhcp_options_id] = @text
2435
+ when @wrapper
2436
+ @result << @vpc
2437
+ end
2438
+ end
2439
+
2440
+ def reset
2441
+ @result = []
2442
+ end
2443
+ end
2281
2444
 
2445
+ class QEc2SubnetsParser < AwsParser #:nodoc
2446
+ def initialize(wrapper, opts = {})
2447
+ super(opts)
2448
+ @wrapper = wrapper
2449
+ end
2282
2450
 
2451
+ def tagstart(name, attribute)
2452
+ @subnet = {} if name == @wrapper
2453
+ end
2454
+
2455
+ def tagend(name)
2456
+ case name
2457
+ when 'subnetId' then
2458
+ @subnet[:subnet_id] = @text
2459
+ when 'state' then
2460
+ @subnet[:state] = @text
2461
+ when 'vpcId' then
2462
+ @subnet[:vpc_id] = @text
2463
+ when 'cidrBlock' then
2464
+ @subnet[:cidr_block] = @text
2465
+ when 'availableIpAddressCount' then
2466
+ @subnet[:available_ip_address_count] = @text
2467
+ when 'availabilityZone' then
2468
+ @subnet[:availability_zone] = @text
2469
+ when @wrapper
2470
+ @result << @subnet
2471
+ end
2472
+ end
2473
+
2474
+ def reset
2475
+ @result = []
2476
+ end
2477
+ end
2478
+ end
2479
+
2480
+ end
@@ -181,9 +181,9 @@ module Aws
181
181
  # data = bucket.get('logs/today/1.log') #=>
182
182
  # puts data #=> 'sasfasfasdf'
183
183
  #
184
- def get(key, headers={})
184
+ def get(key, headers={}, &block)
185
185
  key = S3::Key.create(self, key.to_s) unless key.is_a?(S3::Key)
186
- key.get(headers)
186
+ key.get(headers, &block)
187
187
  end
188
188
 
189
189
  # Retrieve object data from Amazon.
@@ -183,7 +183,12 @@ module Aws
183
183
  if $1 # if escaped '\?' is found - replace it by '?' without backslash
184
184
  "?"
185
185
  else # well, if no backslash precedes '?' then replace it by next param from the list
186
- ret = escape(params[i])
186
+ case params[i]
187
+ when Array
188
+ ret = "(#{params[i].map{|p| escape(p)}.join(",")})"
189
+ else
190
+ ret = escape(params[i])
191
+ end
187
192
  i +=1
188
193
  ret
189
194
  end
metadata CHANGED
@@ -1,61 +1,74 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: aws
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.5.7
4
5
  prerelease:
5
- version: 2.5.6
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Travis Reeder
9
9
  - Chad Arimura
10
10
  - RightScale
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
-
15
- date: 2011-07-04 00:00:00 Z
16
- dependencies:
17
- - !ruby/object:Gem::Dependency
14
+ date: 2012-09-09 00:00:00.000000000 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
18
17
  name: uuidtools
19
- prerelease: false
20
- requirement: &id001 !ruby/object:Gem::Requirement
18
+ requirement: !ruby/object:Gem::Requirement
21
19
  none: false
22
- requirements:
23
- - - ">="
24
- - !ruby/object:Gem::Version
25
- version: "0"
20
+ requirements:
21
+ - - ! '>='
22
+ - !ruby/object:Gem::Version
23
+ version: '0'
26
24
  type: :runtime
27
- version_requirements: *id001
28
- - !ruby/object:Gem::Dependency
29
- name: http_connection
30
25
  prerelease: false
31
- requirement: &id002 !ruby/object:Gem::Requirement
26
+ version_requirements: !ruby/object:Gem::Requirement
32
27
  none: false
33
- requirements:
34
- - - ">="
35
- - !ruby/object:Gem::Version
36
- version: "0"
28
+ requirements:
29
+ - - ! '>='
30
+ - !ruby/object:Gem::Version
31
+ version: '0'
32
+ - !ruby/object:Gem::Dependency
33
+ name: http_connection
34
+ requirement: !ruby/object:Gem::Requirement
35
+ none: false
36
+ requirements:
37
+ - - ! '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
37
40
  type: :runtime
38
- version_requirements: *id002
39
- - !ruby/object:Gem::Dependency
40
- name: xml-simple
41
41
  prerelease: false
42
- requirement: &id003 !ruby/object:Gem::Requirement
42
+ version_requirements: !ruby/object:Gem::Requirement
43
43
  none: false
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: "0"
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ - !ruby/object:Gem::Dependency
49
+ name: xml-simple
50
+ requirement: !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
48
56
  type: :runtime
49
- version_requirements: *id003
50
- description: AWS Ruby Library for interfacing with Amazon Web Services including EC2, S3, SQS, SimpleDB and most of their other services as well. By http://www.appoxy.com
57
+ prerelease: false
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ description: AWS Ruby Library for interfacing with Amazon Web Services including EC2,
65
+ S3, SQS, SimpleDB and most of their other services as well. By http://www.appoxy.com
51
66
  email: travis@appoxy.com
52
67
  executables: []
53
-
54
68
  extensions: []
55
-
56
- extra_rdoc_files:
69
+ extra_rdoc_files:
57
70
  - README.markdown
58
- files:
71
+ files:
59
72
  - lib/acf/acf_interface.rb
60
73
  - lib/aws.rb
61
74
  - lib/awsbase/aws_response_array.rb
@@ -84,30 +97,26 @@ files:
84
97
  - README.markdown
85
98
  homepage: http://github.com/appoxy/aws/
86
99
  licenses: []
87
-
88
100
  post_install_message:
89
101
  rdoc_options: []
90
-
91
- require_paths:
102
+ require_paths:
92
103
  - lib
93
- required_ruby_version: !ruby/object:Gem::Requirement
104
+ required_ruby_version: !ruby/object:Gem::Requirement
94
105
  none: false
95
- requirements:
96
- - - ">="
97
- - !ruby/object:Gem::Version
98
- version: "0"
99
- required_rubygems_version: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ required_rubygems_version: !ruby/object:Gem::Requirement
100
111
  none: false
101
- requirements:
102
- - - ">="
103
- - !ruby/object:Gem::Version
104
- version: "0"
112
+ requirements:
113
+ - - ! '>='
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
105
116
  requirements: []
106
-
107
117
  rubyforge_project:
108
- rubygems_version: 1.8.5
118
+ rubygems_version: 1.8.24
109
119
  signing_key:
110
120
  specification_version: 3
111
121
  summary: AWS Ruby Library for interfacing with Amazon Web Services. By http://www.appoxy.com
112
122
  test_files: []
113
-