diff --git a/api/filters/imagetag/imagetag.go b/api/filters/imagetag/imagetag.go index 077031754..699fdc18d 100644 --- a/api/filters/imagetag/imagetag.go +++ b/api/filters/imagetag/imagetag.go @@ -4,7 +4,6 @@ package imagetag import ( - "sigs.k8s.io/kustomize/api/filters/filtersutil" "sigs.k8s.io/kustomize/api/filters/fsslice" "sigs.k8s.io/kustomize/api/types" "sigs.k8s.io/kustomize/kyaml/kio" @@ -41,7 +40,9 @@ func (f Filter) filter(node *yaml.RNode) (*yaml.RNode, error) { } if err := node.PipeE(fsslice.Filter{ FsSlice: f.FsSlice, - SetValue: updateImageTagFn(f.ImageTag), + SetValue: imageTagUpdater{ + ImageTag: f.ImageTag, + }.SetImageValue, }); err != nil { return nil, err } @@ -59,11 +60,3 @@ func (f Filter) isOnDenyList(node *yaml.RNode) bool { // https://github.com/kubernetes-sigs/kustomize/issues/890 return meta.Kind == `CustomResourceDefinition` } - -func updateImageTagFn(imageTag types.Image) filtersutil.SetFn { - return func(node *yaml.RNode) error { - return node.PipeE(imageTagUpdater{ - ImageTag: imageTag, - }) - } -} diff --git a/api/filters/imagetag/updater.go b/api/filters/imagetag/updater.go index 1c3637cde..af8de4393 100644 --- a/api/filters/imagetag/updater.go +++ b/api/filters/imagetag/updater.go @@ -4,6 +4,7 @@ package imagetag import ( + "sigs.k8s.io/kustomize/api/filters/filtersutil" "sigs.k8s.io/kustomize/api/image" "sigs.k8s.io/kustomize/api/types" "sigs.k8s.io/kustomize/kyaml/yaml" @@ -17,15 +18,15 @@ type imageTagUpdater struct { ImageTag types.Image `yaml:"imageTag,omitempty"` } -func (u imageTagUpdater) Filter(rn *yaml.RNode) (*yaml.RNode, error) { +func (u imageTagUpdater) SetImageValue(rn *yaml.RNode) error { if err := yaml.ErrorIfInvalid(rn, yaml.ScalarNode); err != nil { - return nil, err + return err } value := rn.YNode().Value if !image.IsImageMatched(value, u.ImageTag.Name) { - return rn, nil + return nil } name, tag := image.Split(value) @@ -39,5 +40,12 @@ func (u imageTagUpdater) Filter(rn *yaml.RNode) (*yaml.RNode, error) { tag = "@" + u.ImageTag.Digest } - return rn.Pipe(yaml.FieldSetter{StringValue: name + tag}) + return filtersutil.SetScalar(name + tag)(rn) +} + +func (u imageTagUpdater) Filter(rn *yaml.RNode) (*yaml.RNode, error) { + if err := u.SetImageValue(rn); err != nil { + return nil, err + } + return rn, nil }