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