MCPcopy
hub / github.com/databus23/helm-diff / runHelm3

Method runHelm3

cmd/upgrade.go:269–373  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

267}
268
269func (d *diffCmd) runHelm3() error {
270 if err := compatibleHelm3Version(); err != nil {
271 return err
272 }
273
274 var releaseManifest []byte
275
276 var err error
277
278 if d.takeOwnership {
279 // We need to do a three way merge between the manifests of the new
280 // release, the manifests of the old release and what is currently deployed
281 d.threeWayMerge = true
282 }
283
284 if d.clusterAccessAllowed() {
285 releaseManifest, err = getRelease(d.release, d.namespace, d.kubeContext)
286 }
287
288 var newInstall bool
289 if err != nil && strings.Contains(err.Error(), "release: not found") {
290 if d.isAllowUnreleased() {
291 newInstall = true
292 err = nil
293 } else {
294 fmt.Fprintf(os.Stderr, "********************\n\n\tRelease was not present in Helm. Include the `--allow-unreleased` to perform diff without exiting in error.\n\n********************\n")
295 return err
296 }
297 }
298 if err != nil {
299 return fmt.Errorf("Failed to get release %s in namespace %s: %w", d.release, d.namespace, err)
300 }
301
302 installManifest, err := d.template(!newInstall)
303 if err != nil {
304 return fmt.Errorf("Failed to render chart: %w", err)
305 }
306
307 var actionConfig *action.Configuration
308 if d.threeWayMerge || d.takeOwnership {
309 actionConfig = new(action.Configuration)
310 localEnv := prepareEnvSettings(d.kubeContext)
311 if err := actionConfig.Init(localEnv.RESTClientGetter(), localEnv.Namespace(), os.Getenv("HELM_DRIVER")); err != nil {
312 log.Fatalf("%+v", err)
313 }
314 if err := actionConfig.KubeClient.IsReachable(); err != nil {
315 return err
316 }
317 }
318
319 if d.threeWayMerge {
320 releaseManifest, installManifest, err = manifest.Generate(actionConfig, releaseManifest, installManifest)
321 if err != nil {
322 return fmt.Errorf("unable to generate manifests: %w", err)
323 }
324 }
325
326 currentSpecs := make(map[string]*manifest.MappingResult)

Callers 1

newChartCommandFunction · 0.95

Calls 11

clusterAccessAllowedMethod · 0.95
isAllowUnreleasedMethod · 0.95
templateMethod · 0.95
GenerateFunction · 0.92
ParseFunction · 0.92
ManifestsOwnershipFunction · 0.92
compatibleHelm3VersionFunction · 0.85
getReleaseFunction · 0.85
prepareEnvSettingsFunction · 0.85
getHooksFunction · 0.85
checkOwnershipFunction · 0.85

Tested by

no test coverage detected