-
Notifications
You must be signed in to change notification settings - Fork 398
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
s3_lifecycle: support value '0' for transition_days #1077
s3_lifecycle: support value '0' for transition_days #1077
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for taking the time to raise this PR.
The change looks good at first glance. If possible please would you:
- Add integration tests to tests/integration/targets/s3_lifecycle/tasks/main.yml
- Add a changelog entry
8f0f3cb
to
fdf2296
Compare
fdf2296
to
5568769
Compare
5568769
to
583f077
Compare
Tests still fail because standard_ia and onezone_ia expect a transition days greater than 30 days (server side). I was going to force push my PR another time to move the tests on glacier storage class but I see you approved the changes, so should I do it? |
Simply move on in this PR :) it won't be merged as long as the ci is failing. |
583f077
to
e725b3c
Compare
The approval was to recognise that I'm happy with the code change and the changelog fragment. Broken tests will need to be fixed. |
@fmenabe thank you for your contribution. |
Backport to stable-2: 💚 backport PR created✅ Backport PR branch: Backported as #1082 🤖 @patchback |
s3_lifecycle: support value '0' for transition_days SUMMARY s3_lifecycle module does not support value 0 for transition_days parameter. ISSUE TYPE Bugfix Pull Request COMPONENT NAME s3_lifecycle ADDITIONAL INFORMATION A lifecycle rule with 0 as transition_days allows to create a rule that will move objects with a delta of just few hours (if set to 1, objects will be moved with a delta of 1d + few hours). When the value 0 is set, the value is stripped from the query and we get an error that is hard to correlate with an "invalid" value on this parameter (which is valid as 0 is an integer): - name: Create s3 buckets lifecycle rules s3_lifecycle: ec2_url: "FIXME" region: "FIXME" aws_access_key: "FIXME" aws_secret_key: "FIXME" name: "FIXME" rule_id: "onezone" transitions: - transition_days: 0 storage_class: "ONEZONE_IA" state: present status: enabled fatal: [localhost]: FAILED! => { "boto3_version": "1.21.3", "botocore_version": "1.24.19", "changed": false, "error": { "code": "MalformedXML", "message": "Extra element Transition in interleave" }, "lifecycle_configuration": { "Rules": [ { "Filter": { "Prefix": "" }, "ID": "onezone", "Status": "Enabled", "Transitions": [ { "StorageClass": "ONEZONE_IA" } ] } ] }, ... MSG: An error occurred (MalformedXML) when calling the PutBucketLifecycleConfiguration operation: Extra element Transition in interleave This is because transition.get('transition_days') returns 0 which is considered as False on a condition (this patch just check if the value is defined; e.g. is not None). Reviewed-by: Mark Chappell <None> Reviewed-by: Markus Bergholz <git@osuv.de> (cherry picked from commit 4f989bd)
Backport to stable-3: 💚 backport PR created✅ Backport PR branch: Backported as #1083 🤖 @patchback |
s3_lifecycle: support value '0' for transition_days SUMMARY s3_lifecycle module does not support value 0 for transition_days parameter. ISSUE TYPE Bugfix Pull Request COMPONENT NAME s3_lifecycle ADDITIONAL INFORMATION A lifecycle rule with 0 as transition_days allows to create a rule that will move objects with a delta of just few hours (if set to 1, objects will be moved with a delta of 1d + few hours). When the value 0 is set, the value is stripped from the query and we get an error that is hard to correlate with an "invalid" value on this parameter (which is valid as 0 is an integer): - name: Create s3 buckets lifecycle rules s3_lifecycle: ec2_url: "FIXME" region: "FIXME" aws_access_key: "FIXME" aws_secret_key: "FIXME" name: "FIXME" rule_id: "onezone" transitions: - transition_days: 0 storage_class: "ONEZONE_IA" state: present status: enabled fatal: [localhost]: FAILED! => { "boto3_version": "1.21.3", "botocore_version": "1.24.19", "changed": false, "error": { "code": "MalformedXML", "message": "Extra element Transition in interleave" }, "lifecycle_configuration": { "Rules": [ { "Filter": { "Prefix": "" }, "ID": "onezone", "Status": "Enabled", "Transitions": [ { "StorageClass": "ONEZONE_IA" } ] } ] }, ... MSG: An error occurred (MalformedXML) when calling the PutBucketLifecycleConfiguration operation: Extra element Transition in interleave This is because transition.get('transition_days') returns 0 which is considered as False on a condition (this patch just check if the value is defined; e.g. is not None). Reviewed-by: Mark Chappell <None> Reviewed-by: Markus Bergholz <git@osuv.de> (cherry picked from commit 4f989bd)
[PR #1077/4f989bdd backport][stable-3] s3_lifecycle: support value '0' for transition_days This is a backport of PR #1077 as merged into main (4f989bd). SUMMARY s3_lifecycle module does not support value 0 for transition_days parameter. ISSUE TYPE Bugfix Pull Request COMPONENT NAME s3_lifecycle ADDITIONAL INFORMATION A lifecycle rule with 0 as transition_days allows to create a rule that will move objects with a delta of just few hours (if set to 1, objects will be moved with a delta of 1d + few hours). When the value 0 is set, the value is stripped from the query and we get an error that is hard to correlate with an "invalid" value on this parameter (which is valid as 0 is an integer): - name: Create s3 buckets lifecycle rules s3_lifecycle: ec2_url: "FIXME" region: "FIXME" aws_access_key: "FIXME" aws_secret_key: "FIXME" name: "FIXME" rule_id: "onezone" transitions: - transition_days: 0 storage_class: "ONEZONE_IA" state: present status: enabled fatal: [localhost]: FAILED! => { "boto3_version": "1.21.3", "botocore_version": "1.24.19", "changed": false, "error": { "code": "MalformedXML", "message": "Extra element Transition in interleave" }, "lifecycle_configuration": { "Rules": [ { "Filter": { "Prefix": "" }, "ID": "onezone", "Status": "Enabled", "Transitions": [ { "StorageClass": "ONEZONE_IA" } ] } ] }, ... MSG: An error occurred (MalformedXML) when calling the PutBucketLifecycleConfiguration operation: Extra element Transition in interleave This is because transition.get('transition_days') returns 0 which is considered as False on a condition (this patch just check if the value is defined; e.g. is not None). Reviewed-by: Markus Bergholz <git@osuv.de>
[PR #1077/4f989bdd backport][stable-2] s3_lifecycle: support value '0' for transition_days This is a backport of PR #1077 as merged into main (4f989bd). SUMMARY s3_lifecycle module does not support value 0 for transition_days parameter. ISSUE TYPE Bugfix Pull Request COMPONENT NAME s3_lifecycle ADDITIONAL INFORMATION A lifecycle rule with 0 as transition_days allows to create a rule that will move objects with a delta of just few hours (if set to 1, objects will be moved with a delta of 1d + few hours). When the value 0 is set, the value is stripped from the query and we get an error that is hard to correlate with an "invalid" value on this parameter (which is valid as 0 is an integer): - name: Create s3 buckets lifecycle rules s3_lifecycle: ec2_url: "FIXME" region: "FIXME" aws_access_key: "FIXME" aws_secret_key: "FIXME" name: "FIXME" rule_id: "onezone" transitions: - transition_days: 0 storage_class: "ONEZONE_IA" state: present status: enabled fatal: [localhost]: FAILED! => { "boto3_version": "1.21.3", "botocore_version": "1.24.19", "changed": false, "error": { "code": "MalformedXML", "message": "Extra element Transition in interleave" }, "lifecycle_configuration": { "Rules": [ { "Filter": { "Prefix": "" }, "ID": "onezone", "Status": "Enabled", "Transitions": [ { "StorageClass": "ONEZONE_IA" } ] } ] }, ... MSG: An error occurred (MalformedXML) when calling the PutBucketLifecycleConfiguration operation: Extra element Transition in interleave This is because transition.get('transition_days') returns 0 which is considered as False on a condition (this patch just check if the value is defined; e.g. is not None). Reviewed-by: Markus Bergholz <git@osuv.de>
SUMMARY
s3_lifecycle
module does not support value 0 for transition_days parameter.ISSUE TYPE
COMPONENT NAME
s3_lifecycle
ADDITIONAL INFORMATION
A lifecycle rule with 0 as transition_days allows to create a rule that will move objects with a delta of just few hours (if set to 1, objects will be moved with a delta of 1d + few hours).
When the value 0 is set, the value is stripped from the query and we get an error that is hard to correlate with an "invalid" value on this parameter (which is valid as 0 is an integer):
This is because
transition.get('transition_days')
returns 0 which is considered as False on a condition (this patch just check if the value is defined; e.g. is not None).