mirror of
https://github.com/helmfile/helmfile.git
synced 2026-09-30 07:08:38 +02:00
Add missing --timeout flag to helmfile sync command with documentation (#2148)
* Initial plan * Implement --timeout flag for helmfile sync command - Add Timeout field to SyncOptions struct in pkg/config/sync.go - Add --timeout flag to sync command in cmd/sync.go - Add Timeout field to SyncOpts struct in pkg/state/state.go - Modify timeoutFlags() function to prioritize CLI timeout over release and default configs - Add test case to verify CLI timeout overrides other timeout settings - Follow same pattern as existing --wait and --wait-for-jobs flags Co-authored-by: yxxhero <11087727+yxxhero@users.noreply.github.com> * Fix lint issues: format test struct fields properly Co-authored-by: yxxhero <11087727+yxxhero@users.noreply.github.com> * Update docs: Add --timeout flag documentation for helmfile sync command Co-authored-by: yxxhero <11087727+yxxhero@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yxxhero <11087727+yxxhero@users.noreply.github.com>
This commit is contained in:
+7
-3
@@ -807,6 +807,7 @@ type SyncOpts struct {
|
||||
Wait bool
|
||||
WaitRetries int
|
||||
WaitForJobs bool
|
||||
Timeout int
|
||||
SyncReleaseLabels bool
|
||||
ReuseValues bool
|
||||
ResetValues bool
|
||||
@@ -2271,7 +2272,7 @@ func (st *HelmState) TestReleases(helm helmexec.Interface, cleanup bool, timeout
|
||||
}
|
||||
|
||||
if timeout == EmptyTimeout {
|
||||
flags = append(flags, st.timeoutFlags(&release)...)
|
||||
flags = append(flags, st.timeoutFlags(&release, nil)...)
|
||||
} else {
|
||||
duration := strconv.Itoa(timeout)
|
||||
duration += "s"
|
||||
@@ -2751,13 +2752,16 @@ func (st *HelmState) needsInsecureSkipTLSVerify(release *ReleaseSpec, repo *Repo
|
||||
return relSkipTLSVerify || st.HelmDefaults.InsecureSkipTLSVerify || repoSkipTLSVerify
|
||||
}
|
||||
|
||||
func (st *HelmState) timeoutFlags(release *ReleaseSpec) []string {
|
||||
func (st *HelmState) timeoutFlags(release *ReleaseSpec, ops *SyncOpts) []string {
|
||||
var flags []string
|
||||
|
||||
timeout := st.HelmDefaults.Timeout
|
||||
if release.Timeout != nil {
|
||||
timeout = *release.Timeout
|
||||
}
|
||||
if ops != nil && ops.Timeout > 0 {
|
||||
timeout = ops.Timeout
|
||||
}
|
||||
if timeout != 0 {
|
||||
duration := strconv.Itoa(timeout)
|
||||
duration += "s"
|
||||
@@ -2783,7 +2787,7 @@ func (st *HelmState) flagsForUpgrade(helm helmexec.Interface, release *ReleaseSp
|
||||
flags = st.appendKeyringFlags(flags, release)
|
||||
}
|
||||
|
||||
flags = append(flags, st.timeoutFlags(release)...)
|
||||
flags = append(flags, st.timeoutFlags(release, opt)...)
|
||||
|
||||
if release.Force != nil && *release.Force || release.Force == nil && st.HelmDefaults.Force {
|
||||
flags = append(flags, "--force")
|
||||
|
||||
+23
-1
@@ -170,6 +170,7 @@ func TestHelmState_flagsForUpgrade(t *testing.T) {
|
||||
version *semver.Version
|
||||
defaults HelmSpec
|
||||
release *ReleaseSpec
|
||||
syncOpts *SyncOpts
|
||||
want []string
|
||||
wantErr string
|
||||
}{
|
||||
@@ -455,6 +456,27 @@ func TestHelmState_flagsForUpgrade(t *testing.T) {
|
||||
"--namespace", "test-namespace",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "timeout-from-cli-flag",
|
||||
defaults: HelmSpec{
|
||||
Timeout: 123,
|
||||
},
|
||||
release: &ReleaseSpec{
|
||||
Chart: "test/chart",
|
||||
Version: "0.1",
|
||||
Timeout: some(456),
|
||||
Name: "test-charts",
|
||||
Namespace: "test-namespace",
|
||||
},
|
||||
syncOpts: &SyncOpts{
|
||||
Timeout: 789,
|
||||
},
|
||||
want: []string{
|
||||
"--version", "0.1",
|
||||
"--timeout", "789s",
|
||||
"--namespace", "test-namespace",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "atomic",
|
||||
defaults: HelmSpec{
|
||||
@@ -737,7 +759,7 @@ func TestHelmState_flagsForUpgrade(t *testing.T) {
|
||||
Version: tt.version,
|
||||
}
|
||||
|
||||
args, _, err := state.flagsForUpgrade(helm, tt.release, 0, nil)
|
||||
args, _, err := state.flagsForUpgrade(helm, tt.release, 0, tt.syncOpts)
|
||||
if err != nil && tt.wantErr == "" {
|
||||
t.Errorf("unexpected error flagsForUpgrade: %v", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user