hide core/v1 behind interface

This commit is contained in:
Jingfang Liu
2018-10-09 14:51:37 -07:00
parent 0faef46773
commit f783486057
17 changed files with 112 additions and 77 deletions

View File

@@ -20,7 +20,7 @@ import (
"fmt"
"github.com/pkg/errors"
"sigs.k8s.io/kustomize/pkg/configmapandsecret"
"sigs.k8s.io/kustomize/pkg/fs"
"sigs.k8s.io/kustomize/pkg/ifc"
internal "sigs.k8s.io/kustomize/pkg/internal/error"
"sigs.k8s.io/kustomize/pkg/resource"
@@ -80,19 +80,13 @@ func (rmF *Factory) newResMapFromBytes(b []byte) (ResMap, error) {
// NewResMapFromConfigMapArgs returns a Resource slice given
// a configmap metadata slice from kustomization file.
func (rmF *Factory) NewResMapFromConfigMapArgs(
cf *configmapandsecret.ConfigMapFactory,
argList []types.ConfigMapArgs) (ResMap, error) {
func (rmF *Factory) NewResMapFromConfigMapArgs(argList []types.ConfigMapArgs) (ResMap, error) {
var resources []*resource.Resource
for _, args := range argList {
obj, err := cf.MakeConfigMap(&args)
res, err := rmF.resF.MakeConfigMap(&args)
if err != nil {
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)
}
return newResMapFromResourceSlice(resources)
@@ -100,30 +94,21 @@ func (rmF *Factory) NewResMapFromConfigMapArgs(
// NewResMapFromSecretArgs takes a SecretArgs slice, generates
// secrets from each entry, and accumulates them in a ResMap.
func (rmF *Factory) NewResMapFromSecretArgs(
sf *configmapandsecret.SecretFactory,
argsList []types.SecretArgs) (ResMap, error) {
func (rmF *Factory) NewResMapFromSecretArgs(argsList []types.SecretArgs) (ResMap, error) {
var resources []*resource.Resource
for _, args := range argsList {
obj, err := sf.MakeSecret(&args)
res, err := rmF.resF.MakeSecret(&args)
if err != nil {
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)
}
return newResMapFromResourceSlice(resources)
}
func fixBehavior(s string) ifc.GenerationBehavior {
b := ifc.NewGenerationBehavior(s)
if b == ifc.BehaviorUnspecified {
return ifc.BehaviorCreate
}
return b
// Set sets the filesystem and loader for the underlying factory
func (rmF *Factory) Set(fs fs.FileSystem, ldr ifc.Loader) {
rmF.resF.Set(fs, ldr)
}
func newResMapFromResourceSlice(resources []*resource.Resource) (ResMap, error) {

View File

@@ -22,12 +22,11 @@ import (
"reflect"
"testing"
"k8s.io/api/core/v1"
"sigs.k8s.io/kustomize/pkg/configmapandsecret"
"sigs.k8s.io/kustomize/pkg/fs"
"sigs.k8s.io/kustomize/pkg/gvk"
"sigs.k8s.io/kustomize/pkg/ifc"
"sigs.k8s.io/kustomize/pkg/internal/loadertest"
"sigs.k8s.io/kustomize/pkg/loader"
"sigs.k8s.io/kustomize/pkg/resid"
"sigs.k8s.io/kustomize/pkg/types"
)
@@ -133,7 +132,6 @@ func TestNewFromConfigMaps(t *testing.T) {
}
l := loadertest.NewFakeLoader("/home/seans/project/")
cf := configmapandsecret.NewConfigMapFactory(fs.MakeFakeFS(), l)
testCases := []testCase{
{
description: "construct config map from env",
@@ -219,12 +217,12 @@ BAR=baz
// TODO: add testcase for data coming from multiple sources like
// files/literal/env etc.
}
rmF.Set(fs.MakeFakeFS(), l)
for _, tc := range testCases {
if ferr := l.AddFile(tc.filepath, []byte(tc.content)); ferr != nil {
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 {
t.Fatalf("unexpected error: %v", err)
}
@@ -246,20 +244,20 @@ func TestNewResMapFromSecretArgs(t *testing.T) {
"DB_PASSWORD": "printf somepw",
},
},
Type: "Opaque",
Type: ifc.SecretTypeOpaque,
},
{
Name: "peanuts",
CommandSources: types.CommandSources{
EnvCommand: "printf \"DB_USERNAME=admin\nDB_PASSWORD=somepw\"",
},
Type: "Opaque",
Type: ifc.SecretTypeOpaque,
},
}
fakeFs := fs.MakeFakeFS()
fakeFs.Mkdir(".")
actual, err := rmF.NewResMapFromSecretArgs(
configmapandsecret.NewSecretFactory(fakeFs, "."), secrets)
rmF.Set(fakeFs, loader.NewFileLoader(fakeFs))
actual, err := rmF.NewResMapFromSecretArgs(secrets)
if err != nil {
t.Fatalf("unexpected error: %v", err)
@@ -273,7 +271,7 @@ func TestNewResMapFromSecretArgs(t *testing.T) {
"metadata": map[string]interface{}{
"name": "apple",
},
"type": string(v1.SecretTypeOpaque),
"type": ifc.SecretTypeOpaque,
"data": map[string]interface{}{
"DB_USERNAME": base64.StdEncoding.EncodeToString([]byte("admin")),
"DB_PASSWORD": base64.StdEncoding.EncodeToString([]byte("somepw")),
@@ -286,7 +284,7 @@ func TestNewResMapFromSecretArgs(t *testing.T) {
"metadata": map[string]interface{}{
"name": "peanuts",
},
"type": string(v1.SecretTypeOpaque),
"type": ifc.SecretTypeOpaque,
"data": map[string]interface{}{
"DB_USERNAME": base64.StdEncoding.EncodeToString([]byte("admin")),
"DB_PASSWORD": base64.StdEncoding.EncodeToString([]byte("somepw")),
@@ -309,13 +307,13 @@ func TestSecretTimeout(t *testing.T) {
"USER": "sleep 2",
},
},
Type: "Opaque",
Type: ifc.SecretTypeOpaque,
},
}
fakeFs := fs.MakeFakeFS()
fakeFs.Mkdir(".")
_, err := rmF.NewResMapFromSecretArgs(
configmapandsecret.NewSecretFactory(fakeFs, "."), secrets)
rmF.Set(fakeFs, loader.NewFileLoader(fakeFs))
_, err := rmF.NewResMapFromSecretArgs(secrets)
if err == nil {
t.Fatal("didn't get the expected timeout error", err)