Skip to content

Commit

Permalink
Merge pull request #18882 from DrFaust92/r/ecr_replication_delete_rules
Browse files Browse the repository at this point in the history
r/ecr_replication - delete rules on resource delete
  • Loading branch information
anGie44 authored Apr 16, 2021
2 parents 3cfbc73 + 7f459e5 commit e7d6715
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 2 deletions.
3 changes: 3 additions & 0 deletions .changelog/18882.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:bug
resource/aws_ecr_replication_configuration: Remove relication rules on resource deletion
```
19 changes: 18 additions & 1 deletion aws/resource_aws_ecr_replication_configuration.go
Original file line number Diff line number Diff line change
Expand Up @@ -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,
},
Expand Down Expand Up @@ -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
Expand Down
33 changes: 32 additions & 1 deletion aws/resource_aws_ecr_replication_configuration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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()),
Expand Down Expand Up @@ -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" {}
Expand Down

0 comments on commit e7d6715

Please sign in to comment.