From c9a0627f13e371c3c74448abdcc4984739aa2afa Mon Sep 17 00:00:00 2001 From: Graham Floyd Date: Wed, 21 Jan 2015 22:48:04 -0600 Subject: [PATCH 1/2] Add spot_price parameter to aws_launch_configuration resource --- .../providers/aws/resource_aws_launch_configuration.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/builtin/providers/aws/resource_aws_launch_configuration.go b/builtin/providers/aws/resource_aws_launch_configuration.go index f22147f4b..1092956f7 100644 --- a/builtin/providers/aws/resource_aws_launch_configuration.go +++ b/builtin/providers/aws/resource_aws_launch_configuration.go @@ -81,6 +81,12 @@ func resourceAwsLaunchConfiguration() *schema.Resource { Optional: true, Default: false, }, + + "spot_price": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + ForceNew: true, + }, }, } } @@ -96,6 +102,7 @@ func resourceAwsLaunchConfigurationCreate(d *schema.ResourceData, meta interface createLaunchConfigurationOpts.KeyName = d.Get("key_name").(string) createLaunchConfigurationOpts.UserData = d.Get("user_data").(string) createLaunchConfigurationOpts.AssociatePublicIpAddress = d.Get("associate_public_ip_address").(bool) + createLaunchConfigurationOpts.SpotPrice = d.Get("spot_price").(string) if v, ok := d.GetOk("security_groups"); ok { createLaunchConfigurationOpts.SecurityGroups = expandStringList( @@ -150,6 +157,7 @@ func resourceAwsLaunchConfigurationRead(d *schema.ResourceData, meta interface{} d.Set("instance_type", lc.InstanceType) d.Set("name", lc.Name) d.Set("security_groups", lc.SecurityGroups) + d.Set("spot_price", lc.SpotPrice) return nil } From 91378ce0af30411b82d9b06f08e64546ba8d5eb6 Mon Sep 17 00:00:00 2001 From: Graham Floyd Date: Fri, 23 Jan 2015 15:51:25 -0600 Subject: [PATCH 2/2] Add test for launch configuration with spot price --- .../resource_aws_launch_configuration_test.go | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/builtin/providers/aws/resource_aws_launch_configuration_test.go b/builtin/providers/aws/resource_aws_launch_configuration_test.go index 64591ea44..32036af59 100644 --- a/builtin/providers/aws/resource_aws_launch_configuration_test.go +++ b/builtin/providers/aws/resource_aws_launch_configuration_test.go @@ -30,6 +30,18 @@ func TestAccAWSLaunchConfiguration(t *testing.T) { "aws_launch_configuration.bar", "instance_type", "t1.micro"), resource.TestCheckResourceAttr( "aws_launch_configuration.bar", "associate_public_ip_address", "true"), + resource.TestCheckResourceAttr( + "aws_launch_configuration.bar", "spot_price", ""), + ), + }, + + resource.TestStep{ + Config: TestAccAWSLaunchConfigurationWithSpotPriceConfig, + Check: resource.ComposeTestCheckFunc( + testAccCheckAWSLaunchConfigurationExists("aws_launch_configuration.bar", &conf), + testAccCheckAWSLaunchConfigurationAttributes(&conf), + resource.TestCheckResourceAttr( + "aws_launch_configuration.bar", "spot_price", "0.01"), ), }, }, @@ -129,3 +141,14 @@ resource "aws_launch_configuration" "bar" { associate_public_ip_address = true } ` + +const TestAccAWSLaunchConfigurationWithSpotPriceConfig = ` +resource "aws_launch_configuration" "bar" { + name = "foobar-terraform-test" + image_id = "ami-21f78e11" + instance_type = "t1.micro" + user_data = "foobar-user-data" + associate_public_ip_address = true + spot_price = "0.01" +} +`