From bf97d23a0013fe95f5f3bf38fc267a81b72ee169 Mon Sep 17 00:00:00 2001 From: Sam Dowell Date: Thu, 13 Jan 2022 00:30:37 +0000 Subject: [PATCH] refactor: use SetScalar in imagetag filter This change refactors imagetag to reuse the abstraction provided by filtersutil. This change is intended to make imagetag more consistent with other filters by using the same layer of abstraction (filtersutil), and to prepare for upcoming changes which are planned to be implemented at the filtersutil layer. --- api/filters/imagetag/imagetag.go | 13 +++---------- api/filters/imagetag/updater.go | 16 ++++++++++++---- 2 files changed, 15 insertions(+), 14 deletions(-) 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 }