Skip to content

Commit

Permalink
New Resource: aws_imagebuilder_distribution_configuration
Browse files Browse the repository at this point in the history
Reference: #11084
Reference: #13316
Reference: #13485

Changes:

```
* **New Data Source:** `aws_imagebuilder_distribution_configuration`
* **New Resource:** `aws_imagebuilder_distribution_configuration`
```

Output from acceptance testing in AWS Commercial:

```
--- PASS: TestAccAwsImageBuilderDistributionConfiguration_basic (23.95s)
--- PASS: TestAccAwsImageBuilderDistributionConfiguration_Description (39.52s)
--- PASS: TestAccAwsImageBuilderDistributionConfiguration_disappears (18.57s)
--- PASS: TestAccAwsImageBuilderDistributionConfiguration_Distribution (42.99s)
--- PASS: TestAccAwsImageBuilderDistributionConfiguration_Distribution_AmiDistributionConfiguration_AmiTags (40.02s)
--- PASS: TestAccAwsImageBuilderDistributionConfiguration_Distribution_AmiDistributionConfiguration_Description (39.36s)
--- PASS: TestAccAwsImageBuilderDistributionConfiguration_Distribution_AmiDistributionConfiguration_KmsKeyId (46.31s)
--- PASS: TestAccAwsImageBuilderDistributionConfiguration_Distribution_AmiDistributionConfiguration_LaunchPermission_UserGroups (23.66s)
--- PASS: TestAccAwsImageBuilderDistributionConfiguration_Distribution_AmiDistributionConfiguration_LaunchPermission_UserIds (40.12s)
--- PASS: TestAccAwsImageBuilderDistributionConfiguration_Distribution_AmiDistributionConfiguration_Name (39.12s)
--- PASS: TestAccAwsImageBuilderDistributionConfiguration_Distribution_AmiDistributionConfiguration_TargetAccountIds (40.12s)
--- PASS: TestAccAwsImageBuilderDistributionConfiguration_Distribution_LicenseConfigurationArns (40.75s)
--- PASS: TestAccAwsImageBuilderDistributionConfiguration_Tags (49.75s)

--- PASS: TestAccAwsImageBuilderDistributionConfigurationDataSource_Arn (18.52s)
```

