Function to set labels.

This commit is contained in:
Jeffrey Regan
2020-03-26 17:19:30 -07:00
committed by jregan
parent 85e9127071
commit 2be48ca96a
11 changed files with 371 additions and 189 deletions

View File

@@ -21,19 +21,14 @@ type Filter struct {
var _ kio.Filter = Filter{}
func (ns Filter) Filter(nodes []*yaml.RNode) ([]*yaml.RNode, error) {
for i := range nodes {
if err := ns.run(nodes[i]); err != nil {
return nil, err
}
}
return nodes, nil
return kio.FilterAll(yaml.FilterFunc(ns.run)).Filter(nodes)
}
// Run runs the filter on a single node rather than a slice
func (ns Filter) run(node *yaml.RNode) error {
func (ns Filter) run(node *yaml.RNode) (*yaml.RNode, error) {
// hacks for hardcoded types -- :(
if err := ns.hacks(node); err != nil {
return err
return nil, err
}
// Remove the fieldspecs that are for hardcoded fields. The fieldspecs
@@ -45,11 +40,12 @@ func (ns Filter) run(node *yaml.RNode) error {
ns.FsSlice = ns.removeFieldSpecsForHacks(ns.FsSlice)
// transformations based on data -- :)
return node.PipeE(fsslice.Filter{
err := node.PipeE(fsslice.Filter{
FsSlice: ns.FsSlice,
SetValue: fsslice.SetScalar(ns.Namespace),
CreateKind: yaml.ScalarNode, // Namespace is a ScalarNode
})
return node, err
}
// hacks applies the namespace transforms that are hardcoded rather

View File

@@ -4,15 +4,14 @@
package namespace_test
import (
"bytes"
"strings"
"testing"
"github.com/stretchr/testify/assert"
"sigs.k8s.io/kustomize/api/filters/namespace"
"sigs.k8s.io/kustomize/api/internal/plugins/builtinconfig"
filtertest_test "sigs.k8s.io/kustomize/api/testutils/filtertest"
"sigs.k8s.io/kustomize/api/types"
"sigs.k8s.io/kustomize/kyaml/kio"
)
var tests = []TestCase{
@@ -270,27 +269,10 @@ func TestNamespace_Filter(t *testing.T) {
test := tests[i]
t.Run(test.name, func(t *testing.T) {
test.filter.FsSlice = append(config.NameSpace, test.fsslice...)
out := &bytes.Buffer{}
rw := &kio.ByteReadWriter{
Reader: bytes.NewBufferString(test.input),
Writer: out,
}
// run the filter
err := kio.Pipeline{
Inputs: []kio.Reader{rw},
Filters: []kio.Filter{test.filter},
Outputs: []kio.Writer{rw},
}.Execute()
if !assert.NoError(t, err) {
t.FailNow()
}
// check results
if !assert.Equal(t,
strings.TrimSpace(test.expected),
strings.TrimSpace(out.String())) {
strings.TrimSpace(
filtertest_test.RunFilter(t, test.input, test.filter))) {
t.FailNow()
}
})