From 8a96a0d02de0226201c08b39b55819a68a1510ea Mon Sep 17 00:00:00 2001 From: Adam Bozanich Date: Tue, 12 Feb 2013 13:41:48 -0800 Subject: [PATCH 1/2] Enable ebs-optimized spot instance requests --- lib/fog/aws/models/compute/spot_request.rb | 2 ++ lib/fog/aws/requests/compute/request_spot_instances.rb | 1 + 2 files changed, 3 insertions(+) diff --git a/lib/fog/aws/models/compute/spot_request.rb b/lib/fog/aws/models/compute/spot_request.rb index afd73fb2c..84b05c520 100644 --- a/lib/fog/aws/models/compute/spot_request.rb +++ b/lib/fog/aws/models/compute/spot_request.rb @@ -21,6 +21,7 @@ module Fog attribute :availability_zone_group, :aliases => 'availabilityZoneGroup' attribute :product_description, :aliases => 'productDescription' + attribute :ebs_optimized, :aliases => 'LaunchSpecification.EbsOptimized' attribute :groups, :aliases => 'LaunchSpecification.SecurityGroup' attribute :key_name, :aliases => 'LaunchSpecification.KeyName' attribute :availability_zone, :aliases => 'LaunchSpecification.Placement.AvailabilityZone' @@ -95,6 +96,7 @@ module Fog 'LaunchSpecification.Monitoring.Enabled' => monitoring, 'LaunchSpecification.Placement.AvailabilityZone' => availability_zone, 'LaunchSpecification.SecurityGroup' => groups, + 'LaunchSpecification.EbsOptimized' => ebs_optimized, 'LaunchSpecification.UserData' => user_data, 'LaunchSpecification.SubnetId' => subnet_id, 'LaunchSpecification.IamInstanceProfile.Arn' => @iam_instance_profile_arn, diff --git a/lib/fog/aws/requests/compute/request_spot_instances.rb b/lib/fog/aws/requests/compute/request_spot_instances.rb index 684b18a13..2bfdf0c74 100644 --- a/lib/fog/aws/requests/compute/request_spot_instances.rb +++ b/lib/fog/aws/requests/compute/request_spot_instances.rb @@ -29,6 +29,7 @@ module Fog # * 'LaunchSpecification.SecurityGroup'<~Array> or <~String> - Name of security group(s) for instances, not supported in VPC # * 'LaunchSpecification.SecurityGroupId'<~Array> or <~String> - Id of security group(s) for instances, use this or LaunchSpecification.SecurityGroup # * 'LaunchSpecification.UserData'<~String> - Additional data to provide to booting instances + # * 'LaunchSpecification.EbsOptimized'<~Boolean> - Whether the instance is optimized for EBS I/O # * 'Type'<~String> - spot instance request type in ['one-time', 'persistent'] # * 'ValidFrom'<~Time> - start date for request # * 'ValidUntil'<~Time> - end date for request From 48e0d3f200eda4b0cee256773bdd8d01fbbdc4fa Mon Sep 17 00:00:00 2001 From: Adam Bozanich Date: Tue, 12 Feb 2013 14:34:48 -0800 Subject: [PATCH 2/2] test spot instance request parser --- lib/fog/aws/parsers/compute/spot_instance_requests.rb | 2 ++ tests/aws/requests/compute/spot_instance_tests.rb | 5 +++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/fog/aws/parsers/compute/spot_instance_requests.rb b/lib/fog/aws/parsers/compute/spot_instance_requests.rb index efa4e674f..53454a0cb 100644 --- a/lib/fog/aws/parsers/compute/spot_instance_requests.rb +++ b/lib/fog/aws/parsers/compute/spot_instance_requests.rb @@ -52,6 +52,8 @@ module Fog end when 'imageId', 'instanceType', 'keyname', 'subnetId' @spot_instance_request['launchSpecification'][name] = value + when 'ebsOptimized' + @spot_instance_request['launchSpecification'][name] = value == 'true' when 'enabled' @spot_instance_request['launchSpecification']['monitoring'] = (value == 'true') when 'requestId' diff --git a/tests/aws/requests/compute/spot_instance_tests.rb b/tests/aws/requests/compute/spot_instance_tests.rb index 57c634897..9a65fdfcd 100644 --- a/tests/aws/requests/compute/spot_instance_tests.rb +++ b/tests/aws/requests/compute/spot_instance_tests.rb @@ -12,6 +12,7 @@ Shindo.tests('Fog::Compute[:aws] | spot instance requests', ['aws']) do 'imageId' => String, 'instanceType' => String, 'monitoring' => Fog::Boolean, + 'ebsOptimized' => Fog::Boolean, 'subnetId' => Fog::Nullable::String, 'iamInstanceProfile' => Fog::Nullable::Hash, }, @@ -38,13 +39,13 @@ Shindo.tests('Fog::Compute[:aws] | spot instance requests', ['aws']) do pending if Fog.mocking? tests("#request_spot_instances('ami-3202f25b', 't1.micro', '0.001')").formats(@spot_instance_requests_format) do - data = Fog::Compute[:aws].request_spot_instances('ami-3202f25b', 't1.micro', '0.001').body + data = Fog::Compute[:aws].request_spot_instances('ami-3202f25b', 't1.micro', '0.001',{'LaunchSpecification.EbsOptimized' => false}).body @spot_instance_request_id = data['spotInstanceRequestSet'].first['spotInstanceRequestId'] data end tests("#describe_spot_instance_requests").formats(@spot_instance_requests_format) do - Fog::Compute[:aws].describe_spot_instance_requests.body + Fog::Compute[:aws].describe_spot_instance_requests('spot-instance-request-id' => [@spot_instance_request_id]).body end tests("#cancel_spot_instance_requests('#{@spot_instance_request_id}')").formats(@cancel_spot_instance_request_format) do