feat: --force, --recreate-pods, --timeout as first-class citizens in helmfile.yaml (#239)

Resolves #229
This commit is contained in:
KUOKA Yusuke 2018-08-27 23:06:16 +09:00 committed by GitHub
parent 2c36640ad2
commit 815ee1f85b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 3 deletions

View File

@ -83,6 +83,12 @@ releases:
- vault_secret.yaml
# wait for k8s resources via --wait. Defaults to `false`
wait: true
# time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks, and waits on pod/pvc/svc/deployment readiness) (default 300)
timeout: 60
# performs pods restart for the resource if applicable
recreatePods: true
# forces resource update through delete/recreate if needed
force: true
# Local chart example
- name: grafana # name of this release

View File

@ -60,7 +60,14 @@ type ReleaseSpec struct {
Chart string `yaml:"chart"`
Version string `yaml:"version"`
Verify bool `yaml:"verify"`
Wait bool `yaml:"wait"`
// Wait, if set to true, will wait until all Pods, PVCs, Services, and minimum number of Pods of a Deployment are in a ready state before marking the release as successful
Wait bool `yaml:"wait"`
// Timeout is the time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks, and waits on pod/pvc/svc/deployment readiness) (default 300)
Timeout int `yaml:"timeout"`
// RecreatePods, when set to true, instruct helmfile to perform pods restart for the resource if applicable
RecreatePods bool `yaml:"recreatePods"`
// Force, when set to true, forces resource update through delete/recreate if needed
Force bool `yaml:"force"`
// Name is the name of this release
Name string `yaml:"name"`
@ -654,14 +661,23 @@ func chartNameWithoutRepository(chart string) string {
func (state *HelmState) flagsForUpgrade(helm helmexec.Interface, basePath string, release *ReleaseSpec) ([]string, error) {
flags := []string{}
if release.Version != "" {
flags = append(flags, "--version", release.Version)
}
if release.Verify {
flags = append(flags, "--verify")
}
if release.Wait {
flags = append(flags, "--wait")
}
if release.Version != "" {
flags = append(flags, "--version", release.Version)
if release.Timeout != 0 {
flags = append(flags, "--timeout", fmt.Sprintf("%d", release.Timeout))
}
if release.Force {
flags = append(flags, "--force")
}
if release.RecreatePods {
flags = append(flags, "--recreate-pods")
}
common, err := state.namespaceAndValuesFlags(helm, basePath, release)
if err != nil {