From 134a4d9a81f31759e0ccb0ea9db37d3694ebdb1b Mon Sep 17 00:00:00 2001 From: Matthew Sladen Date: Sat, 1 Oct 2022 10:41:14 +0100 Subject: [PATCH 1/2] New aws_appconfig data sources Add data source for appconfig_configuration_profile Add data source for appconfig_configuration_profiles Add data source for appconfig_environment Add data source for appconfig_environments --- .changelog/27054.txt | 15 ++ GNUmakefile | 2 +- internal/provider/provider.go | 5 + .../configuration_profile_data_source.go | 146 ++++++++++++++++++ .../configuration_profile_data_source_test.go | 80 ++++++++++ .../configuration_profiles_data_source.go | 71 +++++++++ ...configuration_profiles_data_source_test.go | 61 ++++++++ .../appconfig/environment_data_source.go | 137 ++++++++++++++++ .../appconfig/environment_data_source_test.go | 130 ++++++++++++++++ .../appconfig/environments_data_source.go | 74 +++++++++ .../environments_data_source_test.go | 59 +++++++ ...config_configuration_profile.html.markdown | 44 ++++++ ...onfig_configuration_profiles.html.markdown | 40 +++++ .../d/appconfig_environment.html.markdown | 43 ++++++ .../d/appconfig_environments.html.markdown | 34 ++++ .../r/appconfig_environment.html.markdown | 2 + 16 files changed, 942 insertions(+), 1 deletion(-) create mode 100644 .changelog/27054.txt create mode 100644 internal/service/appconfig/configuration_profile_data_source.go create mode 100644 internal/service/appconfig/configuration_profile_data_source_test.go create mode 100644 internal/service/appconfig/configuration_profiles_data_source.go create mode 100644 internal/service/appconfig/configuration_profiles_data_source_test.go create mode 100644 internal/service/appconfig/environment_data_source.go create mode 100644 internal/service/appconfig/environment_data_source_test.go create mode 100644 internal/service/appconfig/environments_data_source.go create mode 100644 internal/service/appconfig/environments_data_source_test.go create mode 100644 website/docs/d/appconfig_configuration_profile.html.markdown create mode 100644 website/docs/d/appconfig_configuration_profiles.html.markdown create mode 100644 website/docs/d/appconfig_environment.html.markdown create mode 100644 website/docs/d/appconfig_environments.html.markdown diff --git a/.changelog/27054.txt b/.changelog/27054.txt new file mode 100644 index 000000000000..e9348c013178 --- /dev/null +++ b/.changelog/27054.txt @@ -0,0 +1,15 @@ +```release-note:new-data-source +aws_appconfig_environment +``` + +```release-note:new-data-source +aws_appconfig_environments +``` + +```release-note:new-data-source +aws_appconfig_configuration_profile +``` + +```release-note:new-data-source +aws_appconfig_configuration_profiles +``` diff --git a/GNUmakefile b/GNUmakefile index aa155ab1215b..25a9449a5b76 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -92,7 +92,7 @@ testacc: fmtcheck echo "For example if updating internal/service/acm/certificate.go, use the test names in internal/service/acm/certificate_test.go starting with TestAcc and up to the underscore:"; \ echo "make testacc TESTS=TestAccACMCertificate_ PKG=acm"; \ echo ""; \ - echo "See the contributing guide for more information: https://github.com/hashicorp/terraform-provider-aws/blob/main/docs/contributing/running-and-writing-acceptance-tests.md"; \ + echo "See the contributing guide for more information: https://hashicorp.github.io/terraform-provider-aws/running-and-writing-acceptance-tests"; \ exit 1; \ fi TF_ACC=1 $(GO_VER) test ./$(PKG_NAME)/... -v -count $(TEST_COUNT) -parallel $(ACCTEST_PARALLELISM) $(RUNARGS) $(TESTARGS) -timeout $(ACCTEST_TIMEOUT) diff --git a/internal/provider/provider.go b/internal/provider/provider.go index c49bd366d3a8..df61b8cc9406 100644 --- a/internal/provider/provider.go +++ b/internal/provider/provider.go @@ -432,6 +432,11 @@ func New(_ context.Context) (*schema.Provider, error) { "aws_apigatewayv2_apis": apigatewayv2.DataSourceAPIs(), "aws_apigatewayv2_export": apigatewayv2.DataSourceExport(), + "aws_appconfig_configuration_profile": appconfig.DataSourceConfigurationProfile(), + "aws_appconfig_configuration_profiles": appconfig.DataSourceConfigurationProfiles(), + "aws_appconfig_environment": appconfig.DataSourceEnvironment(), + "aws_appconfig_environments": appconfig.DataSourceEnvironments(), + "aws_appmesh_mesh": appmesh.DataSourceMesh(), "aws_appmesh_virtual_service": appmesh.DataSourceVirtualService(), diff --git a/internal/service/appconfig/configuration_profile_data_source.go b/internal/service/appconfig/configuration_profile_data_source.go new file mode 100644 index 000000000000..7afd4b5edfec --- /dev/null +++ b/internal/service/appconfig/configuration_profile_data_source.go @@ -0,0 +1,146 @@ +package appconfig + +import ( + "context" + "fmt" + "regexp" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go/aws/arn" + "github.com/aws/aws-sdk-go/service/appconfig" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" + "github.com/hashicorp/terraform-provider-aws/internal/conns" + "github.com/hashicorp/terraform-provider-aws/internal/create" + tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" + "github.com/hashicorp/terraform-provider-aws/names" +) + +func DataSourceConfigurationProfile() *schema.Resource { + return &schema.Resource{ + ReadWithoutTimeout: dataSourceConfigurationProfileRead, + Schema: map[string]*schema.Schema{ + "application_id": { + Type: schema.TypeString, + Required: true, + ValidateFunc: validation.StringMatch(regexp.MustCompile(`[a-z\d]{4,7}`), ""), + }, + "arn": { + Type: schema.TypeString, + Computed: true, + }, + "configuration_profile_id": { + Type: schema.TypeString, + Required: true, + ValidateFunc: validation.StringMatch(regexp.MustCompile(`[a-z\d]{4,7}`), ""), + }, + "description": { + Type: schema.TypeString, + Computed: true, + }, + "location_uri": { + Type: schema.TypeString, + Computed: true, + }, + "name": { + Type: schema.TypeString, + Computed: true, + }, + "retrieval_role_arn": { + Type: schema.TypeString, + Computed: true, + }, + "tags": tftags.TagsSchemaComputed(), + "type": { + Type: schema.TypeString, + Computed: true, + }, + "validator": { + Type: schema.TypeSet, + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "content": { + Type: schema.TypeString, + Computed: true, + }, + "type": { + Type: schema.TypeString, + Computed: true, + }, + }, + }, + }, + }, + } +} + +const ( + DSNameConfigurationProfile = "Configuration Profile Data Source" +) + +func dataSourceConfigurationProfileRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + conn := meta.(*conns.AWSClient).AppConfigConn + + appId := d.Get("application_id").(string) + profileId := d.Get("configuration_profile_id").(string) + ID := fmt.Sprintf("%s:%s", profileId, appId) + + out, err := findConfigurationProfileByApplicationAndProfile(ctx, conn, appId, profileId) + if err != nil { + return create.DiagError(names.AppConfig, create.ErrActionReading, DSNameConfigurationProfile, ID, err) + } + + d.SetId(ID) + + d.Set("application_id", appId) + + arn := arn.ARN{ + AccountID: meta.(*conns.AWSClient).AccountID, + Partition: meta.(*conns.AWSClient).Partition, + Region: meta.(*conns.AWSClient).Region, + Resource: fmt.Sprintf("application/%s/configurationprofile/%s", appId, profileId), + Service: "appconfig", + }.String() + + d.Set("arn", arn) + d.Set("configuration_profile_id", profileId) + d.Set("description", out.Description) + d.Set("location_uri", out.LocationUri) + d.Set("name", out.Name) + d.Set("retrieval_role_arn", out.RetrievalRoleArn) + d.Set("type", out.Type) + + if err := d.Set("validator", flattenValidators(out.Validators)); err != nil { + return create.DiagError(names.AppConfig, create.ErrActionSetting, DSNameConfigurationProfile, ID, err) + } + + tags, err := ListTags(conn, arn) + if err != nil { + return create.DiagError(names.AppConfig, create.ErrActionReading, DSNameConfigurationProfile, ID, err) + } + + ignoreTagsConfig := meta.(*conns.AWSClient).IgnoreTagsConfig + tags = tags.IgnoreAWS().IgnoreConfig(ignoreTagsConfig) + + //lintignore:AWSR002 + if err := d.Set("tags", tags.Map()); err != nil { + return create.DiagError(names.AppConfig, create.ErrActionSetting, DSNameConfigurationProfile, ID, err) + } + + return nil +} + +func findConfigurationProfileByApplicationAndProfile(ctx context.Context, conn *appconfig.AppConfig, appId string, cpId string) (*appconfig.GetConfigurationProfileOutput, error) { + res, err := conn.GetConfigurationProfileWithContext(ctx, &appconfig.GetConfigurationProfileInput{ + ApplicationId: aws.String(appId), + ConfigurationProfileId: aws.String(cpId), + }) + + if err != nil { + return nil, err + } + + return res, nil +} diff --git a/internal/service/appconfig/configuration_profile_data_source_test.go b/internal/service/appconfig/configuration_profile_data_source_test.go new file mode 100644 index 000000000000..32cf6c26c7a8 --- /dev/null +++ b/internal/service/appconfig/configuration_profile_data_source_test.go @@ -0,0 +1,80 @@ +package appconfig_test + +import ( + "fmt" + "regexp" + "testing" + + "github.com/aws/aws-sdk-go/service/appconfig" + sdkacctest "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-provider-aws/internal/acctest" +) + +func TestAccAppConfigConfigurationProfileDataSource_basic(t *testing.T) { + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + appName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + appResourceName := "aws_appconfig_application.test" + dataSourceName := "data.aws_appconfig_configuration_profile.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(t) + acctest.PreCheckPartitionHasService(appconfig.EndpointsID, t) + }, + ErrorCheck: acctest.ErrorCheck(t, appconfig.EndpointsID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckConfigurationProfileDestroy, + Steps: []resource.TestStep{ + { + Config: testAccConfigurationProfileDataSourceConfig_basic(appName, rName), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrPair(dataSourceName, "application_id", appResourceName, "id"), + acctest.MatchResourceAttrRegionalARN(dataSourceName, "arn", "appconfig", regexp.MustCompile(`application/([a-z\d]{4,7})/configurationprofile/+.`)), + resource.TestMatchResourceAttr(dataSourceName, "configuration_profile_id", regexp.MustCompile(`[a-z\d]{4,7}`)), + resource.TestCheckResourceAttr(dataSourceName, "location_uri", "hosted"), + resource.TestCheckResourceAttr(dataSourceName, "name", rName), + resource.TestCheckResourceAttr(dataSourceName, "retrieval_role_arn", ""), + resource.TestCheckResourceAttr(dataSourceName, "tags.%", "1"), + resource.TestCheckResourceAttr(dataSourceName, "tags.key1", "value1"), + resource.TestCheckResourceAttr(dataSourceName, "type", "AWS.Freeform"), + resource.TestCheckTypeSetElemNestedAttrs(dataSourceName, "validator.*", map[string]string{ + "content": "{\"$schema\":\"http://json-schema.org/draft-05/schema#\",\"description\":\"BasicFeatureToggle-1\",\"title\":\"$id$\"}", + "type": appconfig.ValidatorTypeJsonSchema, + }), + ), + }, + }, + }) +} + +func testAccConfigurationProfileDataSourceConfig_basic(appName, rName string) string { + return acctest.ConfigCompose( + testAccApplicationConfig_name(appName), + fmt.Sprintf(` +resource "aws_appconfig_configuration_profile" "test" { + application_id = aws_appconfig_application.test.id + name = %[1]q + location_uri = "hosted" + + validator { + content = jsonencode({ + "$schema" = "http://json-schema.org/draft-05/schema#" + title = "$id$" + description = "BasicFeatureToggle-1" + }) + + type = "JSON_SCHEMA" + } + + tags = { + key1 = "value1" + } +} + +data "aws_appconfig_configuration_profile" "test" { + application_id = aws_appconfig_application.test.id + configuration_profile_id = aws_appconfig_configuration_profile.test.configuration_profile_id +} +`, rName)) +} diff --git a/internal/service/appconfig/configuration_profiles_data_source.go b/internal/service/appconfig/configuration_profiles_data_source.go new file mode 100644 index 000000000000..a1af6778bb12 --- /dev/null +++ b/internal/service/appconfig/configuration_profiles_data_source.go @@ -0,0 +1,71 @@ +package appconfig + +import ( + "context" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/service/appconfig" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/hashicorp/terraform-provider-aws/internal/conns" + "github.com/hashicorp/terraform-provider-aws/internal/create" + "github.com/hashicorp/terraform-provider-aws/names" +) + +func DataSourceConfigurationProfiles() *schema.Resource { + return &schema.Resource{ + ReadWithoutTimeout: dataSourceConfigurationProfilesRead, + Schema: map[string]*schema.Schema{ + "application_id": { + Type: schema.TypeString, + Required: true, + }, + "configuration_profile_ids": { + Type: schema.TypeSet, + Computed: true, + Elem: &schema.Schema{Type: schema.TypeString}, + }, + }, + } +} + +const ( + DSNameConfigurationProfiles = "Configuration Profiles Data Source" +) + +func dataSourceConfigurationProfilesRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + conn := meta.(*conns.AWSClient).AppConfigConn + appId := d.Get("application_id").(string) + + out, err := findConfigurationProfileSummariesByApplication(ctx, conn, appId) + if err != nil { + return create.DiagError(names.AppConfig, create.ErrActionReading, DSNameConfigurationProfiles, appId, err) + } + + d.SetId(appId) + + var configIds []*string + for _, v := range out { + configIds = append(configIds, v.Id) + } + + d.Set("configuration_profile_ids", aws.StringValueSlice(configIds)) + + return nil +} + +func findConfigurationProfileSummariesByApplication(ctx context.Context, conn *appconfig.AppConfig, applicationId string) ([]*appconfig.ConfigurationProfileSummary, error) { + var outputs []*appconfig.ConfigurationProfileSummary + err := conn.ListConfigurationProfilesPagesWithContext(ctx, &appconfig.ListConfigurationProfilesInput{ + ApplicationId: aws.String(applicationId), + }, func(output *appconfig.ListConfigurationProfilesOutput, lastPage bool) bool { + outputs = append(outputs, output.Items...) + return !lastPage + }) + + if err != nil { + return nil, err + } + + return outputs, nil +} diff --git a/internal/service/appconfig/configuration_profiles_data_source_test.go b/internal/service/appconfig/configuration_profiles_data_source_test.go new file mode 100644 index 000000000000..5ad23b52b91a --- /dev/null +++ b/internal/service/appconfig/configuration_profiles_data_source_test.go @@ -0,0 +1,61 @@ +package appconfig_test + +import ( + "fmt" + "testing" + + "github.com/aws/aws-sdk-go/service/appconfig" + sdkacctest "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-provider-aws/internal/acctest" +) + +func TestAccAppConfigConfigurationProfilesDataSource_basic(t *testing.T) { + rName1 := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + rName2 := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + appName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + dataSourceName := "data.aws_appconfig_configuration_profiles.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(t) + acctest.PreCheckPartitionHasService(appconfig.EndpointsID, t) + }, + ErrorCheck: acctest.ErrorCheck(t, appconfig.EndpointsID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckConfigurationProfileDestroy, + Steps: []resource.TestStep{ + { + Config: testAccConfigurationProfilesDataSourceConfig_basic(appName, rName1, rName2), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr(dataSourceName, "configuration_profile_ids.#", "2"), + resource.TestCheckTypeSetElemAttrPair(dataSourceName, "configuration_profile_ids.*", "aws_appconfig_configuration_profile.test_1", "configuration_profile_id"), + resource.TestCheckTypeSetElemAttrPair(dataSourceName, "configuration_profile_ids.*", "aws_appconfig_configuration_profile.test_2", "configuration_profile_id"), + ), + }, + }, + }) +} + +func testAccConfigurationProfilesDataSourceConfig_basic(appName, rName1, rName2 string) string { + return acctest.ConfigCompose( + testAccApplicationConfig_name(appName), + fmt.Sprintf(` +resource "aws_appconfig_configuration_profile" "test_1" { + application_id = aws_appconfig_application.test.id + name = %[1]q + location_uri = "hosted" +} + +resource "aws_appconfig_configuration_profile" "test_2" { + application_id = aws_appconfig_application.test.id + name = %[2]q + location_uri = "hosted" +} + +data "aws_appconfig_configuration_profiles" "test" { + application_id = aws_appconfig_application.test.id + depends_on = [aws_appconfig_configuration_profile.test_1, aws_appconfig_configuration_profile.test_2] +} +`, rName1, rName2)) +} diff --git a/internal/service/appconfig/environment_data_source.go b/internal/service/appconfig/environment_data_source.go new file mode 100644 index 000000000000..ad579019b1f9 --- /dev/null +++ b/internal/service/appconfig/environment_data_source.go @@ -0,0 +1,137 @@ +package appconfig + +import ( + "context" + "fmt" + "regexp" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go/aws/arn" + "github.com/aws/aws-sdk-go/service/appconfig" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" + "github.com/hashicorp/terraform-provider-aws/internal/conns" + "github.com/hashicorp/terraform-provider-aws/internal/create" + tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" + "github.com/hashicorp/terraform-provider-aws/names" +) + +func DataSourceEnvironment() *schema.Resource { + return &schema.Resource{ + ReadWithoutTimeout: dataSourceEnvironmentRead, + Schema: map[string]*schema.Schema{ + "application_id": { + Type: schema.TypeString, + Required: true, + ValidateFunc: validation.StringMatch(regexp.MustCompile(`[a-z\d]{4,7}`), ""), + }, + "environment_id": { + Type: schema.TypeString, + Required: true, + ValidateFunc: validation.StringMatch(regexp.MustCompile(`[a-z\d]{4,7}`), ""), + }, + "arn": { + Type: schema.TypeString, + Computed: true, + }, + "name": { + Type: schema.TypeString, + Computed: true, + }, + "description": { + Type: schema.TypeString, + Computed: true, + }, + "monitor": { + Type: schema.TypeSet, + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "alarm_arn": { + Computed: true, + Type: schema.TypeString, + }, + "alarm_role_arn": { + Computed: true, + Type: schema.TypeString, + }, + }, + }, + }, + "state": { + Type: schema.TypeString, + Computed: true, + }, + "tags": tftags.TagsSchemaComputed(), + }, + } +} + +const ( + DSNameEnvironment = "Environment Data Source" +) + +func dataSourceEnvironmentRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + conn := meta.(*conns.AWSClient).AppConfigConn + + appID := d.Get("application_id").(string) + envID := d.Get("environment_id").(string) + ID := fmt.Sprintf("%s:%s", envID, appID) + + out, err := findEnvironmentByApplicationAndEnvironment(ctx, conn, appID, envID) + if err != nil { + return create.DiagError(names.AppConfig, create.ErrActionReading, DSNameEnvironment, ID, err) + } + + d.SetId(ID) + + d.Set("application_id", appID) + d.Set("environment_id", envID) + d.Set("description", out.Description) + d.Set("name", out.Name) + d.Set("state", out.State) + + if err := d.Set("monitor", flattenEnvironmentMonitors(out.Monitors)); err != nil { + return create.DiagError(names.AppConfig, create.ErrActionReading, DSNameEnvironment, ID, err) + } + + arn := arn.ARN{ + AccountID: meta.(*conns.AWSClient).AccountID, + Partition: meta.(*conns.AWSClient).Partition, + Region: meta.(*conns.AWSClient).Region, + Resource: fmt.Sprintf("application/%s/environment/%s", appID, envID), + Service: "appconfig", + }.String() + + d.Set("arn", arn) + + tags, err := ListTags(conn, arn) + + if err != nil { + return create.DiagError(names.AppConfig, create.ErrActionReading, DSNameEnvironment, ID, err) + } + + ignoreTagsConfig := meta.(*conns.AWSClient).IgnoreTagsConfig + tags = tags.IgnoreAWS().IgnoreConfig(ignoreTagsConfig) + + //lintignore:AWSR002 + if err := d.Set("tags", tags.Map()); err != nil { + return create.DiagError(names.AppConfig, create.ErrActionSetting, DSNameEnvironment, ID, err) + } + + return nil +} + +func findEnvironmentByApplicationAndEnvironment(ctx context.Context, conn *appconfig.AppConfig, appId string, envId string) (*appconfig.GetEnvironmentOutput, error) { + res, err := conn.GetEnvironmentWithContext(ctx, &appconfig.GetEnvironmentInput{ + ApplicationId: aws.String(appId), + EnvironmentId: aws.String(envId), + }) + + if err != nil { + return nil, err + } + + return res, nil +} diff --git a/internal/service/appconfig/environment_data_source_test.go b/internal/service/appconfig/environment_data_source_test.go new file mode 100644 index 000000000000..4c8e0a7ccb19 --- /dev/null +++ b/internal/service/appconfig/environment_data_source_test.go @@ -0,0 +1,130 @@ +package appconfig_test + +import ( + "fmt" + "regexp" + "testing" + + "github.com/aws/aws-sdk-go/service/appconfig" + sdkacctest "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-provider-aws/internal/acctest" +) + +func TestAccAppConfigEnvironmentDataSource_basic(t *testing.T) { + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + appName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + appResourceName := "aws_appconfig_application.test" + dataSourceName := "data.aws_appconfig_environment.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(t) + acctest.PreCheckPartitionHasService(appconfig.EndpointsID, t) + }, + ErrorCheck: acctest.ErrorCheck(t, appconfig.EndpointsID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckEnvironmentDestroy, + Steps: []resource.TestStep{ + { + Config: testAccEnvironmentDataSourceConfig_basic(appName, rName), + Check: resource.ComposeTestCheckFunc( + acctest.MatchResourceAttrRegionalARN(dataSourceName, "arn", "appconfig", regexp.MustCompile(`application/([a-z\d]{4,7})/environment/+.`)), + resource.TestCheckResourceAttrPair(dataSourceName, "application_id", appResourceName, "id"), + resource.TestCheckResourceAttr(dataSourceName, "description", "Example AppConfig Environment"), + resource.TestMatchResourceAttr(dataSourceName, "environment_id", regexp.MustCompile(`[a-z\d]{4,7}`)), + resource.TestCheckResourceAttr(dataSourceName, "monitor.#", "1"), + resource.TestCheckTypeSetElemAttrPair(dataSourceName, "monitor.*.alarm_arn", "aws_cloudwatch_metric_alarm.test", "arn"), + resource.TestCheckTypeSetElemAttrPair(dataSourceName, "monitor.*.alarm_role_arn", "aws_iam_role.test", "arn"), + resource.TestCheckResourceAttr(dataSourceName, "name", rName), + resource.TestCheckResourceAttrSet(dataSourceName, "state"), + resource.TestCheckResourceAttr(dataSourceName, "tags.%", "1"), + resource.TestCheckResourceAttr(dataSourceName, "tags.key1", "value1"), + ), + }, + }, + }) +} + +func testAccEnvironmentDataSourceConfig_basic(appName, rName string) string { + return acctest.ConfigCompose( + testAccApplicationConfig_name(appName), + fmt.Sprintf(` +data "aws_partition" "current" {} + +resource "aws_iam_role" "test" { + name = %[1]q + + assume_role_policy = < Date: Sun, 2 Oct 2022 11:45:53 +0100 Subject: [PATCH 2/2] Linting fixes --- .../appconfig/configuration_profile_data_source_test.go | 2 +- .../appconfig/configuration_profiles_data_source_test.go | 4 ++-- internal/service/appconfig/environment_data_source_test.go | 4 ++-- internal/service/appconfig/environments_data_source_test.go | 4 ++-- website/docs/d/appconfig_configuration_profile.html.markdown | 2 +- website/docs/d/appconfig_configuration_profiles.html.markdown | 2 +- website/docs/d/appconfig_environment.html.markdown | 2 +- website/docs/d/appconfig_environments.html.markdown | 2 +- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/internal/service/appconfig/configuration_profile_data_source_test.go b/internal/service/appconfig/configuration_profile_data_source_test.go index 32cf6c26c7a8..f56176a0cee3 100644 --- a/internal/service/appconfig/configuration_profile_data_source_test.go +++ b/internal/service/appconfig/configuration_profile_data_source_test.go @@ -73,7 +73,7 @@ resource "aws_appconfig_configuration_profile" "test" { } data "aws_appconfig_configuration_profile" "test" { - application_id = aws_appconfig_application.test.id + application_id = aws_appconfig_application.test.id configuration_profile_id = aws_appconfig_configuration_profile.test.configuration_profile_id } `, rName)) diff --git a/internal/service/appconfig/configuration_profiles_data_source_test.go b/internal/service/appconfig/configuration_profiles_data_source_test.go index 5ad23b52b91a..c270f2ba5388 100644 --- a/internal/service/appconfig/configuration_profiles_data_source_test.go +++ b/internal/service/appconfig/configuration_profiles_data_source_test.go @@ -54,8 +54,8 @@ resource "aws_appconfig_configuration_profile" "test_2" { } data "aws_appconfig_configuration_profiles" "test" { - application_id = aws_appconfig_application.test.id - depends_on = [aws_appconfig_configuration_profile.test_1, aws_appconfig_configuration_profile.test_2] + application_id = aws_appconfig_application.test.id + depends_on = [aws_appconfig_configuration_profile.test_1, aws_appconfig_configuration_profile.test_2] } `, rName1, rName2)) } diff --git a/internal/service/appconfig/environment_data_source_test.go b/internal/service/appconfig/environment_data_source_test.go index 4c8e0a7ccb19..7f6ac46b50df 100644 --- a/internal/service/appconfig/environment_data_source_test.go +++ b/internal/service/appconfig/environment_data_source_test.go @@ -113,8 +113,8 @@ resource "aws_appconfig_environment" "test" { description = "Example AppConfig Environment" monitor { - alarm_arn = aws_cloudwatch_metric_alarm.test.arn - alarm_role_arn = aws_iam_role.test.arn + alarm_arn = aws_cloudwatch_metric_alarm.test.arn + alarm_role_arn = aws_iam_role.test.arn } tags = { diff --git a/internal/service/appconfig/environments_data_source_test.go b/internal/service/appconfig/environments_data_source_test.go index a42f78f51a39..86e708069083 100644 --- a/internal/service/appconfig/environments_data_source_test.go +++ b/internal/service/appconfig/environments_data_source_test.go @@ -52,8 +52,8 @@ resource "aws_appconfig_environment" "test_2" { } data "aws_appconfig_environments" "test" { - application_id = aws_appconfig_application.test.id - depends_on = [aws_appconfig_environment.test_1, aws_appconfig_environment.test_2] + application_id = aws_appconfig_application.test.id + depends_on = [aws_appconfig_environment.test_1, aws_appconfig_environment.test_2] } `, rName1, rName2)) } diff --git a/website/docs/d/appconfig_configuration_profile.html.markdown b/website/docs/d/appconfig_configuration_profile.html.markdown index 99afc2df64cc..f8f61287ea94 100644 --- a/website/docs/d/appconfig_configuration_profile.html.markdown +++ b/website/docs/d/appconfig_configuration_profile.html.markdown @@ -3,7 +3,7 @@ subcategory: "AppConfig" layout: "aws" page_title: "AWS: aws_appconfig_configuration_profile" description: |- -Terraform data source for managing an AWS AppConfig Configuration Profile. + Terraform data source for managing an AWS AppConfig Configuration Profile. --- # Data Source: aws_appconfig_configuration_profile diff --git a/website/docs/d/appconfig_configuration_profiles.html.markdown b/website/docs/d/appconfig_configuration_profiles.html.markdown index 9e5189ad9bf0..efcbaadd697d 100644 --- a/website/docs/d/appconfig_configuration_profiles.html.markdown +++ b/website/docs/d/appconfig_configuration_profiles.html.markdown @@ -3,7 +3,7 @@ subcategory: "AppConfig" layout: "aws" page_title: "AWS: aws_appconfig_configuration_profiles" description: |- -Terraform data source for managing an AWS AppConfig Configuration Profiles. + Terraform data source for managing an AWS AppConfig Configuration Profiles. --- # Data Source: aws_appconfig_configuration_profiles diff --git a/website/docs/d/appconfig_environment.html.markdown b/website/docs/d/appconfig_environment.html.markdown index 471fd85bcafe..c419fb9f6306 100644 --- a/website/docs/d/appconfig_environment.html.markdown +++ b/website/docs/d/appconfig_environment.html.markdown @@ -3,7 +3,7 @@ subcategory: "AppConfig" layout: "aws" page_title: "AWS: aws_appconfig_environment" description: |- -Terraform data source for managing an AWS AppConfig Environment. + Terraform data source for managing an AWS AppConfig Environment. --- # Data Source: aws_appconfig_environment diff --git a/website/docs/d/appconfig_environments.html.markdown b/website/docs/d/appconfig_environments.html.markdown index ffcffa01206e..8eb7c0abac7e 100644 --- a/website/docs/d/appconfig_environments.html.markdown +++ b/website/docs/d/appconfig_environments.html.markdown @@ -3,7 +3,7 @@ subcategory: "AppConfig" layout: "aws" page_title: "AWS: aws_appconfig_environments" description: |- -Terraform data source for managing an AWS AppConfig Environments. + Terraform data source for managing an AWS AppConfig Environments. --- # Data Source: aws_appconfig_environments