Skip to content

Commit

Permalink
Fix wrong deletion message on flux diff
Browse files Browse the repository at this point in the history
If implemented, when an error happens when dry-running an object, we
return early. This match pkg ssa implementation

Signed-off-by: Soule BA <[email protected]>
  • Loading branch information
souleb committed Feb 6, 2022
1 parent 4b4e6b1 commit f30a8ba
Showing 1 changed file with 6 additions and 7 deletions.
13 changes: 6 additions & 7 deletions internal/build/diff.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import (
"github.com/gonvenience/bunt"
"github.com/gonvenience/ytbx"
"github.com/google/go-cmp/cmp"
"github.com/hashicorp/go-multierror"
"github.com/homeport/dyff/pkg/dyff"
"github.com/lucasb-eyer/go-colorful"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
Expand Down Expand Up @@ -76,6 +77,7 @@ func (b *Builder) Diff() (string, bool, error) {
return "", createdOrDrifted, err
}

var diffErrs error
// create an inventory of objects to be reconciled
newInventory := newInventory()
for _, obj := range objects {
Expand All @@ -86,11 +88,8 @@ func (b *Builder) Diff() (string, bool, error) {
}
change, liveObject, mergedObject, err := resourceManager.Diff(ctx, obj, diffOptions)
if err != nil {
if b.kustomization.Spec.Force && ssa.IsImmutableError(err) {
output.WriteString(writeString(fmt.Sprintf("► %s created\n", obj.GetName()), bunt.Green))
} else {
output.WriteString(writeString(fmt.Sprintf("✗ %v\n", err), bunt.Red))
}
// gather errors and continue, as we want to see all the diffs
diffErrs = multierror.Append(diffErrs, err)
continue
}

Expand Down Expand Up @@ -124,7 +123,7 @@ func (b *Builder) Diff() (string, bool, error) {
addObjectsToInventory(newInventory, change)
}

if b.kustomization.Spec.Prune {
if b.kustomization.Spec.Prune && diffErrs == nil {
oldStatus := b.kustomization.Status.DeepCopy()
if oldStatus.Inventory != nil {
diffObjects, err := diffInventory(oldStatus.Inventory, newInventory)
Expand All @@ -137,7 +136,7 @@ func (b *Builder) Diff() (string, bool, error) {
}
}

return output.String(), createdOrDrifted, nil
return output.String(), createdOrDrifted, diffErrs
}

func writeYamls(liveObject, mergedObject *unstructured.Unstructured) (string, string, string, error) {
Expand Down

0 comments on commit f30a8ba

Please sign in to comment.