Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

r/aws_dlm_lifecycle_policy: retain rule #11503

Conversation

thatderek
Copy link
Contributor

Community Note

  • Please vote on this pull request by adding a 👍 reaction to the original pull request comment to help the community and maintainers prioritize this request
  • Please do not leave "+1" or other comments that do not add relevant new information or questions, they generate extra noise for pull request followers and do not help prioritize the request

Closes #11456

Release note for CHANGELOG:

* resource/aws_dlm_lifecycle_policy: Adds ability to create RetainRules as part of policy.

Output from acceptance testing:

root@8d193c0dc2df:/go/src/github.com/terraform-providers/terraform-provider-aws# make testacc TEST=./aws TESTARGS='-run=TestAccAWSDlmLifecyclePolicy_'
==> Checking that code complies with gofmt requirements...
TF_ACC=1 go test ./aws -v -count 1 -parallel 20 -run=TestAccAWSDlmLifecyclePolicy_ -timeout 120m
=== RUN   TestAccAWSDlmLifecyclePolicy_Basic
=== PAUSE TestAccAWSDlmLifecyclePolicy_Basic
=== RUN   TestAccAWSDlmLifecyclePolicy_Full
=== PAUSE TestAccAWSDlmLifecyclePolicy_Full
=== RUN   TestAccAWSDlmLifecyclePolicy_Retain
=== PAUSE TestAccAWSDlmLifecyclePolicy_Retain
=== RUN   TestAccAWSDlmLifecyclePolicy_Tags
=== PAUSE TestAccAWSDlmLifecyclePolicy_Tags
=== CONT  TestAccAWSDlmLifecyclePolicy_Basic
=== CONT  TestAccAWSDlmLifecyclePolicy_Tags
=== CONT  TestAccAWSDlmLifecyclePolicy_Retain
=== CONT  TestAccAWSDlmLifecyclePolicy_Full
--- PASS: TestAccAWSDlmLifecyclePolicy_Basic (29.31s)
--- PASS: TestAccAWSDlmLifecyclePolicy_Retain (45.73s)
--- PASS: TestAccAWSDlmLifecyclePolicy_Full (46.13s)
--- PASS: TestAccAWSDlmLifecyclePolicy_Tags (67.44s)
PASS
ok  	github.com/terraform-providers/terraform-provider-aws/aws	67.488s
root@8d193c0dc2df:/go/src/github.com/terraform-providers/terraform-provider-aws#

@thatderek thatderek requested a review from a team January 6, 2020 22:39
@ghost ghost added size/L Managed by automation to categorize the size of a PR. needs-triage Waiting for first response or review from a maintainer. documentation Introduces or discusses updates to documentation. service/dlm Issues and PRs that pertain to the dlm service. tests PRs: expanded test coverage. Issues: expanded coverage, enhancements to test infrastructure. labels Jan 6, 2020
@thatderek
Copy link
Contributor Author

Note: Because this issue remains outstanding, I dealt with conflicting attributes of RetainRule through ForceNews. Perhaps there is a more sensible mechanism though?

@thatderek thatderek force-pushed the r-aws_dlm_lifecycle_policy-retainrule branch from 7186254 to 7eb7542 Compare January 6, 2020 23:13
Copy link
Contributor

@tomelliff tomelliff left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks nice from a quick glance but had some small feedback.

Looking forward to this landing so I can ditch weird multiplication in my count to get to the time based retention that I really want.

@@ -106,9 +106,29 @@ func resourceAwsDlmLifecyclePolicy() *schema.Resource {
Schema: map[string]*schema.Schema{
"count": {
Type: schema.TypeInt,
Required: true,
Optional: true,
ForceNew: true,
ValidateFunc: validation.IntBetween(1, 1000),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should probably have ConflictsWith: []string{"policy_details.0.schedule.0.retain_rule.0.interval", "policy_details.0.schedule.0.retain_rule.0.interval_unit"}, and then ConflictsWith: []string{"policy_details.0.schedule.0.retain_rule.0.count"}, on the interval and interval_unit blocks.

Copy link
Contributor

@tomelliff tomelliff Mar 10, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just saw your comment above but in this case nearly all of the parameters in the DLM API that is a list is also required to be 1 element in the list (AWS sure do like future proofing things at the expense of more complex APIs) so you can just hardcode the list element as 0 as in my comment here.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just realised that that's not currently true because schedule is missing a MaxItems: 1 despite that being required by the API which I think I missed in my initial pull request that added this resource.

We should add that in this pull request I think. It then makes the ConflictsWith robust as well as giving plan time validation in the event someone adds multiple schedule blocks to a policy_details block.

@@ -246,7 +284,7 @@ resource "aws_dlm_lifecycle_policy" "basic" {
}

retain_rule {
count = 10
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks like an odd diff here. Is this accidental?

Base automatically changed from master to main January 23, 2021 00:56
@breathingdust breathingdust requested a review from a team as a code owner January 23, 2021 00:56
@NunoPinheiro
Copy link

Hey, what is the status with this PR?
According to the issue, people have been falling into the problem of backups retained forever with the count based approach, so this looks important.

What would be missing on this PR to make it approvable?

@breathingdust breathingdust added enhancement Requests to existing resources that expand the functionality or scope. and removed needs-triage Waiting for first response or review from a maintainer. labels Oct 6, 2021
@zhelding
Copy link
Contributor

Pull request #21306 has significantly refactored the AWS Provider codebase. As a result, most PRs opened prior to the refactor now have merge conflicts that must be resolved before proceeding.

Specifically, PR #21306 relocated the code for all AWS resources and data sources from a single aws directory to a large number of separate directories in internal/service, each corresponding to a particular AWS service. This separation of code has also allowed for us to simplify the names of underlying functions -- while still avoiding namespace collisions.

We recognize that many pull requests have been open for some time without yet being addressed by our maintainers. Therefore, we want to make it clear that resolving these conflicts in no way affects the prioritization of a particular pull request. Once a pull request has been prioritized for review, the necessary changes will be made by a maintainer -- either directly or in collaboration with the pull request author.

For a more complete description of this refactor, including examples of how old filepaths and function names correspond to their new counterparts: please refer to issue #20000.

For a quick guide on how to amend your pull request to resolve the merge conflicts resulting from this refactor and bring it in line with our new code patterns: please refer to our Service Package Refactor Pull Request Guide.

@anGie44 anGie44 changed the title R aws dlm lifecycle policy retainrule r/aws_dlm_lifecycle_policy: retain rule Nov 10, 2021
@ewbankkit
Copy link
Contributor

@thatderek Thanks for the contribution 🎉 👏.
These changes have been rolled into #23880.

@ewbankkit ewbankkit closed this Mar 28, 2022
@github-actions
Copy link

github-actions bot commented May 5, 2022

I'm going to lock this pull request because it has been closed for 30 days ⏳. This helps our maintainers find and focus on the active issues.
If you have found a problem that seems related to this change, please open a new issue and complete the issue template so we can capture all the details necessary to investigate further.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators May 5, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
documentation Introduces or discusses updates to documentation. enhancement Requests to existing resources that expand the functionality or scope. service/dlm Issues and PRs that pertain to the dlm service. size/L Managed by automation to categorize the size of a PR. tests PRs: expanded test coverage. Issues: expanded coverage, enhancements to test infrastructure.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Implement support for time based retention policies in DLM
6 participants