parent
04c963d050
commit
9d7d2de6f5
|
|
@ -148,7 +148,13 @@ func (a *App) Diff(c DiffConfigProvider) error {
|
||||||
if len(deferredErrs) > 0 {
|
if len(deferredErrs) > 0 {
|
||||||
// We take the first release error w/ exit status 2 (although all the defered errs should have exit status 2)
|
// We take the first release error w/ exit status 2 (although all the defered errs should have exit status 2)
|
||||||
// to just let helmfile itself to exit with 2
|
// to just let helmfile itself to exit with 2
|
||||||
return deferredErrs[0]
|
// See https://github.com/roboll/helmfile/issues/749
|
||||||
|
code := 2
|
||||||
|
e := &Error{
|
||||||
|
msg: "Identified at least on change",
|
||||||
|
code: &code,
|
||||||
|
}
|
||||||
|
return e
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
@ -1299,7 +1305,7 @@ func (e *Error) Code() int {
|
||||||
panic(fmt.Sprintf("[bug] assertion error: unexpected state: unable to handle errors: %v", e.Errors))
|
panic(fmt.Sprintf("[bug] assertion error: unexpected state: unable to handle errors: %v", e.Errors))
|
||||||
}
|
}
|
||||||
|
|
||||||
func appError(msg string, err error) error {
|
func appError(msg string, err error) *Error {
|
||||||
return &Error{msg: msg, Errors: []error{err}}
|
return &Error{msg: msg, Errors: []error{err}}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -86,6 +86,7 @@ func (r *Run) Diff(c DiffConfigProvider) []error {
|
||||||
Set: c.Set(),
|
Set: c.Set(),
|
||||||
}
|
}
|
||||||
_, errs := st.DiffReleases(helm, c.Values(), c.Concurrency(), c.DetailedExitcode(), c.SuppressSecrets(), c.SuppressDiff(), true, opts)
|
_, errs := st.DiffReleases(helm, c.Values(), c.Concurrency(), c.DetailedExitcode(), c.SuppressSecrets(), c.SuppressDiff(), true, opts)
|
||||||
|
|
||||||
return errs
|
return errs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,9 +13,19 @@ type ReleaseError struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *ReleaseError) Error() string {
|
func (e *ReleaseError) Error() string {
|
||||||
return fmt.Sprintf("failed processing release %s: %v", e.Name, e.err.Error())
|
return e.err.Error()
|
||||||
}
|
}
|
||||||
|
|
||||||
func newReleaseError(release *ReleaseSpec, err error) *ReleaseError {
|
func NewReleaseError(release *ReleaseSpec, err error, code int) *ReleaseError {
|
||||||
return &ReleaseError{release, err, ReleaseErrorCodeFailure}
|
return &ReleaseError{
|
||||||
|
ReleaseSpec: release,
|
||||||
|
err: err,
|
||||||
|
Code: code,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func newReleaseFailedError(release *ReleaseSpec, err error) *ReleaseError {
|
||||||
|
wrappedErr := fmt.Errorf("failed processing release %s: %v", release.Name, err.Error())
|
||||||
|
|
||||||
|
return NewReleaseError(release, wrappedErr, ReleaseErrorCodeFailure)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -330,7 +330,7 @@ func (st *HelmState) prepareSyncReleases(helm helmexec.Interface, additionalValu
|
||||||
flags, flagsErr := st.flagsForUpgrade(helm, release, workerIndex)
|
flags, flagsErr := st.flagsForUpgrade(helm, release, workerIndex)
|
||||||
mut.Unlock()
|
mut.Unlock()
|
||||||
if flagsErr != nil {
|
if flagsErr != nil {
|
||||||
results <- syncPrepareResult{errors: []*ReleaseError{newReleaseError(release, flagsErr)}}
|
results <- syncPrepareResult{errors: []*ReleaseError{newReleaseFailedError(release, flagsErr)}}
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -338,14 +338,14 @@ func (st *HelmState) prepareSyncReleases(helm helmexec.Interface, additionalValu
|
||||||
for _, value := range additionalValues {
|
for _, value := range additionalValues {
|
||||||
valfile, err := filepath.Abs(value)
|
valfile, err := filepath.Abs(value)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errs = append(errs, newReleaseError(release, err))
|
errs = append(errs, newReleaseFailedError(release, err))
|
||||||
}
|
}
|
||||||
|
|
||||||
ok, err := st.fileExists(valfile)
|
ok, err := st.fileExists(valfile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errs = append(errs, newReleaseError(release, err))
|
errs = append(errs, newReleaseFailedError(release, err))
|
||||||
} else if !ok {
|
} else if !ok {
|
||||||
errs = append(errs, newReleaseError(release, fmt.Errorf("file does not exist: %s", valfile)))
|
errs = append(errs, newReleaseFailedError(release, fmt.Errorf("file does not exist: %s", valfile)))
|
||||||
}
|
}
|
||||||
flags = append(flags, "--values", valfile)
|
flags = append(flags, "--values", valfile)
|
||||||
}
|
}
|
||||||
|
|
@ -484,7 +484,7 @@ func (st *HelmState) DeleteReleasesForSync(affectedReleases *AffectedReleases, h
|
||||||
context := st.createHelmContext(release, workerIndex)
|
context := st.createHelmContext(release, workerIndex)
|
||||||
|
|
||||||
if _, err := st.triggerPresyncEvent(release, "sync"); err != nil {
|
if _, err := st.triggerPresyncEvent(release, "sync"); err != nil {
|
||||||
relErr = newReleaseError(release, err)
|
relErr = newReleaseFailedError(release, err)
|
||||||
} else {
|
} else {
|
||||||
var args []string
|
var args []string
|
||||||
if helm.IsHelm3() {
|
if helm.IsHelm3() {
|
||||||
|
|
@ -499,7 +499,7 @@ func (st *HelmState) DeleteReleasesForSync(affectedReleases *AffectedReleases, h
|
||||||
m.Lock()
|
m.Lock()
|
||||||
if err := helm.DeleteRelease(context, release.Name, deletionFlags...); err != nil {
|
if err := helm.DeleteRelease(context, release.Name, deletionFlags...); err != nil {
|
||||||
affectedReleases.Failed = append(affectedReleases.Failed, release)
|
affectedReleases.Failed = append(affectedReleases.Failed, release)
|
||||||
relErr = newReleaseError(release, err)
|
relErr = newReleaseFailedError(release, err)
|
||||||
} else {
|
} else {
|
||||||
affectedReleases.Deleted = append(affectedReleases.Deleted, release)
|
affectedReleases.Deleted = append(affectedReleases.Deleted, release)
|
||||||
}
|
}
|
||||||
|
|
@ -580,11 +580,11 @@ func (st *HelmState) SyncReleases(affectedReleases *AffectedReleases, helm helme
|
||||||
context := st.createHelmContext(release, workerIndex)
|
context := st.createHelmContext(release, workerIndex)
|
||||||
|
|
||||||
if _, err := st.triggerPresyncEvent(release, "sync"); err != nil {
|
if _, err := st.triggerPresyncEvent(release, "sync"); err != nil {
|
||||||
relErr = newReleaseError(release, err)
|
relErr = newReleaseFailedError(release, err)
|
||||||
} else if !release.Desired() {
|
} else if !release.Desired() {
|
||||||
installed, err := st.isReleaseInstalled(context, helm, *release)
|
installed, err := st.isReleaseInstalled(context, helm, *release)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
relErr = newReleaseError(release, err)
|
relErr = newReleaseFailedError(release, err)
|
||||||
} else if installed {
|
} else if installed {
|
||||||
var args []string
|
var args []string
|
||||||
if helm.IsHelm3() {
|
if helm.IsHelm3() {
|
||||||
|
|
@ -596,7 +596,7 @@ func (st *HelmState) SyncReleases(affectedReleases *AffectedReleases, helm helme
|
||||||
m.Lock()
|
m.Lock()
|
||||||
if err := helm.DeleteRelease(context, release.Name, deletionFlags...); err != nil {
|
if err := helm.DeleteRelease(context, release.Name, deletionFlags...); err != nil {
|
||||||
affectedReleases.Failed = append(affectedReleases.Failed, release)
|
affectedReleases.Failed = append(affectedReleases.Failed, release)
|
||||||
relErr = newReleaseError(release, err)
|
relErr = newReleaseFailedError(release, err)
|
||||||
} else {
|
} else {
|
||||||
affectedReleases.Deleted = append(affectedReleases.Deleted, release)
|
affectedReleases.Deleted = append(affectedReleases.Deleted, release)
|
||||||
}
|
}
|
||||||
|
|
@ -606,7 +606,7 @@ func (st *HelmState) SyncReleases(affectedReleases *AffectedReleases, helm helme
|
||||||
m.Lock()
|
m.Lock()
|
||||||
affectedReleases.Failed = append(affectedReleases.Failed, release)
|
affectedReleases.Failed = append(affectedReleases.Failed, release)
|
||||||
m.Unlock()
|
m.Unlock()
|
||||||
relErr = newReleaseError(release, err)
|
relErr = newReleaseFailedError(release, err)
|
||||||
} else {
|
} else {
|
||||||
m.Lock()
|
m.Lock()
|
||||||
affectedReleases.Upgraded = append(affectedReleases.Upgraded, release)
|
affectedReleases.Upgraded = append(affectedReleases.Upgraded, release)
|
||||||
|
|
@ -1035,7 +1035,7 @@ func (st *HelmState) prepareDiffReleases(helm helmexec.Interface, additionalValu
|
||||||
if len(errs) > 0 {
|
if len(errs) > 0 {
|
||||||
rsErrs := make([]*ReleaseError, len(errs))
|
rsErrs := make([]*ReleaseError, len(errs))
|
||||||
for i, e := range errs {
|
for i, e := range errs {
|
||||||
rsErrs[i] = newReleaseError(release, e)
|
rsErrs[i] = newReleaseFailedError(release, e)
|
||||||
}
|
}
|
||||||
results <- diffPrepareResult{errors: rsErrs}
|
results <- diffPrepareResult{errors: rsErrs}
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -1344,7 +1344,7 @@ func (st *HelmState) PrepareReleases(helm helmexec.Interface, helmfileCommand st
|
||||||
release := st.Releases[i]
|
release := st.Releases[i]
|
||||||
|
|
||||||
if _, err := st.triggerPrepareEvent(&release, helmfileCommand); err != nil {
|
if _, err := st.triggerPrepareEvent(&release, helmfileCommand); err != nil {
|
||||||
errs = append(errs, newReleaseError(&release, err))
|
errs = append(errs, newReleaseFailedError(&release, err))
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue