From bd55bf4e097f1ba51e1734b708d8bbdd7f296cf7 Mon Sep 17 00:00:00 2001 From: Lars Francke Date: Wed, 2 Sep 2026 20:33:41 +0200 Subject: [PATCH] feat(template): Generate NOTES.txt for every operator chart helm install currently prints nothing. This adds the NOTES.txt that hive-operator#753 and kafka-operator#1013 landed per repo, generated instead so the remaining twelve do not need hand-written copies. The template needs no new configuration. The three fields it varies on already exist and are already used the same way by README.md.j2: operator.pretty_string the product name operator.product_string the documentation slug operator.hub_component_slug | default(product_string) the Hub slug, which only spark-k8s overrides operator.config.has_product | default(true) the gate below commons, listener and secret have has_product false, so they get different prose and no Hub link, because they own no product custom resource and have no Hub component page. Their pretty_string already ends in "Operator", so the sentence uses chart_title for them and would otherwise read "the Stackable operator for Stackable Secret Operator". Output is byte-identical to the NOTES.txt already merged in hive-operator and kafka-operator, and to the files in the open trino-operator and zookeeper-operator pull requests, so the next rollout adds the file to twelve charts and shows no diff for those four. --- .../helm/[[operator]]/templates/NOTES.txt.j2 | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 template/deploy/helm/[[operator]]/templates/NOTES.txt.j2 diff --git a/template/deploy/helm/[[operator]]/templates/NOTES.txt.j2 b/template/deploy/helm/[[operator]]/templates/NOTES.txt.j2 new file mode 100644 index 00000000..3115485e --- /dev/null +++ b/template/deploy/helm/[[operator]]/templates/NOTES.txt.j2 @@ -0,0 +1,28 @@ +{{ .Chart.Name }} {{ .Chart.AppVersion }} is installed in namespace {{ .Release.Namespace }}. + +{[% if operator.config.has_product | default(true) %}] +This installs the Stackable operator for {[ operator.pretty_string }] only. + +Find more information in our documentation: + +* https://docs.stackable.tech/home/stable/{[ operator.product_string }]/ +* https://hub.stackable.tech/components/{[ operator.hub_component_slug | default(operator.product_string) }] +{[% else %}] +This installs the {[ operator.chart_title }] only. +It provides resources that the product operators consume, so there is nothing further to apply. + +Find more information in our documentation: + +* https://docs.stackable.tech/home/stable/{[ operator.product_string }]/ +{[% endif %}] +{{ if .Values.maintenance.customResourceDefinitions.maintain }} +The operator installs and updates its own CustomResourceDefinitions when it starts, so the chart +does not ship them. They appear shortly after the pod becomes ready. +{{- else }} +WARNING: maintenance.customResourceDefinitions.maintain is false, so this operator will not install +its CustomResourceDefinitions and the chart does not ship them either. Apply them yourself before +creating any resources managed by this operator, otherwise the API server will reject them. +{{- end }} + +Learn more at https://stackable.tech +Thank you for using Stackable!