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.
This commit is contained in:
Sam Dowell
2022-01-13 00:30:37 +00:00
parent 3687250ca2
commit bf97d23a00
2 changed files with 15 additions and 14 deletions

View File

@@ -4,7 +4,6 @@
package imagetag package imagetag
import ( import (
"sigs.k8s.io/kustomize/api/filters/filtersutil"
"sigs.k8s.io/kustomize/api/filters/fsslice" "sigs.k8s.io/kustomize/api/filters/fsslice"
"sigs.k8s.io/kustomize/api/types" "sigs.k8s.io/kustomize/api/types"
"sigs.k8s.io/kustomize/kyaml/kio" "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{ if err := node.PipeE(fsslice.Filter{
FsSlice: f.FsSlice, FsSlice: f.FsSlice,
SetValue: updateImageTagFn(f.ImageTag), SetValue: imageTagUpdater{
ImageTag: f.ImageTag,
}.SetImageValue,
}); err != nil { }); err != nil {
return nil, err return nil, err
} }
@@ -59,11 +60,3 @@ func (f Filter) isOnDenyList(node *yaml.RNode) bool {
// https://github.com/kubernetes-sigs/kustomize/issues/890 // https://github.com/kubernetes-sigs/kustomize/issues/890
return meta.Kind == `CustomResourceDefinition` return meta.Kind == `CustomResourceDefinition`
} }
func updateImageTagFn(imageTag types.Image) filtersutil.SetFn {
return func(node *yaml.RNode) error {
return node.PipeE(imageTagUpdater{
ImageTag: imageTag,
})
}
}

View File

@@ -4,6 +4,7 @@
package imagetag package imagetag
import ( import (
"sigs.k8s.io/kustomize/api/filters/filtersutil"
"sigs.k8s.io/kustomize/api/image" "sigs.k8s.io/kustomize/api/image"
"sigs.k8s.io/kustomize/api/types" "sigs.k8s.io/kustomize/api/types"
"sigs.k8s.io/kustomize/kyaml/yaml" "sigs.k8s.io/kustomize/kyaml/yaml"
@@ -17,15 +18,15 @@ type imageTagUpdater struct {
ImageTag types.Image `yaml:"imageTag,omitempty"` 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 { if err := yaml.ErrorIfInvalid(rn, yaml.ScalarNode); err != nil {
return nil, err return err
} }
value := rn.YNode().Value value := rn.YNode().Value
if !image.IsImageMatched(value, u.ImageTag.Name) { if !image.IsImageMatched(value, u.ImageTag.Name) {
return rn, nil return nil
} }
name, tag := image.Split(value) name, tag := image.Split(value)
@@ -39,5 +40,12 @@ func (u imageTagUpdater) Filter(rn *yaml.RNode) (*yaml.RNode, error) {
tag = "@" + u.ImageTag.Digest 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
} }