mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-14 10:30:59 +00:00
Merge pull request #3992 from mortent/AllowErrorForResourceHandler
Allow the Handle function of the ResourceHandler interface to return an error
This commit is contained in:
@@ -57,7 +57,7 @@ const (
|
|||||||
// what should be the result in dest if a resource has been deleted from
|
// what should be the result in dest if a resource has been deleted from
|
||||||
// upstream.
|
// upstream.
|
||||||
type ResourceHandler interface {
|
type ResourceHandler interface {
|
||||||
Handle(original, updated, dest *yaml.RNode) ResourceMergeStrategy
|
Handle(original, updated, dest *yaml.RNode) (ResourceMergeStrategy, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Merge3 performs a 3-way merge on the original, updated, and destination packages.
|
// Merge3 performs a 3-way merge on the original, updated, and destination packages.
|
||||||
@@ -125,7 +125,10 @@ func (m Merge3) Filter(nodes []*yaml.RNode) ([]*yaml.RNode, error) {
|
|||||||
var output []*yaml.RNode
|
var output []*yaml.RNode
|
||||||
for i := range tl.list {
|
for i := range tl.list {
|
||||||
t := tl.list[i]
|
t := tl.list[i]
|
||||||
strategy := handler.Handle(t.original, t.updated, t.dest)
|
strategy, err := handler.Handle(t.original, t.updated, t.dest)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
switch strategy {
|
switch strategy {
|
||||||
case Merge:
|
case Merge:
|
||||||
node, err := t.merge()
|
node, err := t.merge()
|
||||||
@@ -287,22 +290,22 @@ func duplicateError(source, filePath string) error {
|
|||||||
// * Otherwise merge.
|
// * Otherwise merge.
|
||||||
type DefaultResourceHandler struct{}
|
type DefaultResourceHandler struct{}
|
||||||
|
|
||||||
func (*DefaultResourceHandler) Handle(original, updated, dest *yaml.RNode) ResourceMergeStrategy {
|
func (*DefaultResourceHandler) Handle(original, updated, dest *yaml.RNode) (ResourceMergeStrategy, error) {
|
||||||
switch {
|
switch {
|
||||||
case original == nil && updated == nil && dest != nil:
|
case original == nil && updated == nil && dest != nil:
|
||||||
// added locally -- keep dest
|
// added locally -- keep dest
|
||||||
return KeepDest
|
return KeepDest, nil
|
||||||
case updated != nil && dest == nil:
|
case updated != nil && dest == nil:
|
||||||
// added in the update -- add update
|
// added in the update -- add update
|
||||||
return KeepUpdated
|
return KeepUpdated, nil
|
||||||
case original != nil && updated == nil:
|
case original != nil && updated == nil:
|
||||||
// deleted in the update
|
// deleted in the update
|
||||||
return Skip
|
return Skip, nil
|
||||||
case original != nil && dest == nil:
|
case original != nil && dest == nil:
|
||||||
// deleted locally
|
// deleted locally
|
||||||
return Skip
|
return Skip, nil
|
||||||
default:
|
default:
|
||||||
// dest and updated are non-nil -- merge them
|
// dest and updated are non-nil -- merge them
|
||||||
return Merge
|
return Merge, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user