fix(helm): suspend bucket versioning for YAML bool false (#9836)

* fix(helm): suspend bucket versioning for YAML bool false

createBuckets[].versioning accepts both a YAML bool and a string. The
string branch maps "false"/"disable"/"suspended" to Suspended, but the
bool branch only handled true (Enabled) and left false as a silent no-op.
The same logical value therefore behaved differently depending on its
YAML type: `versioning: false` did nothing while `versioning: "false"`
suspended the bucket.

Mirror the string behaviour in the bool branch so bool false suspends the
bucket, and add a chart-CI render assertion covering it.

Assisted-By: Claude <noreply@anthropic.com>
Signed-off-by: Aleksei Sviridkin <f@lex.la>

* ci(helm): trim versioning regression-test comment

* chart: document bool false for createBuckets versioning

---------

Signed-off-by: Aleksei Sviridkin <f@lex.la>
Co-authored-by: Chris Lu <chris.lu@gmail.com>
This commit is contained in:
Aleksei Sviridkin
2026-06-05 15:18:10 -07:00
committed by GitHub
co-authored by Chris Lu
parent be7f417a03
commit ae4ad6859d
3 changed files with 15 additions and 3 deletions
+10
View File
@@ -446,6 +446,16 @@ jobs:
sys.exit(1 if failed else 0) sys.exit(1 if failed else 0)
PYEOF PYEOF
echo ""
echo "=== Testing bucket versioning: YAML bool false suspends like string \"false\" ==="
# bool false used to be a silent no-op while string "false" suspended.
BOOL_FALSE=$(helm template test $CHART_DIR \
--set s3.enabled=true \
--set s3.createBuckets[0].name=verbucket \
--set s3.createBuckets[0].versioning=false | grep 's3.bucket.versioning -name verbucket' || true)
echo "$BOOL_FALSE" | grep -q -- '-status Suspended' || { echo "FAIL: bool false versioning did not Suspend the bucket"; exit 1; }
echo "✓ Bucket versioning: YAML bool false suspends consistently with string \"false\""
echo "✅ All template rendering tests passed!" echo "✅ All template rendering tests passed!"
- name: Create kind cluster - name: Create kind cluster
@@ -143,6 +143,8 @@ spec:
{{- if kindIs "bool" .versioning }} {{- if kindIs "bool" .versioning }}
{{- if .versioning }} {{- if .versioning }}
{{- $bucketVersioning = "Enabled" }} {{- $bucketVersioning = "Enabled" }}
{{- else }}
{{- $bucketVersioning = "Suspended" }}
{{- end }} {{- end }}
{{- else if kindIs "string" .versioning }} {{- else if kindIs "string" .versioning }}
{{- $versioningLower := lower .versioning }} {{- $versioningLower := lower .versioning }}
+3 -3
View File
@@ -919,7 +919,7 @@ filer:
# Buckets may be exposed publicly by setting `anonymousRead` to `true` # Buckets may be exposed publicly by setting `anonymousRead` to `true`
# ttl format: [1-255][m|h|d|w|M|y] (e.g., 7d) # ttl format: [1-255][m|h|d|w|M|y] (e.g., 7d)
# objectLock enables S3 Object Lock (irreversible, forces versioning) # objectLock enables S3 Object Lock (irreversible, forces versioning)
# versioning: Enabled or Suspended (or true to enable) # versioning: Enabled or Suspended (or bool true/false)
# createBuckets: # createBuckets:
# - name: bucket-a # - name: bucket-a
# anonymousRead: true # anonymousRead: true
@@ -972,7 +972,7 @@ s3:
# Buckets may be exposed publicly by setting `anonymousRead` to `true` # Buckets may be exposed publicly by setting `anonymousRead` to `true`
# ttl format: [1-255][m|h|d|w|M|y] (e.g., 7d) # ttl format: [1-255][m|h|d|w|M|y] (e.g., 7d)
# objectLock enables S3 Object Lock (irreversible, forces versioning) # objectLock enables S3 Object Lock (irreversible, forces versioning)
# versioning: Enabled or Suspended (or true to enable) # versioning: Enabled or Suspended (or bool true/false)
# createBuckets: # createBuckets:
# - name: bucket-a # - name: bucket-a
# anonymousRead: true # anonymousRead: true
@@ -1526,7 +1526,7 @@ allInOne:
# Buckets may be exposed publicly by setting `anonymousRead` to `true` # Buckets may be exposed publicly by setting `anonymousRead` to `true`
# ttl format: [1-255][m|h|d|w|M|y] (e.g., 7d) # ttl format: [1-255][m|h|d|w|M|y] (e.g., 7d)
# objectLock enables S3 Object Lock (irreversible, forces versioning) # objectLock enables S3 Object Lock (irreversible, forces versioning)
# versioning: Enabled or Suspended (or true to enable) # versioning: Enabled or Suspended (or bool true/false)
# createBuckets: # createBuckets:
# - name: bucket-a # - name: bucket-a
# anonymousRead: true # anonymousRead: true