aws 2.4.5 → 2.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +9 -75
- data/lib/acf/acf_interface.rb +6 -4
- data/lib/aws.rb +2 -1
- data/lib/awsbase/awsbase.rb +98 -65
- data/lib/awsbase/errors.rb +9 -5
- data/lib/awsbase/parsers.rb +226 -226
- data/lib/awsbase/utils.rb +255 -207
- data/lib/ec2/ec2.rb +243 -105
- data/lib/ec2/mon_interface.rb +2 -1
- data/lib/iam/iam.rb +31 -25
- data/lib/right_aws.rb +1 -1
- data/lib/s3/bucket.rb +7 -8
- data/lib/s3/grantee.rb +238 -238
- data/lib/s3/key.rb +281 -281
- data/lib/s3/s3.rb +2 -1
- data/lib/s3/s3_interface.rb +45 -35
- data/lib/sdb/active_sdb.rb +19 -22
- data/lib/sdb/sdb_interface.rb +4 -5
- data/lib/ses/ses.rb +123 -0
- data/lib/sqs/sqs.rb +5 -0
- data/lib/sqs/sqs_interface.rb +3 -3
- metadata +53 -104
- data/lib/awsbase/support.rb +0 -142
- data/test/acf/test_acf.rb +0 -148
- data/test/acf/test_helper.rb +0 -2
- data/test/ec2/test_ec2.rb +0 -205
- data/test/ec2/test_helper.rb +0 -2
- data/test/ec2/test_mon.rb +0 -17
- data/test/elb/test_elb.rb +0 -51
- data/test/http_connection.rb +0 -87
- data/test/iam/test_iam.rb +0 -36
- data/test/rds/test_rds.rb +0 -181
- data/test/s3/s3_test_base.rb +0 -23
- data/test/s3/test_helper.rb +0 -3
- data/test/s3/test_s3.rb +0 -162
- data/test/s3/test_s3_class.rb +0 -179
- data/test/s3/test_s3_rights.rb +0 -139
- data/test/s3/test_s3_stubbed.rb +0 -97
- data/test/sdb/test_active_sdb.rb +0 -338
- data/test/sdb/test_helper.rb +0 -3
- data/test/sdb/test_sdb.rb +0 -220
- data/test/sqs/test_helper.rb +0 -2
- data/test/sqs/test_sqs.rb +0 -232
- data/test/test_credentials.rb +0 -54
- data/test/ts_right_aws.rb +0 -13
data/lib/ec2/ec2.rb
CHANGED
@@ -89,9 +89,10 @@ module Aws
|
|
89
89
|
end
|
90
90
|
|
91
91
|
@@bench = AwsBenchmarkingBlock.new
|
92
|
-
|
92
|
+
def self.bench
|
93
93
|
@@bench
|
94
94
|
end
|
95
|
+
|
95
96
|
def self.bench_xml
|
96
97
|
@@bench.xml
|
97
98
|
end
|
@@ -403,26 +404,6 @@ module Aws
|
|
403
404
|
on_exception
|
404
405
|
end
|
405
406
|
|
406
|
-
def describe_availability_zones(options={})
|
407
|
-
link = generate_request("DescribeAvailabilityZones", options={})
|
408
|
-
request_info_xml_simple(self.class.connection_name, @params, link, @logger,
|
409
|
-
:group_tags =>{"DBInstances" =>"DBInstance",
|
410
|
-
"DBParameterGroups"=>"DBParameterGroup",
|
411
|
-
"DBSecurityGroups" =>"DBSecurityGroup",
|
412
|
-
"EC2SecurityGroups"=>"EC2SecurityGroup",
|
413
|
-
"IPRanges" =>"IPRange"},
|
414
|
-
:force_array =>["DBInstances",
|
415
|
-
"DBParameterGroups",
|
416
|
-
"DBSecurityGroups",
|
417
|
-
"EC2SecurityGroups",
|
418
|
-
"IPRanges"],
|
419
|
-
:pull_out_array =>options[:pull_out_array],
|
420
|
-
:pull_out_single=>options[:pull_out_single],
|
421
|
-
:wrapper =>options[:wrapper])
|
422
|
-
rescue Exception
|
423
|
-
on_exception
|
424
|
-
end
|
425
|
-
|
426
407
|
# Retrieve information about EC2 instances. If +list+ is omitted then returns the
|
427
408
|
# list of all instances.
|
428
409
|
#
|
@@ -448,7 +429,7 @@ module Aws
|
|
448
429
|
#
|
449
430
|
def describe_instances(list=[])
|
450
431
|
link = generate_request("DescribeInstances", hash_params('InstanceId', list.to_a))
|
451
|
-
request_cache_or_info(:describe_instances, link, QEc2DescribeInstancesParser, @@bench, list.
|
432
|
+
request_cache_or_info(:describe_instances, link, QEc2DescribeInstancesParser, @@bench, list.nil? || list.empty?) do |parser|
|
452
433
|
get_desc_instances(parser.result)
|
453
434
|
end
|
454
435
|
rescue Exception
|
@@ -560,23 +541,36 @@ module Aws
|
|
560
541
|
'AddressingType' => options[:addressing_type] || DEFAULT_ADDRESSING_TYPE,
|
561
542
|
'InstanceType' => options[:instance_type] || DEFAULT_INSTANCE_TYPE})
|
562
543
|
# optional params
|
563
|
-
params['KeyName'] = options[:key_name] unless options[:key_name]
|
564
|
-
params['KernelId'] = options[:kernel_id] unless options[:kernel_id]
|
565
|
-
params['RamdiskId'] = options[:ramdisk_id] unless options[:ramdisk_id]
|
566
|
-
params['Placement.AvailabilityZone'] = options[:availability_zone] unless options[:availability_zone]
|
567
|
-
params['BlockDeviceMappings'] = options[:block_device_mappings] unless options[:block_device_mappings]
|
568
|
-
params['Monitoring.Enabled'] = options[:monitoring_enabled] unless options[:monitoring_enabled]
|
569
|
-
params['SubnetId'] = options[:subnet_id] unless options[:subnet_id]
|
570
|
-
params['AdditionalInfo'] = options[:additional_info] unless options[:additional_info]
|
544
|
+
params['KeyName'] = options[:key_name] unless Aws::Utils.blank?(options[:key_name])
|
545
|
+
params['KernelId'] = options[:kernel_id] unless Aws::Utils.blank?(options[:kernel_id])
|
546
|
+
params['RamdiskId'] = options[:ramdisk_id] unless Aws::Utils.blank?(options[:ramdisk_id])
|
547
|
+
params['Placement.AvailabilityZone'] = options[:availability_zone] unless Aws::Utils.blank?(options[:availability_zone])
|
548
|
+
params['BlockDeviceMappings'] = options[:block_device_mappings] unless Aws::Utils.blank?(options[:block_device_mappings])
|
549
|
+
params['Monitoring.Enabled'] = options[:monitoring_enabled] unless Aws::Utils.blank?(options[:monitoring_enabled])
|
550
|
+
params['SubnetId'] = options[:subnet_id] unless Aws::Utils.blank?(options[:subnet_id])
|
551
|
+
params['AdditionalInfo'] = options[:additional_info] unless Aws::Utils.blank?(options[:additional_info])
|
571
552
|
params['DisableApiTermination'] = options[:disable_api_termination].to_s unless options[:disable_api_termination].nil?
|
572
|
-
params['InstanceInitiatedShutdownBehavior'] = options[:instance_initiated_shutdown_behavior] unless options[:instance_initiated_shutdown_behavior]
|
573
|
-
unless options[:user_data]
|
553
|
+
params['InstanceInitiatedShutdownBehavior'] = options[:instance_initiated_shutdown_behavior] unless Aws::Utils.blank?(options[:instance_initiated_shutdown_behavior])
|
554
|
+
unless Aws::Utils.blank?(options[:user_data])
|
574
555
|
options[:user_data].strip!
|
575
556
|
# Do not use CGI::escape(encode64(...)) as it is done in Amazons EC2 library.
|
576
557
|
# Amazon 169.254.169.254 does not like escaped symbols!
|
577
558
|
# And it doesn't like "\n" inside of encoded string! Grrr....
|
578
559
|
# Otherwise, some of UserData symbols will be lost...
|
579
|
-
params['UserData'] = Base64.encode64(options[:user_data]).delete("\n").strip unless options[:user_data]
|
560
|
+
params['UserData'] = Base64.encode64(options[:user_data]).delete("\n").strip unless Aws::Utils.blank?(options[:user_data])
|
561
|
+
end
|
562
|
+
unless options[:block_device_mappings].blank?
|
563
|
+
options[:block_device_mappings].size.times do |n|
|
564
|
+
if options[:block_device_mappings][n][:virtual_name]
|
565
|
+
params["BlockDeviceMapping.#{n+1}.VirtualName"] = options[:block_device_mappings][n][:virtual_name]
|
566
|
+
end
|
567
|
+
if options[:block_device_mappings][n][:device_name]
|
568
|
+
params["BlockDeviceMapping.#{n+1}.DeviceName"] = options[:block_device_mappings][n][:device_name]
|
569
|
+
end
|
570
|
+
if options[:block_device_mappings][n][:ebs_snapshot_id]
|
571
|
+
params["BlockDeviceMapping.#{n+1}.Ebs.SnapshotId"] = options[:block_device_mappings][n][:ebs_snapshot_id]
|
572
|
+
end
|
573
|
+
end
|
580
574
|
end
|
581
575
|
link = generate_request("RunInstances", params)
|
582
576
|
#debugger
|
@@ -613,7 +607,49 @@ module Aws
|
|
613
607
|
rescue Exception
|
614
608
|
on_exception
|
615
609
|
end
|
616
|
-
|
610
|
+
|
611
|
+
# Stop EBS-backed EC2 instances. Returns a list of instance state changes or an exception.
|
612
|
+
#
|
613
|
+
# ec2.stop_instances(['i-f222222d', 'i-f222222e']) #=>
|
614
|
+
# [{:aws_instance_id => "i-f222222d",
|
615
|
+
# :aws_current_state_code => 64,
|
616
|
+
# :aws_current_state => "stopping",
|
617
|
+
# :aws_prev_state_code => 16,
|
618
|
+
# :aws_prev_state => "running"},
|
619
|
+
# {:aws_instance_id => "i-f222222e",
|
620
|
+
# :aws_current_state_code => 64,
|
621
|
+
# :aws_current_state => "stopping",
|
622
|
+
# :aws_prev_state_code => 16,
|
623
|
+
# :aws_prev_state => "running"}]
|
624
|
+
#
|
625
|
+
def stop_instances(list=[])
|
626
|
+
link = generate_request("StopInstances", hash_params('InstanceId', list.to_a))
|
627
|
+
request_info(link, QEc2StopInstancesParser.new(:logger => @logger))
|
628
|
+
rescue Exception
|
629
|
+
on_exception
|
630
|
+
end
|
631
|
+
|
632
|
+
# Start EBS-backed EC2 instances. Returns a list of instance state changes or an exception.
|
633
|
+
#
|
634
|
+
# ec2.start_instances(['i-f222222d', 'i-f222222e']) #=>
|
635
|
+
# [{:aws_instance_id => "i-f222222d",
|
636
|
+
# :aws_current_state_code => 0,
|
637
|
+
# :aws_current_state => "pending",
|
638
|
+
# :aws_prev_state_code => 80,
|
639
|
+
# :aws_prev_state => "stopped"},
|
640
|
+
# {:aws_instance_id => "i-f222222e",
|
641
|
+
# :aws_current_state_code => 0,
|
642
|
+
# :aws_current_state => "pending",
|
643
|
+
# :aws_prev_state_code => 80,
|
644
|
+
# :aws_prev_state => "stopped"}]
|
645
|
+
#
|
646
|
+
def start_instances(list=[])
|
647
|
+
link = generate_request("StartInstances", hash_params('InstanceId', list.to_a))
|
648
|
+
request_info(link, QEc2StartInstancesParser.new(:logger => @logger))
|
649
|
+
rescue Exception
|
650
|
+
on_exception
|
651
|
+
end
|
652
|
+
|
617
653
|
# Retreive EC2 instance OS logs. Returns a hash of data or an exception.
|
618
654
|
#
|
619
655
|
# ec2.get_console_output('i-f222222d') =>
|
@@ -702,7 +738,7 @@ module Aws
|
|
702
738
|
{'acl' => s3_upload_policy},
|
703
739
|
['starts-with', '$key', s3_prefix]]}.to_json
|
704
740
|
policy64 = Base64.encode64(policy).gsub("\n", "")
|
705
|
-
signed_policy64 =
|
741
|
+
signed_policy64 = Utils.sign(s3_owner_aws_secret_access_key, policy64)
|
706
742
|
# fill request params
|
707
743
|
params = {'InstanceId' => instance_id,
|
708
744
|
'Storage.S3.AWSAccessKeyId' => s3_owner_aws_access_key_id,
|
@@ -768,50 +804,50 @@ module Aws
|
|
768
804
|
# ec2.describe_security_groups #=>
|
769
805
|
# [{:aws_group_name => "default-1",
|
770
806
|
# :aws_owner => "000000000888",
|
771
|
-
# :aws_description => "
|
807
|
+
# :aws_description => "a default security group",
|
772
808
|
# :aws_perms =>
|
773
|
-
# [{:
|
774
|
-
#
|
775
|
-
#
|
776
|
-
#
|
777
|
-
#
|
778
|
-
#
|
779
|
-
#
|
809
|
+
# [ {:protocol => "tcp", :from_port=>"1000", :to_port=>"2000",
|
810
|
+
# :ip_ranges=>[{cidr_ip=>"10.1.2.3/32"}, {cidr_ip=>"192.168.1.10/24"}],
|
811
|
+
# :groups => [{:owner=>"123456789012", :group_name="default"}] },
|
812
|
+
#
|
813
|
+
# {:protocol ="icmp", :from_port="-1", :to_port=>"-1",
|
814
|
+
# :ip_ranges=>[{:cidr_ip=>"0.0.0.0/0"}],
|
815
|
+
# :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
|
+
#
|
821
|
+
# {:protocol=>"tcp", :from_port="22", :to_port=>"22",
|
822
|
+
# :ip_ranges=>[{:cidr_ip=>"0.0.0.0/0"}],
|
823
|
+
# :groups=>[{:owner=>"", :group_name=>"default"}] },
|
824
|
+
#
|
825
|
+
# ..., {...}
|
826
|
+
# ]
|
780
827
|
#
|
781
828
|
def describe_security_groups(list=[])
|
782
829
|
link = generate_request("DescribeSecurityGroups", hash_params('GroupName', list.to_a))
|
783
|
-
request_cache_or_info(:describe_security_groups, link, QEc2DescribeSecurityGroupsParser, @@bench, list.
|
784
|
-
|
785
|
-
|
786
|
-
|
787
|
-
|
788
|
-
|
789
|
-
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
:to_port => perm.toPort,
|
795
|
-
:protocol => perm.ipProtocol,
|
796
|
-
:cidr_ips => cidr_ip}
|
797
|
-
end
|
830
|
+
request_cache_or_info(:describe_security_groups, link, QEc2DescribeSecurityGroupsParser, @@bench, list.nil? || list.empty?) do |parser|
|
831
|
+
result = []
|
832
|
+
parser.result.each do |item|
|
833
|
+
perms = []
|
834
|
+
item.ipPermissions.each do |perm|
|
835
|
+
current = {:from_port => perm.fromPort,
|
836
|
+
:to_port => perm.toPort,
|
837
|
+
:protocol => perm.ipProtocol,
|
838
|
+
:groups => [], :ip_ranges => []}
|
839
|
+
perm.groups.each do |ngroup|
|
840
|
+
current[:groups] << {:group_name => ngroup.groupName, :owner => ngroup.userId}
|
798
841
|
end
|
799
|
-
|
800
|
-
|
801
|
-
perms.each_index do |i|
|
802
|
-
(0...i).each do |j|
|
803
|
-
if perms[i] == perms[j] then
|
804
|
-
perms[i] = nil; break;
|
805
|
-
end
|
806
|
-
end
|
842
|
+
perm.ipRanges.each do |cidr_ip|
|
843
|
+
current[:ip_ranges] << {:cidr_ip => cidr_ip.cidrIp}
|
807
844
|
end
|
808
|
-
|
809
|
-
|
810
|
-
|
811
|
-
|
812
|
-
|
813
|
-
|
814
|
-
|
845
|
+
perms << current
|
846
|
+
end
|
847
|
+
result << {:aws_owner => item.ownerId,
|
848
|
+
:aws_group_name => item.groupName,
|
849
|
+
:aws_description => item.groupDescription,
|
850
|
+
:aws_perms => perms}
|
815
851
|
end
|
816
852
|
result
|
817
853
|
end
|
@@ -825,7 +861,7 @@ module Aws
|
|
825
861
|
#
|
826
862
|
def create_security_group(name, description)
|
827
863
|
# EC2 doesn't like an empty description...
|
828
|
-
description = " " if
|
864
|
+
description = " " if Aws::Utils.blank?(description)
|
829
865
|
link = generate_request("CreateSecurityGroup",
|
830
866
|
'GroupName' => name.to_s,
|
831
867
|
'GroupDescription' => description.to_s)
|
@@ -922,7 +958,7 @@ module Aws
|
|
922
958
|
#
|
923
959
|
def describe_key_pairs(list=[])
|
924
960
|
link = generate_request("DescribeKeyPairs", hash_params('KeyName', list.to_a))
|
925
|
-
request_cache_or_info :describe_key_pairs, link, QEc2DescribeKeyPairParser, @@bench, list.
|
961
|
+
request_cache_or_info :describe_key_pairs, link, QEc2DescribeKeyPairParser, @@bench, list.nil? || list.empty?
|
926
962
|
rescue Exception
|
927
963
|
on_exception
|
928
964
|
end
|
@@ -995,7 +1031,7 @@ module Aws
|
|
995
1031
|
def describe_addresses(list=[])
|
996
1032
|
link = generate_request("DescribeAddresses",
|
997
1033
|
hash_params('PublicIp', list.to_a))
|
998
|
-
request_cache_or_info :describe_addresses, link, QEc2DescribeAddressesParser, @@bench, list.
|
1034
|
+
request_cache_or_info :describe_addresses, link, QEc2DescribeAddressesParser, @@bench, list.nil? || list.empty?
|
999
1035
|
rescue Exception
|
1000
1036
|
on_exception
|
1001
1037
|
end
|
@@ -1044,11 +1080,33 @@ module Aws
|
|
1044
1080
|
def describe_availability_zones(list=[])
|
1045
1081
|
link = generate_request("DescribeAvailabilityZones",
|
1046
1082
|
hash_params('ZoneName', list.to_a))
|
1047
|
-
request_cache_or_info :describe_availability_zones, link, QEc2DescribeAvailabilityZonesParser, @@bench, list.
|
1083
|
+
request_cache_or_info :describe_availability_zones, link, QEc2DescribeAvailabilityZonesParser, @@bench, list.nil? || list.empty?
|
1048
1084
|
rescue Exception
|
1049
1085
|
on_exception
|
1050
1086
|
end
|
1051
1087
|
|
1088
|
+
# This is using the new way, but not sure it's backwrads compatible
|
1089
|
+
def describe_availability_zones2(options={})
|
1090
|
+
link = generate_request("DescribeAvailabilityZones", options={})
|
1091
|
+
request_info_xml_simple(self.class.connection_name, @params, link, @logger,
|
1092
|
+
:group_tags =>{"DBInstances" =>"DBInstance",
|
1093
|
+
"DBParameterGroups"=>"DBParameterGroup",
|
1094
|
+
"DBSecurityGroups" =>"DBSecurityGroup",
|
1095
|
+
"EC2SecurityGroups"=>"EC2SecurityGroup",
|
1096
|
+
"IPRanges" =>"IPRange"},
|
1097
|
+
:force_array =>["DBInstances",
|
1098
|
+
"DBParameterGroups",
|
1099
|
+
"DBSecurityGroups",
|
1100
|
+
"EC2SecurityGroups",
|
1101
|
+
"IPRanges"],
|
1102
|
+
:pull_out_array =>options[:pull_out_array],
|
1103
|
+
:pull_out_single=>options[:pull_out_single],
|
1104
|
+
:wrapper =>options[:wrapper])
|
1105
|
+
rescue Exception
|
1106
|
+
on_exception
|
1107
|
+
end
|
1108
|
+
|
1109
|
+
|
1052
1110
|
#-----------------------------------------------------------------
|
1053
1111
|
# Regions
|
1054
1112
|
#-----------------------------------------------------------------
|
@@ -1060,7 +1118,7 @@ module Aws
|
|
1060
1118
|
def describe_regions(list=[])
|
1061
1119
|
link = generate_request("DescribeRegions",
|
1062
1120
|
hash_params('RegionName', list.to_a))
|
1063
|
-
request_cache_or_info :describe_regions, link, QEc2DescribeRegionsParser, @@bench, list.
|
1121
|
+
request_cache_or_info :describe_regions, link, QEc2DescribeRegionsParser, @@bench, list.nil? || list.empty?
|
1064
1122
|
rescue Exception
|
1065
1123
|
on_exception
|
1066
1124
|
end
|
@@ -1093,7 +1151,7 @@ module Aws
|
|
1093
1151
|
def describe_volumes(list=[])
|
1094
1152
|
link = generate_request("DescribeVolumes",
|
1095
1153
|
hash_params('VolumeId', list.to_a))
|
1096
|
-
request_cache_or_info :describe_volumes, link, QEc2DescribeVolumesParser, @@bench, list.
|
1154
|
+
request_cache_or_info :describe_volumes, link, QEc2DescribeVolumesParser, @@bench, list.nil? || list.empty?
|
1097
1155
|
rescue Exception
|
1098
1156
|
on_exception
|
1099
1157
|
end
|
@@ -1178,8 +1236,8 @@ module Aws
|
|
1178
1236
|
#
|
1179
1237
|
def detach_volume(volume_id, instance_id=nil, device=nil, force=nil)
|
1180
1238
|
hash = {"VolumeId" => volume_id.to_s}
|
1181
|
-
hash["InstanceId"] = instance_id.to_s unless
|
1182
|
-
hash["Device"] = device.to_s unless
|
1239
|
+
hash["InstanceId"] = instance_id.to_s unless Aws::Utils.blank?(instance_id)
|
1240
|
+
hash["Device"] = device.to_s unless Aws::Utils.blank?(device)
|
1183
1241
|
hash["Force"] = 'true' if force
|
1184
1242
|
#
|
1185
1243
|
link = generate_request("DetachVolume", hash)
|
@@ -1210,7 +1268,7 @@ module Aws
|
|
1210
1268
|
def describe_snapshots(list=[])
|
1211
1269
|
link = generate_request("DescribeSnapshots",
|
1212
1270
|
hash_params('SnapshotId', list.to_a))
|
1213
|
-
request_cache_or_info :describe_snapshots, link, QEc2DescribeSnapshotsParser, @@bench, list.
|
1271
|
+
request_cache_or_info :describe_snapshots, link, QEc2DescribeSnapshotsParser, @@bench, list.nil? || list.empty?
|
1214
1272
|
rescue Exception
|
1215
1273
|
on_exception
|
1216
1274
|
end
|
@@ -1224,9 +1282,8 @@ module Aws
|
|
1224
1282
|
# :aws_status => "pending",
|
1225
1283
|
# :aws_id => "snap-d56783bc"}
|
1226
1284
|
#
|
1227
|
-
def create_snapshot(volume_id)
|
1228
|
-
link = generate_request("CreateSnapshot",
|
1229
|
-
"VolumeId" => volume_id.to_s)
|
1285
|
+
def create_snapshot(volume_id, options={})
|
1286
|
+
link = generate_request("CreateSnapshot", options.merge({"VolumeId" => volume_id.to_s}))
|
1230
1287
|
request_info(link, QEc2CreateSnapshotParser.new(:logger => @logger))
|
1231
1288
|
rescue Exception
|
1232
1289
|
on_exception
|
@@ -1397,6 +1454,10 @@ module Aws
|
|
1397
1454
|
attr_accessor :groupName
|
1398
1455
|
end
|
1399
1456
|
|
1457
|
+
class QEc2IpRangeItemType #:nodoc:
|
1458
|
+
attr_accessor :cidrIp
|
1459
|
+
end
|
1460
|
+
|
1400
1461
|
class QEc2IpPermissionType #:nodoc:
|
1401
1462
|
attr_accessor :ipProtocol
|
1402
1463
|
attr_accessor :fromPort
|
@@ -1426,35 +1487,32 @@ module Aws
|
|
1426
1487
|
@perm.groups = []
|
1427
1488
|
elsif @xmlpath=='DescribeSecurityGroupsResponse/securityGroupInfo/item/ipPermissions/item/groups'
|
1428
1489
|
@sgroup = QEc2UserIdGroupPairType.new
|
1490
|
+
elsif @xmlpath=='DescribeSecurityGroupsResponse/securityGroupInfo/item/ipPermissions/item/ipRanges'
|
1491
|
+
@sIpRange = QEc2IpRangeItemType.new
|
1429
1492
|
end
|
1430
1493
|
end
|
1431
1494
|
end
|
1432
1495
|
|
1433
1496
|
def tagend(name)
|
1434
1497
|
case name
|
1435
|
-
when 'ownerId'
|
1436
|
-
|
1437
|
-
when 'groupDescription' then
|
1438
|
-
@group.groupDescription = @text
|
1498
|
+
when 'ownerId' then @group.ownerId = @text
|
1499
|
+
when 'groupDescription' then @group.groupDescription = @text
|
1439
1500
|
when 'groupName'
|
1440
1501
|
if @xmlpath=='DescribeSecurityGroupsResponse/securityGroupInfo/item'
|
1441
|
-
@group.groupName
|
1502
|
+
@group.groupName = @text
|
1442
1503
|
elsif @xmlpath=='DescribeSecurityGroupsResponse/securityGroupInfo/item/ipPermissions/item/groups/item'
|
1443
1504
|
@sgroup.groupName = @text
|
1444
1505
|
end
|
1445
|
-
when 'ipProtocol'
|
1446
|
-
|
1447
|
-
when '
|
1448
|
-
|
1449
|
-
when '
|
1450
|
-
@perm.toPort = @text
|
1451
|
-
when 'userId' then
|
1452
|
-
@sgroup.userId = @text
|
1453
|
-
when 'cidrIp' then
|
1454
|
-
@perm.ipRanges << @text
|
1506
|
+
when 'ipProtocol' then @perm.ipProtocol = @text
|
1507
|
+
when 'fromPort' then @perm.fromPort = @text
|
1508
|
+
when 'toPort' then @perm.toPort = @text
|
1509
|
+
when 'userId' then @sgroup.userId = @text
|
1510
|
+
when 'cidrIp' then @sIpRange.cidrIp = @text
|
1455
1511
|
when 'item'
|
1456
1512
|
if @xmlpath=='DescribeSecurityGroupsResponse/securityGroupInfo/item/ipPermissions/item/groups'
|
1457
1513
|
@perm.groups << @sgroup
|
1514
|
+
elsif @xmlpath=='DescribeSecurityGroupsResponse/securityGroupInfo/item/ipPermissions/item/ipRanges'
|
1515
|
+
@perm.ipRanges << @sIpRange
|
1458
1516
|
elsif @xmlpath=='DescribeSecurityGroupsResponse/securityGroupInfo/item/ipPermissions'
|
1459
1517
|
@group.ipPermissions << @perm
|
1460
1518
|
elsif @xmlpath=='DescribeSecurityGroupsResponse/securityGroupInfo'
|
@@ -1745,6 +1803,69 @@ module Aws
|
|
1745
1803
|
@result = []
|
1746
1804
|
end
|
1747
1805
|
end
|
1806
|
+
|
1807
|
+
class QEc2StopInstancesParser < AwsParser #:nodoc:
|
1808
|
+
def tagstart(name, attributes)
|
1809
|
+
@instance = {} if name == 'item'
|
1810
|
+
end
|
1811
|
+
|
1812
|
+
def tagend(name)
|
1813
|
+
case name
|
1814
|
+
when 'instanceId' then
|
1815
|
+
@instance[:aws_instance_id] = @text
|
1816
|
+
when 'code'
|
1817
|
+
if @xmlpath == 'StopInstancesResponse/instancesSet/item/currentState'
|
1818
|
+
@instance[:aws_current_state_code] = @text.to_i
|
1819
|
+
elsif @xmlpath == 'StopInstancesResponse/instancesSet/item/previousState'
|
1820
|
+
@instance[:aws_prev_state_code] = @text.to_i
|
1821
|
+
end
|
1822
|
+
when 'name'
|
1823
|
+
if @xmlpath == 'StopInstancesResponse/instancesSet/item/currentState'
|
1824
|
+
@instance[:aws_current_state] = @text
|
1825
|
+
elsif @xmlpath == 'StopInstancesResponse/instancesSet/item/previousState'
|
1826
|
+
@instance[:aws_prev_state] = @text
|
1827
|
+
end
|
1828
|
+
when 'item' then
|
1829
|
+
@result << @instance
|
1830
|
+
end
|
1831
|
+
end
|
1832
|
+
|
1833
|
+
def reset
|
1834
|
+
@result = []
|
1835
|
+
end
|
1836
|
+
end
|
1837
|
+
|
1838
|
+
class QEc2StartInstancesParser < AwsParser #:nodoc:
|
1839
|
+
def tagstart(name, attributes)
|
1840
|
+
@instance = {} if name == 'item'
|
1841
|
+
end
|
1842
|
+
|
1843
|
+
def tagend(name)
|
1844
|
+
case name
|
1845
|
+
when 'instanceId' then
|
1846
|
+
@instance[:aws_instance_id] = @text
|
1847
|
+
when 'code'
|
1848
|
+
if @xmlpath == 'StartInstancesResponse/instancesSet/item/currentState'
|
1849
|
+
@instance[:aws_current_state_code] = @text.to_i
|
1850
|
+
elsif @xmlpath == 'StartInstancesResponse/instancesSet/item/previousState'
|
1851
|
+
@instance[:aws_prev_state_code] = @text.to_i
|
1852
|
+
end
|
1853
|
+
when 'name'
|
1854
|
+
if @xmlpath == 'StartInstancesResponse/instancesSet/item/currentState'
|
1855
|
+
@instance[:aws_current_state] = @text
|
1856
|
+
elsif @xmlpath == 'StartInstancesResponse/instancesSet/item/previousState'
|
1857
|
+
@instance[:aws_prev_state] = @text
|
1858
|
+
end
|
1859
|
+
when 'item' then
|
1860
|
+
@result << @instance
|
1861
|
+
end
|
1862
|
+
end
|
1863
|
+
|
1864
|
+
def reset
|
1865
|
+
@result = []
|
1866
|
+
end
|
1867
|
+
end
|
1868
|
+
|
1748
1869
|
|
1749
1870
|
#-----------------------------------------------------------------
|
1750
1871
|
# PARSERS: Console
|
@@ -1859,7 +1980,7 @@ module Aws
|
|
1859
1980
|
def tagend(name)
|
1860
1981
|
case name
|
1861
1982
|
when 'instanceId' then
|
1862
|
-
@address[:instance_id] =
|
1983
|
+
@address[:instance_id] = Aws::Utils.blank?(@text) ? nil : @text
|
1863
1984
|
when 'publicIp' then
|
1864
1985
|
@address[:public_ip] = @text
|
1865
1986
|
when 'item' then
|
@@ -1929,7 +2050,7 @@ module Aws
|
|
1929
2050
|
when 'size' then
|
1930
2051
|
@result[:aws_size] = @text.to_i ###
|
1931
2052
|
when 'snapshotId' then
|
1932
|
-
@result[:snapshot_id] =
|
2053
|
+
@result[:snapshot_id] = Aws::Utils.blank?(@text) ? nil : @text ###
|
1933
2054
|
when 'availabilityZone' then
|
1934
2055
|
@result[:zone] = @text ###
|
1935
2056
|
end
|
@@ -1997,7 +2118,7 @@ module Aws
|
|
1997
2118
|
when 'attachTime' then
|
1998
2119
|
@volume[:aws_attached_at] = Time.parse(@text)
|
1999
2120
|
when 'snapshotId' then
|
2000
|
-
@volume[:snapshot_id] =
|
2121
|
+
@volume[:snapshot_id] = Aws::Utils.blank?(@text) ? nil : @text
|
2001
2122
|
when 'availabilityZone' then
|
2002
2123
|
@volume[:zone] = @text
|
2003
2124
|
when 'item'
|
@@ -2018,8 +2139,19 @@ module Aws
|
|
2018
2139
|
#-----------------------------------------------------------------
|
2019
2140
|
|
2020
2141
|
class QEc2DescribeSnapshotsParser < AwsParser #:nodoc:
|
2142
|
+
|
2143
|
+
def initialize (params={})
|
2144
|
+
@inside_tagset = false
|
2145
|
+
super(params)
|
2146
|
+
end
|
2147
|
+
|
2021
2148
|
def tagstart(name, attributes)
|
2022
|
-
|
2149
|
+
case name
|
2150
|
+
when 'tagSet'
|
2151
|
+
@inside_tagset = true
|
2152
|
+
when 'item'
|
2153
|
+
@snapshot = {} unless @inside_tagset
|
2154
|
+
end
|
2023
2155
|
end
|
2024
2156
|
|
2025
2157
|
def tagend(name)
|
@@ -2040,8 +2172,14 @@ module Aws
|
|
2040
2172
|
@snapshot[:aws_owner] = @text
|
2041
2173
|
when 'volumeSize' then
|
2042
2174
|
@snapshot[:aws_volume_size] = @text.to_i
|
2175
|
+
when 'tagSet' then
|
2176
|
+
@inside_tagset = false
|
2177
|
+
when 'key' then
|
2178
|
+
@key = ('aws_tag_' + @text).to_sym
|
2179
|
+
when 'value' then
|
2180
|
+
@snapshot[@key] = @text
|
2043
2181
|
when 'item' then
|
2044
|
-
@result << @snapshot
|
2182
|
+
@result << @snapshot unless @inside_tagset
|
2045
2183
|
end
|
2046
2184
|
end
|
2047
2185
|
|