From 5de000ee3d48fd0685b938245631a93d3aece0b8 Mon Sep 17 00:00:00 2001 From: jregan Date: Sun, 20 Oct 2019 06:38:05 -0700 Subject: [PATCH 1/2] Move FieldSpec to API. --- .../config => api/types}/fieldspec.go | 42 ++++++--------- .../config => api/types}/fieldspec_test.go | 28 +++++----- hacks/awker.sh | 7 +-- pkg/target/kusttarget_configplugin.go | 12 ++--- pkg/transformers/config/factory_test.go | 3 +- pkg/transformers/config/factorycrd.go | 7 +-- pkg/transformers/config/factorycrd_test.go | 5 +- pkg/transformers/config/namebackreferences.go | 5 +- .../config/namebackreferences_test.go | 5 +- pkg/transformers/config/transformerconfig.go | 51 ++++++++++--------- .../config/transformerconfig_test.go | 11 ++-- pkg/transformers/labelsandannotations.go | 10 ++-- pkg/transformers/refvars.go | 6 +-- pkg/transformers/refvars_test.go | 6 +-- plugin/builtin/AnnotationsTransformer.go | 6 +-- plugin/builtin/ImageTagTransformer.go | 5 +- plugin/builtin/LabelTransformer.go | 6 +-- plugin/builtin/NamespaceTransformer.go | 7 ++- plugin/builtin/PrefixSuffixTransformer.go | 12 ++--- plugin/builtin/ReplicaCountTransformer.go | 5 +- .../AnnotationsTransformer.go | 6 +-- .../ImageTagTransformer.go | 5 +- .../labeltransformer/LabelTransformer.go | 6 +-- .../NamespaceTransformer.go | 7 ++- .../PrefixSuffixTransformer.go | 12 ++--- .../ReplicaCountTransformer.go | 5 +- plugin/doc.go | 2 +- .../v1/dateprefixer/DatePrefixer.go | 6 +-- .../v1/stringprefixer/StringPrefixer.go | 5 +- 29 files changed, 141 insertions(+), 152 deletions(-) rename {pkg/transformers/config => api/types}/fieldspec.go (73%) rename {pkg/transformers/config => api/types}/fieldspec_test.go (93%) diff --git a/pkg/transformers/config/fieldspec.go b/api/types/fieldspec.go similarity index 73% rename from pkg/transformers/config/fieldspec.go rename to api/types/fieldspec.go index 2a88d3660..a31805864 100644 --- a/pkg/transformers/config/fieldspec.go +++ b/api/types/fieldspec.go @@ -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 diff --git a/pkg/transformers/config/fieldspec_test.go b/api/types/fieldspec_test.go similarity index 93% rename from pkg/transformers/config/fieldspec_test.go rename to api/types/fieldspec_test.go index 80d142b24..027d89162 100644 --- a/pkg/transformers/config/fieldspec_test.go +++ b/api/types/fieldspec_test.go @@ -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) diff --git a/hacks/awker.sh b/hacks/awker.sh index 4f24cc377..0f3a027b2 100755 --- a/hacks/awker.sh +++ b/hacks/awker.sh @@ -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 ==================================" } diff --git a/pkg/target/kusttarget_configplugin.go b/pkg/target/kusttarget_configplugin.go index 9b3209375..806fbd0e8 100644 --- a/pkg/target/kusttarget_configplugin.go +++ b/pkg/target/kusttarget_configplugin.go @@ -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 diff --git a/pkg/transformers/config/factory_test.go b/pkg/transformers/config/factory_test.go index 491e6cad1..41bf853d8 100644 --- a/pkg/transformers/config/factory_test.go +++ b/pkg/transformers/config/factory_test.go @@ -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", diff --git a/pkg/transformers/config/factorycrd.go b/pkg/transformers/config/factorycrd.go index a5daa3a2a..840c0fd05 100644 --- a/pkg/transformers/config/factorycrd.go +++ b/pkg/transformers/config/factorycrd.go @@ -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, "/"), diff --git a/pkg/transformers/config/factorycrd_test.go b/pkg/transformers/config/factorycrd_test.go index 7ab5e34e5..65ee38a5a 100644 --- a/pkg/transformers/config/factorycrd_test.go +++ b/pkg/transformers/config/factorycrd_test.go @@ -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"}, diff --git a/pkg/transformers/config/namebackreferences.go b/pkg/transformers/config/namebackreferences.go index 13dd9dd9c..54253f989 100644 --- a/pkg/transformers/config/namebackreferences.go +++ b/pkg/transformers/config/namebackreferences.go @@ -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 } diff --git a/pkg/transformers/config/namebackreferences_test.go b/pkg/transformers/config/namebackreferences_test.go index 0d0713642..db5a46d88 100644 --- a/pkg/transformers/config/namebackreferences_test.go +++ b/pkg/transformers/config/namebackreferences_test.go @@ -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", diff --git a/pkg/transformers/config/transformerconfig.go b/pkg/transformers/config/transformerconfig.go index 94cf2118a..f63e2d976 100644 --- a/pkg/transformers/config/transformerconfig.go +++ b/pkg/transformers/config/transformerconfig.go @@ -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 } diff --git a/pkg/transformers/config/transformerconfig_test.go b/pkg/transformers/config/transformerconfig_test.go index b39bfdd43..472c6d802 100644 --- a/pkg/transformers/config/transformerconfig_test.go +++ b/pkg/transformers/config/transformerconfig_test.go @@ -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", diff --git a/pkg/transformers/labelsandannotations.go b/pkg/transformers/labelsandannotations.go index 284121d08..efd3f4e26 100644 --- a/pkg/transformers/labelsandannotations.go +++ b/pkg/transformers/labelsandannotations.go @@ -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 } diff --git a/pkg/transformers/refvars.go b/pkg/transformers/refvars.go index 2ee54bab0..ffe006af9 100644 --- a/pkg/transformers/refvars.go +++ b/pkg/transformers/refvars.go @@ -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, diff --git a/pkg/transformers/refvars_test.go b/pkg/transformers/refvars_test.go index ce2e0f917..97bad29a8 100644 --- a/pkg/transformers/refvars_test.go +++ b/pkg/transformers/refvars_test.go @@ -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"}, diff --git a/plugin/builtin/AnnotationsTransformer.go b/plugin/builtin/AnnotationsTransformer.go index a50a9f765..8f5f6ca54 100644 --- a/plugin/builtin/AnnotationsTransformer.go +++ b/plugin/builtin/AnnotationsTransformer.go @@ -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( diff --git a/plugin/builtin/ImageTagTransformer.go b/plugin/builtin/ImageTagTransformer.go index 9f13b891c..1d2e30109 100644 --- a/plugin/builtin/ImageTagTransformer.go +++ b/plugin/builtin/ImageTagTransformer.go @@ -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( diff --git a/plugin/builtin/LabelTransformer.go b/plugin/builtin/LabelTransformer.go index af341dd17..dc2e16fed 100644 --- a/plugin/builtin/LabelTransformer.go +++ b/plugin/builtin/LabelTransformer.go @@ -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( diff --git a/plugin/builtin/NamespaceTransformer.go b/plugin/builtin/NamespaceTransformer.go index adf01e381..0fdd9ea1d 100644 --- a/plugin/builtin/NamespaceTransformer.go +++ b/plugin/builtin/NamespaceTransformer.go @@ -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) diff --git a/plugin/builtin/PrefixSuffixTransformer.go b/plugin/builtin/PrefixSuffixTransformer.go index af83bd6b0..dfad058b2 100644 --- a/plugin/builtin/PrefixSuffixTransformer.go +++ b/plugin/builtin/PrefixSuffixTransformer.go @@ -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" } diff --git a/plugin/builtin/ReplicaCountTransformer.go b/plugin/builtin/ReplicaCountTransformer.go index f05f263a2..1eb357e2c 100644 --- a/plugin/builtin/ReplicaCountTransformer.go +++ b/plugin/builtin/ReplicaCountTransformer.go @@ -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( diff --git a/plugin/builtin/annotationstransformer/AnnotationsTransformer.go b/plugin/builtin/annotationstransformer/AnnotationsTransformer.go index 9b36f86cf..c30922952 100644 --- a/plugin/builtin/annotationstransformer/AnnotationsTransformer.go +++ b/plugin/builtin/annotationstransformer/AnnotationsTransformer.go @@ -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 diff --git a/plugin/builtin/imagetagtransformer/ImageTagTransformer.go b/plugin/builtin/imagetagtransformer/ImageTagTransformer.go index d3e0c11be..d29cdd169 100644 --- a/plugin/builtin/imagetagtransformer/ImageTagTransformer.go +++ b/plugin/builtin/imagetagtransformer/ImageTagTransformer.go @@ -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 diff --git a/plugin/builtin/labeltransformer/LabelTransformer.go b/plugin/builtin/labeltransformer/LabelTransformer.go index 30620b16e..3ef5ebc71 100644 --- a/plugin/builtin/labeltransformer/LabelTransformer.go +++ b/plugin/builtin/labeltransformer/LabelTransformer.go @@ -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 diff --git a/plugin/builtin/namespacetransformer/NamespaceTransformer.go b/plugin/builtin/namespacetransformer/NamespaceTransformer.go index ae4f2c832..49721836c 100644 --- a/plugin/builtin/namespacetransformer/NamespaceTransformer.go +++ b/plugin/builtin/namespacetransformer/NamespaceTransformer.go @@ -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) diff --git a/plugin/builtin/prefixsuffixtransformer/PrefixSuffixTransformer.go b/plugin/builtin/prefixsuffixtransformer/PrefixSuffixTransformer.go index 15d02b0ff..6d17d8b9d 100644 --- a/plugin/builtin/prefixsuffixtransformer/PrefixSuffixTransformer.go +++ b/plugin/builtin/prefixsuffixtransformer/PrefixSuffixTransformer.go @@ -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" } diff --git a/plugin/builtin/replicacounttransformer/ReplicaCountTransformer.go b/plugin/builtin/replicacounttransformer/ReplicaCountTransformer.go index 98387ea74..5573540b9 100644 --- a/plugin/builtin/replicacounttransformer/ReplicaCountTransformer.go +++ b/plugin/builtin/replicacounttransformer/ReplicaCountTransformer.go @@ -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 diff --git a/plugin/doc.go b/plugin/doc.go index e9eb8ba80..4b9f2fae5 100644 --- a/plugin/doc.go +++ b/plugin/doc.go @@ -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) diff --git a/plugin/someteam.example.com/v1/dateprefixer/DatePrefixer.go b/plugin/someteam.example.com/v1/dateprefixer/DatePrefixer.go index 9e2b74623..ded9d7fcd 100644 --- a/plugin/someteam.example.com/v1/dateprefixer/DatePrefixer.go +++ b/plugin/someteam.example.com/v1/dateprefixer/DatePrefixer.go @@ -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) diff --git a/plugin/someteam.example.com/v1/stringprefixer/StringPrefixer.go b/plugin/someteam.example.com/v1/stringprefixer/StringPrefixer.go index 378f7d775..5d93abf68 100644 --- a/plugin/someteam.example.com/v1/stringprefixer/StringPrefixer.go +++ b/plugin/someteam.example.com/v1/stringprefixer/StringPrefixer.go @@ -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) From c90e0a4080da317304f76c455670a8306ac5cb91 Mon Sep 17 00:00:00 2001 From: jregan Date: Sun, 20 Oct 2019 07:25:54 -0700 Subject: [PATCH 2/2] Drain pkg/transformers. --- .../consts}/commonannotations.go | 19 +--- .../builtinconfig/consts}/commonlabels.go | 19 +--- .../builtinconfig/consts}/defaultconfig.go | 21 +---- api/builtinconfig/consts/doc.go | 5 ++ api/builtinconfig/consts/images.go | 10 +++ api/builtinconfig/consts/nameprefix.go | 11 +++ .../builtinconfig/consts}/namereference.go | 19 +--- api/builtinconfig/consts/namespace.go | 16 ++++ .../builtinconfig/consts}/replicas.go | 5 +- .../builtinconfig/consts}/varreference.go | 19 +--- api/builtinconfig/doc.go | 8 ++ api/builtinconfig/loaddefaultconfig.go | 42 +++++++++ .../builtinconfig/loaddefaultconfig_test.go | 16 ++-- .../builtinconfig}/namebackreferences.go | 19 +--- .../builtinconfig}/namebackreferences_test.go | 19 +--- .../builtinconfig}/transformerconfig.go | 43 ++++----- .../builtinconfig}/transformerconfig_test.go | 31 +++---- api/kusttest/kusttestharness.go | 4 +- .../transform/maptransformer.go | 34 +------- .../transform/maptransformer_test.go | 38 ++++---- .../transform}/multitransformer.go | 19 +--- .../transform}/mutatefield.go | 19 +--- .../transform}/mutatefield_test.go | 23 ++--- api/transform/nooptransformer.go | 21 +++++ api/types/fieldspec_test.go | 3 +- docs/plugins/builtins.md | 2 +- examples/configureBuiltinPlugin.md | 2 +- go.sum | 1 + kustomize/internal/commands/config/config.go | 4 +- .../loadconfigfromcrds.go} | 38 +++----- .../loadconfigfromcrds_test.go} | 29 ++----- .../namereferencetransformer.go} | 18 ++-- .../namereferencetransformer_test.go} | 17 ++-- .../refvartransformer.go} | 40 +++------ .../refvartransformer_test.go} | 18 ++-- pkg/accumulator/resaccumulator.go | 15 ++-- pkg/accumulator/resaccumulator_test.go | 4 +- pkg/target/kusttarget.go | 10 +-- pkg/target/kusttarget_configplugin.go | 24 ++--- .../config/defaultconfig/images.go | 23 ----- .../config/defaultconfig/nameprefix.go | 24 ----- .../config/defaultconfig/namespace.go | 29 ------- pkg/transformers/config/factory.go | 87 ------------------- pkg/transformers/doc.go | 9 -- pkg/transformers/nooptransformer.go | 34 -------- plugin/builtin/AnnotationsTransformer.go | 4 +- plugin/builtin/ImageTagTransformer.go | 4 +- plugin/builtin/LabelTransformer.go | 4 +- plugin/builtin/NamespaceTransformer.go | 4 +- plugin/builtin/PrefixSuffixTransformer.go | 4 +- plugin/builtin/ReplicaCountTransformer.go | 4 +- .../AnnotationsTransformer.go | 4 +- .../ImageTagTransformer.go | 4 +- .../labeltransformer/LabelTransformer.go | 4 +- .../NamespaceTransformer.go | 4 +- .../PrefixSuffixTransformer.go | 4 +- .../ReplicaCountTransformer.go | 4 +- 57 files changed, 335 insertions(+), 624 deletions(-) rename {pkg/transformers/config/defaultconfig => api/builtinconfig/consts}/commonannotations.go (57%) rename {pkg/transformers/config/defaultconfig => api/builtinconfig/consts}/commonlabels.go (85%) rename {pkg/transformers/config/defaultconfig => api/builtinconfig/consts}/defaultconfig.go (60%) create mode 100644 api/builtinconfig/consts/doc.go create mode 100644 api/builtinconfig/consts/images.go create mode 100644 api/builtinconfig/consts/nameprefix.go rename {pkg/transformers/config/defaultconfig => api/builtinconfig/consts}/namereference.go (95%) create mode 100644 api/builtinconfig/consts/namespace.go rename {pkg/transformers/config/defaultconfig => api/builtinconfig/consts}/replicas.go (74%) rename {pkg/transformers/config/defaultconfig => api/builtinconfig/consts}/varreference.go (87%) create mode 100644 api/builtinconfig/doc.go create mode 100644 api/builtinconfig/loaddefaultconfig.go rename pkg/transformers/config/factory_test.go => api/builtinconfig/loaddefaultconfig_test.go (73%) rename {pkg/transformers/config => api/builtinconfig}/namebackreferences.go (80%) rename {pkg/transformers/config => api/builtinconfig}/namebackreferences_test.go (72%) rename {pkg/transformers/config => api/builtinconfig}/transformerconfig.go (83%) rename {pkg/transformers/config => api/builtinconfig}/transformerconfig_test.go (86%) rename pkg/transformers/labelsandannotations.go => api/transform/maptransformer.go (56%) rename pkg/transformers/labelsandannotations_test.go => api/transform/maptransformer_test.go (94%) rename {pkg/transformers => api/transform}/multitransformer.go (74%) rename {pkg/transformers => api/transform}/mutatefield.go (73%) rename {pkg/transformers => api/transform}/mutatefield_test.go (86%) create mode 100644 api/transform/nooptransformer.go rename pkg/{transformers/config/factorycrd.go => accumulator/loadconfigfromcrds.go} (82%) rename pkg/{transformers/config/factorycrd_test.go => accumulator/loadconfigfromcrds_test.go} (89%) rename pkg/{transformers/namereference.go => accumulator/namereferencetransformer.go} (96%) rename pkg/{transformers/namereference_test.go => accumulator/namereferencetransformer_test.go} (97%) rename pkg/{transformers/refvars.go => accumulator/refvartransformer.go} (71%) rename pkg/{transformers/refvars_test.go => accumulator/refvartransformer_test.go} (87%) delete mode 100644 pkg/transformers/config/defaultconfig/images.go delete mode 100644 pkg/transformers/config/defaultconfig/nameprefix.go delete mode 100644 pkg/transformers/config/defaultconfig/namespace.go delete mode 100644 pkg/transformers/config/factory.go delete mode 100644 pkg/transformers/doc.go delete mode 100644 pkg/transformers/nooptransformer.go diff --git a/pkg/transformers/config/defaultconfig/commonannotations.go b/api/builtinconfig/consts/commonannotations.go similarity index 57% rename from pkg/transformers/config/defaultconfig/commonannotations.go rename to api/builtinconfig/consts/commonannotations.go index 275455904..64103c393 100644 --- a/pkg/transformers/config/defaultconfig/commonannotations.go +++ b/api/builtinconfig/consts/commonannotations.go @@ -1,20 +1,7 @@ -/* -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 defaultconfig +package consts const commonAnnotationFieldSpecs = ` commonAnnotations: diff --git a/pkg/transformers/config/defaultconfig/commonlabels.go b/api/builtinconfig/consts/commonlabels.go similarity index 85% rename from pkg/transformers/config/defaultconfig/commonlabels.go rename to api/builtinconfig/consts/commonlabels.go index 9ad18739a..46b8a818b 100644 --- a/pkg/transformers/config/defaultconfig/commonlabels.go +++ b/api/builtinconfig/consts/commonlabels.go @@ -1,20 +1,7 @@ -/* -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 defaultconfig +package consts const commonLabelFieldSpecs = ` commonLabels: diff --git a/pkg/transformers/config/defaultconfig/defaultconfig.go b/api/builtinconfig/consts/defaultconfig.go similarity index 60% rename from pkg/transformers/config/defaultconfig/defaultconfig.go rename to api/builtinconfig/consts/defaultconfig.go index 78719f372..7ad16ab56 100644 --- a/pkg/transformers/config/defaultconfig/defaultconfig.go +++ b/api/builtinconfig/consts/defaultconfig.go @@ -1,22 +1,7 @@ -/* -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 defaultconfig provides the default -// transformer configurations -package defaultconfig +package consts import ( "bytes" diff --git a/api/builtinconfig/consts/doc.go b/api/builtinconfig/consts/doc.go new file mode 100644 index 000000000..5ba6dfe7e --- /dev/null +++ b/api/builtinconfig/consts/doc.go @@ -0,0 +1,5 @@ +// Copyright 2019 The Kubernetes Authors. +// SPDX-License-Identifier: Apache-2.0 + +// Package consts provides builtin plugin configuration data. +package consts diff --git a/api/builtinconfig/consts/images.go b/api/builtinconfig/consts/images.go new file mode 100644 index 000000000..950aa44a7 --- /dev/null +++ b/api/builtinconfig/consts/images.go @@ -0,0 +1,10 @@ +// Copyright 2019 The Kubernetes Authors. +// SPDX-License-Identifier: Apache-2.0 + +package consts + +const ( + // imageFieldSpecs is left empty since `containers` and `initContainers` + // of *ANY* kind in *ANY* path are builtin supported in code + imagesFieldSpecs = `` +) diff --git a/api/builtinconfig/consts/nameprefix.go b/api/builtinconfig/consts/nameprefix.go new file mode 100644 index 000000000..7725448a4 --- /dev/null +++ b/api/builtinconfig/consts/nameprefix.go @@ -0,0 +1,11 @@ +// Copyright 2019 The Kubernetes Authors. +// SPDX-License-Identifier: Apache-2.0 + +package consts + +const ( + namePrefixFieldSpecs = ` +namePrefix: +- path: metadata/name +` +) diff --git a/pkg/transformers/config/defaultconfig/namereference.go b/api/builtinconfig/consts/namereference.go similarity index 95% rename from pkg/transformers/config/defaultconfig/namereference.go rename to api/builtinconfig/consts/namereference.go index 598aaec1d..17872f000 100644 --- a/pkg/transformers/config/defaultconfig/namereference.go +++ b/api/builtinconfig/consts/namereference.go @@ -1,20 +1,7 @@ -/* -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 defaultconfig +package consts const ( nameReferenceFieldSpecs = ` diff --git a/api/builtinconfig/consts/namespace.go b/api/builtinconfig/consts/namespace.go new file mode 100644 index 000000000..6e6c79faf --- /dev/null +++ b/api/builtinconfig/consts/namespace.go @@ -0,0 +1,16 @@ +// Copyright 2019 The Kubernetes Authors. +// SPDX-License-Identifier: Apache-2.0 + +package consts + +const ( + namespaceFieldSpecs = ` +namespace: +- path: metadata/namespace + create: true +- path: subjects + kind: RoleBinding +- path: subjects + kind: ClusterRoleBinding +` +) diff --git a/pkg/transformers/config/defaultconfig/replicas.go b/api/builtinconfig/consts/replicas.go similarity index 74% rename from pkg/transformers/config/defaultconfig/replicas.go rename to api/builtinconfig/consts/replicas.go index 1ab8d0079..f83bc652c 100644 --- a/pkg/transformers/config/defaultconfig/replicas.go +++ b/api/builtinconfig/consts/replicas.go @@ -1,4 +1,7 @@ -package defaultconfig +// Copyright 2019 The Kubernetes Authors. +// SPDX-License-Identifier: Apache-2.0 + +package consts const replicasFieldSpecs = ` replicas: diff --git a/pkg/transformers/config/defaultconfig/varreference.go b/api/builtinconfig/consts/varreference.go similarity index 87% rename from pkg/transformers/config/defaultconfig/varreference.go rename to api/builtinconfig/consts/varreference.go index c4d5cf19f..855cf69b0 100644 --- a/pkg/transformers/config/defaultconfig/varreference.go +++ b/api/builtinconfig/consts/varreference.go @@ -1,20 +1,7 @@ -/* -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 defaultconfig +package consts const ( varReferenceFieldSpecs = ` diff --git a/api/builtinconfig/doc.go b/api/builtinconfig/doc.go new file mode 100644 index 000000000..c16ac0a8d --- /dev/null +++ b/api/builtinconfig/doc.go @@ -0,0 +1,8 @@ +// Copyright 2019 The Kubernetes Authors. +// SPDX-License-Identifier: Apache-2.0 + +// Package builtinconfig provides legacy methods for +// configuring builting plugins from a common config file. +// It's better to configure them individually if using +// a custom configuration. +package builtinconfig diff --git a/api/builtinconfig/loaddefaultconfig.go b/api/builtinconfig/loaddefaultconfig.go new file mode 100644 index 000000000..cd299be72 --- /dev/null +++ b/api/builtinconfig/loaddefaultconfig.go @@ -0,0 +1,42 @@ +// Copyright 2019 The Kubernetes Authors. +// SPDX-License-Identifier: Apache-2.0 + +package builtinconfig + +import ( + "sigs.k8s.io/kustomize/v3/pkg/ifc" + "sigs.k8s.io/yaml" +) + +// loadDefaultConfig returns a TranformerConfig +// object from a list of files. +func loadDefaultConfig( + ldr ifc.Loader, paths []string) (*TransformerConfig, error) { + result := &TransformerConfig{} + for _, path := range paths { + data, err := ldr.Load(path) + if err != nil { + return nil, err + } + t, err := makeTransformerConfigFromBytes(data) + if err != nil { + return nil, err + } + result, err = result.Merge(t) + if err != nil { + return nil, err + } + } + return result, nil +} + +// makeTransformerConfigFromBytes returns a TransformerConfig object from bytes +func makeTransformerConfigFromBytes(data []byte) (*TransformerConfig, error) { + var t TransformerConfig + err := yaml.Unmarshal(data, &t) + if err != nil { + return nil, err + } + t.sortFields() + return &t, nil +} diff --git a/pkg/transformers/config/factory_test.go b/api/builtinconfig/loaddefaultconfig_test.go similarity index 73% rename from pkg/transformers/config/factory_test.go rename to api/builtinconfig/loaddefaultconfig_test.go index 41bf853d8..a1b133708 100644 --- a/pkg/transformers/config/factory_test.go +++ b/api/builtinconfig/loaddefaultconfig_test.go @@ -1,31 +1,25 @@ // Copyright 2019 The Kubernetes Authors. // SPDX-License-Identifier: Apache-2.0 -package config +package builtinconfig import ( "reflect" - "sigs.k8s.io/kustomize/v3/api/resid" - "sigs.k8s.io/kustomize/v3/api/types" "testing" + "sigs.k8s.io/kustomize/v3/api/resid" + "sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/internal/loadertest" ) -func TestMakeDefaultConfig(t *testing.T) { - // Confirm default can be made without fatal error inside call. - _ = MakeDefaultConfig() -} - -func TestFromFiles(t *testing.T) { - +func TestLoadDefaultConfigsFromFiles(t *testing.T) { ldr := loadertest.NewFakeLoader("/app") ldr.AddFile("/app/config.yaml", []byte(` namePrefix: - path: nameprefix/path kind: SomeKind `)) - tcfg, err := NewFactory(ldr).FromFiles([]string{"/app/config.yaml"}) + tcfg, err := loadDefaultConfig(ldr, []string{"/app/config.yaml"}) if err != nil { t.Fatalf("unexpected error: %v", err) } diff --git a/pkg/transformers/config/namebackreferences.go b/api/builtinconfig/namebackreferences.go similarity index 80% rename from pkg/transformers/config/namebackreferences.go rename to api/builtinconfig/namebackreferences.go index 54253f989..ca6bc22ae 100644 --- a/pkg/transformers/config/namebackreferences.go +++ b/api/builtinconfig/namebackreferences.go @@ -1,20 +1,7 @@ -/* -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 builtinconfig import ( "sigs.k8s.io/kustomize/v3/api/resid" diff --git a/pkg/transformers/config/namebackreferences_test.go b/api/builtinconfig/namebackreferences_test.go similarity index 72% rename from pkg/transformers/config/namebackreferences_test.go rename to api/builtinconfig/namebackreferences_test.go index db5a46d88..f232112e3 100644 --- a/pkg/transformers/config/namebackreferences_test.go +++ b/api/builtinconfig/namebackreferences_test.go @@ -1,20 +1,7 @@ -/* -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 builtinconfig import ( "reflect" diff --git a/pkg/transformers/config/transformerconfig.go b/api/builtinconfig/transformerconfig.go similarity index 83% rename from pkg/transformers/config/transformerconfig.go rename to api/builtinconfig/transformerconfig.go index f63e2d976..92fd0c22a 100644 --- a/pkg/transformers/config/transformerconfig.go +++ b/api/builtinconfig/transformerconfig.go @@ -1,29 +1,15 @@ -/* -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 provides the functions to load default or user provided configurations -// for different transformers -package config +package builtinconfig import ( "log" - "sigs.k8s.io/kustomize/v3/api/types" "sort" - "sigs.k8s.io/kustomize/v3/pkg/transformers/config/defaultconfig" + "sigs.k8s.io/kustomize/v3/api/builtinconfig/consts" + "sigs.k8s.io/kustomize/v3/api/types" + "sigs.k8s.io/kustomize/v3/pkg/ifc" ) // TransformerConfig holds the data needed to perform transformations. @@ -47,13 +33,28 @@ func MakeEmptyConfig() *TransformerConfig { // MakeDefaultConfig returns a default TransformerConfig. func MakeDefaultConfig() *TransformerConfig { c, err := makeTransformerConfigFromBytes( - defaultconfig.GetDefaultFieldSpecs()) + consts.GetDefaultFieldSpecs()) if err != nil { log.Fatalf("Unable to make default transformconfig: %v", err) } return c } +// MakeTransformerConfig returns a merger of custom config, +// if any, with default config. +func MakeTransformerConfig( + ldr ifc.Loader, paths []string) (*TransformerConfig, error) { + t1 := MakeDefaultConfig() + if len(paths) == 0 { + return t1, nil + } + t2, err := loadDefaultConfig(ldr, paths) + if err != nil { + return nil, err + } + return t1.Merge(t2) +} + // sortFields provides determinism in logging, tests, etc. func (t *TransformerConfig) sortFields() { sort.Sort(t.NamePrefix) diff --git a/pkg/transformers/config/transformerconfig_test.go b/api/builtinconfig/transformerconfig_test.go similarity index 86% rename from pkg/transformers/config/transformerconfig_test.go rename to api/builtinconfig/transformerconfig_test.go index 472c6d802..d968ea68b 100644 --- a/pkg/transformers/config/transformerconfig_test.go +++ b/api/builtinconfig/transformerconfig_test.go @@ -1,29 +1,22 @@ -/* -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 builtinconfig_test import ( - "sigs.k8s.io/kustomize/v3/api/resid" - "sigs.k8s.io/kustomize/v3/api/types" + "reflect" "testing" - "reflect" + . "sigs.k8s.io/kustomize/v3/api/builtinconfig" + "sigs.k8s.io/kustomize/v3/api/resid" + "sigs.k8s.io/kustomize/v3/api/types" ) +func TestMakeDefaultConfig(t *testing.T) { + // Confirm default can be made without fatal error inside call. + _ = MakeDefaultConfig() +} + func TestAddNamereferenceFieldSpec(t *testing.T) { cfg := &TransformerConfig{} diff --git a/api/kusttest/kusttestharness.go b/api/kusttest/kusttestharness.go index 31d2ff7a3..ab23ff086 100644 --- a/api/kusttest/kusttestharness.go +++ b/api/kusttest/kusttestharness.go @@ -9,6 +9,7 @@ import ( "strings" "testing" + "sigs.k8s.io/kustomize/v3/api/builtinconfig/consts" "sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/internal/loadertest" "sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct" @@ -19,7 +20,6 @@ import ( "sigs.k8s.io/kustomize/v3/pkg/resmap" "sigs.k8s.io/kustomize/v3/pkg/resource" "sigs.k8s.io/kustomize/v3/pkg/target" - "sigs.k8s.io/kustomize/v3/pkg/transformers/config/defaultconfig" "sigs.k8s.io/kustomize/v3/pkg/validators" ) @@ -101,7 +101,7 @@ func (th *KustTestHarness) FromMapAndOption(m map[string]interface{}, args *type } func (th *KustTestHarness) WriteDefaultConfigs(fName string) { - m := defaultconfig.GetDefaultFieldSpecsAsMap() + m := consts.GetDefaultFieldSpecsAsMap() var content []byte for _, tCfg := range m { content = append(content, []byte(tCfg)...) diff --git a/pkg/transformers/labelsandannotations.go b/api/transform/maptransformer.go similarity index 56% rename from pkg/transformers/labelsandannotations.go rename to api/transform/maptransformer.go index efd3f4e26..c4ddec139 100644 --- a/pkg/transformers/labelsandannotations.go +++ b/api/transform/maptransformer.go @@ -1,26 +1,12 @@ -/* -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 transformers +package transform import ( "errors" "fmt" "sigs.k8s.io/kustomize/v3/api/types" - "sigs.k8s.io/kustomize/v3/pkg/resmap" ) @@ -32,23 +18,11 @@ type mapTransformer struct { var _ resmap.Transformer = &mapTransformer{} -// NewLabelsMapTransformer constructs a mapTransformer. -func NewLabelsMapTransformer( - 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 []types.FieldSpec) (resmap.Transformer, error) { - return NewMapTransformer(fs, m) -} - // NewMapTransformer construct a mapTransformer. func NewMapTransformer( pc []types.FieldSpec, m map[string]string) (resmap.Transformer, error) { if m == nil { - return NewNoOpTransformer(), nil + return newNoOpTransformer(), nil } if pc == nil { return nil, errors.New("fieldSpecs is not expected to be nil") diff --git a/pkg/transformers/labelsandannotations_test.go b/api/transform/maptransformer_test.go similarity index 94% rename from pkg/transformers/labelsandannotations_test.go rename to api/transform/maptransformer_test.go index a8f221da1..9bd5dcb6e 100644 --- a/pkg/transformers/labelsandannotations_test.go +++ b/api/transform/maptransformer_test.go @@ -1,22 +1,22 @@ // Copyright 2019 The Kubernetes Authors. // SPDX-License-Identifier: Apache-2.0 -package transformers +package transform_test import ( "testing" + "sigs.k8s.io/kustomize/v3/api/builtinconfig" + . "sigs.k8s.io/kustomize/v3/api/transform" "sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct" "sigs.k8s.io/kustomize/v3/pkg/resmaptest" "sigs.k8s.io/kustomize/v3/pkg/resource" - "sigs.k8s.io/kustomize/v3/pkg/transformers/config" ) -var rf = resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl()) -var defaultTransformerConfig = config.MakeDefaultConfig() +var resourceFactory = resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl()) func TestLabelsRun(t *testing.T) { - m := resmaptest_test.NewRmBuilder(t, rf). + m := resmaptest_test.NewRmBuilder(t, resourceFactory). Add(map[string]interface{}{ "apiVersion": "v1", "kind": "ConfigMap", @@ -161,7 +161,7 @@ func TestLabelsRun(t *testing.T) { }, }).ResMap() - expected := resmaptest_test.NewRmBuilder(t, rf). + expected := resmaptest_test.NewRmBuilder(t, resourceFactory). Add(map[string]interface{}{ "apiVersion": "v1", "kind": "ConfigMap", @@ -386,9 +386,9 @@ func TestLabelsRun(t *testing.T) { }, }).ResMap() - lt, err := NewLabelsMapTransformer( - map[string]string{"label-key1": "label-value1", "label-key2": "label-value2"}, - defaultTransformerConfig.CommonLabels) + lt, err := NewMapTransformer( + builtinconfig.MakeDefaultConfig().CommonLabels, + map[string]string{"label-key1": "label-value1", "label-key2": "label-value2"}) if err != nil { t.Fatalf("unexpected error: %v", err) } @@ -402,7 +402,7 @@ func TestLabelsRun(t *testing.T) { } func TestAnnotationsRun(t *testing.T) { - m := resmaptest_test.NewRmBuilder(t, rf). + m := resmaptest_test.NewRmBuilder(t, resourceFactory). Add(map[string]interface{}{ "apiVersion": "v1", "kind": "ConfigMap", @@ -451,7 +451,7 @@ func TestAnnotationsRun(t *testing.T) { }, }).ResMap() - expected := resmaptest_test.NewRmBuilder(t, rf). + expected := resmaptest_test.NewRmBuilder(t, resourceFactory). Add(map[string]interface{}{ "apiVersion": "v1", "kind": "ConfigMap", @@ -515,9 +515,9 @@ func TestAnnotationsRun(t *testing.T) { }, }, }).ResMap() - at, err := NewAnnotationsMapTransformer( - map[string]string{"anno-key1": "anno-value1", "anno-key2": "anno-value2"}, - defaultTransformerConfig.CommonAnnotations) + at, err := NewMapTransformer( + builtinconfig.MakeDefaultConfig().CommonAnnotations, + map[string]string{"anno-key1": "anno-value1", "anno-key2": "anno-value2"}) if err != nil { t.Fatalf("unexpected error: %v", err) } @@ -531,7 +531,7 @@ func TestAnnotationsRun(t *testing.T) { } func TestAnnotationsRunWithNullValue(t *testing.T) { - m := resmaptest_test.NewRmBuilder(t, rf). + m := resmaptest_test.NewRmBuilder(t, resourceFactory). Add(map[string]interface{}{ "apiVersion": "v1", "kind": "ConfigMap", @@ -541,7 +541,7 @@ func TestAnnotationsRunWithNullValue(t *testing.T) { }, }).ResMap() - expected := resmaptest_test.NewRmBuilder(t, rf). + expected := resmaptest_test.NewRmBuilder(t, resourceFactory). Add(map[string]interface{}{ "apiVersion": "v1", "kind": "ConfigMap", @@ -554,9 +554,9 @@ func TestAnnotationsRunWithNullValue(t *testing.T) { }, }).ResMap() - at, err := NewAnnotationsMapTransformer( - map[string]string{"anno-key1": "anno-value1", "anno-key2": "anno-value2"}, - defaultTransformerConfig.CommonAnnotations) + at, err := NewMapTransformer( + builtinconfig.MakeDefaultConfig().CommonAnnotations, + map[string]string{"anno-key1": "anno-value1", "anno-key2": "anno-value2"}) if err != nil { t.Fatalf("unexpected error: %v", err) } diff --git a/pkg/transformers/multitransformer.go b/api/transform/multitransformer.go similarity index 74% rename from pkg/transformers/multitransformer.go rename to api/transform/multitransformer.go index 619ec6b84..e728ee8d2 100644 --- a/pkg/transformers/multitransformer.go +++ b/api/transform/multitransformer.go @@ -1,20 +1,7 @@ -/* -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 transformers +package transform import ( "fmt" diff --git a/pkg/transformers/mutatefield.go b/api/transform/mutatefield.go similarity index 73% rename from pkg/transformers/mutatefield.go rename to api/transform/mutatefield.go index 57caef8e0..3b50c6c72 100644 --- a/pkg/transformers/mutatefield.go +++ b/api/transform/mutatefield.go @@ -1,20 +1,7 @@ -/* -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 transformers +package transform import ( "fmt" diff --git a/pkg/transformers/mutatefield_test.go b/api/transform/mutatefield_test.go similarity index 86% rename from pkg/transformers/mutatefield_test.go rename to api/transform/mutatefield_test.go index 76403f42f..b849b3b8e 100644 --- a/pkg/transformers/mutatefield_test.go +++ b/api/transform/mutatefield_test.go @@ -1,27 +1,14 @@ -/* -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 transformers +package transform_test import ( "fmt" - "testing" - + . "sigs.k8s.io/kustomize/v3/api/transform" "sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct" "sigs.k8s.io/kustomize/v3/pkg/ifc" + "testing" ) type noopMutator struct { diff --git a/api/transform/nooptransformer.go b/api/transform/nooptransformer.go new file mode 100644 index 000000000..7c6c72e44 --- /dev/null +++ b/api/transform/nooptransformer.go @@ -0,0 +1,21 @@ +// Copyright 2019 The Kubernetes Authors. +// SPDX-License-Identifier: Apache-2.0 + +package transform + +import "sigs.k8s.io/kustomize/v3/pkg/resmap" + +// noOpTransformer contains a no-op transformer. +type noOpTransformer struct{} + +var _ resmap.Transformer = &noOpTransformer{} + +// newNoOpTransformer constructs a noOpTransformer. +func newNoOpTransformer() resmap.Transformer { + return &noOpTransformer{} +} + +// Transform does nothing. +func (o *noOpTransformer) Transform(_ resmap.ResMap) error { + return nil +} diff --git a/api/types/fieldspec_test.go b/api/types/fieldspec_test.go index 027d89162..46ed3c0db 100644 --- a/api/types/fieldspec_test.go +++ b/api/types/fieldspec_test.go @@ -1,7 +1,7 @@ // Copyright 2019 The Kubernetes Authors. // SPDX-License-Identifier: Apache-2.0 -package types +package types_test import ( "fmt" @@ -10,6 +10,7 @@ import ( "testing" "sigs.k8s.io/kustomize/v3/api/resid" + . "sigs.k8s.io/kustomize/v3/api/types" ) func TestPathSlice(t *testing.T) { diff --git a/docs/plugins/builtins.md b/docs/plugins/builtins.md index 74d2bd5f5..51eb86836 100644 --- a/docs/plugins/builtins.md +++ b/docs/plugins/builtins.md @@ -36,7 +36,7 @@ complete plugin argument specification. [types.GeneratorOptions]: ../../api/types/generatoroptions.go [types.SecretArgs]: ../../api/types/secretargs.go [types.ConfigMapArgs]: ../../api/types/configmapargs.go -[config.FieldSpec]: ../../pkg/transformers/config/fieldspec.go +[config.FieldSpec]: ../../api/builtinconfig/fieldspec.go [types.ObjectMeta]: ../../api/types/objectmeta.go [types.Selector]: ../../api/types/selector.go [types.Replica]: ../../api/types/replica.go diff --git a/examples/configureBuiltinPlugin.md b/examples/configureBuiltinPlugin.md index b5f5ef161..7e3ab4c57 100644 --- a/examples/configureBuiltinPlugin.md +++ b/examples/configureBuiltinPlugin.md @@ -4,7 +4,7 @@ [plugin]: ../docs/plugins [fields]: ../docs/fields.md [fields in a kustomization file]: ../docs/fields.md -[TransformerConfig]: ../pkg/transformers/config/transformerconfig.go +[TransformerConfig]: ../api/builtinconfig/transformerconfig.go [kustomization]: ../docs/glossary.md#kustomization # Customizing kustomize diff --git a/go.sum b/go.sum index 0e66765ed..378eb7376 100644 --- a/go.sum +++ b/go.sum @@ -438,6 +438,7 @@ mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b h1:DxJ5nJdkhDlLok9K6qO+5290kphD mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4= mvdan.cc/unparam v0.0.0-20190720180237-d51796306d8f h1:Cq7MalBHYACRd6EesksG1Q8EoIAKOsiZviGKbOLIej4= mvdan.cc/unparam v0.0.0-20190720180237-d51796306d8f/go.mod h1:4G1h5nDURzA3bwVMZIVpwbkw+04kSxk3rAtzlimaUJw= +sigs.k8s.io/kustomize v2.0.3+incompatible h1:JUufWFNlI44MdtnjUqVnvh29rR37PQFzPbLXqhyOyX0= sigs.k8s.io/kustomize/pluginator v1.0.0 h1:aeLqD8CIaqr++49YrcuRUcXl5vVKYLhCSfwXUi3ifQ4= sigs.k8s.io/kustomize/pluginator v1.0.0/go.mod h1:i8HdU5FdH1zDjCKiFf5CNl7slsc0QffyKsY2OuPynJ0= sigs.k8s.io/kustomize/v3 v3.2.0/go.mod h1:ztX4zYc/QIww3gSripwF7TBOarBTm5BvyAMem0kCzOE= diff --git a/kustomize/internal/commands/config/config.go b/kustomize/internal/commands/config/config.go index c73ab3ba5..92e8addb9 100644 --- a/kustomize/internal/commands/config/config.go +++ b/kustomize/internal/commands/config/config.go @@ -9,8 +9,8 @@ import ( "github.com/spf13/cobra" + "sigs.k8s.io/kustomize/v3/api/builtinconfig/consts" "sigs.k8s.io/kustomize/v3/api/filesys" - "sigs.k8s.io/kustomize/v3/pkg/transformers/config/defaultconfig" ) // NewCmdConfig returns an instance of 'config' subcommand. @@ -89,7 +89,7 @@ func (o *saveOptions) Complete(fSys filesys.FileSystem) error { // RunSave saves the default transformer configurations local directory func (o *saveOptions) RunSave(fSys filesys.FileSystem) error { - m := defaultconfig.GetDefaultFieldSpecsAsMap() + m := consts.GetDefaultFieldSpecsAsMap() for tname, tcfg := range m { filename := filepath.Join(o.saveDirectory, tname+".yaml") err := fSys.WriteFile(filename, []byte(tcfg)) diff --git a/pkg/transformers/config/factorycrd.go b/pkg/accumulator/loadconfigfromcrds.go similarity index 82% rename from pkg/transformers/config/factorycrd.go rename to pkg/accumulator/loadconfigfromcrds.go index 840c0fd05..7dad2e2ee 100644 --- a/pkg/transformers/config/factorycrd.go +++ b/pkg/accumulator/loadconfigfromcrds.go @@ -1,30 +1,18 @@ -/* -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 accumulator import ( "encoding/json" - "sigs.k8s.io/kustomize/v3/api/resid" - "sigs.k8s.io/kustomize/v3/api/types" "strings" "github.com/go-openapi/spec" "github.com/pkg/errors" "k8s.io/kube-openapi/pkg/common" + "sigs.k8s.io/kustomize/v3/api/builtinconfig" + "sigs.k8s.io/kustomize/v3/api/resid" + "sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/pkg/ifc" "sigs.k8s.io/yaml" ) @@ -34,8 +22,8 @@ type nameToApiMap map[string]common.OpenAPIDefinition // LoadConfigFromCRDs parse CRD schemas from paths into a TransformerConfig func LoadConfigFromCRDs( - ldr ifc.Loader, paths []string) (*TransformerConfig, error) { - tc := MakeEmptyConfig() + ldr ifc.Loader, paths []string) (*builtinconfig.TransformerConfig, error) { + tc := builtinconfig.MakeEmptyConfig() for _, path := range paths { content, err := ldr.Load(path) if err != nil { @@ -66,13 +54,13 @@ func makeNameToApiMap(content []byte) (result nameToApiMap, err error) { return } -func makeConfigFromApiMap(m nameToApiMap) (*TransformerConfig, error) { - result := MakeEmptyConfig() +func makeConfigFromApiMap(m nameToApiMap) (*builtinconfig.TransformerConfig, error) { + result := builtinconfig.MakeEmptyConfig() for name, api := range m { if !looksLikeAk8sType(api.Schema.SchemaProps.Properties) { continue } - tc := MakeEmptyConfig() + tc := builtinconfig.MakeEmptyConfig() err := loadCrdIntoConfig( tc, makeGvkFromTypeName(name), m, name, []string{}) if err != nil { @@ -134,7 +122,7 @@ const ( // loadCrdIntoConfig loads a CRD spec into a TransformerConfig func loadCrdIntoConfig( - theConfig *TransformerConfig, theGvk resid.Gvk, theMap nameToApiMap, + theConfig *builtinconfig.TransformerConfig, theGvk resid.Gvk, theMap nameToApiMap, typeName string, path []string) (err error) { api, ok := theMap[typeName] if !ok { @@ -174,7 +162,7 @@ func loadCrdIntoConfig( nameKey = "name" } err = theConfig.AddNamereferenceFieldSpec( - NameBackReferences{ + builtinconfig.NameBackReferences{ Gvk: resid.Gvk{Kind: kind, Version: version}, FieldSpecs: []types.FieldSpec{ makeFs(theGvk, append(path, propName, nameKey))}, diff --git a/pkg/transformers/config/factorycrd_test.go b/pkg/accumulator/loadconfigfromcrds_test.go similarity index 89% rename from pkg/transformers/config/factorycrd_test.go rename to pkg/accumulator/loadconfigfromcrds_test.go index 65ee38a5a..59b3f4fa2 100644 --- a/pkg/transformers/config/factorycrd_test.go +++ b/pkg/accumulator/loadconfigfromcrds_test.go @@ -1,28 +1,17 @@ -/* -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 accumulator_test import ( "reflect" - "sigs.k8s.io/kustomize/v3/api/resid" - "sigs.k8s.io/kustomize/v3/api/types" "testing" + "sigs.k8s.io/kustomize/v3/api/builtinconfig" + "sigs.k8s.io/kustomize/v3/api/resid" + "sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/internal/loadertest" + . "sigs.k8s.io/kustomize/v3/pkg/accumulator" "sigs.k8s.io/kustomize/v3/pkg/ifc" ) @@ -156,7 +145,7 @@ func makeLoader(t *testing.T) ifc.Loader { } func TestLoadCRDs(t *testing.T) { - nbrs := []NameBackReferences{ + nbrs := []builtinconfig.NameBackReferences{ { Gvk: resid.Gvk{Kind: "Secret", Version: "v1"}, FieldSpecs: []types.FieldSpec{ @@ -179,7 +168,7 @@ func TestLoadCRDs(t *testing.T) { }, } - expectedTc := &TransformerConfig{ + expectedTc := &builtinconfig.TransformerConfig{ NameReference: nbrs, } diff --git a/pkg/transformers/namereference.go b/pkg/accumulator/namereferencetransformer.go similarity index 96% rename from pkg/transformers/namereference.go rename to pkg/accumulator/namereferencetransformer.go index 378701894..9b73c8edc 100644 --- a/pkg/transformers/namereference.go +++ b/pkg/accumulator/namereferencetransformer.go @@ -1,28 +1,28 @@ // Copyright 2019 The Kubernetes Authors. // SPDX-License-Identifier: Apache-2.0 -package transformers +package accumulator import ( "fmt" "log" + + "sigs.k8s.io/kustomize/v3/api/builtinconfig" "sigs.k8s.io/kustomize/v3/api/resid" - - "sigs.k8s.io/kustomize/v3/pkg/resource" - + "sigs.k8s.io/kustomize/v3/api/transform" "sigs.k8s.io/kustomize/v3/pkg/resmap" - "sigs.k8s.io/kustomize/v3/pkg/transformers/config" + "sigs.k8s.io/kustomize/v3/pkg/resource" ) type nameReferenceTransformer struct { - backRefs []config.NameBackReferences + backRefs []builtinconfig.NameBackReferences } var _ resmap.Transformer = &nameReferenceTransformer{} -// NewNameReferenceTransformer constructs a nameReferenceTransformer +// newNameReferenceTransformer constructs a nameReferenceTransformer // with a given slice of NameBackReferences. -func NewNameReferenceTransformer(br []config.NameBackReferences) resmap.Transformer { +func newNameReferenceTransformer(br []builtinconfig.NameBackReferences) resmap.Transformer { if br == nil { log.Fatal("backrefs not expected to be nil") } @@ -86,7 +86,7 @@ func (o *nameReferenceTransformer) Transform(m resmap.ResMap) error { if candidates == nil { candidates = m.SubsetThatCouldBeReferencedByResource(referrer) } - err := MutateField( + err := transform.MutateField( referrer.Map(), fSpec.PathSlice(), fSpec.CreateIfNotPresent, diff --git a/pkg/transformers/namereference_test.go b/pkg/accumulator/namereferencetransformer_test.go similarity index 97% rename from pkg/transformers/namereference_test.go rename to pkg/accumulator/namereferencetransformer_test.go index 264be3dce..050fd40e3 100644 --- a/pkg/transformers/namereference_test.go +++ b/pkg/accumulator/namereferencetransformer_test.go @@ -1,12 +1,13 @@ // Copyright 2019 The Kubernetes Authors. // SPDX-License-Identifier: Apache-2.0 -package transformers +package accumulator import ( "strings" "testing" + "sigs.k8s.io/kustomize/v3/api/builtinconfig" "sigs.k8s.io/kustomize/v3/api/resid" "sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct" "sigs.k8s.io/kustomize/v3/pkg/resmap" @@ -462,7 +463,7 @@ func TestNameReferenceHappyRun(t *testing.T) { }, }).ResMap() - nrt := NewNameReferenceTransformer(defaultTransformerConfig.NameReference) + nrt := newNameReferenceTransformer(builtinconfig.MakeDefaultConfig().NameReference) err := nrt.Transform(m) if err != nil { t.Fatalf("unexpected error: %v", err) @@ -522,7 +523,7 @@ func TestNameReferenceUnhappyRun(t *testing.T) { expectedErr: "is expected to contain a name field"}, } - nrt := NewNameReferenceTransformer(defaultTransformerConfig.NameReference) + nrt := newNameReferenceTransformer(builtinconfig.MakeDefaultConfig().NameReference) for _, test := range tests { err := nrt.Transform(test.resMap) if err == nil { @@ -580,7 +581,7 @@ func TestNameReferencePersistentVolumeHappyRun(t *testing.T) { m1 := resmaptest_test.NewRmBuilder(t, rf).AddR(v1).AddR(c1).ResMap() - nrt := NewNameReferenceTransformer(defaultTransformerConfig.NameReference) + nrt := newNameReferenceTransformer(builtinconfig.MakeDefaultConfig().NameReference) if err := nrt.Transform(m1); err != nil { t.Fatalf("unexpected error: %v", err) } @@ -719,7 +720,7 @@ func TestNameReferenceNamespace(t *testing.T) { ReplaceResource(deploymentMap(ns1, prefixedname, prefixedname, prefixedname)). ReplaceResource(deploymentMap(ns2, suffixedname, suffixedname, suffixedname)).ResMap() - nrt := NewNameReferenceTransformer(defaultTransformerConfig.NameReference) + nrt := newNameReferenceTransformer(builtinconfig.MakeDefaultConfig().NameReference) err := nrt.Transform(m) if err != nil { t.Fatalf("unexpected error: %v", err) @@ -882,7 +883,7 @@ func TestNameReferenceClusterWide(t *testing.T) { clusterRole, _ := expected.GetByCurrentId(clusterRoleId) clusterRole.AppendRefBy(clusterRoleBindingId) - nrt := NewNameReferenceTransformer(defaultTransformerConfig.NameReference) + nrt := newNameReferenceTransformer(builtinconfig.MakeDefaultConfig().NameReference) err := nrt.Transform(m) if err != nil { t.Fatalf("unexpected error: %v", err) @@ -1010,7 +1011,7 @@ func TestNameReferenceNamespaceTransformation(t *testing.T) { clusterRole, _ := expected.GetByCurrentId(clusterRoleId) clusterRole.AppendRefBy(clusterRoleBindingId) - nrt := NewNameReferenceTransformer(defaultTransformerConfig.NameReference) + nrt := newNameReferenceTransformer(builtinconfig.MakeDefaultConfig().NameReference) err := nrt.Transform(m) if err != nil { t.Fatalf("unexpected error: %v", err) @@ -1048,7 +1049,7 @@ func TestNameReferenceCandidateSelection(t *testing.T) { ReplaceResource(deploymentMap("", "p1-deploy1", "p1-cm1-hash", "p1-secret1-hash")). ResMap() - nrt := NewNameReferenceTransformer(defaultTransformerConfig.NameReference) + nrt := newNameReferenceTransformer(builtinconfig.MakeDefaultConfig().NameReference) err := nrt.Transform(m) if err != nil { t.Fatalf("unexpected error: %v", err) diff --git a/pkg/transformers/refvars.go b/pkg/accumulator/refvartransformer.go similarity index 71% rename from pkg/transformers/refvars.go rename to pkg/accumulator/refvartransformer.go index ffe006af9..6c0cfa25a 100644 --- a/pkg/transformers/refvars.go +++ b/pkg/accumulator/refvartransformer.go @@ -1,42 +1,30 @@ -/* -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 transformers +package accumulator import ( "fmt" - "sigs.k8s.io/kustomize/v3/api/types" + "sigs.k8s.io/kustomize/v3/api/transform" + "sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/pkg/expansion" "sigs.k8s.io/kustomize/v3/pkg/resmap" ) -type RefVarTransformer struct { +type refVarTransformer struct { varMap map[string]interface{} replacementCounts map[string]int fieldSpecs []types.FieldSpec mappingFunc func(string) interface{} } -// NewRefVarTransformer returns a new RefVarTransformer +// newRefVarTransformer returns a new refVarTransformer // 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 []types.FieldSpec) *RefVarTransformer { - return &RefVarTransformer{ +func newRefVarTransformer( + varMap map[string]interface{}, fs []types.FieldSpec) *refVarTransformer { + return &refVarTransformer{ varMap: varMap, fieldSpecs: fs, } @@ -46,7 +34,7 @@ func NewRefVarTransformer( // embedded instances of $VAR style variables, e.g. a container command string. // The function returns the string with the variables expanded to their final // values. -func (rv *RefVarTransformer) replaceVars(in interface{}) (interface{}, error) { +func (rv *refVarTransformer) replaceVars(in interface{}) (interface{}, error) { switch vt := in.(type) { case []interface{}: var xs []interface{} @@ -90,7 +78,7 @@ func (rv *RefVarTransformer) replaceVars(in interface{}) (interface{}, error) { // UnusedVars returns slice of Var names that were unused // after a Transform run. -func (rv *RefVarTransformer) UnusedVars() []string { +func (rv *refVarTransformer) UnusedVars() []string { var unused []string for k := range rv.varMap { _, ok := rv.replacementCounts[k] @@ -102,14 +90,14 @@ func (rv *RefVarTransformer) UnusedVars() []string { } // Transform replaces $(VAR) style variables with values. -func (rv *RefVarTransformer) Transform(m resmap.ResMap) error { +func (rv *refVarTransformer) Transform(m resmap.ResMap) error { rv.replacementCounts = make(map[string]int) rv.mappingFunc = expansion.MappingFuncFor( rv.replacementCounts, rv.varMap) for _, res := range m.Resources() { for _, fieldSpec := range rv.fieldSpecs { if res.OrgId().IsSelected(&fieldSpec.Gvk) { - if err := MutateField( + if err := transform.MutateField( res.Map(), fieldSpec.PathSlice(), false, rv.replaceVars); err != nil { return err diff --git a/pkg/transformers/refvars_test.go b/pkg/accumulator/refvartransformer_test.go similarity index 87% rename from pkg/transformers/refvars_test.go rename to pkg/accumulator/refvartransformer_test.go index 97bad29a8..fd2e4ea2c 100644 --- a/pkg/transformers/refvars_test.go +++ b/pkg/accumulator/refvartransformer_test.go @@ -1,19 +1,21 @@ // Copyright 2019 The Kubernetes Authors. // SPDX-License-Identifier: Apache-2.0 -package transformers +package accumulator import ( "reflect" - "sigs.k8s.io/kustomize/v3/api/resid" - "sigs.k8s.io/kustomize/v3/api/types" "testing" + "sigs.k8s.io/kustomize/v3/api/resid" + "sigs.k8s.io/kustomize/v3/api/types" + "sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct" "sigs.k8s.io/kustomize/v3/pkg/resmap" "sigs.k8s.io/kustomize/v3/pkg/resmaptest" + "sigs.k8s.io/kustomize/v3/pkg/resource" ) -func TestVarRef(t *testing.T) { +func TestRefVarTransformer(t *testing.T) { type given struct { varMap map[string]interface{} fs []types.FieldSpec @@ -44,7 +46,8 @@ func TestVarRef(t *testing.T) { {Gvk: resid.Gvk{Version: "v1", Kind: "ConfigMap"}, Path: "data/nil"}, {Gvk: resid.Gvk{Version: "v1", Kind: "ConfigMap"}, Path: "data/num"}, }, - res: resmaptest_test.NewRmBuilder(t, rf). + res: resmaptest_test.NewRmBuilder( + t, resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl())). Add(map[string]interface{}{ "apiVersion": "v1", "kind": "ConfigMap", @@ -75,7 +78,8 @@ func TestVarRef(t *testing.T) { }}).ResMap(), }, expected: expected{ - res: resmaptest_test.NewRmBuilder(t, rf). + res: resmaptest_test.NewRmBuilder( + t, resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl())). Add(map[string]interface{}{ "apiVersion": "v1", "kind": "ConfigMap", @@ -112,7 +116,7 @@ func TestVarRef(t *testing.T) { for _, tc := range testCases { t.Run(tc.description, func(t *testing.T) { // arrange - tr := NewRefVarTransformer(tc.given.varMap, tc.given.fs) + tr := newRefVarTransformer(tc.given.varMap, tc.given.fs) // act err := tr.Transform(tc.given.res) diff --git a/pkg/accumulator/resaccumulator.go b/pkg/accumulator/resaccumulator.go index 5f378e14d..ec9398afd 100644 --- a/pkg/accumulator/resaccumulator.go +++ b/pkg/accumulator/resaccumulator.go @@ -8,11 +8,10 @@ import ( "log" "strings" + "sigs.k8s.io/kustomize/v3/api/builtinconfig" "sigs.k8s.io/kustomize/v3/api/resid" "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" ) // ResAccumulator accumulates resources and the rules @@ -20,14 +19,14 @@ import ( // plus stuff needed to modify the ResMap. type ResAccumulator struct { resMap resmap.ResMap - tConfig *config.TransformerConfig + tConfig *builtinconfig.TransformerConfig varSet types.VarSet } func MakeEmptyAccumulator() *ResAccumulator { ra := &ResAccumulator{} ra.resMap = resmap.New() - ra.tConfig = &config.TransformerConfig{} + ra.tConfig = &builtinconfig.TransformerConfig{} ra.varSet = types.NewVarSet() return ra } @@ -53,12 +52,12 @@ func (ra *ResAccumulator) AbsorbAll( } func (ra *ResAccumulator) MergeConfig( - tConfig *config.TransformerConfig) (err error) { + tConfig *builtinconfig.TransformerConfig) (err error) { ra.tConfig, err = ra.tConfig.Merge(tConfig) return err } -func (ra *ResAccumulator) GetTransformerConfig() *config.TransformerConfig { +func (ra *ResAccumulator) GetTransformerConfig() *builtinconfig.TransformerConfig { return ra.tConfig } @@ -147,7 +146,7 @@ func (ra *ResAccumulator) ResolveVars() error { if len(replacementMap) == 0 { return nil } - t := transformers.NewRefVarTransformer( + t := newRefVarTransformer( replacementMap, ra.tConfig.VarReference) err = ra.Transform(t) if len(t.UnusedVars()) > 0 { @@ -162,6 +161,6 @@ func (ra *ResAccumulator) FixBackReferences() (err error) { if ra.tConfig.NameReference == nil { return nil } - return ra.Transform(transformers.NewNameReferenceTransformer( + return ra.Transform(newNameReferenceTransformer( ra.tConfig.NameReference)) } diff --git a/pkg/accumulator/resaccumulator_test.go b/pkg/accumulator/resaccumulator_test.go index 52d432822..8b2fbfef4 100644 --- a/pkg/accumulator/resaccumulator_test.go +++ b/pkg/accumulator/resaccumulator_test.go @@ -10,6 +10,7 @@ import ( "strings" "testing" + "sigs.k8s.io/kustomize/v3/api/builtinconfig" "sigs.k8s.io/kustomize/v3/api/resid" "sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct" @@ -17,12 +18,11 @@ import ( "sigs.k8s.io/kustomize/v3/pkg/resmap" "sigs.k8s.io/kustomize/v3/pkg/resmaptest" "sigs.k8s.io/kustomize/v3/pkg/resource" - "sigs.k8s.io/kustomize/v3/pkg/transformers/config" ) func makeResAccumulator(t *testing.T) (*ResAccumulator, *resource.Factory) { ra := MakeEmptyAccumulator() - err := ra.MergeConfig(config.MakeDefaultConfig()) + err := ra.MergeConfig(builtinconfig.MakeDefaultConfig()) if err != nil { t.Fatalf("unexpected err: %v", err) } diff --git a/pkg/target/kusttarget.go b/pkg/target/kusttarget.go index e500659d2..69b392dd9 100644 --- a/pkg/target/kusttarget.go +++ b/pkg/target/kusttarget.go @@ -10,17 +10,17 @@ import ( "encoding/json" "fmt" "log" + "sigs.k8s.io/kustomize/v3/api/transform" "strings" "github.com/pkg/errors" + "sigs.k8s.io/kustomize/v3/api/builtinconfig" "sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/pkg/accumulator" "sigs.k8s.io/kustomize/v3/pkg/ifc" "sigs.k8s.io/kustomize/v3/pkg/pgmconfig" "sigs.k8s.io/kustomize/v3/pkg/plugins" "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/kustomize/v3/plugin/builtin" "sigs.k8s.io/yaml" ) @@ -216,7 +216,7 @@ func (kt *KustTarget) AccumulateTarget() ( if err != nil { return nil, errors.Wrap(err, "accumulating resources") } - tConfig, err := config.MakeTransformerConfig( + tConfig, err := builtinconfig.MakeTransformerConfig( kt.ldr, kt.kustomization.Configurations) if err != nil { return nil, err @@ -226,7 +226,7 @@ func (kt *KustTarget) AccumulateTarget() ( return nil, errors.Wrapf( err, "merging config %v", tConfig) } - crdTc, err := config.LoadConfigFromCRDs(kt.ldr, kt.kustomization.Crds) + crdTc, err := accumulator.LoadConfigFromCRDs(kt.ldr, kt.kustomization.Crds) if err != nil { return nil, errors.Wrapf( err, "loading CRDs %v", kt.kustomization.Crds) @@ -300,7 +300,7 @@ func (kt *KustTarget) runTransformers(ra *accumulator.ResAccumulator) error { return err } r = append(r, lts...) - t := transformers.NewMultiTransformer(r) + t := transform.NewMultiTransformer(r) return ra.Transform(t) } diff --git a/pkg/target/kusttarget_configplugin.go b/pkg/target/kusttarget_configplugin.go index 806fbd0e8..a562bdcd9 100644 --- a/pkg/target/kusttarget_configplugin.go +++ b/pkg/target/kusttarget_configplugin.go @@ -4,10 +4,10 @@ package target import ( + "sigs.k8s.io/kustomize/v3/api/builtinconfig" "sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/pkg/plugins" "sigs.k8s.io/kustomize/v3/pkg/resmap" - "sigs.k8s.io/kustomize/v3/pkg/transformers/config" ) // Functions dedicated to configuring the builtin @@ -42,7 +42,7 @@ func (kt *KustTarget) configureBuiltinGenerators() ( } func (kt *KustTarget) configureBuiltinTransformers( - tc *config.TransformerConfig) ( + tc *builtinconfig.TransformerConfig) ( result []resmap.Transformer, err error) { for _, bpt := range []plugins.BuiltinPluginType{ plugins.PatchStrategicMergeTransformer, @@ -120,9 +120,9 @@ var transformerConfigurators = map[plugins.BuiltinPluginType]func( kt *KustTarget, bpt plugins.BuiltinPluginType, f tFactory, - tc *config.TransformerConfig) (result []resmap.Transformer, err error){ + tc *builtinconfig.TransformerConfig) (result []resmap.Transformer, err error){ plugins.NamespaceTransformer: func( - kt *KustTarget, bpt plugins.BuiltinPluginType, f tFactory, tc *config.TransformerConfig) ( + kt *KustTarget, bpt plugins.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) ( result []resmap.Transformer, err error) { var c struct { types.ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` @@ -140,7 +140,7 @@ var transformerConfigurators = map[plugins.BuiltinPluginType]func( }, plugins.PatchJson6902Transformer: func( - kt *KustTarget, bpt plugins.BuiltinPluginType, f tFactory, _ *config.TransformerConfig) ( + kt *KustTarget, bpt plugins.BuiltinPluginType, f tFactory, _ *builtinconfig.TransformerConfig) ( result []resmap.Transformer, err error) { var c struct { Target types.PatchTarget `json:"target,omitempty" yaml:"target,omitempty"` @@ -161,7 +161,7 @@ var transformerConfigurators = map[plugins.BuiltinPluginType]func( return }, plugins.PatchStrategicMergeTransformer: func( - kt *KustTarget, bpt plugins.BuiltinPluginType, f tFactory, _ *config.TransformerConfig) ( + kt *KustTarget, bpt plugins.BuiltinPluginType, f tFactory, _ *builtinconfig.TransformerConfig) ( result []resmap.Transformer, err error) { if len(kt.kustomization.PatchesStrategicMerge) == 0 { return @@ -180,7 +180,7 @@ var transformerConfigurators = map[plugins.BuiltinPluginType]func( return }, plugins.PatchTransformer: func( - kt *KustTarget, bpt plugins.BuiltinPluginType, f tFactory, _ *config.TransformerConfig) ( + kt *KustTarget, bpt plugins.BuiltinPluginType, f tFactory, _ *builtinconfig.TransformerConfig) ( result []resmap.Transformer, err error) { if len(kt.kustomization.Patches) == 0 { return @@ -204,7 +204,7 @@ var transformerConfigurators = map[plugins.BuiltinPluginType]func( return }, plugins.LabelTransformer: func( - kt *KustTarget, bpt plugins.BuiltinPluginType, f tFactory, tc *config.TransformerConfig) ( + kt *KustTarget, bpt plugins.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) ( result []resmap.Transformer, err error) { var c struct { Labels map[string]string @@ -221,7 +221,7 @@ var transformerConfigurators = map[plugins.BuiltinPluginType]func( return }, plugins.AnnotationsTransformer: func( - kt *KustTarget, bpt plugins.BuiltinPluginType, f tFactory, tc *config.TransformerConfig) ( + kt *KustTarget, bpt plugins.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) ( result []resmap.Transformer, err error) { var c struct { Annotations map[string]string @@ -238,7 +238,7 @@ var transformerConfigurators = map[plugins.BuiltinPluginType]func( return }, plugins.PrefixSuffixTransformer: func( - kt *KustTarget, bpt plugins.BuiltinPluginType, f tFactory, tc *config.TransformerConfig) ( + kt *KustTarget, bpt plugins.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) ( result []resmap.Transformer, err error) { var c struct { Prefix string @@ -257,7 +257,7 @@ var transformerConfigurators = map[plugins.BuiltinPluginType]func( return }, plugins.ImageTagTransformer: func( - kt *KustTarget, bpt plugins.BuiltinPluginType, f tFactory, tc *config.TransformerConfig) ( + kt *KustTarget, bpt plugins.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) ( result []resmap.Transformer, err error) { var c struct { ImageTag types.Image @@ -276,7 +276,7 @@ var transformerConfigurators = map[plugins.BuiltinPluginType]func( return }, plugins.ReplicaCountTransformer: func( - kt *KustTarget, bpt plugins.BuiltinPluginType, f tFactory, tc *config.TransformerConfig) ( + kt *KustTarget, bpt plugins.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) ( result []resmap.Transformer, err error) { var c struct { Replica types.Replica diff --git a/pkg/transformers/config/defaultconfig/images.go b/pkg/transformers/config/defaultconfig/images.go deleted file mode 100644 index 7612b616c..000000000 --- a/pkg/transformers/config/defaultconfig/images.go +++ /dev/null @@ -1,23 +0,0 @@ -/* -Copyright 2019 The Kubernetes Authors. - -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 defaultconfig - -const ( - // imageFieldSpecs is left empty since `containers` and `initContainers` - // of *ANY* kind in *ANY* path are builtin supported in code - imagesFieldSpecs = `` -) diff --git a/pkg/transformers/config/defaultconfig/nameprefix.go b/pkg/transformers/config/defaultconfig/nameprefix.go deleted file mode 100644 index 94fe07a48..000000000 --- a/pkg/transformers/config/defaultconfig/nameprefix.go +++ /dev/null @@ -1,24 +0,0 @@ -/* -Copyright 2018 The Kubernetes Authors. - -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 defaultconfig - -const ( - namePrefixFieldSpecs = ` -namePrefix: -- path: metadata/name -` -) diff --git a/pkg/transformers/config/defaultconfig/namespace.go b/pkg/transformers/config/defaultconfig/namespace.go deleted file mode 100644 index 0cb24de9d..000000000 --- a/pkg/transformers/config/defaultconfig/namespace.go +++ /dev/null @@ -1,29 +0,0 @@ -/* -Copyright 2018 The Kubernetes Authors. - -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 defaultconfig - -const ( - namespaceFieldSpecs = ` -namespace: -- path: metadata/namespace - create: true -- path: subjects - kind: RoleBinding -- path: subjects - kind: ClusterRoleBinding -` -) diff --git a/pkg/transformers/config/factory.go b/pkg/transformers/config/factory.go deleted file mode 100644 index c384f6bdc..000000000 --- a/pkg/transformers/config/factory.go +++ /dev/null @@ -1,87 +0,0 @@ -/* -Copyright 2018 The Kubernetes Authors. - -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 - -import ( - "log" - - "sigs.k8s.io/kustomize/v3/pkg/ifc" - "sigs.k8s.io/yaml" -) - -// Factory makes instances of TransformerConfig. -type Factory struct { - ldr ifc.Loader -} - -// MakeTransformerConfig returns a merger of custom config, -// if any, with default config. -func MakeTransformerConfig( - ldr ifc.Loader, paths []string) (*TransformerConfig, error) { - t1 := MakeDefaultConfig() - if len(paths) == 0 { - return t1, nil - } - t2, err := NewFactory(ldr).FromFiles(paths) - if err != nil { - return nil, err - } - return t1.Merge(t2) -} - -func NewFactory(l ifc.Loader) *Factory { - return &Factory{ldr: l} -} - -func (tf *Factory) loader() ifc.Loader { - if tf.ldr.(ifc.Loader) == nil { - log.Fatal("no loader") - } - return tf.ldr -} - -// FromFiles returns a TranformerConfig object from a list of files -func (tf *Factory) FromFiles( - paths []string) (*TransformerConfig, error) { - result := &TransformerConfig{} - for _, path := range paths { - data, err := tf.loader().Load(path) - if err != nil { - return nil, err - } - t, err := makeTransformerConfigFromBytes(data) - if err != nil { - return nil, err - } - result, err = result.Merge(t) - if err != nil { - return nil, err - } - } - return result, nil -} - -// makeTransformerConfigFromBytes returns a TransformerConfig object from bytes -func makeTransformerConfigFromBytes(data []byte) (*TransformerConfig, error) { - var t TransformerConfig - err := yaml.Unmarshal(data, &t) - if err != nil { - return nil, err - } - t.sortFields() - return &t, nil -} diff --git a/pkg/transformers/doc.go b/pkg/transformers/doc.go deleted file mode 100644 index c3226119b..000000000 --- a/pkg/transformers/doc.go +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2019 The Kubernetes Authors. -// SPDX-License-Identifier: Apache-2.0 - -// Utilities to aid transformer plugins. -// -// TODO: Push remaining code down into the plugins -// or into an appropriately named utility package. -// This package made more sense in the pre-plugin days. -package transformers diff --git a/pkg/transformers/nooptransformer.go b/pkg/transformers/nooptransformer.go deleted file mode 100644 index 6985ada50..000000000 --- a/pkg/transformers/nooptransformer.go +++ /dev/null @@ -1,34 +0,0 @@ -/* -Copyright 2018 The Kubernetes Authors. - -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 transformers - -import "sigs.k8s.io/kustomize/v3/pkg/resmap" - -// noOpTransformer contains a no-op transformer. -type noOpTransformer struct{} - -var _ resmap.Transformer = &noOpTransformer{} - -// NewNoOpTransformer constructs a noOpTransformer. -func NewNoOpTransformer() resmap.Transformer { - return &noOpTransformer{} -} - -// Transform does nothing. -func (o *noOpTransformer) Transform(_ resmap.ResMap) error { - return nil -} diff --git a/plugin/builtin/AnnotationsTransformer.go b/plugin/builtin/AnnotationsTransformer.go index 8f5f6ca54..0e480038a 100644 --- a/plugin/builtin/AnnotationsTransformer.go +++ b/plugin/builtin/AnnotationsTransformer.go @@ -2,9 +2,9 @@ package builtin import ( + "sigs.k8s.io/kustomize/v3/api/transform" "sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/pkg/resmap" - "sigs.k8s.io/kustomize/v3/pkg/transformers" "sigs.k8s.io/yaml" ) @@ -22,7 +22,7 @@ func (p *AnnotationsTransformerPlugin) Config( } func (p *AnnotationsTransformerPlugin) Transform(m resmap.ResMap) error { - t, err := transformers.NewMapTransformer( + t, err := transform.NewMapTransformer( p.FieldSpecs, p.Annotations, ) diff --git a/plugin/builtin/ImageTagTransformer.go b/plugin/builtin/ImageTagTransformer.go index 1d2e30109..619510f93 100644 --- a/plugin/builtin/ImageTagTransformer.go +++ b/plugin/builtin/ImageTagTransformer.go @@ -4,11 +4,11 @@ package builtin import ( "fmt" "regexp" + "sigs.k8s.io/kustomize/v3/api/transform" "sigs.k8s.io/kustomize/v3/api/types" "strings" "sigs.k8s.io/kustomize/v3/pkg/resmap" - "sigs.k8s.io/kustomize/v3/pkg/transformers" "sigs.k8s.io/yaml" ) @@ -32,7 +32,7 @@ func (p *ImageTagTransformerPlugin) Transform(m resmap.ResMap) error { if !r.OrgId().IsSelected(&path.Gvk) { continue } - err := transformers.MutateField( + err := transform.MutateField( r.Map(), path.PathSlice(), false, p.mutateImage) if err != nil { return err diff --git a/plugin/builtin/LabelTransformer.go b/plugin/builtin/LabelTransformer.go index dc2e16fed..139be738f 100644 --- a/plugin/builtin/LabelTransformer.go +++ b/plugin/builtin/LabelTransformer.go @@ -2,9 +2,9 @@ package builtin import ( + "sigs.k8s.io/kustomize/v3/api/transform" "sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/pkg/resmap" - "sigs.k8s.io/kustomize/v3/pkg/transformers" "sigs.k8s.io/yaml" ) @@ -22,7 +22,7 @@ func (p *LabelTransformerPlugin) Config( } func (p *LabelTransformerPlugin) Transform(m resmap.ResMap) error { - t, err := transformers.NewMapTransformer( + t, err := transform.NewMapTransformer( p.FieldSpecs, p.Labels, ) diff --git a/plugin/builtin/NamespaceTransformer.go b/plugin/builtin/NamespaceTransformer.go index 0fdd9ea1d..927d8c298 100644 --- a/plugin/builtin/NamespaceTransformer.go +++ b/plugin/builtin/NamespaceTransformer.go @@ -3,12 +3,12 @@ package builtin import ( "fmt" + "sigs.k8s.io/kustomize/v3/api/transform" "sigs.k8s.io/kustomize/v3/api/resid" "sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/pkg/resmap" "sigs.k8s.io/kustomize/v3/pkg/resource" - "sigs.k8s.io/kustomize/v3/pkg/transformers" "sigs.k8s.io/yaml" ) @@ -39,7 +39,7 @@ func (p *NamespaceTransformerPlugin) Transform(m resmap.ResMap) error { applicableFs := p.applicableFieldSpecs(id) for _, fs := range applicableFs { - err := transformers.MutateField( + err := transform.MutateField( r.Map(), fs.PathSlice(), fs.CreateIfNotPresent, p.changeNamespace(r)) if err != nil { diff --git a/plugin/builtin/PrefixSuffixTransformer.go b/plugin/builtin/PrefixSuffixTransformer.go index dfad058b2..bafa71faa 100644 --- a/plugin/builtin/PrefixSuffixTransformer.go +++ b/plugin/builtin/PrefixSuffixTransformer.go @@ -4,11 +4,11 @@ package builtin import ( "errors" "fmt" + "sigs.k8s.io/kustomize/v3/api/transform" "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/yaml" ) @@ -79,7 +79,7 @@ func (p *PrefixSuffixTransformerPlugin) Transform(m resmap.ResMap) error { // the addPrefixSuffix method will not // change the name if both the prefix and suffix // are empty. - err := transformers.MutateField( + err := transform.MutateField( r.Map(), path.PathSlice(), path.CreateIfNotPresent, diff --git a/plugin/builtin/ReplicaCountTransformer.go b/plugin/builtin/ReplicaCountTransformer.go index 1eb357e2c..f0fe13c95 100644 --- a/plugin/builtin/ReplicaCountTransformer.go +++ b/plugin/builtin/ReplicaCountTransformer.go @@ -3,11 +3,11 @@ package builtin import ( "fmt" + "sigs.k8s.io/kustomize/v3/api/transform" "sigs.k8s.io/kustomize/v3/api/resid" "sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/pkg/resmap" - "sigs.k8s.io/kustomize/v3/pkg/transformers" "sigs.k8s.io/yaml" ) @@ -35,7 +35,7 @@ func (p *ReplicaCountTransformerPlugin) Transform(m resmap.ResMap) error { for _, res := range append(matchOriginal, matchCurrent...) { found = true - err := transformers.MutateField( + err := transform.MutateField( res.Map(), replicaSpec.PathSlice(), replicaSpec.CreateIfNotPresent, p.addReplicas) if err != nil { diff --git a/plugin/builtin/annotationstransformer/AnnotationsTransformer.go b/plugin/builtin/annotationstransformer/AnnotationsTransformer.go index c30922952..61a1779f0 100644 --- a/plugin/builtin/annotationstransformer/AnnotationsTransformer.go +++ b/plugin/builtin/annotationstransformer/AnnotationsTransformer.go @@ -5,9 +5,9 @@ package main import ( + "sigs.k8s.io/kustomize/v3/api/transform" "sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/pkg/resmap" - "sigs.k8s.io/kustomize/v3/pkg/transformers" "sigs.k8s.io/yaml" ) @@ -28,7 +28,7 @@ func (p *plugin) Config( } func (p *plugin) Transform(m resmap.ResMap) error { - t, err := transformers.NewMapTransformer( + t, err := transform.NewMapTransformer( p.FieldSpecs, p.Annotations, ) diff --git a/plugin/builtin/imagetagtransformer/ImageTagTransformer.go b/plugin/builtin/imagetagtransformer/ImageTagTransformer.go index d29cdd169..24483909a 100644 --- a/plugin/builtin/imagetagtransformer/ImageTagTransformer.go +++ b/plugin/builtin/imagetagtransformer/ImageTagTransformer.go @@ -7,11 +7,11 @@ package main import ( "fmt" "regexp" + "sigs.k8s.io/kustomize/v3/api/transform" "sigs.k8s.io/kustomize/v3/api/types" "strings" "sigs.k8s.io/kustomize/v3/pkg/resmap" - "sigs.k8s.io/kustomize/v3/pkg/transformers" "sigs.k8s.io/yaml" ) @@ -38,7 +38,7 @@ func (p *plugin) Transform(m resmap.ResMap) error { if !r.OrgId().IsSelected(&path.Gvk) { continue } - err := transformers.MutateField( + err := transform.MutateField( r.Map(), path.PathSlice(), false, p.mutateImage) if err != nil { return err diff --git a/plugin/builtin/labeltransformer/LabelTransformer.go b/plugin/builtin/labeltransformer/LabelTransformer.go index 3ef5ebc71..ce074aea2 100644 --- a/plugin/builtin/labeltransformer/LabelTransformer.go +++ b/plugin/builtin/labeltransformer/LabelTransformer.go @@ -5,9 +5,9 @@ package main import ( + "sigs.k8s.io/kustomize/v3/api/transform" "sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/pkg/resmap" - "sigs.k8s.io/kustomize/v3/pkg/transformers" "sigs.k8s.io/yaml" ) @@ -28,7 +28,7 @@ func (p *plugin) Config( } func (p *plugin) Transform(m resmap.ResMap) error { - t, err := transformers.NewMapTransformer( + t, err := transform.NewMapTransformer( p.FieldSpecs, p.Labels, ) diff --git a/plugin/builtin/namespacetransformer/NamespaceTransformer.go b/plugin/builtin/namespacetransformer/NamespaceTransformer.go index 49721836c..fc3809e2f 100644 --- a/plugin/builtin/namespacetransformer/NamespaceTransformer.go +++ b/plugin/builtin/namespacetransformer/NamespaceTransformer.go @@ -6,12 +6,12 @@ package main import ( "fmt" + "sigs.k8s.io/kustomize/v3/api/transform" "sigs.k8s.io/kustomize/v3/api/resid" "sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/pkg/resmap" "sigs.k8s.io/kustomize/v3/pkg/resource" - "sigs.k8s.io/kustomize/v3/pkg/transformers" "sigs.k8s.io/yaml" ) @@ -45,7 +45,7 @@ func (p *plugin) Transform(m resmap.ResMap) error { applicableFs := p.applicableFieldSpecs(id) for _, fs := range applicableFs { - err := transformers.MutateField( + err := transform.MutateField( r.Map(), fs.PathSlice(), fs.CreateIfNotPresent, p.changeNamespace(r)) if err != nil { diff --git a/plugin/builtin/prefixsuffixtransformer/PrefixSuffixTransformer.go b/plugin/builtin/prefixsuffixtransformer/PrefixSuffixTransformer.go index 6d17d8b9d..1bb9d6081 100644 --- a/plugin/builtin/prefixsuffixtransformer/PrefixSuffixTransformer.go +++ b/plugin/builtin/prefixsuffixtransformer/PrefixSuffixTransformer.go @@ -7,11 +7,11 @@ package main import ( "errors" "fmt" + "sigs.k8s.io/kustomize/v3/api/transform" "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/yaml" ) @@ -85,7 +85,7 @@ func (p *plugin) Transform(m resmap.ResMap) error { // the addPrefixSuffix method will not // change the name if both the prefix and suffix // are empty. - err := transformers.MutateField( + err := transform.MutateField( r.Map(), path.PathSlice(), path.CreateIfNotPresent, diff --git a/plugin/builtin/replicacounttransformer/ReplicaCountTransformer.go b/plugin/builtin/replicacounttransformer/ReplicaCountTransformer.go index 5573540b9..7656abdd6 100644 --- a/plugin/builtin/replicacounttransformer/ReplicaCountTransformer.go +++ b/plugin/builtin/replicacounttransformer/ReplicaCountTransformer.go @@ -6,11 +6,11 @@ package main import ( "fmt" + "sigs.k8s.io/kustomize/v3/api/transform" "sigs.k8s.io/kustomize/v3/api/resid" "sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/pkg/resmap" - "sigs.k8s.io/kustomize/v3/pkg/transformers" "sigs.k8s.io/yaml" ) @@ -41,7 +41,7 @@ func (p *plugin) Transform(m resmap.ResMap) error { for _, res := range append(matchOriginal, matchCurrent...) { found = true - err := transformers.MutateField( + err := transform.MutateField( res.Map(), replicaSpec.PathSlice(), replicaSpec.CreateIfNotPresent, p.addReplicas) if err != nil {