...
Package fsslice
Package fsslice contains a yaml.Filter to modify a resource if
it matches one or more FieldSpec entries.
Filter ranges over an FsSlice to modify fields on a single object.
An FsSlice is a range of FieldSpecs. A FieldSpec is a GVK plus a path.
type Filter struct {
FsSlice types.FsSlice `yaml:"fsSlice"`
SetValue filtersutil.SetFn
CreateKind yaml.Kind
CreateTag string
}
▾ Example
Code:
in := &kio.ByteReader{
Reader: bytes.NewBufferString(`
apiVersion: example.com/v1
kind: Foo
metadata:
name: instance
---
apiVersion: example.com/v1
kind: Bar
metadata:
name: instance
`),
}
fltr := fsslice.Filter{
CreateKind: yaml.ScalarNode,
SetValue: filtersutil.SetScalar("green"),
FsSlice: []types.FieldSpec{
{Path: "a/b", CreateIfNotPresent: true},
},
}
err := kio.Pipeline{
Inputs: []kio.Reader{in},
Filters: []kio.Filter{kio.FilterAll(fltr)},
Outputs: []kio.Writer{kio.ByteWriter{Writer: os.Stdout}},
}.Execute()
if err != nil {
log.Fatal(err)
}
Output:
apiVersion: example.com/v1
kind: Foo
metadata:
name: instance
a:
b: green
---
apiVersion: example.com/v1
kind: Bar
metadata:
name: instance
a:
b: green
func (Filter) Filter
¶
func (fltr Filter) Filter(obj *yaml.RNode) (*yaml.RNode, error)