diff --git a/api/filters/nameref/nameref_test.go b/api/filters/nameref/nameref_test.go index bbe927f38..a68fc1b7e 100644 --- a/api/filters/nameref/nameref_test.go +++ b/api/filters/nameref/nameref_test.go @@ -5,10 +5,9 @@ import ( "testing" "github.com/stretchr/testify/assert" - "sigs.k8s.io/kustomize/api/k8sdeps/kunstruct" + "sigs.k8s.io/kustomize/api/provider" "sigs.k8s.io/kustomize/api/resid" "sigs.k8s.io/kustomize/api/resmap" - "sigs.k8s.io/kustomize/api/resource" filtertest_test "sigs.k8s.io/kustomize/api/testutils/filtertest" "sigs.k8s.io/kustomize/api/types" ) @@ -220,7 +219,7 @@ map: for tn, tc := range testCases { t.Run(tn, func(t *testing.T) { - factory := resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl()) + factory := provider.NewDefaultDepProvider().GetResourceFactory() referrer, err := factory.FromBytes([]byte(tc.input)) if err != nil { t.Fatal(err) @@ -321,7 +320,7 @@ metadata: for tn, tc := range testCases { t.Run(tn, func(t *testing.T) { - factory := resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl()) + factory := provider.NewDefaultDepProvider().GetResourceFactory() referrer, err := factory.FromBytes([]byte(tc.input)) if err != nil { t.Fatal(err) @@ -732,7 +731,7 @@ ref: for tn, tc := range testCases { t.Run(tn, func(t *testing.T) { - factory := resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl()) + factory := provider.NewDefaultDepProvider().GetResourceFactory() referrer, err := factory.FromBytes([]byte(tc.input)) if err != nil { t.Fatal(err) diff --git a/api/internal/accumulator/namereferencetransformer_test.go b/api/internal/accumulator/namereferencetransformer_test.go index 3d0dfaaf3..b24e36d0e 100644 --- a/api/internal/accumulator/namereferencetransformer_test.go +++ b/api/internal/accumulator/namereferencetransformer_test.go @@ -8,17 +8,14 @@ import ( "testing" "sigs.k8s.io/kustomize/api/internal/plugins/builtinconfig" - "sigs.k8s.io/kustomize/api/k8sdeps/kunstruct" + "sigs.k8s.io/kustomize/api/provider" "sigs.k8s.io/kustomize/api/resid" "sigs.k8s.io/kustomize/api/resmap" - "sigs.k8s.io/kustomize/api/resource" resmaptest_test "sigs.k8s.io/kustomize/api/testutils/resmaptest" ) func TestNameReferenceHappyRun(t *testing.T) { - rf := resource.NewFactory( - kunstruct.NewKunstructuredFactoryImpl()) - m := resmaptest_test.NewRmBuilder(t, rf).AddWithName( + m := resmaptest_test.NewRmBuilderDefault(t).AddWithName( "cm1", map[string]interface{}{ "apiVersion": "v1", @@ -261,7 +258,8 @@ func TestNameReferenceHappyRun(t *testing.T) { }, }).ResMap() - expected := resmaptest_test.NewSeededRmBuilder(t, rf, m.ShallowCopy()).ReplaceResource( + expected := resmaptest_test.NewSeededRmBuilderDefault( + t, m.ShallowCopy()).ReplaceResource( map[string]interface{}{ "group": "apps", "apiVersion": "v1", @@ -475,14 +473,12 @@ func TestNameReferenceHappyRun(t *testing.T) { } func TestNameReferenceUnhappyRun(t *testing.T) { - rf := resource.NewFactory( - kunstruct.NewKunstructuredFactoryImpl()) tests := []struct { resMap resmap.ResMap expectedErr string }{ { - resMap: resmaptest_test.NewRmBuilder(t, rf).Add( + resMap: resmaptest_test.NewRmBuilderDefault(t).Add( map[string]interface{}{ "apiVersion": "rbac.authorization.k8s.io/v1", "kind": "ClusterRole", @@ -502,7 +498,7 @@ func TestNameReferenceUnhappyRun(t *testing.T) { }).ResMap(), expectedErr: "is expected to be"}, { - resMap: resmaptest_test.NewRmBuilder(t, rf).Add( + resMap: resmaptest_test.NewRmBuilderDefault(t).Add( map[string]interface{}{ "apiVersion": "rbac.authorization.k8s.io/v1", "kind": "ClusterRole", @@ -538,8 +534,7 @@ func TestNameReferenceUnhappyRun(t *testing.T) { } func TestNameReferencePersistentVolumeHappyRun(t *testing.T) { - rf := resource.NewFactory( - kunstruct.NewKunstructuredFactoryImpl()) + rf := provider.NewDefaultDepProvider().GetResourceFactory() v1 := rf.FromMapWithName( "volume1", @@ -664,9 +659,7 @@ const ( // object with the same original names (uniquename) in different namespaces // and with different current Id. func TestNameReferenceNamespace(t *testing.T) { - rf := resource.NewFactory( - kunstruct.NewKunstructuredFactoryImpl()) - m := resmaptest_test.NewRmBuilder(t, rf). + m := resmaptest_test.NewRmBuilderDefault(t). // Add ConfigMap with the same org name in noNs, "ns1" and "ns2" namespaces AddWithName(orgname, map[string]interface{}{ "apiVersion": "v1", @@ -715,7 +708,7 @@ func TestNameReferenceNamespace(t *testing.T) { AddWithNsAndName(ns1, orgname, deploymentMap(ns1, prefixedname, orgname, orgname)). AddWithNsAndName(ns2, orgname, deploymentMap(ns2, suffixedname, orgname, orgname)).ResMap() - expected := resmaptest_test.NewSeededRmBuilder(t, rf, m.ShallowCopy()). + expected := resmaptest_test.NewSeededRmBuilderDefault(t, m.ShallowCopy()). ReplaceResource(deploymentMap(defaultNs, modifiedname, modifiedname, modifiedname)). ReplaceResource(deploymentMap(ns1, prefixedname, prefixedname, prefixedname)). ReplaceResource(deploymentMap(ns2, suffixedname, suffixedname, suffixedname)).ResMap() @@ -735,9 +728,7 @@ func TestNameReferenceNamespace(t *testing.T) { // object with the same original names (uniquename) in different namespaces // and with different current Id. func TestNameReferenceClusterWide(t *testing.T) { - rf := resource.NewFactory( - kunstruct.NewKunstructuredFactoryImpl()) - m := resmaptest_test.NewRmBuilder(t, rf). + m := resmaptest_test.NewRmBuilderDefault(t). // Add ServiceAccount with the same org name in noNs, "ns1" and "ns2" namespaces AddWithName(orgname, map[string]interface{}{ "apiVersion": "v1", @@ -816,7 +807,7 @@ func TestNameReferenceClusterWide(t *testing.T) { }, }}).ResMap() - expected := resmaptest_test.NewSeededRmBuilder(t, rf, m.ShallowCopy()). + expected := resmaptest_test.NewSeededRmBuilderDefault(t, m.ShallowCopy()). ReplaceResource( map[string]interface{}{ "apiVersion": "rbac.authorization.k8s.io/v1", @@ -898,9 +889,7 @@ func TestNameReferenceClusterWide(t *testing.T) { // object with the same original names (uniquename) in different namespaces // and with different current Id. func TestNameReferenceNamespaceTransformation(t *testing.T) { - rf := resource.NewFactory( - kunstruct.NewKunstructuredFactoryImpl()) - m := resmaptest_test.NewRmBuilder(t, rf). + m := resmaptest_test.NewRmBuilderDefault(t). AddWithNsAndName(ns4, orgname, map[string]interface{}{ "apiVersion": "v1", "kind": "Secret", @@ -964,7 +953,7 @@ func TestNameReferenceNamespaceTransformation(t *testing.T) { }, }}).ResMap() - expected := resmaptest_test.NewSeededRmBuilder(t, rf, m.ShallowCopy()). + expected := resmaptest_test.NewSeededRmBuilderDefault(t, m.ShallowCopy()). ReplaceResource( map[string]interface{}{ "apiVersion": "rbac.authorization.k8s.io/v1", @@ -1026,9 +1015,7 @@ func TestNameReferenceNamespaceTransformation(t *testing.T) { // It validates the change done is IsSameFuzzyNamespace which // uses the IsNsEquals method instead of the simple == operator. func TestNameReferenceCandidateSelection(t *testing.T) { - rf := resource.NewFactory( - kunstruct.NewKunstructuredFactoryImpl()) - m := resmaptest_test.NewRmBuilder(t, rf). + m := resmaptest_test.NewRmBuilderDefault(t). AddWithName("cm1", map[string]interface{}{ "apiVersion": "v1", "kind": "ConfigMap", @@ -1045,7 +1032,7 @@ func TestNameReferenceCandidateSelection(t *testing.T) { AddWithName("deploy1", deploymentMap("", "p1-deploy1", "cm1", "secret1")). ResMap() - expected := resmaptest_test.NewSeededRmBuilder(t, rf, m.ShallowCopy()). + expected := resmaptest_test.NewSeededRmBuilderDefault(t, m.ShallowCopy()). ReplaceResource(deploymentMap("", "p1-deploy1", "p1-cm1-hash", "p1-secret1-hash")). ResMap() diff --git a/api/internal/accumulator/refvartransformer_test.go b/api/internal/accumulator/refvartransformer_test.go index 42e33a31a..5e1ff2ce2 100644 --- a/api/internal/accumulator/refvartransformer_test.go +++ b/api/internal/accumulator/refvartransformer_test.go @@ -7,10 +7,8 @@ import ( "reflect" "testing" - "sigs.k8s.io/kustomize/api/k8sdeps/kunstruct" "sigs.k8s.io/kustomize/api/resid" "sigs.k8s.io/kustomize/api/resmap" - "sigs.k8s.io/kustomize/api/resource" resmaptest_test "sigs.k8s.io/kustomize/api/testutils/resmaptest" "sigs.k8s.io/kustomize/api/types" ) @@ -46,8 +44,7 @@ func TestRefVarTransformer(t *testing.T) { {Gvk: resid.Gvk{Version: "v1", Kind: "ConfigMap"}, Path: "data/interface"}, {Gvk: resid.Gvk{Version: "v1", Kind: "ConfigMap"}, Path: "data/num"}, }, - res: resmaptest_test.NewRmBuilder( - t, resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl())). + res: resmaptest_test.NewRmBuilderDefault(t). Add(map[string]interface{}{ "apiVersion": "v1", "kind": "ConfigMap", @@ -77,8 +74,7 @@ func TestRefVarTransformer(t *testing.T) { }}).ResMap(), }, expected: expected{ - res: resmaptest_test.NewRmBuilder( - t, resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl())). + res: resmaptest_test.NewRmBuilderDefault(t). Add(map[string]interface{}{ "apiVersion": "v1", "kind": "ConfigMap", @@ -116,8 +112,7 @@ func TestRefVarTransformer(t *testing.T) { fs: []types.FieldSpec{ {Gvk: resid.Gvk{Version: "v1", Kind: "ConfigMap"}, Path: "data/slice"}, }, - res: resmaptest_test.NewRmBuilder( - t, resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl())). + res: resmaptest_test.NewRmBuilderDefault(t). Add(map[string]interface{}{ "apiVersion": "v1", "kind": "ConfigMap", @@ -138,8 +133,7 @@ func TestRefVarTransformer(t *testing.T) { fs: []types.FieldSpec{ {Gvk: resid.Gvk{Version: "v1", Kind: "ConfigMap"}, Path: "data/nil"}, }, - res: resmaptest_test.NewRmBuilder( - t, resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl())). + res: resmaptest_test.NewRmBuilderDefault(t). Add(map[string]interface{}{ "apiVersion": "v1", "kind": "ConfigMap", @@ -151,8 +145,7 @@ func TestRefVarTransformer(t *testing.T) { }}).ResMap(), }, expected: expected{ - res: resmaptest_test.NewRmBuilder( - t, resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl())). + res: resmaptest_test.NewRmBuilderDefault(t). Add(map[string]interface{}{ "apiVersion": "v1", "kind": "ConfigMap", diff --git a/api/internal/accumulator/resaccumulator_test.go b/api/internal/accumulator/resaccumulator_test.go index 7cce7fde1..94dde492a 100644 --- a/api/internal/accumulator/resaccumulator_test.go +++ b/api/internal/accumulator/resaccumulator_test.go @@ -12,7 +12,7 @@ import ( . "sigs.k8s.io/kustomize/api/internal/accumulator" "sigs.k8s.io/kustomize/api/internal/plugins/builtinconfig" - "sigs.k8s.io/kustomize/api/k8sdeps/kunstruct" + "sigs.k8s.io/kustomize/api/provider" "sigs.k8s.io/kustomize/api/resid" "sigs.k8s.io/kustomize/api/resmap" "sigs.k8s.io/kustomize/api/resource" @@ -20,16 +20,14 @@ import ( "sigs.k8s.io/kustomize/api/types" ) -func makeResAccumulator(t *testing.T) (*ResAccumulator, *resource.Factory) { +func makeResAccumulator(t *testing.T) *ResAccumulator { ra := MakeEmptyAccumulator() err := ra.MergeConfig(builtinconfig.MakeDefaultConfig()) if err != nil { t.Fatalf("unexpected err: %v", err) } - rf := resource.NewFactory( - kunstruct.NewKunstructuredFactoryImpl()) err = ra.AppendAll( - resmaptest_test.NewRmBuilder(t, rf). + resmaptest_test.NewRmBuilderDefault(t). Add(map[string]interface{}{ "apiVersion": "apps/v1", "kind": "Deployment", @@ -66,11 +64,11 @@ func makeResAccumulator(t *testing.T) (*ResAccumulator, *resource.Factory) { if err != nil { t.Fatalf("unexpected err: %v", err) } - return ra, rf + return ra } func TestResolveVarsHappy(t *testing.T) { - ra, _ := makeResAccumulator(t) + ra := makeResAccumulator(t) err := ra.MergeVars([]types.Var{ { Name: "SERVICE_ONE", @@ -99,7 +97,7 @@ func TestResolveVarsHappy(t *testing.T) { } func TestResolveVarsOneUnused(t *testing.T) { - ra, _ := makeResAccumulator(t) + ra := makeResAccumulator(t) err := ra.MergeVars([]types.Var{ { Name: "SERVICE_ONE", @@ -140,11 +138,10 @@ func expectLog(t *testing.T, log bytes.Buffer, expect string) { } func TestResolveVarsVarNeedsDisambiguation(t *testing.T) { - ra, rf := makeResAccumulator(t) - + ra := makeResAccumulator(t) rm0 := resmap.New() err := rm0.Append( - rf.FromMap( + provider.NewDefaultDepProvider().GetResourceFactory().FromMap( map[string]interface{}{ "apiVersion": "v1", "kind": "Service", @@ -213,8 +210,7 @@ func makeVarToNamepaceAndPath( } func TestResolveVarConflicts(t *testing.T) { - rf := resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl()) - + rf := provider.NewDefaultDepProvider().GetResourceFactory() // create configmaps in foo and bar namespaces with `data.provider` values. fooAws := makeNamespacedConfigMapWithDataProviderValue("foo", "aws") barAws := makeNamespacedConfigMapWithDataProviderValue("bar", "aws") @@ -261,7 +257,7 @@ func TestResolveVarConflicts(t *testing.T) { } func TestResolveVarsGoodResIdBadField(t *testing.T) { - ra, _ := makeResAccumulator(t) + ra := makeResAccumulator(t) err := ra.MergeVars([]types.Var{ { Name: "SERVICE_ONE", @@ -286,7 +282,7 @@ func TestResolveVarsGoodResIdBadField(t *testing.T) { } func TestResolveVarsUnmappableVar(t *testing.T) { - ra, _ := makeResAccumulator(t) + ra := makeResAccumulator(t) err := ra.MergeVars([]types.Var{ { Name: "SERVICE_THREE", @@ -310,7 +306,7 @@ func TestResolveVarsUnmappableVar(t *testing.T) { } func TestResolveVarsWithNoambiguation(t *testing.T) { - ra1, rf := makeResAccumulator(t) + ra1 := makeResAccumulator(t) err := ra1.MergeVars([]types.Var{ { Name: "SERVICE_ONE", @@ -327,7 +323,7 @@ func TestResolveVarsWithNoambiguation(t *testing.T) { // Create another accumulator having a resource with different prefix ra2 := MakeEmptyAccumulator() - m := resmaptest_test.NewRmBuilder(t, rf). + m := resmaptest_test.NewRmBuilderDefault(t). Add(map[string]interface{}{ "apiVersion": "apps/v1", "kind": "Deployment", diff --git a/api/internal/crawl/doc/doc.go b/api/internal/crawl/doc/doc.go index d37fd19ca..f1e5aecc8 100644 --- a/api/internal/crawl/doc/doc.go +++ b/api/internal/crawl/doc/doc.go @@ -7,14 +7,13 @@ import ( "sort" "strings" - "sigs.k8s.io/kustomize/api/k8sdeps/kunstruct" "sigs.k8s.io/kustomize/api/konfig" + "sigs.k8s.io/kustomize/api/provider" + "sigs.k8s.io/kustomize/api/resource" "sigs.k8s.io/kustomize/api/types" "sigs.k8s.io/yaml" ) -var fileReader = kunstruct.NewKunstructuredFactoryImpl() - // This document is meant to be used at the elasticsearch document type. // Fields are serialized as-is to elasticsearch, where indices are built // to facilitate text search queries. Identifiers, Values, FilePath, @@ -42,6 +41,7 @@ type KustomizationDocument struct { Kinds []string `json:"kinds,omitempty"` Identifiers []string `json:"identifiers,omitempty"` Values []string `json:"values,omitempty"` + resFactory *resource.Factory } type set map[string]struct{} @@ -52,6 +52,7 @@ func (doc *KustomizationDocument) Copy() *KustomizationDocument { Kinds: doc.Kinds, Identifiers: doc.Identifiers, Values: doc.Values, + resFactory: provider.NewDefaultDepProvider().GetResourceFactory(), } } @@ -150,7 +151,7 @@ func (doc *KustomizationDocument) readBytes() ([]map[string]interface{}, error) } configs := make([]map[string]interface{}, 0) - ks, err := fileReader.SliceFromBytes(data) + ks, err := doc.resFactory.SliceFromBytes(data) if err != nil { return nil, fmt.Errorf("unable to parse resource: %v", err) } diff --git a/api/internal/plugins/execplugin/execplugin_test.go b/api/internal/plugins/execplugin/execplugin_test.go index 95cf6257e..94e3787ce 100644 --- a/api/internal/plugins/execplugin/execplugin_test.go +++ b/api/internal/plugins/execplugin/execplugin_test.go @@ -13,12 +13,10 @@ import ( . "sigs.k8s.io/kustomize/api/internal/plugins/execplugin" pLdr "sigs.k8s.io/kustomize/api/internal/plugins/loader" "sigs.k8s.io/kustomize/api/internal/plugins/utils" - "sigs.k8s.io/kustomize/api/k8sdeps/kunstruct" "sigs.k8s.io/kustomize/api/konfig" fLdr "sigs.k8s.io/kustomize/api/loader" + "sigs.k8s.io/kustomize/api/provider" "sigs.k8s.io/kustomize/api/resmap" - "sigs.k8s.io/kustomize/api/resource" - valtest_test "sigs.k8s.io/kustomize/api/testutils/valtest" ) func TestExecPluginConfig(t *testing.T) { @@ -33,10 +31,8 @@ s/$BAR/bar baz/g if err != nil { t.Fatal(err) } - rf := resmap.NewFactory( - resource.NewFactory( - kunstruct.NewKunstructuredFactoryImpl()), nil) - v := valtest_test.MakeFakeValidator() + pvd := provider.NewDefaultDepProvider() + rf := resmap.NewFactory(pvd.GetResourceFactory(), pvd.GetMerginator()) pluginConfig := rf.RF().FromMap( map[string]interface{}{ "apiVersion": "someteam.example.com/v1", @@ -62,7 +58,7 @@ s/$BAR/bar baz/g if err != nil { t.Fatalf("unexpected err: %v", err) } - p.Config(resmap.NewPluginHelpers(ldr, v, rf), yaml) + p.Config(resmap.NewPluginHelpers(ldr, pvd.GetFieldValidator(), rf), yaml) expected := "someteam.example.com/v1/sedtransformer/SedTransformer" if !strings.HasSuffix(p.Path(), expected) { diff --git a/api/internal/plugins/loader/loader_test.go b/api/internal/plugins/loader/loader_test.go index db3ec8f78..20cca8be5 100644 --- a/api/internal/plugins/loader/loader_test.go +++ b/api/internal/plugins/loader/loader_test.go @@ -8,11 +8,10 @@ import ( "sigs.k8s.io/kustomize/api/filesys" . "sigs.k8s.io/kustomize/api/internal/plugins/loader" - "sigs.k8s.io/kustomize/api/k8sdeps/kunstruct" "sigs.k8s.io/kustomize/api/konfig" "sigs.k8s.io/kustomize/api/loader" + "sigs.k8s.io/kustomize/api/provider" "sigs.k8s.io/kustomize/api/resmap" - "sigs.k8s.io/kustomize/api/resource" kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest" valtest_test "sigs.k8s.io/kustomize/api/testutils/valtest" "sigs.k8s.io/kustomize/api/types" @@ -51,8 +50,8 @@ func TestLoader(t *testing.T) { BuildGoPlugin("builtin", "", "SecretGenerator"). BuildGoPlugin("someteam.example.com", "v1", "SomeServiceGenerator") defer th.Reset() - rmF := resmap.NewFactory(resource.NewFactory( - kunstruct.NewKunstructuredFactoryImpl()), nil) + p := provider.NewDefaultDepProvider() + rmF := resmap.NewFactory(p.GetResourceFactory(), p.GetMerginator()) fLdr, err := loader.NewLoader( loader.RestrictionRootOnly, filesys.Separator, filesys.MakeFsInMemory()) diff --git a/api/internal/plugins/utils/utils_test.go b/api/internal/plugins/utils/utils_test.go index 356e7680a..2beb792c9 100644 --- a/api/internal/plugins/utils/utils_test.go +++ b/api/internal/plugins/utils/utils_test.go @@ -10,8 +10,8 @@ import ( "testing" "sigs.k8s.io/kustomize/api/filesys" - "sigs.k8s.io/kustomize/api/k8sdeps/kunstruct" "sigs.k8s.io/kustomize/api/konfig" + "sigs.k8s.io/kustomize/api/provider" "sigs.k8s.io/kustomize/api/resmap" "sigs.k8s.io/kustomize/api/resource" "sigs.k8s.io/kustomize/api/types" @@ -64,7 +64,7 @@ func strptr(s string) *string { } func TestUpdateResourceOptions(t *testing.T) { - rf := resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl()) + rf := provider.NewDefaultDepProvider().GetResourceFactory() in := resmap.New() expected := resmap.New() cases := []struct { @@ -108,7 +108,7 @@ func TestUpdateResourceOptions(t *testing.T) { } func TestUpdateResourceOptionsWithInvalidHashAnnotationValues(t *testing.T) { - rf := resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl()) + rf := provider.NewDefaultDepProvider().GetResourceFactory() cases := []string{ "", "FaLsE", diff --git a/api/internal/target/kusttarget_test.go b/api/internal/target/kusttarget_test.go index 7bb3d0856..42ab95a9a 100644 --- a/api/internal/target/kusttarget_test.go +++ b/api/internal/target/kusttarget_test.go @@ -10,7 +10,7 @@ import ( "github.com/stretchr/testify/require" "sigs.k8s.io/kustomize/api/ifc" - "sigs.k8s.io/kustomize/api/k8sdeps/kunstruct" + "sigs.k8s.io/kustomize/api/provider" "sigs.k8s.io/kustomize/api/resmap" "sigs.k8s.io/kustomize/api/resource" kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest" @@ -76,8 +76,7 @@ commonLabels: } kt := makeKustTargetWithRf( - t, th.GetFSys(), "/", - resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl())) + t, th.GetFSys(), "/", provider.NewDefaultDepProvider()) for tn, tc := range testCases { t.Run(tn, func(t *testing.T) { th.WriteK("/", tc.content) @@ -148,7 +147,8 @@ metadata: {"op": "add", "path": "/spec/replica", "value": "3"} ]`) - resFactory := resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl()) + pvd := provider.NewDefaultDepProvider() + resFactory := pvd.GetResourceFactory() resources := []*resource.Resource{ resFactory.FromMapWithName("dply1", map[string]interface{}{ @@ -244,8 +244,7 @@ metadata: } } - kt := makeKustTargetWithRf( - t, th.GetFSys(), "/whatever", resFactory) + kt := makeKustTargetWithRf(t, th.GetFSys(), "/whatever", pvd) err := kt.Load() if err != nil { t.Fatalf("unexpected Resources error %v", err) diff --git a/api/internal/target/maker_test.go b/api/internal/target/maker_test.go index 7e85832df..b60cde5ff 100644 --- a/api/internal/target/maker_test.go +++ b/api/internal/target/maker_test.go @@ -7,14 +7,12 @@ import ( "testing" "sigs.k8s.io/kustomize/api/filesys" - "sigs.k8s.io/kustomize/api/internal/k8sdeps/merge" pLdr "sigs.k8s.io/kustomize/api/internal/plugins/loader" "sigs.k8s.io/kustomize/api/internal/target" - "sigs.k8s.io/kustomize/api/k8sdeps/kunstruct" "sigs.k8s.io/kustomize/api/konfig" fLdr "sigs.k8s.io/kustomize/api/loader" + "sigs.k8s.io/kustomize/api/provider" "sigs.k8s.io/kustomize/api/resmap" - "sigs.k8s.io/kustomize/api/resource" valtest_test "sigs.k8s.io/kustomize/api/testutils/valtest" ) @@ -22,9 +20,7 @@ func makeAndLoadKustTarget( t *testing.T, fSys filesys.FileSystem, root string) *target.KustTarget { - kt := makeKustTargetWithRf( - t, fSys, root, - resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl())) + kt := makeKustTargetWithRf(t, fSys, root, provider.NewDefaultDepProvider()) if err := kt.Load(); err != nil { t.Fatalf("Unexpected load error %v", err) } @@ -35,13 +31,12 @@ func makeKustTargetWithRf( t *testing.T, fSys filesys.FileSystem, root string, - resourceFactory *resource.Factory) *target.KustTarget { + pvd *provider.DepProvider) *target.KustTarget { ldr, err := fLdr.NewLoader(fLdr.RestrictionRootOnly, root, fSys) if err != nil { t.Fatal(err) } - rf := resmap.NewFactory( - resourceFactory, merge.NewMerginator(resourceFactory)) + rf := resmap.NewFactory(pvd.GetResourceFactory(), pvd.GetMerginator()) pc := konfig.DisabledPluginConfig() return target.NewKustTarget( ldr, diff --git a/api/konfig/general.go b/api/konfig/general.go index 02c4067ce..9db3afaad 100644 --- a/api/konfig/general.go +++ b/api/konfig/general.go @@ -20,6 +20,10 @@ func DefaultKustomizationFileName() string { } const ( + // FlagEnableKyamlDefaultValue is the default value for the --enable_kyaml + // flag. This value is also used in unit tests. See provider.DepProvider. + FlagEnableKyamlDefaultValue = false + // An environment variable to consult for kustomization // configuration data. See: // https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html diff --git a/api/krusty/kustomizer.go b/api/krusty/kustomizer.go index 29b91a57f..f2d20bb84 100644 --- a/api/krusty/kustomizer.go +++ b/api/krusty/kustomizer.go @@ -11,9 +11,9 @@ import ( pLdr "sigs.k8s.io/kustomize/api/internal/plugins/loader" "sigs.k8s.io/kustomize/api/internal/target" "sigs.k8s.io/kustomize/api/konfig" - "sigs.k8s.io/kustomize/api/krusty/internal/provider" fLdr "sigs.k8s.io/kustomize/api/loader" "sigs.k8s.io/kustomize/api/provenance" + "sigs.k8s.io/kustomize/api/provider" "sigs.k8s.io/kustomize/api/resmap" "sigs.k8s.io/kustomize/api/types" ) diff --git a/api/krusty/internal/provider/depprovider.go b/api/provider/depprovider.go similarity index 94% rename from api/krusty/internal/provider/depprovider.go rename to api/provider/depprovider.go index 242cfdc21..6a144bc12 100644 --- a/api/krusty/internal/provider/depprovider.go +++ b/api/provider/depprovider.go @@ -11,6 +11,7 @@ import ( "sigs.k8s.io/kustomize/api/internal/wrappy" "sigs.k8s.io/kustomize/api/k8sdeps/kunstruct" "sigs.k8s.io/kustomize/api/k8sdeps/validator" + "sigs.k8s.io/kustomize/api/konfig" "sigs.k8s.io/kustomize/api/resmap" "sigs.k8s.io/kustomize/api/resource" ) @@ -138,6 +139,7 @@ import ( // If you're reading this, plan not done. // type DepProvider struct { + kFactory ifc.KunstructuredFactory resourceFactory *resource.Factory merginator resmap.Merginator fieldValidator ifc.Validator @@ -147,6 +149,7 @@ func makeK8sdepBasedInstances() *DepProvider { kf := kunstruct.NewKunstructuredFactoryImpl() rf := resource.NewFactory(kf) return &DepProvider{ + kFactory: kf, resourceFactory: rf, merginator: merge.NewMerginator(rf), fieldValidator: validator.NewKustValidator(), @@ -157,6 +160,7 @@ func makeKyamlBasedInstances() *DepProvider { kf := &wrappy.WNodeFactory{} rf := resource.NewFactory(kf) return &DepProvider{ + kFactory: kf, resourceFactory: rf, merginator: kmerge.NewMerginator(rf), fieldValidator: validate.NewFieldValidator(), @@ -170,6 +174,14 @@ func NewDepProvider(useKyaml bool) *DepProvider { return makeK8sdepBasedInstances() } +func NewDefaultDepProvider() *DepProvider { + return NewDepProvider(konfig.FlagEnableKyamlDefaultValue) +} + +func (dp *DepProvider) GetKunstructuredFactory() ifc.KunstructuredFactory { + return dp.kFactory +} + func (dp *DepProvider) GetResourceFactory() *resource.Factory { return dp.resourceFactory } diff --git a/api/resmap/reswrangler_test.go b/api/resmap/reswrangler_test.go index 1945f0aa7..3e2c7c7aa 100644 --- a/api/resmap/reswrangler_test.go +++ b/api/resmap/reswrangler_test.go @@ -10,7 +10,7 @@ import ( "strings" "testing" - "sigs.k8s.io/kustomize/api/k8sdeps/kunstruct" + "sigs.k8s.io/kustomize/api/provider" "sigs.k8s.io/kustomize/api/resid" . "sigs.k8s.io/kustomize/api/resmap" "sigs.k8s.io/kustomize/api/resource" @@ -18,8 +18,7 @@ import ( "sigs.k8s.io/kustomize/api/types" ) -var rf = resource.NewFactory( - kunstruct.NewKunstructuredFactoryImpl()) +var rf = provider.NewDefaultDepProvider().GetResourceFactory() var rmF = NewFactory(rf, nil) func doAppend(t *testing.T, w ResMap, r *resource.Resource) { diff --git a/api/resource/resource_test.go b/api/resource/resource_test.go index c56f0c650..a5a67792b 100644 --- a/api/resource/resource_test.go +++ b/api/resource/resource_test.go @@ -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 2020 The Kubernetes Authors. +// SPDX-License-Identifier: Apache-2.0 package resource_test @@ -20,14 +7,13 @@ import ( "reflect" "testing" - "sigs.k8s.io/kustomize/api/k8sdeps/kunstruct" + "sigs.k8s.io/kustomize/api/provider" "sigs.k8s.io/kustomize/api/resid" . "sigs.k8s.io/kustomize/api/resource" "sigs.k8s.io/kustomize/api/types" ) -var factory = NewFactory( - kunstruct.NewKunstructuredFactoryImpl()) +var factory = provider.NewDefaultDepProvider().GetResourceFactory() var testConfigMap = factory.FromMap( map[string]interface{}{ diff --git a/api/testutils/kusttest/harnessenhanced.go b/api/testutils/kusttest/harnessenhanced.go index 405af5230..fb8cc1bb6 100644 --- a/api/testutils/kusttest/harnessenhanced.go +++ b/api/testutils/kusttest/harnessenhanced.go @@ -8,13 +8,11 @@ import ( "sigs.k8s.io/kustomize/api/filesys" "sigs.k8s.io/kustomize/api/ifc" - "sigs.k8s.io/kustomize/api/internal/k8sdeps/merge" pLdr "sigs.k8s.io/kustomize/api/internal/plugins/loader" - "sigs.k8s.io/kustomize/api/k8sdeps/kunstruct" "sigs.k8s.io/kustomize/api/konfig" fLdr "sigs.k8s.io/kustomize/api/loader" + "sigs.k8s.io/kustomize/api/provider" "sigs.k8s.io/kustomize/api/resmap" - "sigs.k8s.io/kustomize/api/resource" valtest_test "sigs.k8s.io/kustomize/api/testutils/valtest" "sigs.k8s.io/kustomize/api/types" ) @@ -46,11 +44,9 @@ func MakeEnhancedHarness(t *testing.T) *HarnessEnhanced { if err != nil { t.Fatal(err) } - resourceFactory := resource.NewFactory( - kunstruct.NewKunstructuredFactoryImpl()) - resmapFactory := resmap.NewFactory( - resourceFactory, - merge.NewMerginator(resourceFactory)) + p := provider.NewDefaultDepProvider() + resourceFactory := p.GetResourceFactory() + resmapFactory := resmap.NewFactory(resourceFactory, p.GetMerginator()) result := &HarnessEnhanced{ Harness: MakeHarness(t), diff --git a/api/testutils/resmaptest/rmbuilder.go b/api/testutils/resmaptest/rmbuilder.go index 7c88f1c3c..c856c81b4 100644 --- a/api/testutils/resmaptest/rmbuilder.go +++ b/api/testutils/resmaptest/rmbuilder.go @@ -6,6 +6,7 @@ package resmaptest_test import ( "testing" + "sigs.k8s.io/kustomize/api/provider" "sigs.k8s.io/kustomize/api/resmap" "sigs.k8s.io/kustomize/api/resource" ) @@ -25,6 +26,15 @@ func NewRmBuilder(t *testing.T, rf *resource.Factory) *rmBuilder { return NewSeededRmBuilder(t, rf, resmap.New()) } +func NewRmBuilderDefault(t *testing.T) *rmBuilder { + return NewSeededRmBuilderDefault(t, resmap.New()) +} + +func NewSeededRmBuilderDefault(t *testing.T, m resmap.ResMap) *rmBuilder { + return NewSeededRmBuilder( + t, provider.NewDefaultDepProvider().GetResourceFactory(), m) +} + func (rm *rmBuilder) Add(m map[string]interface{}) *rmBuilder { return rm.AddR(rm.rf.FromMap(m)) } diff --git a/cmd/pluginator/internal/krmfunction/funcwrappersrc/main.go b/cmd/pluginator/internal/krmfunction/funcwrappersrc/main.go index 3862db205..822c4fe9c 100644 --- a/cmd/pluginator/internal/krmfunction/funcwrappersrc/main.go +++ b/cmd/pluginator/internal/krmfunction/funcwrappersrc/main.go @@ -6,9 +6,8 @@ import ( "fmt" "os" - "sigs.k8s.io/kustomize/api/k8sdeps/kunstruct" + "sigs.k8s.io/kustomize/api/provider" "sigs.k8s.io/kustomize/api/resmap" - "sigs.k8s.io/kustomize/api/resource" "sigs.k8s.io/kustomize/kyaml/fn/framework" "sigs.k8s.io/yaml" ) @@ -16,9 +15,10 @@ import ( //nolint func main() { var plugin resmap.Configurable - resmapFactory := newResMapFactory() - - pluginHelpers := newPluginHelpers(resmapFactory) + p := provider.NewDefaultDepProvider() + resmapFactory := resmap.NewFactory(p.GetResourceFactory(), p.GetMerginator()) + pluginHelpers := resmap.NewPluginHelpers( + nil, p.GetFieldValidator(), resmapFactory) resourceList := &framework.ResourceList{} resourceList.FunctionConfig = map[string]interface{}{} @@ -65,17 +65,6 @@ func main() { } } -//nolint -func newPluginHelpers(resmapFactory *resmap.Factory) *resmap.PluginHelpers { - return resmap.NewPluginHelpers(nil, nil, resmapFactory) -} - -//nolint -func newResMapFactory() *resmap.Factory { - resourceFactory := resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl()) - return resmap.NewFactory(resourceFactory, nil) -} - //nolint func getDataFromFunctionConfig(fc interface{}) (interface{}, error) { f, ok := fc.(map[string]interface{}) diff --git a/kustomize/internal/commands/build/flagEnableKyaml.go b/kustomize/internal/commands/build/flagEnableKyaml.go index c73f81dc2..d9230bac6 100644 --- a/kustomize/internal/commands/build/flagEnableKyaml.go +++ b/kustomize/internal/commands/build/flagEnableKyaml.go @@ -5,17 +5,18 @@ package build import ( "github.com/spf13/pflag" + "sigs.k8s.io/kustomize/api/konfig" ) var ( - flagEnableKyamlValue = false + flagEnableKyamlValue = konfig.FlagEnableKyamlDefaultValue ) func addFlagEnableKyaml(set *pflag.FlagSet) { set.BoolVar( &flagEnableKyamlValue, - "enable_kyaml", // flag name - false, // default value + "enable_kyaml", // flag name + konfig.FlagEnableKyamlDefaultValue, // default value "enable dependence on kyaml instead of k8sdeps.", // help ) } diff --git a/kustomize/internal/commands/commands.go b/kustomize/internal/commands/commands.go index 21e291428..81e54ab0f 100644 --- a/kustomize/internal/commands/commands.go +++ b/kustomize/internal/commands/commands.go @@ -8,14 +8,12 @@ import ( "flag" "os" - "sigs.k8s.io/kustomize/cmd/config/configcobra" - "github.com/spf13/cobra" "sigs.k8s.io/kustomize/api/filesys" - "sigs.k8s.io/kustomize/api/k8sdeps/kunstruct" - "sigs.k8s.io/kustomize/api/k8sdeps/validator" "sigs.k8s.io/kustomize/api/konfig" + "sigs.k8s.io/kustomize/api/provider" "sigs.k8s.io/kustomize/cmd/config/completion" + "sigs.k8s.io/kustomize/cmd/config/configcobra" "sigs.k8s.io/kustomize/kustomize/v3/internal/commands/build" "sigs.k8s.io/kustomize/kustomize/v3/internal/commands/create" "sigs.k8s.io/kustomize/kustomize/v3/internal/commands/edit" @@ -36,13 +34,13 @@ Manages declarative configuration of Kubernetes. See https://sigs.k8s.io/kustomize `, } - uf := kunstruct.NewKunstructuredFactoryImpl() - v := validator.NewKustValidator() + pvd := provider.NewDefaultDepProvider() c.AddCommand( completion.NewCommand(), build.NewCmdBuild(stdOut), - edit.NewCmdEdit(fSys, v, uf), - create.NewCmdCreate(fSys, uf), + edit.NewCmdEdit( + fSys, pvd.GetFieldValidator(), pvd.GetKunstructuredFactory()), + create.NewCmdCreate(fSys, pvd.GetKunstructuredFactory()), version.NewCmdVersion(stdOut), openapi.NewCmdOpenAPI(stdOut), ) diff --git a/kustomize/internal/commands/create/create_test.go b/kustomize/internal/commands/create/create_test.go index 2489255a3..5c9fcdc65 100644 --- a/kustomize/internal/commands/create/create_test.go +++ b/kustomize/internal/commands/create/create_test.go @@ -8,12 +8,12 @@ import ( "testing" "sigs.k8s.io/kustomize/api/filesys" - "sigs.k8s.io/kustomize/api/k8sdeps/kunstruct" + "sigs.k8s.io/kustomize/api/provider" "sigs.k8s.io/kustomize/api/types" "sigs.k8s.io/kustomize/kustomize/v3/internal/commands/kustfile" ) -var factory = kunstruct.NewKunstructuredFactoryImpl() +var factory = provider.NewDefaultDepProvider().GetKunstructuredFactory() func readKustomizationFS(t *testing.T, fSys filesys.FileSystem) *types.Kustomization { kf, err := kustfile.NewKustomizationFile(fSys)