Start api directory, which will become a module.

This commit is contained in:
Jeffrey Regan
2019-10-17 11:36:34 -07:00
parent 180429774a
commit e5c8b5ec8f
226 changed files with 623 additions and 689 deletions

View File

@@ -5,10 +5,10 @@ package config
import (
"reflect"
"sigs.k8s.io/kustomize/v3/api/resid"
"testing"
"sigs.k8s.io/kustomize/v3/internal/loadertest"
"sigs.k8s.io/kustomize/v3/pkg/gvk"
)
func TestMakeDefaultConfig(t *testing.T) {
@@ -31,7 +31,7 @@ namePrefix:
expected := &TransformerConfig{
NamePrefix: []FieldSpec{
{
Gvk: gvk.Gvk{Kind: "SomeKind"},
Gvk: resid.Gvk{Kind: "SomeKind"},
Path: "nameprefix/path",
},
},

View File

@@ -18,12 +18,12 @@ package config
import (
"encoding/json"
"sigs.k8s.io/kustomize/v3/api/resid"
"strings"
"github.com/go-openapi/spec"
"github.com/pkg/errors"
"k8s.io/kube-openapi/pkg/common"
"sigs.k8s.io/kustomize/v3/pkg/gvk"
"sigs.k8s.io/kustomize/v3/pkg/ifc"
"sigs.k8s.io/yaml"
)
@@ -88,10 +88,10 @@ func makeConfigFromApiMap(m nameToApiMap) (*TransformerConfig, error) {
// TODO: Get Group and Version for CRD from the
// openAPI definition once
// "x-kubernetes-group-version-kind" is available in CRD
func makeGvkFromTypeName(n string) gvk.Gvk {
func makeGvkFromTypeName(n string) resid.Gvk {
names := strings.Split(n, ".")
kind := names[len(names)-1]
return gvk.Gvk{Kind: kind}
return resid.Gvk{Kind: kind}
}
func looksLikeAk8sType(properties myProperties) bool {
@@ -133,7 +133,7 @@ const (
// loadCrdIntoConfig loads a CRD spec into a TransformerConfig
func loadCrdIntoConfig(
theConfig *TransformerConfig, theGvk gvk.Gvk, theMap nameToApiMap,
theConfig *TransformerConfig, theGvk resid.Gvk, theMap nameToApiMap,
typeName string, path []string) (err error) {
api, ok := theMap[typeName]
if !ok {
@@ -174,7 +174,7 @@ func loadCrdIntoConfig(
}
err = theConfig.AddNamereferenceFieldSpec(
NameBackReferences{
Gvk: gvk.Gvk{Kind: kind, Version: version},
Gvk: resid.Gvk{Kind: kind, Version: version},
FieldSpecs: []FieldSpec{
makeFs(theGvk, append(path, propName, nameKey))},
})
@@ -192,7 +192,7 @@ func loadCrdIntoConfig(
return nil
}
func makeFs(in gvk.Gvk, path []string) FieldSpec {
func makeFs(in resid.Gvk, path []string) FieldSpec {
return FieldSpec{
CreateIfNotPresent: false,
Gvk: in,

View File

@@ -18,10 +18,10 @@ package config
import (
"reflect"
"sigs.k8s.io/kustomize/v3/api/resid"
"testing"
"sigs.k8s.io/kustomize/v3/internal/loadertest"
"sigs.k8s.io/kustomize/v3/pkg/gvk"
"sigs.k8s.io/kustomize/v3/pkg/ifc"
)
@@ -157,21 +157,21 @@ func makeLoader(t *testing.T) ifc.Loader {
func TestLoadCRDs(t *testing.T) {
nbrs := []NameBackReferences{
{
Gvk: gvk.Gvk{Kind: "Secret", Version: "v1"},
Gvk: resid.Gvk{Kind: "Secret", Version: "v1"},
FieldSpecs: []FieldSpec{
{
CreateIfNotPresent: false,
Gvk: gvk.Gvk{Kind: "MyKind"},
Gvk: resid.Gvk{Kind: "MyKind"},
Path: "spec/secretRef/name",
},
},
},
{
Gvk: gvk.Gvk{Kind: "Bee", Version: "v1beta1"},
Gvk: resid.Gvk{Kind: "Bee", Version: "v1beta1"},
FieldSpecs: []FieldSpec{
{
CreateIfNotPresent: false,
Gvk: gvk.Gvk{Kind: "MyKind"},
Gvk: resid.Gvk{Kind: "MyKind"},
Path: "spec/beeRef/name",
},
},

View File

@@ -18,9 +18,8 @@ package config
import (
"fmt"
"sigs.k8s.io/kustomize/v3/api/resid"
"strings"
"sigs.k8s.io/kustomize/v3/pkg/gvk"
)
// FieldSpec completely specifies a kustomizable field in
@@ -42,7 +41,7 @@ import (
// create: true
// }
type FieldSpec struct {
gvk.Gvk `json:",inline,omitempty" yaml:",inline,omitempty"`
resid.Gvk `json:",inline,omitempty" yaml:",inline,omitempty"`
Path string `json:"path,omitempty" yaml:"path,omitempty"`
CreateIfNotPresent bool `json:"create,omitempty" yaml:"create,omitempty"`
}

View File

@@ -1,18 +1,5 @@
/*
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.
*/
// Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0
package config
@@ -22,7 +9,7 @@ import (
"strings"
"testing"
"sigs.k8s.io/kustomize/v3/pkg/gvk"
"sigs.k8s.io/kustomize/v3/api/resid"
)
func TestPathSlice(t *testing.T) {
@@ -61,19 +48,19 @@ var mergeTests = []struct {
fsSlice{
{
Path: "whatever",
Gvk: gvk.Gvk{Group: "apple"},
Gvk: resid.Gvk{Group: "apple"},
CreateIfNotPresent: false,
},
{
Path: "whatever",
Gvk: gvk.Gvk{Group: "pear"},
Gvk: resid.Gvk{Group: "pear"},
CreateIfNotPresent: false,
},
},
fsSlice{
{
Path: "home",
Gvk: gvk.Gvk{Group: "beans"},
Gvk: resid.Gvk{Group: "beans"},
CreateIfNotPresent: false,
},
},
@@ -81,17 +68,17 @@ var mergeTests = []struct {
fsSlice{
{
Path: "whatever",
Gvk: gvk.Gvk{Group: "apple"},
Gvk: resid.Gvk{Group: "apple"},
CreateIfNotPresent: false,
},
{
Path: "whatever",
Gvk: gvk.Gvk{Group: "pear"},
Gvk: resid.Gvk{Group: "pear"},
CreateIfNotPresent: false,
},
{
Path: "home",
Gvk: gvk.Gvk{Group: "beans"},
Gvk: resid.Gvk{Group: "beans"},
CreateIfNotPresent: false,
},
},
@@ -101,19 +88,19 @@ var mergeTests = []struct {
fsSlice{
{
Path: "whatever",
Gvk: gvk.Gvk{Group: "apple"},
Gvk: resid.Gvk{Group: "apple"},
CreateIfNotPresent: false,
},
{
Path: "whatever",
Gvk: gvk.Gvk{Group: "pear"},
Gvk: resid.Gvk{Group: "pear"},
CreateIfNotPresent: false,
},
},
fsSlice{
{
Path: "whatever",
Gvk: gvk.Gvk{Group: "apple"},
Gvk: resid.Gvk{Group: "apple"},
CreateIfNotPresent: false,
},
},
@@ -121,12 +108,12 @@ var mergeTests = []struct {
fsSlice{
{
Path: "whatever",
Gvk: gvk.Gvk{Group: "apple"},
Gvk: resid.Gvk{Group: "apple"},
CreateIfNotPresent: false,
},
{
Path: "whatever",
Gvk: gvk.Gvk{Group: "pear"},
Gvk: resid.Gvk{Group: "pear"},
CreateIfNotPresent: false,
},
},
@@ -136,19 +123,19 @@ var mergeTests = []struct {
fsSlice{
{
Path: "whatever",
Gvk: gvk.Gvk{Group: "apple"},
Gvk: resid.Gvk{Group: "apple"},
CreateIfNotPresent: false,
},
{
Path: "whatever",
Gvk: gvk.Gvk{Group: "pear"},
Gvk: resid.Gvk{Group: "pear"},
CreateIfNotPresent: false,
},
},
fsSlice{
{
Path: "whatever",
Gvk: gvk.Gvk{Group: "apple"},
Gvk: resid.Gvk{Group: "apple"},
CreateIfNotPresent: true,
},
},

View File

@@ -17,9 +17,8 @@ limitations under the License.
package config
import (
"sigs.k8s.io/kustomize/v3/api/resid"
"strings"
"sigs.k8s.io/kustomize/v3/pkg/gvk"
)
// NameBackReferences is an association between a gvk.GVK and a list
@@ -51,7 +50,7 @@ import (
// (etc.)
// }
type NameBackReferences struct {
gvk.Gvk `json:",inline,omitempty" yaml:",inline,omitempty"`
resid.Gvk `json:",inline,omitempty" yaml:",inline,omitempty"`
FieldSpecs fsSlice `json:"FieldSpecs,omitempty" yaml:"FieldSpecs,omitempty"`
}

View File

@@ -18,22 +18,21 @@ package config
import (
"reflect"
"sigs.k8s.io/kustomize/v3/api/resid"
"testing"
"sigs.k8s.io/kustomize/v3/pkg/gvk"
)
func TestMergeAll(t *testing.T) {
fsSlice1 := []FieldSpec{
{
Gvk: gvk.Gvk{
Gvk: resid.Gvk{
Kind: "Pod",
},
Path: "path/to/a/name",
CreateIfNotPresent: false,
},
{
Gvk: gvk.Gvk{
Gvk: resid.Gvk{
Kind: "Deployment",
},
Path: "another/path/to/some/name",
@@ -42,14 +41,14 @@ func TestMergeAll(t *testing.T) {
}
fsSlice2 := []FieldSpec{
{
Gvk: gvk.Gvk{
Gvk: resid.Gvk{
Kind: "Job",
},
Path: "morepath/to/name",
CreateIfNotPresent: false,
},
{
Gvk: gvk.Gvk{
Gvk: resid.Gvk{
Kind: "StatefulSet",
},
Path: "yet/another/path/to/a/name",
@@ -59,13 +58,13 @@ func TestMergeAll(t *testing.T) {
nbrsSlice1 := nbrSlice{
{
Gvk: gvk.Gvk{
Gvk: resid.Gvk{
Kind: "ConfigMap",
},
FieldSpecs: fsSlice1,
},
{
Gvk: gvk.Gvk{
Gvk: resid.Gvk{
Kind: "Secret",
},
FieldSpecs: fsSlice2,
@@ -73,13 +72,13 @@ func TestMergeAll(t *testing.T) {
}
nbrsSlice2 := nbrSlice{
{
Gvk: gvk.Gvk{
Gvk: resid.Gvk{
Kind: "ConfigMap",
},
FieldSpecs: fsSlice1,
},
{
Gvk: gvk.Gvk{
Gvk: resid.Gvk{
Kind: "Secret",
},
FieldSpecs: fsSlice2,
@@ -87,13 +86,13 @@ func TestMergeAll(t *testing.T) {
}
expected := nbrSlice{
{
Gvk: gvk.Gvk{
Gvk: resid.Gvk{
Kind: "ConfigMap",
},
FieldSpecs: fsSlice1,
},
{
Gvk: gvk.Gvk{
Gvk: resid.Gvk{
Kind: "Secret",
},
FieldSpecs: fsSlice2,

View File

@@ -17,23 +17,22 @@ limitations under the License.
package config
import (
"sigs.k8s.io/kustomize/v3/api/resid"
"testing"
"reflect"
"sigs.k8s.io/kustomize/v3/pkg/gvk"
)
func TestAddNamereferenceFieldSpec(t *testing.T) {
cfg := &TransformerConfig{}
nbrs := NameBackReferences{
Gvk: gvk.Gvk{
Gvk: resid.Gvk{
Kind: "KindA",
},
FieldSpecs: []FieldSpec{
{
Gvk: gvk.Gvk{
Gvk: resid.Gvk{
Kind: "KindB",
},
Path: "path/to/a/field",
@@ -55,7 +54,7 @@ func TestAddFieldSpecs(t *testing.T) {
cfg := &TransformerConfig{}
fieldSpec := FieldSpec{
Gvk: gvk.Gvk{Group: "GroupA", Kind: "KindB"},
Gvk: resid.Gvk{Group: "GroupA", Kind: "KindB"},
Path: "path/to/a/field",
CreateIfNotPresent: true,
}
@@ -93,12 +92,12 @@ func TestAddFieldSpecs(t *testing.T) {
func TestMerge(t *testing.T) {
nameReference := []NameBackReferences{
{
Gvk: gvk.Gvk{
Gvk: resid.Gvk{
Kind: "KindA",
},
FieldSpecs: []FieldSpec{
{
Gvk: gvk.Gvk{
Gvk: resid.Gvk{
Kind: "KindB",
},
Path: "path/to/a/field",
@@ -107,12 +106,12 @@ func TestMerge(t *testing.T) {
},
},
{
Gvk: gvk.Gvk{
Gvk: resid.Gvk{
Kind: "KindA",
},
FieldSpecs: []FieldSpec{
{
Gvk: gvk.Gvk{
Gvk: resid.Gvk{
Kind: "KindC",
},
Path: "path/to/a/field",
@@ -123,12 +122,12 @@ func TestMerge(t *testing.T) {
}
fieldSpecs := []FieldSpec{
{
Gvk: gvk.Gvk{Group: "GroupA", Kind: "KindB"},
Gvk: resid.Gvk{Group: "GroupA", Kind: "KindB"},
Path: "path/to/a/field",
CreateIfNotPresent: true,
},
{
Gvk: gvk.Gvk{Group: "GroupA", Kind: "KindC"},
Gvk: resid.Gvk{Group: "GroupA", Kind: "KindC"},
Path: "path/to/a/field",
CreateIfNotPresent: true,
},

View File

@@ -6,10 +6,10 @@ package transformers
import (
"fmt"
"log"
"sigs.k8s.io/kustomize/v3/api/resid"
"sigs.k8s.io/kustomize/v3/pkg/resource"
"sigs.k8s.io/kustomize/v3/pkg/gvk"
"sigs.k8s.io/kustomize/v3/pkg/resmap"
"sigs.k8s.io/kustomize/v3/pkg/transformers/config"
)
@@ -115,7 +115,7 @@ func (o *nameReferenceTransformer) Transform(m resmap.ResMap) error {
func (o *nameReferenceTransformer) selectReferral(
oldName string,
referrer *resource.Resource,
target gvk.Gvk,
target resid.Gvk,
referralCandidates resmap.ResMap,
referralCandidateSubset []*resource.Resource) (interface{}, interface{}, error) {
@@ -146,7 +146,7 @@ func (o *nameReferenceTransformer) selectReferral(
func (o *nameReferenceTransformer) getSimpleNameField(
oldName string,
referrer *resource.Resource,
target gvk.Gvk,
target resid.Gvk,
referralCandidates resmap.ResMap,
referralCandidateSubset []*resource.Resource) (interface{}, error) {
@@ -161,7 +161,7 @@ func (o *nameReferenceTransformer) getSimpleNameField(
func (o *nameReferenceTransformer) getNameAndNsStruct(
inMap map[string]interface{},
referrer *resource.Resource,
target gvk.Gvk,
target resid.Gvk,
referralCandidates resmap.ResMap) (interface{}, error) {
// Example:
@@ -209,7 +209,7 @@ func (o *nameReferenceTransformer) getNameAndNsStruct(
func (o *nameReferenceTransformer) getNewNameFunc(
referrer *resource.Resource,
target gvk.Gvk,
target resid.Gvk,
referralCandidates resmap.ResMap) func(in interface{}) (interface{}, error) {
return func(in interface{}) (interface{}, error) {
switch in.(type) {

View File

@@ -7,9 +7,8 @@ import (
"strings"
"testing"
"sigs.k8s.io/kustomize/v3/api/resid"
"sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct"
"sigs.k8s.io/kustomize/v3/pkg/gvk"
"sigs.k8s.io/kustomize/v3/pkg/resid"
"sigs.k8s.io/kustomize/v3/pkg/resmap"
"sigs.k8s.io/kustomize/v3/pkg/resmaptest"
"sigs.k8s.io/kustomize/v3/pkg/resource"
@@ -877,9 +876,9 @@ func TestNameReferenceClusterWide(t *testing.T) {
}).ResMap()
clusterRoleId := resid.NewResId(
gvk.Gvk{Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "ClusterRole"}, modifiedname)
resid.Gvk{Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "ClusterRole"}, modifiedname)
clusterRoleBindingId := resid.NewResId(
gvk.Gvk{Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "ClusterRoleBinding"}, modifiedname)
resid.Gvk{Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "ClusterRoleBinding"}, modifiedname)
clusterRole, _ := expected.GetByCurrentId(clusterRoleId)
clusterRole.AppendRefBy(clusterRoleBindingId)
@@ -1005,9 +1004,9 @@ func TestNameReferenceNamespaceTransformation(t *testing.T) {
}).ResMap()
clusterRoleId := resid.NewResId(
gvk.Gvk{Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "ClusterRole"}, modifiedname)
resid.Gvk{Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "ClusterRole"}, modifiedname)
clusterRoleBindingId := resid.NewResId(
gvk.Gvk{Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "ClusterRoleBinding"}, modifiedname)
resid.Gvk{Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "ClusterRoleBinding"}, modifiedname)
clusterRole, _ := expected.GetByCurrentId(clusterRoleId)
clusterRole.AppendRefBy(clusterRoleBindingId)

View File

@@ -5,9 +5,9 @@ package transformers
import (
"reflect"
"sigs.k8s.io/kustomize/v3/api/resid"
"testing"
"sigs.k8s.io/kustomize/v3/pkg/gvk"
"sigs.k8s.io/kustomize/v3/pkg/resmap"
"sigs.k8s.io/kustomize/v3/pkg/resmaptest"
"sigs.k8s.io/kustomize/v3/pkg/transformers/config"
@@ -38,11 +38,11 @@ func TestVarRef(t *testing.T) {
"BOO": true,
},
fs: []config.FieldSpec{
{Gvk: gvk.Gvk{Version: "v1", Kind: "ConfigMap"}, Path: "data/map"},
{Gvk: gvk.Gvk{Version: "v1", Kind: "ConfigMap"}, Path: "data/slice"},
{Gvk: gvk.Gvk{Version: "v1", Kind: "ConfigMap"}, Path: "data/interface"},
{Gvk: gvk.Gvk{Version: "v1", Kind: "ConfigMap"}, Path: "data/nil"},
{Gvk: gvk.Gvk{Version: "v1", Kind: "ConfigMap"}, Path: "data/num"},
{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"},
{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).
Add(map[string]interface{}{