mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-11 17:12:51 +00:00
hide core/v1 behind interface
This commit is contained in:
@@ -91,7 +91,7 @@ func TestConstructConfigMap(t *testing.T) {
|
|||||||
input: types.ConfigMapArgs{
|
input: types.ConfigMapArgs{
|
||||||
Name: "envConfigMap",
|
Name: "envConfigMap",
|
||||||
DataSources: types.DataSources{
|
DataSources: types.DataSources{
|
||||||
EnvSource: "../examplelayout/simple/instances/exampleinstance/configmap/app.env",
|
EnvSource: "../../../pkg/examplelayout/simple/instances/exampleinstance/configmap/app.env",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
expected: makeEnvConfigMap("envConfigMap"),
|
expected: makeEnvConfigMap("envConfigMap"),
|
||||||
@@ -101,7 +101,7 @@ func TestConstructConfigMap(t *testing.T) {
|
|||||||
input: types.ConfigMapArgs{
|
input: types.ConfigMapArgs{
|
||||||
Name: "fileConfigMap",
|
Name: "fileConfigMap",
|
||||||
DataSources: types.DataSources{
|
DataSources: types.DataSources{
|
||||||
FileSources: []string{"../examplelayout/simple/instances/exampleinstance/configmap/app-init.ini"},
|
FileSources: []string{"../../../pkg/examplelayout/simple/instances/exampleinstance/configmap/app-init.ini"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
expected: makeFileConfigMap("fileConfigMap"),
|
expected: makeFileConfigMap("fileConfigMap"),
|
||||||
@@ -19,12 +19,17 @@ package k8sdeps
|
|||||||
import (
|
import (
|
||||||
"io"
|
"io"
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||||
|
"sigs.k8s.io/kustomize/internal/k8sdeps/configmapandsecret"
|
||||||
|
"sigs.k8s.io/kustomize/pkg/fs"
|
||||||
"sigs.k8s.io/kustomize/pkg/ifc"
|
"sigs.k8s.io/kustomize/pkg/ifc"
|
||||||
|
"sigs.k8s.io/kustomize/pkg/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
// KunstructurerFactoryImpl hides construction using apimachinery types.
|
// KunstructurerFactoryImpl hides construction using apimachinery types.
|
||||||
type KunstructurerFactoryImpl struct {
|
type KunstructurerFactoryImpl struct {
|
||||||
decoder ifc.Decoder
|
decoder ifc.Decoder
|
||||||
|
cmfactory *configmapandsecret.ConfigMapFactory
|
||||||
|
secfactory *configmapandsecret.SecretFactory
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ ifc.KunstructuredFactory = &KunstructurerFactoryImpl{}
|
var _ ifc.KunstructuredFactory = &KunstructurerFactoryImpl{}
|
||||||
@@ -58,3 +63,27 @@ func (kf *KunstructurerFactoryImpl) FromMap(
|
|||||||
m map[string]interface{}) ifc.Kunstructured {
|
m map[string]interface{}) ifc.Kunstructured {
|
||||||
return &UnstructAdapter{Unstructured: unstructured.Unstructured{Object: m}}
|
return &UnstructAdapter{Unstructured: unstructured.Unstructured{Object: m}}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MakeConfigMap returns an instance of Kunstructured for ConfigMap
|
||||||
|
func (kf *KunstructurerFactoryImpl) MakeConfigMap(args *types.ConfigMapArgs) (ifc.Kunstructured, error) {
|
||||||
|
cm, err := kf.cmfactory.MakeConfigMap(args)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return NewKunstructuredFromObject(cm)
|
||||||
|
}
|
||||||
|
|
||||||
|
// MakeSecret returns an instance of Kunstructured for Secret
|
||||||
|
func (kf *KunstructurerFactoryImpl) MakeSecret(args *types.SecretArgs) (ifc.Kunstructured, error) {
|
||||||
|
sec, err := kf.secfactory.MakeSecret(args)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return NewKunstructuredFromObject(sec)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set sets loader, filesystem and workdirectory
|
||||||
|
func (kf *KunstructurerFactoryImpl) Set(fs fs.FileSystem, ldr ifc.Loader) {
|
||||||
|
kf.cmfactory = configmapandsecret.NewConfigMapFactory(fs, ldr)
|
||||||
|
kf.secfactory = configmapandsecret.NewSecretFactory(fs, ldr.Root())
|
||||||
|
}
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ See https://sigs.k8s.io/kustomize
|
|||||||
c.AddCommand(
|
c.AddCommand(
|
||||||
// TODO: Make consistent API for newCmd* functions.
|
// TODO: Make consistent API for newCmd* functions.
|
||||||
build.NewCmdBuild(stdOut, fsys, kf, ptf, decoder, hash),
|
build.NewCmdBuild(stdOut, fsys, kf, ptf, decoder, hash),
|
||||||
edit.NewCmdEdit(fsys, validator),
|
edit.NewCmdEdit(fsys, validator, kf),
|
||||||
misc.NewCmdConfig(fsys),
|
misc.NewCmdConfig(fsys),
|
||||||
misc.NewCmdVersion(stdOut),
|
misc.NewCmdVersion(stdOut),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// NewCmdAdd returns an instance of 'add' subcommand.
|
// NewCmdAdd returns an instance of 'add' subcommand.
|
||||||
func NewCmdAdd(fsys fs.FileSystem, v ifc.Validator) *cobra.Command {
|
func NewCmdAdd(fsys fs.FileSystem, v ifc.Validator, kf ifc.KunstructuredFactory) *cobra.Command {
|
||||||
c := &cobra.Command{
|
c := &cobra.Command{
|
||||||
Use: "add",
|
Use: "add",
|
||||||
Short: "Adds configmap/resource/patch/base to the kustomization file.",
|
Short: "Adds configmap/resource/patch/base to the kustomization file.",
|
||||||
@@ -53,7 +53,7 @@ func NewCmdAdd(fsys fs.FileSystem, v ifc.Validator) *cobra.Command {
|
|||||||
c.AddCommand(
|
c.AddCommand(
|
||||||
newCmdAddResource(fsys),
|
newCmdAddResource(fsys),
|
||||||
newCmdAddPatch(fsys),
|
newCmdAddPatch(fsys),
|
||||||
newCmdAddConfigMap(fsys),
|
newCmdAddConfigMap(fsys, kf),
|
||||||
newCmdAddBase(fsys),
|
newCmdAddBase(fsys),
|
||||||
newCmdAddLabel(fsys, v.MakeLabelValidator()),
|
newCmdAddLabel(fsys, v.MakeLabelValidator()),
|
||||||
newCmdAddAnnotation(fsys, v.MakeAnnotationValidator()),
|
newCmdAddAnnotation(fsys, v.MakeAnnotationValidator()),
|
||||||
|
|||||||
@@ -21,15 +21,15 @@ import (
|
|||||||
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
"sigs.k8s.io/kustomize/pkg/commands/kustfile"
|
"sigs.k8s.io/kustomize/pkg/commands/kustfile"
|
||||||
"sigs.k8s.io/kustomize/pkg/configmapandsecret"
|
|
||||||
"sigs.k8s.io/kustomize/pkg/constants"
|
"sigs.k8s.io/kustomize/pkg/constants"
|
||||||
"sigs.k8s.io/kustomize/pkg/fs"
|
"sigs.k8s.io/kustomize/pkg/fs"
|
||||||
|
"sigs.k8s.io/kustomize/pkg/ifc"
|
||||||
"sigs.k8s.io/kustomize/pkg/loader"
|
"sigs.k8s.io/kustomize/pkg/loader"
|
||||||
"sigs.k8s.io/kustomize/pkg/types"
|
"sigs.k8s.io/kustomize/pkg/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
// newCmdAddConfigMap returns a new command.
|
// newCmdAddConfigMap returns a new command.
|
||||||
func newCmdAddConfigMap(fSys fs.FileSystem) *cobra.Command {
|
func newCmdAddConfigMap(fSys fs.FileSystem, kf ifc.KunstructuredFactory) *cobra.Command {
|
||||||
var flagsAndArgs cMapFlagsAndArgs
|
var flagsAndArgs cMapFlagsAndArgs
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "configmap NAME [--from-file=[key=]source] [--from-literal=key1=value1]",
|
Use: "configmap NAME [--from-file=[key=]source] [--from-literal=key1=value1]",
|
||||||
@@ -68,10 +68,8 @@ func newCmdAddConfigMap(fSys fs.FileSystem) *cobra.Command {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add the flagsAndArgs map to the kustomization file.
|
// Add the flagsAndArgs map to the kustomization file.
|
||||||
err = addConfigMap(
|
kf.Set(fSys, loader.NewFileLoader(fSys))
|
||||||
kustomization, flagsAndArgs,
|
err = addConfigMap(kustomization, flagsAndArgs, kf)
|
||||||
configmapandsecret.NewConfigMapFactory(
|
|
||||||
fSys, loader.NewFileLoader(fSys)))
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -107,15 +105,14 @@ func newCmdAddConfigMap(fSys fs.FileSystem) *cobra.Command {
|
|||||||
// Suggest passing a copy of kustomization file.
|
// Suggest passing a copy of kustomization file.
|
||||||
func addConfigMap(
|
func addConfigMap(
|
||||||
k *types.Kustomization,
|
k *types.Kustomization,
|
||||||
flagsAndArgs cMapFlagsAndArgs,
|
flagsAndArgs cMapFlagsAndArgs, kf ifc.KunstructuredFactory) error {
|
||||||
factory *configmapandsecret.ConfigMapFactory) error {
|
|
||||||
cmArgs := makeConfigMapArgs(k, flagsAndArgs.Name)
|
cmArgs := makeConfigMapArgs(k, flagsAndArgs.Name)
|
||||||
err := mergeFlagsIntoCmArgs(&cmArgs.DataSources, flagsAndArgs)
|
err := mergeFlagsIntoCmArgs(&cmArgs.DataSources, flagsAndArgs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// Validate by trying to create corev1.configmap.
|
// Validate by trying to create corev1.configmap.
|
||||||
_, err = factory.MakeConfigMap(cmArgs)
|
_, err = kf.MakeConfigMap(cmArgs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestNewAddConfigMapIsNotNil(t *testing.T) {
|
func TestNewAddConfigMapIsNotNil(t *testing.T) {
|
||||||
if newCmdAddConfigMap(fs.MakeFakeFS()) == nil {
|
if newCmdAddConfigMap(fs.MakeFakeFS(), nil) == nil {
|
||||||
t.Fatal("newCmdAddConfigMap shouldn't be nil")
|
t.Fatal("newCmdAddConfigMap shouldn't be nil")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// NewCmdEdit returns an instance of 'edit' subcommand.
|
// NewCmdEdit returns an instance of 'edit' subcommand.
|
||||||
func NewCmdEdit(fsys fs.FileSystem, v ifc.Validator) *cobra.Command {
|
func NewCmdEdit(fsys fs.FileSystem, v ifc.Validator, kf ifc.KunstructuredFactory) *cobra.Command {
|
||||||
c := &cobra.Command{
|
c := &cobra.Command{
|
||||||
Use: "edit",
|
Use: "edit",
|
||||||
Short: "Edits a kustomization file",
|
Short: "Edits a kustomization file",
|
||||||
@@ -40,7 +40,7 @@ func NewCmdEdit(fsys fs.FileSystem, v ifc.Validator) *cobra.Command {
|
|||||||
Args: cobra.MinimumNArgs(1),
|
Args: cobra.MinimumNArgs(1),
|
||||||
}
|
}
|
||||||
c.AddCommand(
|
c.AddCommand(
|
||||||
add.NewCmdAdd(fsys, v),
|
add.NewCmdAdd(fsys, v, kf),
|
||||||
set.NewCmdSet(fsys, v),
|
set.NewCmdSet(fsys, v),
|
||||||
)
|
)
|
||||||
return c
|
return c
|
||||||
|
|||||||
@@ -17,7 +17,11 @@ limitations under the License.
|
|||||||
// Package ifc holds miscellaneous interfaces used by kustomize.
|
// Package ifc holds miscellaneous interfaces used by kustomize.
|
||||||
package ifc
|
package ifc
|
||||||
|
|
||||||
import "sigs.k8s.io/kustomize/pkg/gvk"
|
import (
|
||||||
|
"sigs.k8s.io/kustomize/pkg/fs"
|
||||||
|
"sigs.k8s.io/kustomize/pkg/gvk"
|
||||||
|
"sigs.k8s.io/kustomize/pkg/types"
|
||||||
|
)
|
||||||
|
|
||||||
// Decoder unmarshalls byte input into an object.
|
// Decoder unmarshalls byte input into an object.
|
||||||
type Decoder interface {
|
type Decoder interface {
|
||||||
@@ -74,4 +78,10 @@ type Kunstructured interface {
|
|||||||
type KunstructuredFactory interface {
|
type KunstructuredFactory interface {
|
||||||
SliceFromBytes([]byte) ([]Kunstructured, error)
|
SliceFromBytes([]byte) ([]Kunstructured, error)
|
||||||
FromMap(m map[string]interface{}) Kunstructured
|
FromMap(m map[string]interface{}) Kunstructured
|
||||||
|
MakeConfigMap(args *types.ConfigMapArgs) (Kunstructured, error)
|
||||||
|
MakeSecret(args *types.SecretArgs) (Kunstructured, error)
|
||||||
|
Set(fs fs.FileSystem, ldr Loader)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// See core.v1.SecretTypeOpaque
|
||||||
|
const SecretTypeOpaque = "Opaque"
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"sigs.k8s.io/kustomize/pkg/configmapandsecret"
|
"sigs.k8s.io/kustomize/pkg/fs"
|
||||||
"sigs.k8s.io/kustomize/pkg/ifc"
|
"sigs.k8s.io/kustomize/pkg/ifc"
|
||||||
internal "sigs.k8s.io/kustomize/pkg/internal/error"
|
internal "sigs.k8s.io/kustomize/pkg/internal/error"
|
||||||
"sigs.k8s.io/kustomize/pkg/resource"
|
"sigs.k8s.io/kustomize/pkg/resource"
|
||||||
@@ -80,19 +80,13 @@ func (rmF *Factory) newResMapFromBytes(b []byte) (ResMap, error) {
|
|||||||
|
|
||||||
// NewResMapFromConfigMapArgs returns a Resource slice given
|
// NewResMapFromConfigMapArgs returns a Resource slice given
|
||||||
// a configmap metadata slice from kustomization file.
|
// a configmap metadata slice from kustomization file.
|
||||||
func (rmF *Factory) NewResMapFromConfigMapArgs(
|
func (rmF *Factory) NewResMapFromConfigMapArgs(argList []types.ConfigMapArgs) (ResMap, error) {
|
||||||
cf *configmapandsecret.ConfigMapFactory,
|
|
||||||
argList []types.ConfigMapArgs) (ResMap, error) {
|
|
||||||
var resources []*resource.Resource
|
var resources []*resource.Resource
|
||||||
for _, args := range argList {
|
for _, args := range argList {
|
||||||
obj, err := cf.MakeConfigMap(&args)
|
res, err := rmF.resF.MakeConfigMap(&args)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, "NewResMapFromConfigMapArgs")
|
return nil, errors.Wrap(err, "NewResMapFromConfigMapArgs")
|
||||||
}
|
}
|
||||||
res, err := rmF.resF.WithBehavior(obj, fixBehavior(args.Behavior))
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
resources = append(resources, res)
|
resources = append(resources, res)
|
||||||
}
|
}
|
||||||
return newResMapFromResourceSlice(resources)
|
return newResMapFromResourceSlice(resources)
|
||||||
@@ -100,30 +94,21 @@ func (rmF *Factory) NewResMapFromConfigMapArgs(
|
|||||||
|
|
||||||
// NewResMapFromSecretArgs takes a SecretArgs slice, generates
|
// NewResMapFromSecretArgs takes a SecretArgs slice, generates
|
||||||
// secrets from each entry, and accumulates them in a ResMap.
|
// secrets from each entry, and accumulates them in a ResMap.
|
||||||
func (rmF *Factory) NewResMapFromSecretArgs(
|
func (rmF *Factory) NewResMapFromSecretArgs(argsList []types.SecretArgs) (ResMap, error) {
|
||||||
sf *configmapandsecret.SecretFactory,
|
|
||||||
argsList []types.SecretArgs) (ResMap, error) {
|
|
||||||
var resources []*resource.Resource
|
var resources []*resource.Resource
|
||||||
for _, args := range argsList {
|
for _, args := range argsList {
|
||||||
obj, err := sf.MakeSecret(&args)
|
res, err := rmF.resF.MakeSecret(&args)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, "NewResMapFromSecretArgs")
|
return nil, errors.Wrap(err, "NewResMapFromSecretArgs")
|
||||||
}
|
}
|
||||||
res, err := rmF.resF.WithBehavior(obj, fixBehavior(args.Behavior))
|
|
||||||
if err != nil {
|
|
||||||
return nil, errors.Wrap(err, "WithBehavior")
|
|
||||||
}
|
|
||||||
resources = append(resources, res)
|
resources = append(resources, res)
|
||||||
}
|
}
|
||||||
return newResMapFromResourceSlice(resources)
|
return newResMapFromResourceSlice(resources)
|
||||||
}
|
}
|
||||||
|
|
||||||
func fixBehavior(s string) ifc.GenerationBehavior {
|
// Set sets the filesystem and loader for the underlying factory
|
||||||
b := ifc.NewGenerationBehavior(s)
|
func (rmF *Factory) Set(fs fs.FileSystem, ldr ifc.Loader) {
|
||||||
if b == ifc.BehaviorUnspecified {
|
rmF.resF.Set(fs, ldr)
|
||||||
return ifc.BehaviorCreate
|
|
||||||
}
|
|
||||||
return b
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func newResMapFromResourceSlice(resources []*resource.Resource) (ResMap, error) {
|
func newResMapFromResourceSlice(resources []*resource.Resource) (ResMap, error) {
|
||||||
|
|||||||
@@ -22,12 +22,11 @@ import (
|
|||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"k8s.io/api/core/v1"
|
|
||||||
"sigs.k8s.io/kustomize/pkg/configmapandsecret"
|
|
||||||
"sigs.k8s.io/kustomize/pkg/fs"
|
"sigs.k8s.io/kustomize/pkg/fs"
|
||||||
"sigs.k8s.io/kustomize/pkg/gvk"
|
"sigs.k8s.io/kustomize/pkg/gvk"
|
||||||
"sigs.k8s.io/kustomize/pkg/ifc"
|
"sigs.k8s.io/kustomize/pkg/ifc"
|
||||||
"sigs.k8s.io/kustomize/pkg/internal/loadertest"
|
"sigs.k8s.io/kustomize/pkg/internal/loadertest"
|
||||||
|
"sigs.k8s.io/kustomize/pkg/loader"
|
||||||
"sigs.k8s.io/kustomize/pkg/resid"
|
"sigs.k8s.io/kustomize/pkg/resid"
|
||||||
"sigs.k8s.io/kustomize/pkg/types"
|
"sigs.k8s.io/kustomize/pkg/types"
|
||||||
)
|
)
|
||||||
@@ -133,7 +132,6 @@ func TestNewFromConfigMaps(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
l := loadertest.NewFakeLoader("/home/seans/project/")
|
l := loadertest.NewFakeLoader("/home/seans/project/")
|
||||||
cf := configmapandsecret.NewConfigMapFactory(fs.MakeFakeFS(), l)
|
|
||||||
testCases := []testCase{
|
testCases := []testCase{
|
||||||
{
|
{
|
||||||
description: "construct config map from env",
|
description: "construct config map from env",
|
||||||
@@ -219,12 +217,12 @@ BAR=baz
|
|||||||
// TODO: add testcase for data coming from multiple sources like
|
// TODO: add testcase for data coming from multiple sources like
|
||||||
// files/literal/env etc.
|
// files/literal/env etc.
|
||||||
}
|
}
|
||||||
|
rmF.Set(fs.MakeFakeFS(), l)
|
||||||
for _, tc := range testCases {
|
for _, tc := range testCases {
|
||||||
if ferr := l.AddFile(tc.filepath, []byte(tc.content)); ferr != nil {
|
if ferr := l.AddFile(tc.filepath, []byte(tc.content)); ferr != nil {
|
||||||
t.Fatalf("Error adding fake file: %v\n", ferr)
|
t.Fatalf("Error adding fake file: %v\n", ferr)
|
||||||
}
|
}
|
||||||
r, err := rmF.NewResMapFromConfigMapArgs(cf, tc.input)
|
r, err := rmF.NewResMapFromConfigMapArgs(tc.input)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("unexpected error: %v", err)
|
t.Fatalf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
@@ -246,20 +244,20 @@ func TestNewResMapFromSecretArgs(t *testing.T) {
|
|||||||
"DB_PASSWORD": "printf somepw",
|
"DB_PASSWORD": "printf somepw",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Type: "Opaque",
|
Type: ifc.SecretTypeOpaque,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "peanuts",
|
Name: "peanuts",
|
||||||
CommandSources: types.CommandSources{
|
CommandSources: types.CommandSources{
|
||||||
EnvCommand: "printf \"DB_USERNAME=admin\nDB_PASSWORD=somepw\"",
|
EnvCommand: "printf \"DB_USERNAME=admin\nDB_PASSWORD=somepw\"",
|
||||||
},
|
},
|
||||||
Type: "Opaque",
|
Type: ifc.SecretTypeOpaque,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
fakeFs := fs.MakeFakeFS()
|
fakeFs := fs.MakeFakeFS()
|
||||||
fakeFs.Mkdir(".")
|
fakeFs.Mkdir(".")
|
||||||
actual, err := rmF.NewResMapFromSecretArgs(
|
rmF.Set(fakeFs, loader.NewFileLoader(fakeFs))
|
||||||
configmapandsecret.NewSecretFactory(fakeFs, "."), secrets)
|
actual, err := rmF.NewResMapFromSecretArgs(secrets)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("unexpected error: %v", err)
|
t.Fatalf("unexpected error: %v", err)
|
||||||
@@ -273,7 +271,7 @@ func TestNewResMapFromSecretArgs(t *testing.T) {
|
|||||||
"metadata": map[string]interface{}{
|
"metadata": map[string]interface{}{
|
||||||
"name": "apple",
|
"name": "apple",
|
||||||
},
|
},
|
||||||
"type": string(v1.SecretTypeOpaque),
|
"type": ifc.SecretTypeOpaque,
|
||||||
"data": map[string]interface{}{
|
"data": map[string]interface{}{
|
||||||
"DB_USERNAME": base64.StdEncoding.EncodeToString([]byte("admin")),
|
"DB_USERNAME": base64.StdEncoding.EncodeToString([]byte("admin")),
|
||||||
"DB_PASSWORD": base64.StdEncoding.EncodeToString([]byte("somepw")),
|
"DB_PASSWORD": base64.StdEncoding.EncodeToString([]byte("somepw")),
|
||||||
@@ -286,7 +284,7 @@ func TestNewResMapFromSecretArgs(t *testing.T) {
|
|||||||
"metadata": map[string]interface{}{
|
"metadata": map[string]interface{}{
|
||||||
"name": "peanuts",
|
"name": "peanuts",
|
||||||
},
|
},
|
||||||
"type": string(v1.SecretTypeOpaque),
|
"type": ifc.SecretTypeOpaque,
|
||||||
"data": map[string]interface{}{
|
"data": map[string]interface{}{
|
||||||
"DB_USERNAME": base64.StdEncoding.EncodeToString([]byte("admin")),
|
"DB_USERNAME": base64.StdEncoding.EncodeToString([]byte("admin")),
|
||||||
"DB_PASSWORD": base64.StdEncoding.EncodeToString([]byte("somepw")),
|
"DB_PASSWORD": base64.StdEncoding.EncodeToString([]byte("somepw")),
|
||||||
@@ -309,13 +307,13 @@ func TestSecretTimeout(t *testing.T) {
|
|||||||
"USER": "sleep 2",
|
"USER": "sleep 2",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Type: "Opaque",
|
Type: ifc.SecretTypeOpaque,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
fakeFs := fs.MakeFakeFS()
|
fakeFs := fs.MakeFakeFS()
|
||||||
fakeFs.Mkdir(".")
|
fakeFs.Mkdir(".")
|
||||||
_, err := rmF.NewResMapFromSecretArgs(
|
rmF.Set(fakeFs, loader.NewFileLoader(fakeFs))
|
||||||
configmapandsecret.NewSecretFactory(fakeFs, "."), secrets)
|
_, err := rmF.NewResMapFromSecretArgs(secrets)
|
||||||
|
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal("didn't get the expected timeout error", err)
|
t.Fatal("didn't get the expected timeout error", err)
|
||||||
|
|||||||
@@ -19,11 +19,11 @@ package resource
|
|||||||
import (
|
import (
|
||||||
"log"
|
"log"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"sigs.k8s.io/kustomize/pkg/fs"
|
||||||
"sigs.k8s.io/kustomize/internal/k8sdeps"
|
|
||||||
"sigs.k8s.io/kustomize/pkg/ifc"
|
"sigs.k8s.io/kustomize/pkg/ifc"
|
||||||
internal "sigs.k8s.io/kustomize/pkg/internal/error"
|
internal "sigs.k8s.io/kustomize/pkg/internal/error"
|
||||||
"sigs.k8s.io/kustomize/pkg/patch"
|
"sigs.k8s.io/kustomize/pkg/patch"
|
||||||
|
"sigs.k8s.io/kustomize/pkg/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Factory makes instances of Resource.
|
// Factory makes instances of Resource.
|
||||||
@@ -36,16 +36,6 @@ func NewFactory(kf ifc.KunstructuredFactory) *Factory {
|
|||||||
return &Factory{kf: kf}
|
return &Factory{kf: kf}
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithBehavior returns a new instance of Resource.
|
|
||||||
// TODO(monopole): This runtime dependence must be refactored away.
|
|
||||||
// The logic calling this has to move to k8sdeps.
|
|
||||||
func (rf *Factory) WithBehavior(
|
|
||||||
obj runtime.Object, b ifc.GenerationBehavior) (*Resource, error) {
|
|
||||||
// TODO(monopole): This k8sdeps dependence must be refactored away.
|
|
||||||
u, err := k8sdeps.NewKunstructuredFromObject(obj)
|
|
||||||
return &Resource{Kunstructured: u, b: b}, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// FromMap returns a new instance of Resource.
|
// FromMap returns a new instance of Resource.
|
||||||
func (rf *Factory) FromMap(m map[string]interface{}) *Resource {
|
func (rf *Factory) FromMap(m map[string]interface{}) *Resource {
|
||||||
return &Resource{
|
return &Resource{
|
||||||
@@ -93,3 +83,34 @@ func (rf *Factory) SliceFromBytes(in []byte) ([]*Resource, error) {
|
|||||||
}
|
}
|
||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Set sets the filesystem and loader for the underlying factory
|
||||||
|
func (rf *Factory) Set(fs fs.FileSystem, ldr ifc.Loader) {
|
||||||
|
rf.kf.Set(fs, ldr)
|
||||||
|
}
|
||||||
|
|
||||||
|
// MakeConfigMap makes an instance of Resource for ConfigMap
|
||||||
|
func (rf *Factory) MakeConfigMap(args *types.ConfigMapArgs) (*Resource, error) {
|
||||||
|
u, err := rf.kf.MakeConfigMap(args)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &Resource{Kunstructured: u, b: fixBehavior(args.Behavior)}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// MakeSecret makes an instance of Resource for Secret
|
||||||
|
func (rf *Factory) MakeSecret(args *types.SecretArgs) (*Resource, error) {
|
||||||
|
u, err := rf.kf.MakeSecret(args)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &Resource{Kunstructured: u, b: fixBehavior(args.Behavior)}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func fixBehavior(s string) ifc.GenerationBehavior {
|
||||||
|
b := ifc.NewGenerationBehavior(s)
|
||||||
|
if b == ifc.BehaviorUnspecified {
|
||||||
|
return ifc.BehaviorCreate
|
||||||
|
}
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ import (
|
|||||||
"github.com/ghodss/yaml"
|
"github.com/ghodss/yaml"
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"sigs.k8s.io/kustomize/pkg/configmapandsecret"
|
|
||||||
"sigs.k8s.io/kustomize/pkg/constants"
|
"sigs.k8s.io/kustomize/pkg/constants"
|
||||||
"sigs.k8s.io/kustomize/pkg/crds"
|
"sigs.k8s.io/kustomize/pkg/crds"
|
||||||
"sigs.k8s.io/kustomize/pkg/fs"
|
"sigs.k8s.io/kustomize/pkg/fs"
|
||||||
@@ -190,15 +189,12 @@ func (kt *KustTarget) loadCustomizedResMap() (resmap.ResMap, error) {
|
|||||||
|
|
||||||
func (kt *KustTarget) generateConfigMapsAndSecrets(
|
func (kt *KustTarget) generateConfigMapsAndSecrets(
|
||||||
errs *interror.KustomizationErrors) (resmap.ResMap, error) {
|
errs *interror.KustomizationErrors) (resmap.ResMap, error) {
|
||||||
cms, err := kt.rf.NewResMapFromConfigMapArgs(
|
kt.rf.Set(kt.fSys, kt.ldr)
|
||||||
configmapandsecret.NewConfigMapFactory(kt.fSys, kt.ldr),
|
cms, err := kt.rf.NewResMapFromConfigMapArgs(kt.kustomization.ConfigMapGenerator)
|
||||||
kt.kustomization.ConfigMapGenerator)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errs.Append(errors.Wrap(err, "NewResMapFromConfigMapArgs"))
|
errs.Append(errors.Wrap(err, "NewResMapFromConfigMapArgs"))
|
||||||
}
|
}
|
||||||
secrets, err := kt.rf.NewResMapFromSecretArgs(
|
secrets, err := kt.rf.NewResMapFromSecretArgs(kt.kustomization.SecretGenerator)
|
||||||
configmapandsecret.NewSecretFactory(kt.fSys, kt.ldr.Root()),
|
|
||||||
kt.kustomization.SecretGenerator)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errs.Append(errors.Wrap(err, "NewResMapFromSecretArgs"))
|
errs.Append(errors.Wrap(err, "NewResMapFromSecretArgs"))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
corev1 "k8s.io/api/core/v1"
|
|
||||||
"sigs.k8s.io/kustomize/internal/k8sdeps"
|
"sigs.k8s.io/kustomize/internal/k8sdeps"
|
||||||
"sigs.k8s.io/kustomize/internal/k8sdeps/patch"
|
"sigs.k8s.io/kustomize/internal/k8sdeps/patch"
|
||||||
"sigs.k8s.io/kustomize/pkg/constants"
|
"sigs.k8s.io/kustomize/pkg/constants"
|
||||||
@@ -186,7 +185,7 @@ func TestResources1(t *testing.T) {
|
|||||||
"note": "This is a test annotation",
|
"note": "This is a test annotation",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"type": string(corev1.SecretTypeOpaque),
|
"type": ifc.SecretTypeOpaque,
|
||||||
"data": map[string]interface{}{
|
"data": map[string]interface{}{
|
||||||
"DB_USERNAME": base64.StdEncoding.EncodeToString([]byte("admin")),
|
"DB_USERNAME": base64.StdEncoding.EncodeToString([]byte("admin")),
|
||||||
"DB_PASSWORD": base64.StdEncoding.EncodeToString([]byte("somepw")),
|
"DB_PASSWORD": base64.StdEncoding.EncodeToString([]byte("somepw")),
|
||||||
|
|||||||
Reference in New Issue
Block a user