Fix wrong deletion message on flux diff
If implemented, when an error happens when dry-running an object, we return early. This match pkg ssa implementation Signed-off-by: Soule BA <soule@weave.works>
This commit is contained in:
2
go.mod
2
go.mod
@@ -26,7 +26,7 @@ require (
|
|||||||
github.com/gonvenience/ytbx v1.4.2
|
github.com/gonvenience/ytbx v1.4.2
|
||||||
github.com/google/go-cmp v0.5.6
|
github.com/google/go-cmp v0.5.6
|
||||||
github.com/google/go-containerregistry v0.2.0
|
github.com/google/go-containerregistry v0.2.0
|
||||||
github.com/hashicorp/go-multierror v1.1.1 // indirect
|
github.com/hashicorp/go-multierror v1.1.1
|
||||||
github.com/hashicorp/go-retryablehttp v0.7.0 // indirect
|
github.com/hashicorp/go-retryablehttp v0.7.0 // indirect
|
||||||
github.com/homeport/dyff v1.4.6
|
github.com/homeport/dyff v1.4.6
|
||||||
github.com/lucasb-eyer/go-colorful v1.2.0
|
github.com/lucasb-eyer/go-colorful v1.2.0
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ import (
|
|||||||
"github.com/gonvenience/bunt"
|
"github.com/gonvenience/bunt"
|
||||||
"github.com/gonvenience/ytbx"
|
"github.com/gonvenience/ytbx"
|
||||||
"github.com/google/go-cmp/cmp"
|
"github.com/google/go-cmp/cmp"
|
||||||
|
"github.com/hashicorp/go-multierror"
|
||||||
"github.com/homeport/dyff/pkg/dyff"
|
"github.com/homeport/dyff/pkg/dyff"
|
||||||
"github.com/lucasb-eyer/go-colorful"
|
"github.com/lucasb-eyer/go-colorful"
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||||
@@ -76,6 +77,7 @@ func (b *Builder) Diff() (string, bool, error) {
|
|||||||
return "", createdOrDrifted, err
|
return "", createdOrDrifted, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var diffErrs error
|
||||||
// create an inventory of objects to be reconciled
|
// create an inventory of objects to be reconciled
|
||||||
newInventory := newInventory()
|
newInventory := newInventory()
|
||||||
for _, obj := range objects {
|
for _, obj := range objects {
|
||||||
@@ -86,11 +88,8 @@ func (b *Builder) Diff() (string, bool, error) {
|
|||||||
}
|
}
|
||||||
change, liveObject, mergedObject, err := resourceManager.Diff(ctx, obj, diffOptions)
|
change, liveObject, mergedObject, err := resourceManager.Diff(ctx, obj, diffOptions)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if b.kustomization.Spec.Force && ssa.IsImmutableError(err) {
|
// gather errors and continue, as we want to see all the diffs
|
||||||
output.WriteString(writeString(fmt.Sprintf("► %s created\n", obj.GetName()), bunt.Green))
|
diffErrs = multierror.Append(diffErrs, err)
|
||||||
} else {
|
|
||||||
output.WriteString(writeString(fmt.Sprintf("✗ %v\n", err), bunt.Red))
|
|
||||||
}
|
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -124,7 +123,7 @@ func (b *Builder) Diff() (string, bool, error) {
|
|||||||
addObjectsToInventory(newInventory, change)
|
addObjectsToInventory(newInventory, change)
|
||||||
}
|
}
|
||||||
|
|
||||||
if b.kustomization.Spec.Prune {
|
if b.kustomization.Spec.Prune && diffErrs == nil {
|
||||||
oldStatus := b.kustomization.Status.DeepCopy()
|
oldStatus := b.kustomization.Status.DeepCopy()
|
||||||
if oldStatus.Inventory != nil {
|
if oldStatus.Inventory != nil {
|
||||||
diffObjects, err := diffInventory(oldStatus.Inventory, newInventory)
|
diffObjects, err := diffInventory(oldStatus.Inventory, newInventory)
|
||||||
@@ -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) {
|
func writeYamls(liveObject, mergedObject *unstructured.Unstructured) (string, string, string, error) {
|
||||||
|
|||||||
Reference in New Issue
Block a user