mirror of
https://github.com/portainer/portainer.git
synced 2025-07-24 07:49:41 +02:00
feat(helm): use helm upgrade for install [r8s-258] (#568)
This commit is contained in:
parent
e68bd53e30
commit
0ebfe047d1
19 changed files with 613 additions and 150 deletions
47
pkg/libhelm/sdk/release.go
Normal file
47
pkg/libhelm/sdk/release.go
Normal file
|
@ -0,0 +1,47 @@
|
|||
package sdk
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
"github.com/portainer/portainer/pkg/libhelm/options"
|
||||
"helm.sh/helm/v3/pkg/action"
|
||||
"helm.sh/helm/v3/pkg/release"
|
||||
"helm.sh/helm/v3/pkg/storage/driver"
|
||||
)
|
||||
|
||||
func (hspm *HelmSDKPackageManager) doesReleaseExist(releaseName, namespace string, clusterAccess *options.KubernetesClusterAccess) (bool, error) {
|
||||
// Initialize action configuration
|
||||
actionConfig := new(action.Configuration)
|
||||
err := hspm.initActionConfig(actionConfig, namespace, clusterAccess)
|
||||
if err != nil {
|
||||
// error is already logged in initActionConfig
|
||||
return false, fmt.Errorf("failed to initialize helm configuration: %w", err)
|
||||
}
|
||||
|
||||
historyClient, err := hspm.initHistoryClient(actionConfig, namespace, clusterAccess)
|
||||
if err != nil {
|
||||
// error is already logged in initHistoryClient
|
||||
return false, fmt.Errorf("failed to initialize helm history client: %w", err)
|
||||
}
|
||||
|
||||
versions, err := historyClient.Run(releaseName)
|
||||
if errors.Is(err, driver.ErrReleaseNotFound) || isReleaseUninstalled(versions) {
|
||||
return false, nil
|
||||
} else if err != nil {
|
||||
return false, fmt.Errorf("failed to get history: %w", err)
|
||||
}
|
||||
|
||||
return true, nil
|
||||
}
|
||||
|
||||
func isReleaseUninstalled(versions []*release.Release) bool {
|
||||
return len(versions) > 0 && versions[len(versions)-1].Info.Status == release.StatusUninstalled
|
||||
}
|
||||
|
||||
func (hspm *HelmSDKPackageManager) initHistoryClient(actionConfig *action.Configuration, namespace string, clusterAccess *options.KubernetesClusterAccess) (*action.History, error) {
|
||||
historyClient := action.NewHistory(actionConfig)
|
||||
historyClient.Max = 1
|
||||
|
||||
return historyClient, nil
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue