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 {