From c744bb6fa85b98a345bf6dc63ae4153ebb297e13 Mon Sep 17 00:00:00 2001 From: David Harris Date: Sun, 3 Jul 2016 09:42:12 -0600 Subject: [PATCH] provider/aws: import Elastic Beanstalk Application and Environment (#7444) --- ..._aws_elastic_beanstalk_application_test.go | 28 +++++++++++++++++++ ..._aws_elastic_beanstalk_environment_test.go | 28 +++++++++++++++++++ ...ource_aws_elastic_beanstalk_application.go | 4 +++ ...ource_aws_elastic_beanstalk_environment.go | 28 +++++++++++++++---- 4 files changed, 82 insertions(+), 6 deletions(-) create mode 100644 builtin/providers/aws/import_aws_elastic_beanstalk_application_test.go create mode 100644 builtin/providers/aws/import_aws_elastic_beanstalk_environment_test.go diff --git a/builtin/providers/aws/import_aws_elastic_beanstalk_application_test.go b/builtin/providers/aws/import_aws_elastic_beanstalk_application_test.go new file mode 100644 index 0000000000..f5b5abc6c1 --- /dev/null +++ b/builtin/providers/aws/import_aws_elastic_beanstalk_application_test.go @@ -0,0 +1,28 @@ +package aws + +import ( + "testing" + + "github.com/hashicorp/terraform/helper/resource" +) + +func TestAWSElasticBeanstalkApplication_importBasic(t *testing.T) { + resourceName := "aws_elastic_beanstalk_application.tftest" + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckBeanstalkAppDestroy, + Steps: []resource.TestStep{ + resource.TestStep{ + Config: testAccBeanstalkAppConfig, + }, + + resource.TestStep{ + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} diff --git a/builtin/providers/aws/import_aws_elastic_beanstalk_environment_test.go b/builtin/providers/aws/import_aws_elastic_beanstalk_environment_test.go new file mode 100644 index 0000000000..d29a5936ff --- /dev/null +++ b/builtin/providers/aws/import_aws_elastic_beanstalk_environment_test.go @@ -0,0 +1,28 @@ +package aws + +import ( + "testing" + + "github.com/hashicorp/terraform/helper/resource" +) + +func TestAWSElasticBeanstalkEnvironment_importBasic(t *testing.T) { + resourceName := "aws_elastic_beanstalk_application.tftest" + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckBeanstalkAppDestroy, + Steps: []resource.TestStep{ + resource.TestStep{ + Config: testAccBeanstalkEnvConfig, + }, + + resource.TestStep{ + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} diff --git a/builtin/providers/aws/resource_aws_elastic_beanstalk_application.go b/builtin/providers/aws/resource_aws_elastic_beanstalk_application.go index 8f41b0f260..2123325264 100644 --- a/builtin/providers/aws/resource_aws_elastic_beanstalk_application.go +++ b/builtin/providers/aws/resource_aws_elastic_beanstalk_application.go @@ -19,6 +19,9 @@ func resourceAwsElasticBeanstalkApplication() *schema.Resource { Read: resourceAwsElasticBeanstalkApplicationRead, Update: resourceAwsElasticBeanstalkApplicationUpdate, Delete: resourceAwsElasticBeanstalkApplicationDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, Schema: map[string]*schema.Schema{ "name": &schema.Schema{ @@ -94,6 +97,7 @@ func resourceAwsElasticBeanstalkApplicationRead(d *schema.ResourceData, meta int return err } + d.Set("name", a.ApplicationName) d.Set("description", a.Description) return nil } diff --git a/builtin/providers/aws/resource_aws_elastic_beanstalk_environment.go b/builtin/providers/aws/resource_aws_elastic_beanstalk_environment.go index 196ced0956..5e5cb0c067 100644 --- a/builtin/providers/aws/resource_aws_elastic_beanstalk_environment.go +++ b/builtin/providers/aws/resource_aws_elastic_beanstalk_environment.go @@ -46,6 +46,9 @@ func resourceAwsElasticBeanstalkEnvironment() *schema.Resource { Read: resourceAwsElasticBeanstalkEnvironmentRead, Update: resourceAwsElasticBeanstalkEnvironmentUpdate, Delete: resourceAwsElasticBeanstalkEnvironmentDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, SchemaVersion: 1, MigrateState: resourceAwsElasticBeanstalkEnvironmentMigrateState, @@ -339,15 +342,12 @@ func resourceAwsElasticBeanstalkEnvironmentUpdate(d *schema.ResourceData, meta i func resourceAwsElasticBeanstalkEnvironmentRead(d *schema.ResourceData, meta interface{}) error { conn := meta.(*AWSClient).elasticbeanstalkconn - app := d.Get("application").(string) envId := d.Id() - tier := d.Get("tier").(string) log.Printf("[DEBUG] Elastic Beanstalk environment read %s: id %s", d.Get("name").(string), d.Id()) resp, err := conn.DescribeEnvironments(&elasticbeanstalk.DescribeEnvironmentsInput{ - ApplicationName: aws.String(app), - EnvironmentIds: []*string{aws.String(envId)}, + EnvironmentIds: []*string{aws.String(envId)}, }) if err != nil { @@ -380,6 +380,14 @@ func resourceAwsElasticBeanstalkEnvironmentRead(d *schema.ResourceData, meta int return err } + if err := d.Set("name", env.EnvironmentName); err != nil { + return err + } + + if err := d.Set("application", env.ApplicationName); err != nil { + return err + } + if err := d.Set("description", env.Description); err != nil { return err } @@ -388,8 +396,12 @@ func resourceAwsElasticBeanstalkEnvironmentRead(d *schema.ResourceData, meta int return err } - if tier == "WebServer" && env.CNAME != nil { - beanstalkCnamePrefixRegexp := regexp.MustCompile(`(^[^.]+).\w{2}-\w{4,9}-\d.elasticbeanstalk.com$`) + if err := d.Set("tier", *env.Tier.Name); err != nil { + return err + } + + if env.CNAME != nil { + beanstalkCnamePrefixRegexp := regexp.MustCompile(`(^[^.]+)(.\w{2}-\w{4,9}-\d)?.elasticbeanstalk.com$`) var cnamePrefix string cnamePrefixMatch := beanstalkCnamePrefixRegexp.FindStringSubmatch(*env.CNAME) @@ -402,6 +414,10 @@ func resourceAwsElasticBeanstalkEnvironmentRead(d *schema.ResourceData, meta int if err := d.Set("cname_prefix", cnamePrefix); err != nil { return err } + } else { + if err := d.Set("cname_prefix", ""); err != nil { + return err + } } if err := d.Set("autoscaling_groups", flattenBeanstalkAsg(resources.EnvironmentResources.AutoScalingGroups)); err != nil {