From b3f3ab8b5f3fb4eccead799070193bf583e96550 Mon Sep 17 00:00:00 2001 From: drfaust92 Date: Thu, 15 Apr 2021 14:13:41 +0300 Subject: [PATCH 1/2] delete rules on resource delete --- ...ource_aws_ecr_replication_configuration.go | 19 ++++++++++- ..._aws_ecr_replication_configuration_test.go | 33 ++++++++++++++++++- 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/aws/resource_aws_ecr_replication_configuration.go b/aws/resource_aws_ecr_replication_configuration.go index 625cb2a9ca2d..fd02fa20002a 100644 --- a/aws/resource_aws_ecr_replication_configuration.go +++ b/aws/resource_aws_ecr_replication_configuration.go @@ -14,7 +14,7 @@ func resourceAwsEcrReplicationConfiguration() *schema.Resource { Create: resourceAwsEcrReplicationConfigurationPut, Read: resourceAwsEcrReplicationConfigurationRead, Update: resourceAwsEcrReplicationConfigurationPut, - Delete: schema.Noop, + Delete: resourceAwsEcrReplicationConfigurationDelete, Importer: &schema.ResourceImporter{ State: schema.ImportStatePassthrough, }, @@ -98,6 +98,23 @@ func resourceAwsEcrReplicationConfigurationRead(d *schema.ResourceData, meta int return nil } +func resourceAwsEcrReplicationConfigurationDelete(d *schema.ResourceData, meta interface{}) error { + conn := meta.(*AWSClient).ecrconn + + input := ecr.PutReplicationConfigurationInput{ + ReplicationConfiguration: &ecr.ReplicationConfiguration{ + Rules: []*ecr.ReplicationRule{}, + }, + } + + _, err := conn.PutReplicationConfiguration(&input) + if err != nil { + return fmt.Errorf("error deleting ECR Replication Configuration: %w", err) + } + + return nil +} + func expandEcrReplicationConfigurationReplicationConfiguration(data []interface{}) *ecr.ReplicationConfiguration { if len(data) == 0 || data[0] == nil { return nil diff --git a/aws/resource_aws_ecr_replication_configuration_test.go b/aws/resource_aws_ecr_replication_configuration_test.go index 37ba7f1a5247..133be0214c6f 100644 --- a/aws/resource_aws_ecr_replication_configuration_test.go +++ b/aws/resource_aws_ecr_replication_configuration_test.go @@ -16,7 +16,7 @@ func TestAccAWSEcrReplicationConfiguration_basic(t *testing.T) { PreCheck: func() { testAccPreCheck(t) }, ErrorCheck: testAccErrorCheck(t, ecr.EndpointsID), Providers: testAccProviders, - CheckDestroy: nil, + CheckDestroy: testAccCheckAWSEcrReplicationConfigurationDestroy, Steps: []resource.TestStep{ { Config: testAccAWSEcrReplicationConfiguration(testAccGetAlternateRegion()), @@ -46,10 +46,41 @@ func testAccCheckAWSEcrReplicationConfigurationExists(name string) resource.Test return fmt.Errorf("Not found: %s", name) } + conn := testAccProvider.Meta().(*AWSClient).ecrconn + out, err := conn.DescribeRegistry(&ecr.DescribeRegistryInput{}) + if err != nil { + return fmt.Errorf("ECR replication rules not found: %w", err) + } + + if len(out.ReplicationConfiguration.Rules) == 0 { + return fmt.Errorf("ECR replication rules not found") + } + return nil } } +func testAccCheckAWSEcrReplicationConfigurationDestroy(s *terraform.State) error { + conn := testAccProvider.Meta().(*AWSClient).ecrconn + + for _, rs := range s.RootModule().Resources { + if rs.Type != "aws_ecr_replication_configuration" { + continue + } + + out, err := conn.DescribeRegistry(&ecr.DescribeRegistryInput{}) + if err != nil { + return err + } + + if len(out.ReplicationConfiguration.Rules) != 0 { + return fmt.Errorf("ECR replication rules found") + } + } + + return nil +} + func testAccAWSEcrReplicationConfiguration(region string) string { return fmt.Sprintf(` data "aws_caller_identity" "current" {} From 7f459e545f208c29531103e5b6f7da1e69aa7653 Mon Sep 17 00:00:00 2001 From: drfaust92 Date: Thu, 15 Apr 2021 14:15:58 +0300 Subject: [PATCH 2/2] changelog --- .changelog/18882.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/18882.txt diff --git a/.changelog/18882.txt b/.changelog/18882.txt new file mode 100644 index 000000000000..373fcfa7a7fb --- /dev/null +++ b/.changelog/18882.txt @@ -0,0 +1,3 @@ +```release-note:bug +resource/aws_ecr_replication_configuration: Remove relication rules on resource deletion +```