fix more issue
Signed-off-by: yxxhero <aiopsclub@163.com>
This commit is contained in:
parent
2369735a0d
commit
f6fc585eca
|
|
@ -54,7 +54,22 @@ func formatLabels(labels map[string]string) string {
|
|||
|
||||
// append labels flags to helm flags, starting from helm v3.13.0
|
||||
func (st *HelmState) appendLabelsFlags(flags []string, helm helmexec.Interface, release *ReleaseSpec, syncReleaseLabels bool) []string {
|
||||
if helm.IsVersionAtLeast("3.13.0") && (syncReleaseLabels || st.HelmDefaults.SyncReleaseLabels || release.SyncReleaseLabels) {
|
||||
if !helm.IsVersionAtLeast("3.13.0") {
|
||||
return flags
|
||||
}
|
||||
isSyncReleaseLabels := false
|
||||
switch {
|
||||
// Check if SyncReleaseLabels is true in the release spec.
|
||||
case release.SyncReleaseLabels != nil && *release.SyncReleaseLabels:
|
||||
isSyncReleaseLabels = true
|
||||
// Check if syncReleaseLabels argument is true.
|
||||
case syncReleaseLabels:
|
||||
isSyncReleaseLabels = true
|
||||
// Check if SyncReleaseLabels is true in HelmDefaults.
|
||||
case st.HelmDefaults.SyncReleaseLabels != nil && *st.HelmDefaults.SyncReleaseLabels:
|
||||
isSyncReleaseLabels = true
|
||||
}
|
||||
if isSyncReleaseLabels {
|
||||
labels := formatLabels(release.Labels)
|
||||
if labels != "" {
|
||||
flags = append(flags, "--labels", labels)
|
||||
|
|
@ -203,13 +218,17 @@ func (st *HelmState) appendHideNotesFlags(flags []string, helm helmexec.Interfac
|
|||
}
|
||||
|
||||
// append take-ownership flags to helm flags
|
||||
func (st *HelmState) appendTakeOwnershipFlags(flags []string, helm helmexec.Interface, ops *SyncOpts) []string {
|
||||
func (st *HelmState) appendTakeOwnershipFlagsForUpgrade(flags []string, helm helmexec.Interface, release *ReleaseSpec, takeOwnership bool) []string {
|
||||
// see https://github.com/helm/helm/releases/tag/v3.17.0
|
||||
if !helm.IsVersionAtLeast("3.17.0") {
|
||||
return flags
|
||||
}
|
||||
switch {
|
||||
case ops.TakeOwnership:
|
||||
case release.TakeOwnership != nil && *release.TakeOwnership:
|
||||
flags = append(flags, "--take-ownership")
|
||||
case takeOwnership:
|
||||
flags = append(flags, "--take-ownership")
|
||||
case st.HelmDefaults.TakeOwnership != nil && *st.HelmDefaults.TakeOwnership:
|
||||
flags = append(flags, "--take-ownership")
|
||||
}
|
||||
return flags
|
||||
|
|
|
|||
|
|
@ -387,12 +387,13 @@ func TestAppendHideNotesFlags(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestAppendTakeOwnershipFlags(t *testing.T) {
|
||||
func TestAppendTakeOwnershipFlagsForUpgrade(t *testing.T) {
|
||||
type args struct {
|
||||
flags []string
|
||||
helm helmexec.Interface
|
||||
helmSpec HelmSpec
|
||||
opt *SyncOpts
|
||||
release *ReleaseSpec
|
||||
expected []string
|
||||
}
|
||||
tests := []struct {
|
||||
|
|
@ -402,8 +403,9 @@ func TestAppendTakeOwnershipFlags(t *testing.T) {
|
|||
{
|
||||
name: "no take-ownership when helm less than 3.17.0",
|
||||
args: args{
|
||||
flags: []string{},
|
||||
helm: testutil.NewVersionHelmExec("3.16.0"),
|
||||
flags: []string{},
|
||||
release: &ReleaseSpec{},
|
||||
helm: testutil.NewVersionHelmExec("3.16.0"),
|
||||
opt: &SyncOpts{
|
||||
TakeOwnership: true,
|
||||
},
|
||||
|
|
@ -413,8 +415,9 @@ func TestAppendTakeOwnershipFlags(t *testing.T) {
|
|||
{
|
||||
name: "take-ownership from cmd flag",
|
||||
args: args{
|
||||
flags: []string{},
|
||||
helm: testutil.NewVersionHelmExec("3.17.0"),
|
||||
flags: []string{},
|
||||
helm: testutil.NewVersionHelmExec("3.17.0"),
|
||||
release: &ReleaseSpec{},
|
||||
opt: &SyncOpts{
|
||||
TakeOwnership: true,
|
||||
},
|
||||
|
|
@ -426,8 +429,8 @@ func TestAppendTakeOwnershipFlags(t *testing.T) {
|
|||
t.Run(tt.name, func(t *testing.T) {
|
||||
st := &HelmState{}
|
||||
st.HelmDefaults = tt.args.helmSpec
|
||||
got := st.appendTakeOwnershipFlags(tt.args.flags, tt.args.helm, tt.args.opt)
|
||||
require.Equalf(t, tt.args.expected, got, "appendTakeOwnershipFlags() = %v, want %v", got, tt.args.expected)
|
||||
got := st.appendTakeOwnershipFlagsForUpgrade(tt.args.flags, tt.args.helm, tt.args.release, tt.args.opt.TakeOwnership)
|
||||
require.Equalf(t, tt.args.expected, got, "appendTakeOwnershipFlagsForUpgrade() = %v, want %v", got, tt.args.expected)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -208,9 +208,9 @@ type HelmSpec struct {
|
|||
// Timeout is the time in seconds to wait for helmfile delete command (default 300)
|
||||
DeleteTimeout int `yaml:"deleteTimeout"`
|
||||
// SyncReleaseLabels is true if the release labels should be synced with the helmfile labels
|
||||
SyncReleaseLabels bool `yaml:"syncReleaseLabels"`
|
||||
SyncReleaseLabels *bool `yaml:"syncReleaseLabels"`
|
||||
// TakeOwnership is true if the helmfile should take ownership of the release
|
||||
TakeOwnership bool `yaml:"takeOwnership"`
|
||||
TakeOwnership *bool `yaml:"takeOwnership"`
|
||||
}
|
||||
|
||||
// RepositorySpec that defines values for a helm repo
|
||||
|
|
@ -414,9 +414,9 @@ type ReleaseSpec struct {
|
|||
// Timeout is the time in seconds to wait for helmfile delete command (default 300)
|
||||
DeleteTimeout *int `yaml:"deleteTimeout,omitempty"`
|
||||
// SyncReleaseLabels is true if the release labels should be synced with the helmfile labels
|
||||
SyncReleaseLabels bool `yaml:"syncReleaseLabels"`
|
||||
SyncReleaseLabels *bool `yaml:"syncReleaseLabels"`
|
||||
// TakeOwnership is true if the release should take ownership of the resources
|
||||
TakeOwnership bool `yaml:"takeOwnership"`
|
||||
TakeOwnership *bool `yaml:"takeOwnership"`
|
||||
}
|
||||
|
||||
func (r *Inherits) UnmarshalYAML(unmarshal func(any) error) error {
|
||||
|
|
@ -2802,9 +2802,11 @@ func (st *HelmState) flagsForUpgrade(helm helmexec.Interface, release *ReleaseSp
|
|||
|
||||
postRenderer := ""
|
||||
syncReleaseLabels := false
|
||||
takeOwnership := false
|
||||
if opt != nil {
|
||||
postRenderer = opt.PostRenderer
|
||||
syncReleaseLabels = opt.SyncReleaseLabels
|
||||
takeOwnership = opt.TakeOwnership
|
||||
}
|
||||
|
||||
flags = st.appendConnectionFlags(flags, release)
|
||||
|
|
@ -2833,7 +2835,7 @@ func (st *HelmState) flagsForUpgrade(helm helmexec.Interface, release *ReleaseSp
|
|||
flags = st.appendHideNotesFlags(flags, helm, opt)
|
||||
|
||||
// append take-ownership flag
|
||||
flags = st.appendTakeOwnershipFlags(flags, helm, opt)
|
||||
flags = st.appendTakeOwnershipFlagsForUpgrade(flags, helm, release, takeOwnership)
|
||||
|
||||
flags = st.appendExtraSyncFlags(flags, opt)
|
||||
|
||||
|
|
@ -2978,17 +2980,11 @@ func (st *HelmState) flagsForDiff(helm helmexec.Interface, release *ReleaseSpec,
|
|||
if opt != nil {
|
||||
takeOwnership = opt.TakeOwnership
|
||||
}
|
||||
if takeOwnership || st.HelmDefaults.TakeOwnership || release.TakeOwnership {
|
||||
diffVersion, err := helmexec.GetPluginVersion("diff", settings.PluginsDirectory)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
dv, _ := semver.NewVersion("v3.11.0")
|
||||
|
||||
if diffVersion.LessThan(dv) {
|
||||
return nil, nil, fmt.Errorf("take-ownership is not supported by helm-diff plugin version %s, please use at least v3.11.0", diffVersion)
|
||||
}
|
||||
flags = append(flags, "--take-ownership")
|
||||
var err error
|
||||
flags, err = st.appendTakeOwnershipFlagsForDiff(flags, release, takeOwnership)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
common, files, err := st.namespaceAndValuesFlags(helm, release, workerIndex)
|
||||
|
|
@ -2999,6 +2995,33 @@ func (st *HelmState) flagsForDiff(helm helmexec.Interface, release *ReleaseSpec,
|
|||
return append(flags, common...), files, nil
|
||||
}
|
||||
|
||||
func (st *HelmState) appendTakeOwnershipFlagsForDiff(flags []string, release *ReleaseSpec, takeOwnership bool) ([]string, error) {
|
||||
settings := cli.New()
|
||||
isAppendTakeOwnership := false
|
||||
|
||||
switch {
|
||||
case release.TakeOwnership != nil && *release.TakeOwnership:
|
||||
isAppendTakeOwnership = true
|
||||
case takeOwnership:
|
||||
isAppendTakeOwnership = true
|
||||
case st.HelmDefaults.TakeOwnership != nil && *st.HelmDefaults.TakeOwnership:
|
||||
isAppendTakeOwnership = true
|
||||
}
|
||||
if isAppendTakeOwnership {
|
||||
diffVersion, err := helmexec.GetPluginVersion("diff", settings.PluginsDirectory)
|
||||
if err != nil {
|
||||
return flags, err
|
||||
}
|
||||
dv, _ := semver.NewVersion("v3.11.0")
|
||||
|
||||
if diffVersion.LessThan(dv) {
|
||||
return flags, fmt.Errorf("take-ownership is not supported by helm-diff plugin version %s, please use at least v3.11.0", diffVersion)
|
||||
}
|
||||
flags = append(flags, "--take-ownership")
|
||||
}
|
||||
return flags, nil
|
||||
}
|
||||
|
||||
func (st *HelmState) appendChartVersionFlags(flags []string, release *ReleaseSpec) []string {
|
||||
if release.Version != "" {
|
||||
flags = append(flags, "--version", release.Version)
|
||||
|
|
|
|||
Loading…
Reference in New Issue