zipline: NOTES.txt and the exponential-quantity fix (7.1.0+up4.7.0)
Part of #43 — templates/NOTES.txt. The rule from the approved plan was that a NOTES.txt repeating the values is worthless, so this one prints what an operator would otherwise look up in the templates: the rendered URL (or the port-forward command when the Ingress is off, plus the reason ingress.domain stays required — it is CORE_DEFAULT_DOMAIN), the two op:// refs together with the exact field names the 1Password items must carry ("connection-url" and "server-secret", because the operator names the Secret keys after the item's fields), and the traps of this chart: the setup page hands the super administrator to whoever reaches the URL first, migrations run inside the startup probe's window (computed from the effective probe values), a database outage leaves the pod running and NotReady because liveness deliberately uses "/", the upload ceiling that actually bites is the Ingress annotation and not the app's fixed 500mb, /tmp is an emptyDir counted against the ephemeral-storage limit (computed) so an oversized upload evicts the pod, and the uploads PVC is an ordinary release resource that "helm uninstall" deletes. Conditional sections cover scaleDown / replicas: 0, more than one replica against the single ReadWriteOnce claim, and a set zipline.env. No domain is baked into the chart; every host is rendered from the values, examples use example.com. Part of #157 — multiplyQuantity. The null-safe fallbacks pass values through fromYaml, which parses every number as float64, and Go's "%v" switches float64 to exponential notation from about 1e6 upwards: a bare "1048576" arrived as "1.048576e+06" and the render aborted on the suffix check. This is the canonical correction agreed for all charts, taken over verbatim with this chart's prefix — the input and the non-integer product now go through a formatNumber helper, and the toYaml/fromYaml round trip is not touched, since it is not the cause. Measured against ci/zipline/test-values.yaml on the chart's only resources path, zipline.resources: before, both requests.memory=1048576 and requests.ephemeralStorage=1048576 aborted with unsupported resource quantity suffix "e+06" in "1.048576e+06" after, they render with the limits "3145728", while the 65536 fallback probe still yields 196608 unchanged. Rendered manifests are byte-identical to the previous version for the default values.
This commit is contained in:
3 files changed
+172
-3
No files matched your search
@@ -67,7 +67,7 @@ Handles plain numbers ("2", "0.5", 1073741824), decimal ("1.5Gi"), binary
|
||||
results are printed without a decimal point.
|
||||
*/}}
|
||||
{{- define "zipline.multiplyQuantity" -}}
|
||||
{{- $quantity := printf "%v" .quantity -}}
|
||||
{{- $quantity := include "zipline.formatNumber" .quantity -}}
|
||||
{{- $number := regexFind "^[0-9]+(\\.[0-9]+)?" $quantity -}}
|
||||
{{- if not $number -}}
|
||||
{{- fail (printf "cannot parse resource quantity %q" $quantity) -}}
|
||||
@@ -80,7 +80,24 @@ results are printed without a decimal point.
|
||||
{{- if eq $product (floor $product) -}}
|
||||
{{- printf "%d%s" (int64 $product) $suffix -}}
|
||||
{{- else -}}
|
||||
{{- printf "%v%s" $product $suffix -}}
|
||||
{{- printf "%s%s" (include "zipline.formatNumber" $product) $suffix -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Render a number as a plain decimal string, never in exponential notation.
|
||||
|
||||
Why this exists (issue #157): the null-safe fallback helpers pass values
|
||||
through fromYaml, which parses every number as float64. Go's "%v" switches
|
||||
float64 to exponential notation from about 1e6 upwards, so a bare byte count
|
||||
like 1048576 became "1.048576e+06" - not a valid Kubernetes quantity, and the
|
||||
render aborted. Strings ("512Mi") are passed through untouched.
|
||||
*/}}
|
||||
{{- define "zipline.formatNumber" -}}
|
||||
{{- if kindIs "float64" . -}}
|
||||
{{- regexReplaceAll "\\.?0+$" (printf "%.10f" .) "" -}}
|
||||
{{- else -}}
|
||||
{{- printf "%v" . -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
|
||||
Reference in new issue
Block a user