Move FieldSpec to API.

This commit is contained in:
jregan
2019-10-20 06:38:05 -07:00
parent c28b82510c
commit 5de000ee3d
29 changed files with 141 additions and 152 deletions

View File

@@ -1,25 +1,13 @@
/*
Copyright 2018 The Kubernetes Authors.
// Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package config
package types
import (
"fmt"
"sigs.k8s.io/kustomize/v3/api/resid"
"strings"
"sigs.k8s.io/kustomize/v3/api/resid"
)
// FieldSpec completely specifies a kustomizable field in
@@ -89,22 +77,22 @@ func (fs FieldSpec) PathSlice() []string {
return result
}
type fsSlice []FieldSpec
type FsSlice []FieldSpec
func (s fsSlice) Len() int { return len(s) }
func (s fsSlice) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
func (s fsSlice) Less(i, j int) bool {
func (s FsSlice) Len() int { return len(s) }
func (s FsSlice) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
func (s FsSlice) Less(i, j int) bool {
return s[i].Gvk.IsLessThan(s[j].Gvk)
}
// mergeAll merges the argument into this, returning the result.
// MergeAll merges the argument into this, returning the result.
// Items already present are ignored.
// Items that conflict (primary key matches, but remain data differs)
// result in an error.
func (s fsSlice) mergeAll(incoming fsSlice) (result fsSlice, err error) {
func (s FsSlice) MergeAll(incoming FsSlice) (result FsSlice, err error) {
result = s
for _, x := range incoming {
result, err = result.mergeOne(x)
result, err = result.MergeOne(x)
if err != nil {
return nil, err
}
@@ -112,11 +100,11 @@ func (s fsSlice) mergeAll(incoming fsSlice) (result fsSlice, err error) {
return result, nil
}
// mergeOne merges the argument into this, returning the result.
// MergeOne merges the argument into this, returning the result.
// If the item's primary key is already present, and there are no
// conflicts, it is ignored (we don't want duplicates).
// If there is a conflict, the merge fails.
func (s fsSlice) mergeOne(x FieldSpec) (fsSlice, error) {
func (s FsSlice) MergeOne(x FieldSpec) (FsSlice, error) {
i := s.index(x)
if i > -1 {
// It's already there.
@@ -128,7 +116,7 @@ func (s fsSlice) mergeOne(x FieldSpec) (fsSlice, error) {
return append(s, x), nil
}
func (s fsSlice) index(fs FieldSpec) int {
func (s FsSlice) index(fs FieldSpec) int {
for i, x := range s {
if x.effectivelyEquals(fs) {
return i

View File

@@ -1,7 +1,7 @@
// Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0
package config
package types
import (
"fmt"
@@ -38,14 +38,14 @@ func TestPathSlice(t *testing.T) {
var mergeTests = []struct {
name string
original fsSlice
incoming fsSlice
original FsSlice
incoming FsSlice
err error
result fsSlice
result FsSlice
}{
{
"normal",
fsSlice{
FsSlice{
{
Path: "whatever",
Gvk: resid.Gvk{Group: "apple"},
@@ -57,7 +57,7 @@ var mergeTests = []struct {
CreateIfNotPresent: false,
},
},
fsSlice{
FsSlice{
{
Path: "home",
Gvk: resid.Gvk{Group: "beans"},
@@ -65,7 +65,7 @@ var mergeTests = []struct {
},
},
nil,
fsSlice{
FsSlice{
{
Path: "whatever",
Gvk: resid.Gvk{Group: "apple"},
@@ -85,7 +85,7 @@ var mergeTests = []struct {
},
{
"ignore copy",
fsSlice{
FsSlice{
{
Path: "whatever",
Gvk: resid.Gvk{Group: "apple"},
@@ -97,7 +97,7 @@ var mergeTests = []struct {
CreateIfNotPresent: false,
},
},
fsSlice{
FsSlice{
{
Path: "whatever",
Gvk: resid.Gvk{Group: "apple"},
@@ -105,7 +105,7 @@ var mergeTests = []struct {
},
},
nil,
fsSlice{
FsSlice{
{
Path: "whatever",
Gvk: resid.Gvk{Group: "apple"},
@@ -120,7 +120,7 @@ var mergeTests = []struct {
},
{
"error on conflict",
fsSlice{
FsSlice{
{
Path: "whatever",
Gvk: resid.Gvk{Group: "apple"},
@@ -132,7 +132,7 @@ var mergeTests = []struct {
CreateIfNotPresent: false,
},
},
fsSlice{
FsSlice{
{
Path: "whatever",
Gvk: resid.Gvk{Group: "apple"},
@@ -140,13 +140,13 @@ var mergeTests = []struct {
},
},
fmt.Errorf("hey"),
fsSlice{},
FsSlice{},
},
}
func TestFsSlice_MergeAll(t *testing.T) {
for _, item := range mergeTests {
result, err := item.original.mergeAll(item.incoming)
result, err := item.original.MergeAll(item.incoming)
if item.err == nil {
if err != nil {
t.Fatalf("test %s: unexpected err %v", item.name, err)

View File

@@ -1,13 +1,14 @@
function showDeps {
echo "==== $1 =================================="
echo "==== begin $1 =================================="
find $1 -name "*.go" |\
xargs grep sigs.k8s.io/kustomize/v3 |\
xargs grep \"sigs.k8s.io/kustomize/v3 |\
grep -v "/api/" |\
sed 's|"sigs.k8s.io/kustomize/v3/||' |\
awk '{ printf "%40s %s\n", $2, $1 }' |\
sed 's|" \./| |' |\
sed 's|:$||' |\
sort | uniq
echo "==== $1 =================================="
echo "==== end $1 =================================="
}

View File

@@ -126,7 +126,7 @@ var transformerConfigurators = map[plugins.BuiltinPluginType]func(
result []resmap.Transformer, err error) {
var c struct {
types.ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
FieldSpecs []config.FieldSpec
FieldSpecs []types.FieldSpec
}
c.Namespace = kt.kustomization.Namespace
c.FieldSpecs = tc.NameSpace
@@ -208,7 +208,7 @@ var transformerConfigurators = map[plugins.BuiltinPluginType]func(
result []resmap.Transformer, err error) {
var c struct {
Labels map[string]string
FieldSpecs []config.FieldSpec
FieldSpecs []types.FieldSpec
}
c.Labels = kt.kustomization.CommonLabels
c.FieldSpecs = tc.CommonLabels
@@ -225,7 +225,7 @@ var transformerConfigurators = map[plugins.BuiltinPluginType]func(
result []resmap.Transformer, err error) {
var c struct {
Annotations map[string]string
FieldSpecs []config.FieldSpec
FieldSpecs []types.FieldSpec
}
c.Annotations = kt.kustomization.CommonAnnotations
c.FieldSpecs = tc.CommonAnnotations
@@ -243,7 +243,7 @@ var transformerConfigurators = map[plugins.BuiltinPluginType]func(
var c struct {
Prefix string
Suffix string
FieldSpecs []config.FieldSpec
FieldSpecs []types.FieldSpec
}
c.Prefix = kt.kustomization.NamePrefix
c.Suffix = kt.kustomization.NameSuffix
@@ -261,7 +261,7 @@ var transformerConfigurators = map[plugins.BuiltinPluginType]func(
result []resmap.Transformer, err error) {
var c struct {
ImageTag types.Image
FieldSpecs []config.FieldSpec
FieldSpecs []types.FieldSpec
}
for _, args := range kt.kustomization.Images {
c.ImageTag = args
@@ -280,7 +280,7 @@ var transformerConfigurators = map[plugins.BuiltinPluginType]func(
result []resmap.Transformer, err error) {
var c struct {
Replica types.Replica
FieldSpecs []config.FieldSpec
FieldSpecs []types.FieldSpec
}
for _, args := range kt.kustomization.Replicas {
c.Replica = args

View File

@@ -6,6 +6,7 @@ package config
import (
"reflect"
"sigs.k8s.io/kustomize/v3/api/resid"
"sigs.k8s.io/kustomize/v3/api/types"
"testing"
"sigs.k8s.io/kustomize/v3/internal/loadertest"
@@ -29,7 +30,7 @@ namePrefix:
t.Fatalf("unexpected error: %v", err)
}
expected := &TransformerConfig{
NamePrefix: []FieldSpec{
NamePrefix: []types.FieldSpec{
{
Gvk: resid.Gvk{Kind: "SomeKind"},
Path: "nameprefix/path",

View File

@@ -19,6 +19,7 @@ package config
import (
"encoding/json"
"sigs.k8s.io/kustomize/v3/api/resid"
"sigs.k8s.io/kustomize/v3/api/types"
"strings"
"github.com/go-openapi/spec"
@@ -175,7 +176,7 @@ func loadCrdIntoConfig(
err = theConfig.AddNamereferenceFieldSpec(
NameBackReferences{
Gvk: resid.Gvk{Kind: kind, Version: version},
FieldSpecs: []FieldSpec{
FieldSpecs: []types.FieldSpec{
makeFs(theGvk, append(path, propName, nameKey))},
})
if err != nil {
@@ -192,8 +193,8 @@ func loadCrdIntoConfig(
return nil
}
func makeFs(in resid.Gvk, path []string) FieldSpec {
return FieldSpec{
func makeFs(in resid.Gvk, path []string) types.FieldSpec {
return types.FieldSpec{
CreateIfNotPresent: false,
Gvk: in,
Path: strings.Join(path, "/"),

View File

@@ -19,6 +19,7 @@ package config
import (
"reflect"
"sigs.k8s.io/kustomize/v3/api/resid"
"sigs.k8s.io/kustomize/v3/api/types"
"testing"
"sigs.k8s.io/kustomize/v3/internal/loadertest"
@@ -158,7 +159,7 @@ func TestLoadCRDs(t *testing.T) {
nbrs := []NameBackReferences{
{
Gvk: resid.Gvk{Kind: "Secret", Version: "v1"},
FieldSpecs: []FieldSpec{
FieldSpecs: []types.FieldSpec{
{
CreateIfNotPresent: false,
Gvk: resid.Gvk{Kind: "MyKind"},
@@ -168,7 +169,7 @@ func TestLoadCRDs(t *testing.T) {
},
{
Gvk: resid.Gvk{Kind: "Bee", Version: "v1beta1"},
FieldSpecs: []FieldSpec{
FieldSpecs: []types.FieldSpec{
{
CreateIfNotPresent: false,
Gvk: resid.Gvk{Kind: "MyKind"},

View File

@@ -18,6 +18,7 @@ package config
import (
"sigs.k8s.io/kustomize/v3/api/resid"
"sigs.k8s.io/kustomize/v3/api/types"
"strings"
)
@@ -51,7 +52,7 @@ import (
// }
type NameBackReferences struct {
resid.Gvk `json:",inline,omitempty" yaml:",inline,omitempty"`
FieldSpecs fsSlice `json:"FieldSpecs,omitempty" yaml:"FieldSpecs,omitempty"`
FieldSpecs types.FsSlice `json:"FieldSpecs,omitempty" yaml:"FieldSpecs,omitempty"`
}
func (n NameBackReferences) String() string {
@@ -88,7 +89,7 @@ func (s nbrSlice) mergeOne(other NameBackReferences) (nbrSlice, error) {
found := false
for _, c := range s {
if c.Gvk.Equals(other.Gvk) {
c.FieldSpecs, err = c.FieldSpecs.mergeAll(other.FieldSpecs)
c.FieldSpecs, err = c.FieldSpecs.MergeAll(other.FieldSpecs)
if err != nil {
return nil, err
}

View File

@@ -19,11 +19,12 @@ package config
import (
"reflect"
"sigs.k8s.io/kustomize/v3/api/resid"
"sigs.k8s.io/kustomize/v3/api/types"
"testing"
)
func TestMergeAll(t *testing.T) {
fsSlice1 := []FieldSpec{
fsSlice1 := []types.FieldSpec{
{
Gvk: resid.Gvk{
Kind: "Pod",
@@ -39,7 +40,7 @@ func TestMergeAll(t *testing.T) {
CreateIfNotPresent: false,
},
}
fsSlice2 := []FieldSpec{
fsSlice2 := []types.FieldSpec{
{
Gvk: resid.Gvk{
Kind: "Job",

View File

@@ -20,6 +20,7 @@ package config
import (
"log"
"sigs.k8s.io/kustomize/v3/api/types"
"sort"
"sigs.k8s.io/kustomize/v3/pkg/transformers/config/defaultconfig"
@@ -27,15 +28,15 @@ import (
// TransformerConfig holds the data needed to perform transformations.
type TransformerConfig struct {
NamePrefix fsSlice `json:"namePrefix,omitempty" yaml:"namePrefix,omitempty"`
NameSuffix fsSlice `json:"nameSuffix,omitempty" yaml:"nameSuffix,omitempty"`
NameSpace fsSlice `json:"namespace,omitempty" yaml:"namespace,omitempty"`
CommonLabels fsSlice `json:"commonLabels,omitempty" yaml:"commonLabels,omitempty"`
CommonAnnotations fsSlice `json:"commonAnnotations,omitempty" yaml:"commonAnnotations,omitempty"`
NameReference nbrSlice `json:"nameReference,omitempty" yaml:"nameReference,omitempty"`
VarReference fsSlice `json:"varReference,omitempty" yaml:"varReference,omitempty"`
Images fsSlice `json:"images,omitempty" yaml:"images,omitempty"`
Replicas fsSlice `json:"replicas,omitempty" yaml:"replicas,omitempty"`
NamePrefix types.FsSlice `json:"namePrefix,omitempty" yaml:"namePrefix,omitempty"`
NameSuffix types.FsSlice `json:"nameSuffix,omitempty" yaml:"nameSuffix,omitempty"`
NameSpace types.FsSlice `json:"namespace,omitempty" yaml:"namespace,omitempty"`
CommonLabels types.FsSlice `json:"commonLabels,omitempty" yaml:"commonLabels,omitempty"`
CommonAnnotations types.FsSlice `json:"commonAnnotations,omitempty" yaml:"commonAnnotations,omitempty"`
NameReference nbrSlice `json:"nameReference,omitempty" yaml:"nameReference,omitempty"`
VarReference types.FsSlice `json:"varReference,omitempty" yaml:"varReference,omitempty"`
Images types.FsSlice `json:"images,omitempty" yaml:"images,omitempty"`
Replicas types.FsSlice `json:"replicas,omitempty" yaml:"replicas,omitempty"`
}
// MakeEmptyConfig returns an empty TransformerConfig object
@@ -66,26 +67,26 @@ func (t *TransformerConfig) sortFields() {
}
// AddPrefixFieldSpec adds a FieldSpec to NamePrefix
func (t *TransformerConfig) AddPrefixFieldSpec(fs FieldSpec) (err error) {
t.NamePrefix, err = t.NamePrefix.mergeOne(fs)
func (t *TransformerConfig) AddPrefixFieldSpec(fs types.FieldSpec) (err error) {
t.NamePrefix, err = t.NamePrefix.MergeOne(fs)
return err
}
// AddSuffixFieldSpec adds a FieldSpec to NameSuffix
func (t *TransformerConfig) AddSuffixFieldSpec(fs FieldSpec) (err error) {
t.NameSuffix, err = t.NameSuffix.mergeOne(fs)
func (t *TransformerConfig) AddSuffixFieldSpec(fs types.FieldSpec) (err error) {
t.NameSuffix, err = t.NameSuffix.MergeOne(fs)
return err
}
// AddLabelFieldSpec adds a FieldSpec to CommonLabels
func (t *TransformerConfig) AddLabelFieldSpec(fs FieldSpec) (err error) {
t.CommonLabels, err = t.CommonLabels.mergeOne(fs)
func (t *TransformerConfig) AddLabelFieldSpec(fs types.FieldSpec) (err error) {
t.CommonLabels, err = t.CommonLabels.MergeOne(fs)
return err
}
// AddAnnotationFieldSpec adds a FieldSpec to CommonAnnotations
func (t *TransformerConfig) AddAnnotationFieldSpec(fs FieldSpec) (err error) {
t.CommonAnnotations, err = t.CommonAnnotations.mergeOne(fs)
func (t *TransformerConfig) AddAnnotationFieldSpec(fs types.FieldSpec) (err error) {
t.CommonAnnotations, err = t.CommonAnnotations.MergeOne(fs)
return err
}
@@ -104,28 +105,28 @@ func (t *TransformerConfig) Merge(input *TransformerConfig) (
return t, nil
}
merged = &TransformerConfig{}
merged.NamePrefix, err = t.NamePrefix.mergeAll(input.NamePrefix)
merged.NamePrefix, err = t.NamePrefix.MergeAll(input.NamePrefix)
if err != nil {
return nil, err
}
merged.NameSuffix, err = t.NameSuffix.mergeAll(input.NameSuffix)
merged.NameSuffix, err = t.NameSuffix.MergeAll(input.NameSuffix)
if err != nil {
return nil, err
}
merged.NameSpace, err = t.NameSpace.mergeAll(input.NameSpace)
merged.NameSpace, err = t.NameSpace.MergeAll(input.NameSpace)
if err != nil {
return nil, err
}
merged.CommonAnnotations, err = t.CommonAnnotations.mergeAll(
merged.CommonAnnotations, err = t.CommonAnnotations.MergeAll(
input.CommonAnnotations)
if err != nil {
return nil, err
}
merged.CommonLabels, err = t.CommonLabels.mergeAll(input.CommonLabels)
merged.CommonLabels, err = t.CommonLabels.MergeAll(input.CommonLabels)
if err != nil {
return nil, err
}
merged.VarReference, err = t.VarReference.mergeAll(input.VarReference)
merged.VarReference, err = t.VarReference.MergeAll(input.VarReference)
if err != nil {
return nil, err
}
@@ -133,11 +134,11 @@ func (t *TransformerConfig) Merge(input *TransformerConfig) (
if err != nil {
return nil, err
}
merged.Images, err = t.Images.mergeAll(input.Images)
merged.Images, err = t.Images.MergeAll(input.Images)
if err != nil {
return nil, err
}
merged.Replicas, err = t.Replicas.mergeAll(input.Replicas)
merged.Replicas, err = t.Replicas.MergeAll(input.Replicas)
if err != nil {
return nil, err
}

View File

@@ -18,6 +18,7 @@ package config
import (
"sigs.k8s.io/kustomize/v3/api/resid"
"sigs.k8s.io/kustomize/v3/api/types"
"testing"
"reflect"
@@ -30,7 +31,7 @@ func TestAddNamereferenceFieldSpec(t *testing.T) {
Gvk: resid.Gvk{
Kind: "KindA",
},
FieldSpecs: []FieldSpec{
FieldSpecs: []types.FieldSpec{
{
Gvk: resid.Gvk{
Kind: "KindB",
@@ -53,7 +54,7 @@ func TestAddNamereferenceFieldSpec(t *testing.T) {
func TestAddFieldSpecs(t *testing.T) {
cfg := &TransformerConfig{}
fieldSpec := FieldSpec{
fieldSpec := types.FieldSpec{
Gvk: resid.Gvk{Group: "GroupA", Kind: "KindB"},
Path: "path/to/a/field",
CreateIfNotPresent: true,
@@ -95,7 +96,7 @@ func TestMerge(t *testing.T) {
Gvk: resid.Gvk{
Kind: "KindA",
},
FieldSpecs: []FieldSpec{
FieldSpecs: []types.FieldSpec{
{
Gvk: resid.Gvk{
Kind: "KindB",
@@ -109,7 +110,7 @@ func TestMerge(t *testing.T) {
Gvk: resid.Gvk{
Kind: "KindA",
},
FieldSpecs: []FieldSpec{
FieldSpecs: []types.FieldSpec{
{
Gvk: resid.Gvk{
Kind: "KindC",
@@ -120,7 +121,7 @@ func TestMerge(t *testing.T) {
},
},
}
fieldSpecs := []FieldSpec{
fieldSpecs := []types.FieldSpec{
{
Gvk: resid.Gvk{Group: "GroupA", Kind: "KindB"},
Path: "path/to/a/field",

View File

@@ -19,34 +19,34 @@ package transformers
import (
"errors"
"fmt"
"sigs.k8s.io/kustomize/v3/api/types"
"sigs.k8s.io/kustomize/v3/pkg/resmap"
"sigs.k8s.io/kustomize/v3/pkg/transformers/config"
)
// mapTransformer applies a string->string map to fieldSpecs.
type mapTransformer struct {
m map[string]string
fieldSpecs []config.FieldSpec
fieldSpecs []types.FieldSpec
}
var _ resmap.Transformer = &mapTransformer{}
// NewLabelsMapTransformer constructs a mapTransformer.
func NewLabelsMapTransformer(
m map[string]string, fs []config.FieldSpec) (resmap.Transformer, error) {
m map[string]string, fs []types.FieldSpec) (resmap.Transformer, error) {
return NewMapTransformer(fs, m)
}
// NewAnnotationsMapTransformer construct a mapTransformer.
func NewAnnotationsMapTransformer(
m map[string]string, fs []config.FieldSpec) (resmap.Transformer, error) {
m map[string]string, fs []types.FieldSpec) (resmap.Transformer, error) {
return NewMapTransformer(fs, m)
}
// NewMapTransformer construct a mapTransformer.
func NewMapTransformer(
pc []config.FieldSpec, m map[string]string) (resmap.Transformer, error) {
pc []types.FieldSpec, m map[string]string) (resmap.Transformer, error) {
if m == nil {
return NewNoOpTransformer(), nil
}

View File

@@ -18,16 +18,16 @@ package transformers
import (
"fmt"
"sigs.k8s.io/kustomize/v3/api/types"
"sigs.k8s.io/kustomize/v3/pkg/expansion"
"sigs.k8s.io/kustomize/v3/pkg/resmap"
"sigs.k8s.io/kustomize/v3/pkg/transformers/config"
)
type RefVarTransformer struct {
varMap map[string]interface{}
replacementCounts map[string]int
fieldSpecs []config.FieldSpec
fieldSpecs []types.FieldSpec
mappingFunc func(string) interface{}
}
@@ -35,7 +35,7 @@ type RefVarTransformer struct {
// that replaces $(VAR) style variables with values.
// The fieldSpecs are the places to look for occurrences of $(VAR).
func NewRefVarTransformer(
varMap map[string]interface{}, fs []config.FieldSpec) *RefVarTransformer {
varMap map[string]interface{}, fs []types.FieldSpec) *RefVarTransformer {
return &RefVarTransformer{
varMap: varMap,
fieldSpecs: fs,

View File

@@ -6,17 +6,17 @@ package transformers
import (
"reflect"
"sigs.k8s.io/kustomize/v3/api/resid"
"sigs.k8s.io/kustomize/v3/api/types"
"testing"
"sigs.k8s.io/kustomize/v3/pkg/resmap"
"sigs.k8s.io/kustomize/v3/pkg/resmaptest"
"sigs.k8s.io/kustomize/v3/pkg/transformers/config"
)
func TestVarRef(t *testing.T) {
type given struct {
varMap map[string]interface{}
fs []config.FieldSpec
fs []types.FieldSpec
res resmap.ResMap
}
type expected struct {
@@ -37,7 +37,7 @@ func TestVarRef(t *testing.T) {
"BAZ": int64(5),
"BOO": true,
},
fs: []config.FieldSpec{
fs: []types.FieldSpec{
{Gvk: resid.Gvk{Version: "v1", Kind: "ConfigMap"}, Path: "data/map"},
{Gvk: resid.Gvk{Version: "v1", Kind: "ConfigMap"}, Path: "data/slice"},
{Gvk: resid.Gvk{Version: "v1", Kind: "ConfigMap"}, Path: "data/interface"},

View File

@@ -2,16 +2,16 @@
package builtin
import (
"sigs.k8s.io/kustomize/v3/api/types"
"sigs.k8s.io/kustomize/v3/pkg/resmap"
"sigs.k8s.io/kustomize/v3/pkg/transformers"
"sigs.k8s.io/kustomize/v3/pkg/transformers/config"
"sigs.k8s.io/yaml"
)
// Add the given annotations to the given field specifications.
type AnnotationsTransformerPlugin struct {
Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
FieldSpecs []config.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
FieldSpecs []types.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
}
func (p *AnnotationsTransformerPlugin) Config(

View File

@@ -9,15 +9,14 @@ import (
"sigs.k8s.io/kustomize/v3/pkg/resmap"
"sigs.k8s.io/kustomize/v3/pkg/transformers"
"sigs.k8s.io/kustomize/v3/pkg/transformers/config"
"sigs.k8s.io/yaml"
)
// Find matching image declarations and replace
// the name, tag and/or digest.
type ImageTagTransformerPlugin struct {
ImageTag types.Image `json:"imageTag,omitempty" yaml:"imageTag,omitempty"`
FieldSpecs []config.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
ImageTag types.Image `json:"imageTag,omitempty" yaml:"imageTag,omitempty"`
FieldSpecs []types.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
}
func (p *ImageTagTransformerPlugin) Config(

View File

@@ -2,16 +2,16 @@
package builtin
import (
"sigs.k8s.io/kustomize/v3/api/types"
"sigs.k8s.io/kustomize/v3/pkg/resmap"
"sigs.k8s.io/kustomize/v3/pkg/transformers"
"sigs.k8s.io/kustomize/v3/pkg/transformers/config"
"sigs.k8s.io/yaml"
)
// Add the given labels to the given field specifications.
type LabelTransformerPlugin struct {
Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
FieldSpecs []config.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
FieldSpecs []types.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
}
func (p *LabelTransformerPlugin) Config(

View File

@@ -9,14 +9,13 @@ import (
"sigs.k8s.io/kustomize/v3/pkg/resmap"
"sigs.k8s.io/kustomize/v3/pkg/resource"
"sigs.k8s.io/kustomize/v3/pkg/transformers"
"sigs.k8s.io/kustomize/v3/pkg/transformers/config"
"sigs.k8s.io/yaml"
)
// Change or set the namespace of non-cluster level resources.
type NamespaceTransformerPlugin struct {
types.ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
FieldSpecs []config.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
FieldSpecs []types.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
}
func (p *NamespaceTransformerPlugin) Config(
@@ -62,8 +61,8 @@ const metaNamespace = "metadata/namespace"
// all objects have it, even "ClusterKind" objects
// that don't exist in a namespace (the Namespace
// object itself doesn't live in a namespace).
func (p *NamespaceTransformerPlugin) applicableFieldSpecs(id resid.ResId) []config.FieldSpec {
var res []config.FieldSpec
func (p *NamespaceTransformerPlugin) applicableFieldSpecs(id resid.ResId) []types.FieldSpec {
var res []types.FieldSpec
for _, fs := range p.FieldSpecs {
if id.IsSelected(&fs.Gvk) && (fs.Path != metaNamespace || (fs.Path == metaNamespace && id.IsNamespaceableKind())) {
res = append(res, fs)

View File

@@ -4,23 +4,23 @@ package builtin
import (
"errors"
"fmt"
"sigs.k8s.io/kustomize/v3/api/types"
"sigs.k8s.io/kustomize/v3/api/resid"
"sigs.k8s.io/kustomize/v3/pkg/resmap"
"sigs.k8s.io/kustomize/v3/pkg/transformers"
"sigs.k8s.io/kustomize/v3/pkg/transformers/config"
"sigs.k8s.io/yaml"
)
// Add the given prefix and suffix to the field.
type PrefixSuffixTransformerPlugin struct {
Prefix string `json:"prefix,omitempty" yaml:"prefix,omitempty"`
Suffix string `json:"suffix,omitempty" yaml:"suffix,omitempty"`
FieldSpecs []config.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
Prefix string `json:"prefix,omitempty" yaml:"prefix,omitempty"`
Suffix string `json:"suffix,omitempty" yaml:"suffix,omitempty"`
FieldSpecs []types.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
}
// Not placed in a file yet due to lack of demand.
var prefixSuffixFieldSpecsToSkip = []config.FieldSpec{
var prefixSuffixFieldSpecsToSkip = []types.FieldSpec{
{
Gvk: resid.Gvk{Kind: "CustomResourceDefinition"},
},
@@ -92,7 +92,7 @@ func (p *PrefixSuffixTransformerPlugin) Transform(m resmap.ResMap) error {
return nil
}
func smellsLikeANameChange(fs *config.FieldSpec) bool {
func smellsLikeANameChange(fs *types.FieldSpec) bool {
return fs.Path == "metadata/name"
}

View File

@@ -8,15 +8,14 @@ import (
"sigs.k8s.io/kustomize/v3/api/types"
"sigs.k8s.io/kustomize/v3/pkg/resmap"
"sigs.k8s.io/kustomize/v3/pkg/transformers"
"sigs.k8s.io/kustomize/v3/pkg/transformers/config"
"sigs.k8s.io/yaml"
)
// Find matching replicas declarations and replace the count.
// Eases the kustomization configuration of replica changes.
type ReplicaCountTransformerPlugin struct {
Replica types.Replica `json:"replica,omitempty" yaml:"replica,omitempty"`
FieldSpecs []config.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
Replica types.Replica `json:"replica,omitempty" yaml:"replica,omitempty"`
FieldSpecs []types.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
}
func (p *ReplicaCountTransformerPlugin) Config(

View File

@@ -5,16 +5,16 @@
package main
import (
"sigs.k8s.io/kustomize/v3/api/types"
"sigs.k8s.io/kustomize/v3/pkg/resmap"
"sigs.k8s.io/kustomize/v3/pkg/transformers"
"sigs.k8s.io/kustomize/v3/pkg/transformers/config"
"sigs.k8s.io/yaml"
)
// Add the given annotations to the given field specifications.
type plugin struct {
Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
FieldSpecs []config.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
FieldSpecs []types.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
}
//noinspection GoUnusedGlobalVariable

View File

@@ -12,15 +12,14 @@ import (
"sigs.k8s.io/kustomize/v3/pkg/resmap"
"sigs.k8s.io/kustomize/v3/pkg/transformers"
"sigs.k8s.io/kustomize/v3/pkg/transformers/config"
"sigs.k8s.io/yaml"
)
// Find matching image declarations and replace
// the name, tag and/or digest.
type plugin struct {
ImageTag types.Image `json:"imageTag,omitempty" yaml:"imageTag,omitempty"`
FieldSpecs []config.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
ImageTag types.Image `json:"imageTag,omitempty" yaml:"imageTag,omitempty"`
FieldSpecs []types.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
}
//noinspection GoUnusedGlobalVariable

View File

@@ -5,16 +5,16 @@
package main
import (
"sigs.k8s.io/kustomize/v3/api/types"
"sigs.k8s.io/kustomize/v3/pkg/resmap"
"sigs.k8s.io/kustomize/v3/pkg/transformers"
"sigs.k8s.io/kustomize/v3/pkg/transformers/config"
"sigs.k8s.io/yaml"
)
// Add the given labels to the given field specifications.
type plugin struct {
Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
FieldSpecs []config.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
FieldSpecs []types.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
}
//noinspection GoUnusedGlobalVariable

View File

@@ -12,14 +12,13 @@ import (
"sigs.k8s.io/kustomize/v3/pkg/resmap"
"sigs.k8s.io/kustomize/v3/pkg/resource"
"sigs.k8s.io/kustomize/v3/pkg/transformers"
"sigs.k8s.io/kustomize/v3/pkg/transformers/config"
"sigs.k8s.io/yaml"
)
// Change or set the namespace of non-cluster level resources.
type plugin struct {
types.ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
FieldSpecs []config.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
FieldSpecs []types.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
}
//noinspection GoUnusedGlobalVariable
@@ -68,8 +67,8 @@ const metaNamespace = "metadata/namespace"
// all objects have it, even "ClusterKind" objects
// that don't exist in a namespace (the Namespace
// object itself doesn't live in a namespace).
func (p *plugin) applicableFieldSpecs(id resid.ResId) []config.FieldSpec {
var res []config.FieldSpec
func (p *plugin) applicableFieldSpecs(id resid.ResId) []types.FieldSpec {
var res []types.FieldSpec
for _, fs := range p.FieldSpecs {
if id.IsSelected(&fs.Gvk) && (fs.Path != metaNamespace || (fs.Path == metaNamespace && id.IsNamespaceableKind())) {
res = append(res, fs)

View File

@@ -7,26 +7,26 @@ package main
import (
"errors"
"fmt"
"sigs.k8s.io/kustomize/v3/api/types"
"sigs.k8s.io/kustomize/v3/api/resid"
"sigs.k8s.io/kustomize/v3/pkg/resmap"
"sigs.k8s.io/kustomize/v3/pkg/transformers"
"sigs.k8s.io/kustomize/v3/pkg/transformers/config"
"sigs.k8s.io/yaml"
)
// Add the given prefix and suffix to the field.
type plugin struct {
Prefix string `json:"prefix,omitempty" yaml:"prefix,omitempty"`
Suffix string `json:"suffix,omitempty" yaml:"suffix,omitempty"`
FieldSpecs []config.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
Prefix string `json:"prefix,omitempty" yaml:"prefix,omitempty"`
Suffix string `json:"suffix,omitempty" yaml:"suffix,omitempty"`
FieldSpecs []types.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
}
//noinspection GoUnusedGlobalVariable
var KustomizePlugin plugin
// Not placed in a file yet due to lack of demand.
var prefixSuffixFieldSpecsToSkip = []config.FieldSpec{
var prefixSuffixFieldSpecsToSkip = []types.FieldSpec{
{
Gvk: resid.Gvk{Kind: "CustomResourceDefinition"},
},
@@ -98,7 +98,7 @@ func (p *plugin) Transform(m resmap.ResMap) error {
return nil
}
func smellsLikeANameChange(fs *config.FieldSpec) bool {
func smellsLikeANameChange(fs *types.FieldSpec) bool {
return fs.Path == "metadata/name"
}

View File

@@ -11,15 +11,14 @@ import (
"sigs.k8s.io/kustomize/v3/api/types"
"sigs.k8s.io/kustomize/v3/pkg/resmap"
"sigs.k8s.io/kustomize/v3/pkg/transformers"
"sigs.k8s.io/kustomize/v3/pkg/transformers/config"
"sigs.k8s.io/yaml"
)
// Find matching replicas declarations and replace the count.
// Eases the kustomization configuration of replica changes.
type plugin struct {
Replica types.Replica `json:"replica,omitempty" yaml:"replica,omitempty"`
FieldSpecs []config.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
Replica types.Replica `json:"replica,omitempty" yaml:"replica,omitempty"`
FieldSpecs []types.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
}
//noinspection GoUnusedGlobalVariable

View File

@@ -101,7 +101,7 @@ etc.
Generated plugins are used in kustomize via
package whatever
import "sigs.k8s.io/kustomize/v3/plugin/builtin
import sigs.k8s.io/kustomize/v3/plugin/builtin
...
g := builtin.NewSecretGenerator()
g.Config(h, k)

View File

@@ -5,8 +5,8 @@ package main
import (
"github.com/pkg/errors"
"sigs.k8s.io/kustomize/v3/api/types"
"sigs.k8s.io/kustomize/v3/pkg/resmap"
"sigs.k8s.io/kustomize/v3/pkg/transformers/config"
"sigs.k8s.io/kustomize/v3/plugin/builtin"
"sigs.k8s.io/yaml"
)
@@ -25,10 +25,10 @@ func (p *plugin) makePrefixSuffixPluginConfig() ([]byte, error) {
var s struct {
Prefix string
Suffix string
FieldSpecs []config.FieldSpec
FieldSpecs []types.FieldSpec
}
s.Prefix = getDate() + "-"
s.FieldSpecs = []config.FieldSpec{
s.FieldSpecs = []types.FieldSpec{
{Path: "metadata/name"},
}
return yaml.Marshal(s)

View File

@@ -7,7 +7,6 @@ import (
"github.com/pkg/errors"
"sigs.k8s.io/kustomize/v3/api/types"
"sigs.k8s.io/kustomize/v3/pkg/resmap"
"sigs.k8s.io/kustomize/v3/pkg/transformers/config"
"sigs.k8s.io/kustomize/v3/plugin/builtin"
"sigs.k8s.io/yaml"
)
@@ -27,10 +26,10 @@ func (p *plugin) makePrefixSuffixPluginConfig(n string) ([]byte, error) {
var s struct {
Prefix string
Suffix string
FieldSpecs []config.FieldSpec
FieldSpecs []types.FieldSpec
}
s.Prefix = n + "-"
s.FieldSpecs = []config.FieldSpec{
s.FieldSpecs = []types.FieldSpec{
{Path: "metadata/name"},
}
return yaml.Marshal(s)