terraform-ibm-modules / terraform-ibm-cos

Configures an IBM Cloud Object Storage instance and bucket
Apache License 2.0
7 stars 23 forks source link

fix: retention support #600

Closed shemau closed 2 months ago

shemau commented 2 months ago

Description

Addressing internal issue 8825 Investigate issue with idempotent failure after COS module upgrade

Adopting suggestion in https://github.com/IBM-Cloud/terraform-provider-ibm/issues/5321, use null rather than false on object locking should eliminate the idempotent error with was trigger only if the value was false. It should also resolve the contention issues between locking/versioning/retention, thus returning retention to it previous working state.

Release required?

Release notes content

It is possible in some circumstances, upgrading from 8.2.0+ to this version might show an issue with removing object versioning = false; This is fine, not setting it is equivalent to setting it false.

Run the pipeline

If the CI pipeline doesn't run when you create the PR, the PR requires a user with GitHub collaborators access to run the pipeline.

Run the CI pipeline when the PR is ready for review and you expect tests to pass. Add a comment to the PR with the following text:

/run pipeline

Checklist for reviewers

For mergers

shemau commented 2 months ago

/run pipeline

vburckhardt commented 2 months ago

/run pipeline

shemau commented 2 months ago

Fixing retention to work in MZRs (as well as US south cross regional), per #598. Included in this PR because retention is broken (and thus not testable) without this change.

shemau commented 2 months ago

/run pipeline

shemau commented 2 months ago

The upgrade test is failing

TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185: Terraform used the selected providers to generate the following execution
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185: plan. Resource actions are indicated with the following symbols:
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185:   ~ update in-place
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185: 
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185: Terraform will perform the following actions:
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185: 
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185:   # module.cos_bucket1.ibm_cos_bucket.cos_bucket[0] will be updated in-place
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185:   ~ resource "ibm_cos_bucket" "cos_bucket" {
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185:         id                   = "crn:v1:bluemix:public:cloud-object-storage:global:a/abac0df06b644a9cabc6e44f55b3880e:2f6743b5-d11d-41ac-8438-944c8b23030b:bucket:cos-upgrade-1edmg5-bucket-1:meta:rl:us-south:public"
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185:         # (14 unchanged attributes hidden)
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185: 
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185:       - object_versioning {
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185:           - enable = false -> null
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185:         }
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185: 
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185:         # (4 unchanged blocks hidden)
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185:     }
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185: 
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185:   # module.cos_bucket2.ibm_cos_bucket.cos_bucket[0] will be updated in-place
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185:   ~ resource "ibm_cos_bucket" "cos_bucket" {
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185:         id                    = "crn:v1:bluemix:public:cloud-object-storage:global:a/abac0df06b644a9cabc6e44f55b3880e:2f6743b5-d11d-41ac-8438-944c8b23030b:bucket:cos-upgrade-1edmg5-bucket-2-apdb:meta:crl:us:public"
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185:         # (14 unchanged attributes hidden)
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185: 
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185:       - object_versioning {
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185:           - enable = false -> null
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185:         }
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185: 
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185:         # (3 unchanged blocks hidden)
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185:     }
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185: 
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185:   # module.cos_bucket3.ibm_cos_bucket.cos_bucket1[0] will be updated in-place
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185:   ~ resource "ibm_cos_bucket" "cos_bucket1" {
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185:         id                   = "crn:v1:bluemix:public:cloud-object-storage:global:a/abac0df06b644a9cabc6e44f55b3880e:2f6743b5-d11d-41ac-8438-944c8b23030b:bucket:cos-upgrade-1edmg5-bucket-3-3enz:meta:ssl:ams03:public"
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185:         # (13 unchanged attributes hidden)
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185: 
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185:       - object_versioning {
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185:           - enable = false -> null
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185:         }
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185: 
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185:         # (3 unchanged blocks hidden)
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185:     }
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185: 
TestRunUpgradeExample 2024-05-03T21:28:45Z command.go:185: Plan: 0 to add, 3 to change, 0 to destroy.

This is okay, update in place, and false and null both result in the bucket having no versioning. The upgrade test will be skipped.

shemau commented 2 months ago

/run pipeline

shemau commented 2 months ago

/run pipeline

terraform-ibm-modules-ops commented 2 months ago

:tada: This PR is included in version 8.2.2 :tada:

The release is available on:

Your semantic-release bot :package::rocket: