From a9061e525892b981013c1d0f85680374aa71f471 Mon Sep 17 00:00:00 2001
From: Ali <83188384+testA113@users.noreply.github.com>
Date: Thu, 5 Jun 2025 13:13:45 +1200
Subject: [PATCH] feat(helm): enhance helm chart install [r8s-341] (#766)
---
api/http/handler/helm/helm_show.go | 7 +
app/kubernetes/views/deploy/deploy.html | 10 +-
.../custom-template-selector.html | 4 +-
app/portainer/react/components/index.ts | 1 +
.../CodeEditor/CodeEditor.module.css | 8 +-
.../components/CodeEditor/CodeEditor.tsx | 60 +++---
.../CodeEditor/ShortcutsTooltip.tsx | 52 +++++
app/react/components/ExternalLink.tsx | 32 +++
app/react/components/WebEditorForm.tsx | 60 +-----
app/react/components/modals/Modal/Modal.tsx | 3 +-
.../DeployView/StackName/StackName.tsx | 2 +-
.../ChartActions/UpgradeButton.test.tsx | 49 +++--
.../ChartActions/UpgradeButton.tsx | 154 ++++++++-------
.../ChartActions/UpgradeHelmModal.tsx | 156 ++++++++-------
.../HelmTemplates/HelmInstallForm.test.tsx | 174 ++++++++++++++++
.../helm/HelmTemplates/HelmInstallForm.tsx | 106 ++++++++++
.../HelmTemplates/HelmInstallInnerForm.tsx | 86 ++++++++
.../helm/HelmTemplates/HelmTemplates.tsx | 18 +-
.../HelmTemplatesSelectedItem.test.tsx | 86 +-------
.../HelmTemplatesSelectedItem.tsx | 185 +++---------------
.../queries/useHelmChartInstall.ts | 40 ----
.../kubernetes/helm/HelmTemplates/types.ts | 4 +
.../helm/components/HelmValuesInput.tsx | 80 ++++++++
.../queries/useHelmChartValues.ts | 22 ++-
.../queries/useHelmRepositories.ts | 2 +-
.../queries/useUpdateHelmReleaseMutation.ts | 11 +-
app/react/kubernetes/helm/types.ts | 11 ++
pkg/libhelm/options/show_options.go | 1 +
pkg/libhelm/sdk/show.go | 2 +-
29 files changed, 864 insertions(+), 562 deletions(-)
create mode 100644 app/react/components/CodeEditor/ShortcutsTooltip.tsx
create mode 100644 app/react/components/ExternalLink.tsx
create mode 100644 app/react/kubernetes/helm/HelmTemplates/HelmInstallForm.test.tsx
create mode 100644 app/react/kubernetes/helm/HelmTemplates/HelmInstallForm.tsx
create mode 100644 app/react/kubernetes/helm/HelmTemplates/HelmInstallInnerForm.tsx
delete mode 100644 app/react/kubernetes/helm/HelmTemplates/queries/useHelmChartInstall.ts
create mode 100644 app/react/kubernetes/helm/HelmTemplates/types.ts
create mode 100644 app/react/kubernetes/helm/components/HelmValuesInput.tsx
rename app/react/kubernetes/helm/{HelmTemplates => }/queries/useHelmChartValues.ts (54%)
rename app/react/kubernetes/helm/{HelmApplicationView => }/queries/useHelmRepositories.ts (97%)
rename app/react/kubernetes/helm/{HelmApplicationView => }/queries/useUpdateHelmReleaseMutation.ts (84%)
diff --git a/api/http/handler/helm/helm_show.go b/api/http/handler/helm/helm_show.go
index 591c57922..f139827b8 100644
--- a/api/http/handler/helm/helm_show.go
+++ b/api/http/handler/helm/helm_show.go
@@ -20,6 +20,7 @@ import (
// @tags helm
// @param repo query string true "Helm repository URL"
// @param chart query string true "Chart name"
+// @param version query string true "Chart version"
// @param command path string true "chart/values/readme"
// @security ApiKeyAuth
// @security jwt
@@ -45,6 +46,11 @@ func (handler *Handler) helmShow(w http.ResponseWriter, r *http.Request) *httper
return httperror.BadRequest("Bad request", errors.New("missing `chart` query parameter"))
}
+ version, err := request.RetrieveQueryParameter(r, "version", true)
+ if err != nil {
+ return httperror.BadRequest("Bad request", errors.Wrap(err, fmt.Sprintf("provided version %q is not valid", version)))
+ }
+
cmd, err := request.RetrieveRouteVariableValue(r, "command")
if err != nil {
cmd = "all"
@@ -55,6 +61,7 @@ func (handler *Handler) helmShow(w http.ResponseWriter, r *http.Request) *httper
OutputFormat: options.ShowOutputFormat(cmd),
Chart: chart,
Repo: repo,
+ Version: version,
}
result, err := handler.helmPackageManager.Show(showOptions)
if err != nil {
diff --git a/app/kubernetes/views/deploy/deploy.html b/app/kubernetes/views/deploy/deploy.html
index 5eda2d3a7..d57d0caa7 100644
--- a/app/kubernetes/views/deploy/deploy.html
+++ b/app/kubernetes/views/deploy/deploy.html
@@ -31,7 +31,7 @@