diff --git a/cmd/commands.go b/cmd/commands.go index 03aa64d..430f13c 100644 --- a/cmd/commands.go +++ b/cmd/commands.go @@ -65,7 +65,9 @@ func getRunCommand() *cobra.Command { } } - return drifts.GetDrift() + drifts.GetDrift() + + return nil }, } @@ -98,7 +100,9 @@ Do note that this is expensive operation since multiple kubectl command would be drifts.All = true - return drifts.GetAllDrift() + drifts.GetAllDrift() + + return nil }, } diff --git a/pkg/disk.go b/pkg/disk.go index 4e6c7d1..5dd0806 100644 --- a/pkg/disk.go +++ b/pkg/disk.go @@ -53,7 +53,7 @@ func (drift *Drift) renderToDisk(manifests []string, chartName, releaseName, rel drift.log.Debugf("generating manifest '%s'", template.Resource) - manifestPath := filepath.Join(templatePath, fmt.Sprintf("%s.%s.yaml", template.Resource, template.Kind)) + manifestPath := filepath.Join(templatePath, fmt.Sprintf("%s.%s.%s.yaml", template.Resource, template.Kind, releaseName)) if err = os.WriteFile(manifestPath, []byte(manifest), manifestFilePermission); err != nil { return deviation.DriftedRelease{}, err } diff --git a/pkg/drift.go b/pkg/drift.go index 5d77586..c3a5514 100644 --- a/pkg/drift.go +++ b/pkg/drift.go @@ -67,7 +67,7 @@ func (drift *Drift) SetWriter(writer io.Writer) { } // GetDrift gets all the drifts that the given release/chart has. -func (drift *Drift) GetDrift() error { +func (drift *Drift) GetDrift() { startTime := time.Now() if err := drift.cleanManifests(true); err != nil { @@ -79,19 +79,19 @@ func (drift *Drift) GetDrift() error { drift.setNameSpace() if err := drift.setExternalDiff(); err != nil { - return err + drift.log.Fatalf("%v", err) } chart, err := drift.getChartManifests() if err != nil { - return err + drift.log.Fatalf("%v", err) } kubeKindTemplates := drift.getTemplates(chart) deviations, err := drift.renderToDisk(kubeKindTemplates, drift.chart, drift.release, drift.namespace) if err != nil { - return err + drift.log.Fatalf("%v", err) } defer func(drift *Drift) { @@ -104,20 +104,20 @@ func (drift *Drift) GetDrift() error { out, err := drift.Diff(deviations) if err != nil { - return err + drift.log.Fatalf("%v", err) } if len(out.Deviations) == 0 { drift.log.Info("no drifts were identified") + } else { + driftedReleases = append(driftedReleases, out) - return nil - } - - driftedReleases = append(driftedReleases, out) + drift.timeSpent = time.Since(startTime).Seconds() - drift.timeSpent = time.Since(startTime).Seconds() - - return drift.render(driftedReleases) + if err = drift.render(driftedReleases); err != nil { + drift.log.Fatalf("%v", err) + } + } } func (drift *Drift) getChartManifests() ([]byte, error) { diff --git a/pkg/drift_all.go b/pkg/drift_all.go index 006f74e..a6b472a 100644 --- a/pkg/drift_all.go +++ b/pkg/drift_all.go @@ -11,7 +11,7 @@ import ( helmRelease "helm.sh/helm/v3/pkg/release" ) -func (drift *Drift) GetAllDrift() error { +func (drift *Drift) GetAllDrift() { startTime := time.Now() if err := drift.cleanManifests(true); err != nil { @@ -23,12 +23,12 @@ func (drift *Drift) GetAllDrift() error { drift.setNameSpace() if err := drift.setExternalDiff(); err != nil { - return err + drift.log.Fatalf("%v", err) } releases, err := drift.getChartsFromReleases() if err != nil { - return err + drift.log.Fatalf("%v", err) } defer func(drift *Drift) { @@ -86,10 +86,12 @@ func (drift *Drift) GetAllDrift() error { } if len(driftErrors) != 0 { - return &errors.DriftError{Message: fmt.Sprintf("identifying drifts errored with: %s", strings.Join(driftErrors, "\n"))} + drift.log.Fatalf("%v", &errors.DriftError{Message: fmt.Sprintf("identifying drifts errored with: %s", strings.Join(driftErrors, "\n"))}) } drift.timeSpent = time.Since(startTime).Seconds() - return drift.render(driftedReleases) + if err = drift.render(driftedReleases); err != nil { + drift.log.Fatalf("%v", err) + } } diff --git a/pkg/errors/errors.go b/pkg/errors/errors.go index b6743a0..be37991 100644 --- a/pkg/errors/errors.go +++ b/pkg/errors/errors.go @@ -57,10 +57,11 @@ func (e *NotAllError) Error() string { var diffs []deviation.Deviation for _, resource := range e.Manifests { + rs := resource if !funk.Contains(e.ResourceFromDeviations, func(dvn deviation.Deviation) bool { - return (dvn.Resource == resource.Resource) && (dvn.Kind == resource.Kind) + return (dvn.Resource == rs.Resource) && (dvn.Kind == rs.Kind) }) { - diffs = append(diffs, resource) + diffs = append(diffs, rs) } }