Output from acceptance testing in AWS GovCloud (US) (failure information: #16178):

```
--- FAIL: TestAccAwsImageBuilderDistributionConfiguration_Distribution_LicenseConfigurationArns (10.88s)
--- PASS: TestAccAwsImageBuilderDistributionConfiguration_basic (27.00s)
--- PASS: TestAccAwsImageBuilderDistributionConfiguration_Description (40.22s)
--- PASS: TestAccAwsImageBuilderDistributionConfiguration_disappears (21.76s)
--- PASS: TestAccAwsImageBuilderDistributionConfiguration_Distribution_AmiDistributionConfiguration_AmiTags (42.09s)
--- PASS: TestAccAwsImageBuilderDistributionConfiguration_Distribution_AmiDistributionConfiguration_Description (42.89s)
--- PASS: TestAccAwsImageBuilderDistributionConfiguration_Distribution_AmiDistributionConfiguration_KmsKeyId (51.80s)
--- PASS: TestAccAwsImageBuilderDistributionConfiguration_Distribution_AmiDistributionConfiguration_LaunchPermission_UserGroups (26.70s)
--- PASS: TestAccAwsImageBuilderDistributionConfiguration_Distribution_AmiDistributionConfiguration_LaunchPermission_UserIds (41.44s)
--- PASS: TestAccAwsImageBuilderDistributionConfiguration_Distribution_AmiDistributionConfiguration_Name (42.32s)
--- PASS: TestAccAwsImageBuilderDistributionConfiguration_Distribution_AmiDistributionConfiguration_TargetAccountIds (42.42s)
--- PASS: TestAccAwsImageBuilderDistributionConfiguration_Tags (55.37s)

--- PASS: TestAccAwsImageBuilderDistributionConfigurationDataSource_Arn (25.62s)
```

Output from sweeper in AWS Commercial:

```
2020/11/13 09:11:34 [DEBUG] Running Sweepers for region (us-west-2):
2020/11/13 09:11:34 [DEBUG] Running Sweeper (aws_imagebuilder_distribution_configuration) in region (us-west-2)
2020/11/13 09:11:37 Sweeper Tests ran successfully:
  - aws_imagebuilder_distribution_configuration
2020/11/13 09:11:37 [DEBUG] Running Sweepers for region (us-east-1):
2020/11/13 09:11:37 [DEBUG] Running Sweeper (aws_imagebuilder_distribution_configuration) in region (us-east-1)
2020/11/13 09:11:39 Sweeper Tests ran successfully:
  - aws_imagebuilder_distribution_configuration
ok    github.com/terraform-providers/terraform-provider-aws/aws 7.724s
```
Output from sweeper in AWS GovCloud (US):

```
2020/11/13 09:30:11 [DEBUG] Running Sweepers for region (us-gov-west-1):
2020/11/13 09:30:11 [DEBUG] Running Sweeper (aws_imagebuilder_distribution_configuration) in region (us-gov-west-1)
2020/11/13 09:30:14 Sweeper Tests ran successfully:
  - aws_imagebuilder_distribution_configuration
ok    github.com/terraform-providers/terraform-provider-aws/aws 4.971s
```
  • Loading branch information
bflad committed Nov 13, 2020
1 parent 09e672e commit c21b59c
Show file tree
Hide file tree
Showing 6 changed files with 1,343 additions and 161 deletions.
60 changes: 34 additions & 26 deletions aws/data_source_aws_imagebuilder_distribution_configuration.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ package aws

import (
"fmt"

"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/imagebuilder"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/terraform-providers/terraform-provider-aws/aws/internal/keyvaluetags"
"log"
)

func datasourceAwsImageBuilderDistributionConfiguration() *schema.Resource {
Expand All @@ -15,8 +15,9 @@ func datasourceAwsImageBuilderDistributionConfiguration() *schema.Resource {

Schema: map[string]*schema.Schema{
"arn": {
Type: schema.TypeString,
Required: true,
Type: schema.TypeString,
Required: true,
ValidateFunc: validateArn,
},
"date_created": {
Type: schema.TypeString,
Expand All @@ -30,7 +31,7 @@ func datasourceAwsImageBuilderDistributionConfiguration() *schema.Resource {
Type: schema.TypeString,
Computed: true,
},
"distributions": {
"distribution": {
Type: schema.TypeSet,
Computed: true,
Elem: &schema.Resource{
Expand All @@ -40,7 +41,7 @@ func datasourceAwsImageBuilderDistributionConfiguration() *schema.Resource {
Computed: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"ami_tags": tagsSchema(),
"ami_tags": tagsSchemaComputed(),
"description": {
Type: schema.TypeString,
Computed: true,
Expand Down Expand Up @@ -75,10 +76,17 @@ func datasourceAwsImageBuilderDistributionConfiguration() *schema.Resource {
Type: schema.TypeString,
Computed: true,
},
"target_account_ids": {
Type: schema.TypeSet,
Computed: true,
Elem: &schema.Schema{
Type: schema.TypeString,
},
},
},
},
},
"license_configuration_arn": {
"license_configuration_arns": {
Type: schema.TypeSet,
Computed: true,
Elem: &schema.Schema{
Expand All @@ -103,34 +111,34 @@ func datasourceAwsImageBuilderDistributionConfiguration() *schema.Resource {

func datasourceAwsImageBuilderDistributionConfigurationRead(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*AWSClient).imagebuilderconn
ignoreTagsConfig := meta.(*AWSClient).IgnoreTagsConfig

resp, err := conn.GetDistributionConfiguration(&imagebuilder.GetDistributionConfigurationInput{
DistributionConfigurationArn: aws.String(d.Get("arn").(string)),
})
input := &imagebuilder.GetDistributionConfigurationInput{}

if isAWSErr(err, imagebuilder.ErrCodeResourceNotFoundException, "") {
log.Printf("[WARN] DistributionConfiguration (%s) not found, removing from state", d.Id())
d.SetId("")
return nil
if v, ok := d.GetOk("arn"); ok {
input.DistributionConfigurationArn = aws.String(v.(string))
}

if err != nil {
return fmt.Errorf("error reading DistributionConfiguration (%s): %s", d.Id(), err)
}

d.SetId(*resp.DistributionConfiguration.Arn)
d.Set("date_created", resp.DistributionConfiguration.DateCreated)
d.Set("date_updated", resp.DistributionConfiguration.DateUpdated)
d.Set("description", resp.DistributionConfiguration.Description)
d.Set("distributions", flattenAwsImageBuilderDistributions(resp.DistributionConfiguration.Distributions))
d.Set("name", resp.DistributionConfiguration.Name)
output, err := conn.GetDistributionConfiguration(input)

if err != nil {
return fmt.Errorf("error listing tags for DistributionConfiguration (%s): %s", d.Id(), err)
return fmt.Errorf("error getting Image Builder Distribution Configuration (%s): %w", d.Id(), err)
}
if err := d.Set("tags", keyvaluetags.ImagebuilderKeyValueTags(resp.DistributionConfiguration.Tags).IgnoreAws().IgnoreConfig(meta.(*AWSClient).IgnoreTagsConfig).Map()); err != nil {
return fmt.Errorf("error setting tags: %s", err)

if output == nil || output.DistributionConfiguration == nil {
return fmt.Errorf("error getting Image Builder Distribution Configuration (%s): empty response", d.Id())
}

distributionConfiguration := output.DistributionConfiguration

d.SetId(aws.StringValue(distributionConfiguration.Arn))
d.Set("arn", distributionConfiguration.Arn)
d.Set("date_created", distributionConfiguration.DateCreated)
d.Set("date_updated", distributionConfiguration.DateUpdated)
d.Set("description", distributionConfiguration.Description)
d.Set("distribution", flattenImageBuilderDistributions(distributionConfiguration.Distributions))
d.Set("name", distributionConfiguration.Name)
d.Set("tags", keyvaluetags.ImagebuilderKeyValueTags(distributionConfiguration.Tags).IgnoreAws().IgnoreConfig(ignoreTagsConfig).Map())

return nil
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package aws

import (
"fmt"
"testing"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
)

func TestAccAwsImageBuilderDistributionConfigurationDataSource_Arn(t *testing.T) {
rName := acctest.RandomWithPrefix("tf-acc-test")
dataSourceName := "data.aws_imagebuilder_distribution_configuration.test"
resourceName := "aws_imagebuilder_distribution_configuration.test"

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
ProviderFactories: testAccProviderFactories,
CheckDestroy: testAccCheckAwsImageBuilderDistributionConfigurationDestroy,
Steps: []resource.TestStep{
{
Config: testAccAwsImageBuilderDistributionConfigurationDataSourceConfigArn(rName),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttrPair(dataSourceName, "arn", resourceName, "arn"),
resource.TestCheckResourceAttrPair(dataSourceName, "date_created", resourceName, "date_created"),
resource.TestCheckResourceAttrPair(dataSourceName, "date_updated", resourceName, "date_updated"),
resource.TestCheckResourceAttrPair(dataSourceName, "description", resourceName, "description"),
resource.TestCheckResourceAttrPair(dataSourceName, "distribution.#", resourceName, "distribution.#"),
resource.TestCheckResourceAttrPair(dataSourceName, "name", resourceName, "name"),
resource.TestCheckResourceAttrPair(dataSourceName, "tags.%", resourceName, "tags.%"),
),
},
},
})
}

func testAccAwsImageBuilderDistributionConfigurationDataSourceConfigArn(rName string) string {
return fmt.Sprintf(`
data "aws_region" "current" {}
resource "aws_imagebuilder_distribution_configuration" "test" {
name = %[1]q
distribution {
region = data.aws_region.current.name
}
}
data "aws_imagebuilder_distribution_configuration" "test" {
arn = aws_imagebuilder_distribution_configuration.test.arn
}
`, rName)
}
Loading

0 comments on commit c21b59c

Please sign in to comment.