Resolve linter issue due to cognitive complexity
Signed-off-by: Simon Bouchard <sbouchard@rbbn.com>
This commit is contained in:
		
							parent
							
								
									0e23aefe10
								
							
						
					
					
						commit
						aaef5c98f8
					
				|  | @ -1050,76 +1050,7 @@ func (st *HelmState) SyncReleases(affectedReleases *AffectedReleases, helm helme | ||||||
| 						m.Unlock() | 						m.Unlock() | ||||||
| 					} | 					} | ||||||
| 				} else if release.UpdateStrategy == "reinstall" || release.UpdateStrategy == "reinstallIfForbidden" { | 				} else if release.UpdateStrategy == "reinstall" || release.UpdateStrategy == "reinstallIfForbidden" { | ||||||
| 					syncSuccessful := false | 					relErr = st.performSyncOrReinstallOfRelease(affectedReleases, helm, context, release, chart, m, flags...) | ||||||
| 					if release.UpdateStrategy == "reinstallIfForbidden" { |  | ||||||
| 						if err := helm.SyncRelease(context, release.Name, chart, release.Namespace, flags...); err != nil { |  | ||||||
| 							st.logger.Debugf("reinstallIfForbidden update strategy - sync failed: %s", err.Error()) |  | ||||||
| 							// Only fail if a different error than forbidden updates
 |  | ||||||
| 							if !strings.Contains(err.Error(), "Forbidden: updates") { |  | ||||||
| 								st.logger.Debugf("reinstallIfForbidden update strategy - sync failed not due to Fobidden updates") |  | ||||||
| 								m.Lock() |  | ||||||
| 								affectedReleases.Failed = append(affectedReleases.Failed, release) |  | ||||||
| 								m.Unlock() |  | ||||||
| 								relErr = newReleaseFailedError(release, err) |  | ||||||
| 							} |  | ||||||
| 						} else { |  | ||||||
| 							st.logger.Debugf("reinstallIfForbidden update strategy - sync success") |  | ||||||
| 							syncSuccessful = true |  | ||||||
| 							m.Lock() |  | ||||||
| 							affectedReleases.Upgraded = append(affectedReleases.Upgraded, release) |  | ||||||
| 							m.Unlock() |  | ||||||
| 							installedVersion, err := st.getDeployedVersion(context, helm, release) |  | ||||||
| 							if err != nil { // err is not really impacting so just log it
 |  | ||||||
| 								st.logger.Debugf("getting deployed release version failed: %v", err) |  | ||||||
| 							} else { |  | ||||||
| 								release.installedVersion = installedVersion |  | ||||||
| 							} |  | ||||||
| 						} |  | ||||||
| 					} |  | ||||||
| 					// Don't attempt to reinstall if a sync was successful
 |  | ||||||
| 					if !syncSuccessful { |  | ||||||
| 						st.logger.Debugf("reinstallIfForbidden update strategy - reinstalling...") |  | ||||||
| 						installed, err := st.isReleaseInstalled(context, helm, *release) |  | ||||||
| 						if err != nil { |  | ||||||
| 							relErr = newReleaseFailedError(release, err) |  | ||||||
| 						} |  | ||||||
| 						if installed { |  | ||||||
| 							var args []string |  | ||||||
| 							if release.Namespace != "" { |  | ||||||
| 								args = append(args, "--namespace", release.Namespace) |  | ||||||
| 							} |  | ||||||
| 							args = st.appendDeleteWaitFlags(args, release) |  | ||||||
| 							deletionFlags := st.appendConnectionFlags(args, release) |  | ||||||
| 							m.Lock() |  | ||||||
| 							if _, err := st.triggerReleaseEvent("preuninstall", nil, release, "sync"); err != nil { |  | ||||||
| 								affectedReleases.Failed = append(affectedReleases.Failed, release) |  | ||||||
| 								relErr = newReleaseFailedError(release, err) |  | ||||||
| 							} else if err := helm.DeleteRelease(context, release.Name, deletionFlags...); err != nil { |  | ||||||
| 								affectedReleases.Failed = append(affectedReleases.Failed, release) |  | ||||||
| 								relErr = newReleaseFailedError(release, err) |  | ||||||
| 							} else if _, err := st.triggerReleaseEvent("postuninstall", nil, release, "sync"); err != nil { |  | ||||||
| 								affectedReleases.Failed = append(affectedReleases.Failed, release) |  | ||||||
| 								relErr = newReleaseFailedError(release, err) |  | ||||||
| 							} |  | ||||||
| 							m.Unlock() |  | ||||||
| 						} |  | ||||||
| 						if err := helm.SyncRelease(context, release.Name, chart, release.Namespace, flags...); err != nil { |  | ||||||
| 							m.Lock() |  | ||||||
| 							affectedReleases.Failed = append(affectedReleases.Failed, release) |  | ||||||
| 							m.Unlock() |  | ||||||
| 							relErr = newReleaseFailedError(release, err) |  | ||||||
| 						} else { |  | ||||||
| 							m.Lock() |  | ||||||
| 							affectedReleases.Reinstalled = append(affectedReleases.Reinstalled, release) |  | ||||||
| 							m.Unlock() |  | ||||||
| 							installedVersion, err := st.getDeployedVersion(context, helm, release) |  | ||||||
| 							if err != nil { // err is not really impacting so just log it
 |  | ||||||
| 								st.logger.Debugf("getting deployed release version failed: %v", err) |  | ||||||
| 							} else { |  | ||||||
| 								release.installedVersion = installedVersion |  | ||||||
| 							} |  | ||||||
| 						} |  | ||||||
| 					} |  | ||||||
| 				} else { | 				} else { | ||||||
| 					if err := helm.SyncRelease(context, release.Name, chart, release.Namespace, flags...); err != nil { | 					if err := helm.SyncRelease(context, release.Name, chart, release.Namespace, flags...); err != nil { | ||||||
| 						m.Lock() | 						m.Lock() | ||||||
|  | @ -1181,6 +1112,81 @@ func (st *HelmState) SyncReleases(affectedReleases *AffectedReleases, helm helme | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | func (st *HelmState) performSyncOrReinstallOfRelease(affectedReleases *AffectedReleases, helm helmexec.Interface, context helmexec.HelmContext, release *ReleaseSpec, chart string, m *sync.Mutex, flags ...string) *ReleaseError { | ||||||
|  | 	syncSuccessful := false | ||||||
|  | 	if release.UpdateStrategy == "reinstallIfForbidden" { | ||||||
|  | 		if err := helm.SyncRelease(context, release.Name, chart, release.Namespace, flags...); err != nil { | ||||||
|  | 			st.logger.Debugf("reinstallIfForbidden update strategy - sync failed: %s", err.Error()) | ||||||
|  | 			// Only fail if a different error than forbidden updates
 | ||||||
|  | 			if !strings.Contains(err.Error(), "Forbidden: updates") { | ||||||
|  | 				st.logger.Debugf("reinstallIfForbidden update strategy - sync failed not due to Fobidden updates") | ||||||
|  | 				m.Lock() | ||||||
|  | 				affectedReleases.Failed = append(affectedReleases.Failed, release) | ||||||
|  | 				m.Unlock() | ||||||
|  | 				return newReleaseFailedError(release, err) | ||||||
|  | 			} | ||||||
|  | 		} else { | ||||||
|  | 			st.logger.Debugf("reinstallIfForbidden update strategy - sync success") | ||||||
|  | 			syncSuccessful = true | ||||||
|  | 			m.Lock() | ||||||
|  | 			affectedReleases.Upgraded = append(affectedReleases.Upgraded, release) | ||||||
|  | 			m.Unlock() | ||||||
|  | 			installedVersion, err := st.getDeployedVersion(context, helm, release) | ||||||
|  | 			if err != nil { // err is not really impacting so just log it
 | ||||||
|  | 				st.logger.Debugf("getting deployed release version failed: %v", err) | ||||||
|  | 			} else { | ||||||
|  | 				release.installedVersion = installedVersion | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	// Don't attempt to reinstall if a sync was successful or needed a forced reinstall
 | ||||||
|  | 	if !syncSuccessful { | ||||||
|  | 		st.logger.Debugf("reinstallIfForbidden update strategy - reinstalling...") | ||||||
|  | 		installed, err := st.isReleaseInstalled(context, helm, *release) | ||||||
|  | 		if err != nil { | ||||||
|  | 			return newReleaseFailedError(release, err) | ||||||
|  | 		} | ||||||
|  | 		if installed { | ||||||
|  | 			var args []string | ||||||
|  | 			if release.Namespace != "" { | ||||||
|  | 				args = append(args, "--namespace", release.Namespace) | ||||||
|  | 			} | ||||||
|  | 			args = st.appendDeleteWaitFlags(args, release) | ||||||
|  | 			deletionFlags := st.appendConnectionFlags(args, release) | ||||||
|  | 			m.Lock() | ||||||
|  | 			if _, err := st.triggerReleaseEvent("preuninstall", nil, release, "sync"); err != nil { | ||||||
|  | 				affectedReleases.Failed = append(affectedReleases.Failed, release) | ||||||
|  | 				return newReleaseFailedError(release, err) | ||||||
|  | 			} else if err := helm.DeleteRelease(context, release.Name, deletionFlags...); err != nil { | ||||||
|  | 				affectedReleases.Failed = append(affectedReleases.Failed, release) | ||||||
|  | 				return newReleaseFailedError(release, err) | ||||||
|  | 			} else if _, err := st.triggerReleaseEvent("postuninstall", nil, release, "sync"); err != nil { | ||||||
|  | 				affectedReleases.Failed = append(affectedReleases.Failed, release) | ||||||
|  | 				return newReleaseFailedError(release, err) | ||||||
|  | 			} | ||||||
|  | 			m.Unlock() | ||||||
|  | 		} | ||||||
|  | 		if err := helm.SyncRelease(context, release.Name, chart, release.Namespace, flags...); err != nil { | ||||||
|  | 			m.Lock() | ||||||
|  | 			affectedReleases.Failed = append(affectedReleases.Failed, release) | ||||||
|  | 			m.Unlock() | ||||||
|  | 			return newReleaseFailedError(release, err) | ||||||
|  | 		} else { | ||||||
|  | 			m.Lock() | ||||||
|  | 			affectedReleases.Reinstalled = append(affectedReleases.Reinstalled, release) | ||||||
|  | 			m.Unlock() | ||||||
|  | 			installedVersion, err := st.getDeployedVersion(context, helm, release) | ||||||
|  | 			if err != nil { // err is not really impacting so just log it
 | ||||||
|  | 				st.logger.Debugf("getting deployed release version failed: %v", err) | ||||||
|  | 			} else { | ||||||
|  | 				release.installedVersion = installedVersion | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
| func (st *HelmState) listReleases(context helmexec.HelmContext, helm helmexec.Interface, release *ReleaseSpec) (string, error) { | func (st *HelmState) listReleases(context helmexec.HelmContext, helm helmexec.Interface, release *ReleaseSpec) (string, error) { | ||||||
| 	flags := st.kubeConnectionFlags(release) | 	flags := st.kubeConnectionFlags(release) | ||||||
| 	if release.Namespace != "" { | 	if release.Namespace != "" { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue