Hide unstructured.Unstructured behind interface.

This commit is contained in:
jregan
2018-10-06 10:44:34 -07:00
committed by Jeffrey Regan
parent 9c8302b2d2
commit 0f5a39f328
35 changed files with 527 additions and 419 deletions

View File

@@ -37,7 +37,7 @@ func NewResMapFromConfigMapArgs(
if err != nil {
return nil, err
}
res, err := resource.NewResourceWithBehavior(
res, err := resource.NewWithBehavior(
cm, ifc.NewGenerationBehavior(cmArgs.Behavior))
if err != nil {
return nil, err

View File

@@ -57,7 +57,7 @@ func TestNewFromConfigMaps(t *testing.T) {
filepath: "/home/seans/project/app.env",
content: "DB_USERNAME=admin\nDB_PASSWORD=somepw",
expected: ResMap{
resid.NewResId(cmap, "envConfigMap"): resource.NewResourceFromMap(
resid.NewResId(cmap, "envConfigMap"): resource.NewFromMap(
map[string]interface{}{
"apiVersion": "v1",
"kind": "ConfigMap",
@@ -83,7 +83,7 @@ func TestNewFromConfigMaps(t *testing.T) {
filepath: "/home/seans/project/app-init.ini",
content: "FOO=bar\nBAR=baz\n",
expected: ResMap{
resid.NewResId(cmap, "fileConfigMap"): resource.NewResourceFromMap(
resid.NewResId(cmap, "fileConfigMap"): resource.NewFromMap(
map[string]interface{}{
"apiVersion": "v1",
"kind": "ConfigMap",
@@ -109,7 +109,7 @@ BAR=baz
},
},
expected: ResMap{
resid.NewResId(cmap, "literalConfigMap"): resource.NewResourceFromMap(
resid.NewResId(cmap, "literalConfigMap"): resource.NewFromMap(
map[string]interface{}{
"apiVersion": "v1",
"kind": "ConfigMap",

View File

@@ -68,7 +68,7 @@ func (m ResMap) EncodeAsYaml() ([]byte, error) {
buf := bytes.NewBuffer(b)
for _, id := range ids {
obj := m[id]
out, err := yaml.Marshal(obj)
out, err := yaml.Marshal(obj.Map())
if err != nil {
return nil, err
}
@@ -117,7 +117,7 @@ func (m ResMap) ErrorIfNotEqual(m2 ResMap) error {
func (m ResMap) DeepCopy() ResMap {
mcopy := make(ResMap)
for id, obj := range m {
mcopy[id] = resource.NewResourceFromUnstruct(obj.Unstructured)
mcopy[id] = resource.NewFromKunstructured(obj.Copy())
mcopy[id].SetBehavior(obj.Behavior())
}
return mcopy
@@ -156,7 +156,7 @@ func NewResMapFromFiles(
// newResMapFromBytes decodes a list of objects in byte array format.
func newResMapFromBytes(b []byte, d ifc.Decoder) (ResMap, error) {
resources, err := resource.NewResourceSliceFromBytes(b, d)
resources, err := resource.NewSliceFromBytes(b, d)
if err != nil {
return nil, err
}
@@ -227,15 +227,18 @@ func MergeWithOverride(maps ...ResMap) (ResMap, error) {
id = matchedId[0]
switch r.Behavior() {
case ifc.BehaviorReplace:
glog.V(4).Infof("Replace %v with %v", result[id].Object, r.Object)
glog.V(4).Infof(
"Replace %v with %v", result[id].Map(), r.Map())
r.Replace(result[id])
result[id] = r
result[id].SetBehavior(ifc.BehaviorCreate)
case ifc.BehaviorMerge:
glog.V(4).Infof("Merging %v with %v", result[id].Object, r.Object)
glog.V(4).Infof(
"Merging %v with %v", result[id].Map(), r.Map())
r.Merge(result[id])
result[id] = r
glog.V(4).Infof("Merged object is %v", result[id].Object)
glog.V(4).Infof(
"Merged object is %v", result[id].Map())
result[id].SetBehavior(ifc.BehaviorCreate)
default:
return nil, fmt.Errorf("id %#v exists; must merge or replace", id)

View File

@@ -44,7 +44,7 @@ metadata:
name: cm2
`)
input := ResMap{
resid.NewResId(cmap, "cm1"): resource.NewResourceFromMap(
resid.NewResId(cmap, "cm1"): resource.NewFromMap(
map[string]interface{}{
"apiVersion": "v1",
"kind": "ConfigMap",
@@ -52,7 +52,7 @@ metadata:
"name": "cm1",
},
}),
resid.NewResId(cmap, "cm2"): resource.NewResourceFromMap(
resid.NewResId(cmap, "cm2"): resource.NewFromMap(
map[string]interface{}{
"apiVersion": "v1",
"kind": "ConfigMap",
@@ -72,7 +72,7 @@ metadata:
func TestDemandOneMatchForId(t *testing.T) {
rm1 := ResMap{
resid.NewResIdWithPrefixNamespace(cmap, "cm1", "prefix1", "ns1"): resource.NewResourceFromMap(
resid.NewResIdWithPrefixNamespace(cmap, "cm1", "prefix1", "ns1"): resource.NewFromMap(
map[string]interface{}{
"apiVersion": "v1",
"kind": "ConfigMap",
@@ -80,7 +80,7 @@ func TestDemandOneMatchForId(t *testing.T) {
"name": "cm1",
},
}),
resid.NewResIdWithPrefixNamespace(cmap, "cm2", "prefix1", "ns1"): resource.NewResourceFromMap(
resid.NewResIdWithPrefixNamespace(cmap, "cm2", "prefix1", "ns1"): resource.NewFromMap(
map[string]interface{}{
"apiVersion": "v1",
"kind": "ConfigMap",
@@ -118,7 +118,7 @@ func TestDemandOneMatchForId(t *testing.T) {
}
func TestFilterBy(t *testing.T) {
rm := ResMap{resid.NewResIdWithPrefixNamespace(cmap, "cm1", "prefix1", "ns1"): resource.NewResourceFromMap(
rm := ResMap{resid.NewResIdWithPrefixNamespace(cmap, "cm1", "prefix1", "ns1"): resource.NewFromMap(
map[string]interface{}{
"apiVersion": "v1",
"kind": "ConfigMap",
@@ -126,7 +126,7 @@ func TestFilterBy(t *testing.T) {
"name": "cm1",
},
}),
resid.NewResIdWithPrefixNamespace(cmap, "cm2", "prefix1", "ns1"): resource.NewResourceFromMap(
resid.NewResIdWithPrefixNamespace(cmap, "cm2", "prefix1", "ns1"): resource.NewFromMap(
map[string]interface{}{
"apiVersion": "v1",
"kind": "ConfigMap",
@@ -136,7 +136,7 @@ func TestFilterBy(t *testing.T) {
}),
}
rm1 := ResMap{
resid.NewResIdWithPrefixNamespace(cmap, "cm3", "prefix1", "ns2"): resource.NewResourceFromMap(
resid.NewResIdWithPrefixNamespace(cmap, "cm3", "prefix1", "ns2"): resource.NewFromMap(
map[string]interface{}{
"apiVersion": "v1",
"kind": "ConfigMap",
@@ -162,7 +162,7 @@ func TestFilterBy(t *testing.T) {
}
func TestDeepCopy(t *testing.T) {
rm1 := ResMap{
resid.NewResId(cmap, "cm1"): resource.NewResourceFromMap(
resid.NewResId(cmap, "cm1"): resource.NewFromMap(
map[string]interface{}{
"apiVersion": "v1",
"kind": "ConfigMap",
@@ -170,7 +170,7 @@ func TestDeepCopy(t *testing.T) {
"name": "cm1",
},
}),
resid.NewResId(cmap, "cm2"): resource.NewResourceFromMap(
resid.NewResId(cmap, "cm2"): resource.NewFromMap(
map[string]interface{}{
"apiVersion": "v1",
"kind": "ConfigMap",
@@ -194,7 +194,7 @@ func TestDeepCopy(t *testing.T) {
func TestErrorIfNotEqual(t *testing.T) {
rm1 := ResMap{
resid.NewResId(cmap, "cm1"): resource.NewResourceFromMap(
resid.NewResId(cmap, "cm1"): resource.NewFromMap(
map[string]interface{}{
"apiVersion": "v1",
"kind": "ConfigMap",
@@ -202,7 +202,7 @@ func TestErrorIfNotEqual(t *testing.T) {
"name": "cm1",
},
}),
resid.NewResId(cmap, "cm2"): resource.NewResourceFromMap(
resid.NewResId(cmap, "cm2"): resource.NewFromMap(
map[string]interface{}{
"apiVersion": "v1",
"kind": "ConfigMap",
@@ -218,7 +218,7 @@ func TestErrorIfNotEqual(t *testing.T) {
}
rm2 := ResMap{
resid.NewResId(cmap, "cm1"): resource.NewResourceFromMap(
resid.NewResId(cmap, "cm1"): resource.NewFromMap(
map[string]interface{}{
"apiVersion": "v1",
"kind": "ConfigMap",
@@ -235,7 +235,7 @@ func TestErrorIfNotEqual(t *testing.T) {
}
rm3 := ResMap{
resid.NewResId(cmap, "cm2"): resource.NewResourceFromMap(
resid.NewResId(cmap, "cm2"): resource.NewFromMap(
map[string]interface{}{
"apiVersion": "v1",
"kind": "ConfigMap",
@@ -252,7 +252,7 @@ func TestErrorIfNotEqual(t *testing.T) {
}
rm4 := ResMap{
resid.NewResId(cmap, "cm1"): resource.NewResourceFromMap(
resid.NewResId(cmap, "cm1"): resource.NewFromMap(
map[string]interface{}{
"apiVersion": "v1",
"kind": "ConfigMap",
@@ -291,7 +291,7 @@ metadata:
if ferr := l.AddFile("/home/seans/project/deployment.yaml", []byte(resourceStr)); ferr != nil {
t.Fatalf("Error adding fake file: %v\n", ferr)
}
expected := ResMap{resid.NewResId(deploy, "dply1"): resource.NewResourceFromMap(
expected := ResMap{resid.NewResId(deploy, "dply1"): resource.NewFromMap(
map[string]interface{}{
"apiVersion": "apps/v1",
"kind": "Deployment",
@@ -299,7 +299,7 @@ metadata:
"name": "dply1",
},
}),
resid.NewResId(deploy, "dply2"): resource.NewResourceFromMap(
resid.NewResId(deploy, "dply2"): resource.NewFromMap(
map[string]interface{}{
"apiVersion": "apps/v1",
"kind": "Deployment",
@@ -333,7 +333,7 @@ metadata:
name: cm2
`)
expected := ResMap{
resid.NewResId(cmap, "cm1"): resource.NewResourceFromMap(
resid.NewResId(cmap, "cm1"): resource.NewFromMap(
map[string]interface{}{
"apiVersion": "v1",
"kind": "ConfigMap",
@@ -341,7 +341,7 @@ metadata:
"name": "cm1",
},
}),
resid.NewResId(cmap, "cm2"): resource.NewResourceFromMap(
resid.NewResId(cmap, "cm2"): resource.NewFromMap(
map[string]interface{}{
"apiVersion": "v1",
"kind": "ConfigMap",
@@ -362,7 +362,7 @@ metadata:
func TestMergeWithoutOverride(t *testing.T) {
input1 := ResMap{
resid.NewResId(deploy, "deploy1"): resource.NewResourceFromMap(
resid.NewResId(deploy, "deploy1"): resource.NewFromMap(
map[string]interface{}{
"apiVersion": "apps/v1",
"kind": "Deployment",
@@ -372,7 +372,7 @@ func TestMergeWithoutOverride(t *testing.T) {
}),
}
input2 := ResMap{
resid.NewResId(statefulset, "stateful1"): resource.NewResourceFromMap(
resid.NewResId(statefulset, "stateful1"): resource.NewFromMap(
map[string]interface{}{
"apiVersion": "apps/v1",
"kind": "StatefulSet",
@@ -383,7 +383,7 @@ func TestMergeWithoutOverride(t *testing.T) {
}
input := []ResMap{input1, input2}
expected := ResMap{
resid.NewResId(deploy, "deploy1"): resource.NewResourceFromMap(
resid.NewResId(deploy, "deploy1"): resource.NewFromMap(
map[string]interface{}{
"apiVersion": "apps/v1",
"kind": "Deployment",
@@ -391,7 +391,7 @@ func TestMergeWithoutOverride(t *testing.T) {
"name": "foo-deploy1",
},
}),
resid.NewResId(statefulset, "stateful1"): resource.NewResourceFromMap(
resid.NewResId(statefulset, "stateful1"): resource.NewFromMap(
map[string]interface{}{
"apiVersion": "apps/v1",
"kind": "StatefulSet",
@@ -428,7 +428,7 @@ func TestMergeWithoutOverride(t *testing.T) {
func generateMergeFixtures(b ifc.GenerationBehavior) []ResMap {
input1 := ResMap{
resid.NewResId(cmap, "cmap"): resource.NewResourceFromMap(
resid.NewResId(cmap, "cmap"): resource.NewFromMap(
map[string]interface{}{
"apiVersion": "apps/v1",
"kind": "ConfigMap",
@@ -442,7 +442,7 @@ func generateMergeFixtures(b ifc.GenerationBehavior) []ResMap {
}),
}
input2 := ResMap{
resid.NewResId(cmap, "cmap"): resource.NewResourceFromMap(
resid.NewResId(cmap, "cmap"): resource.NewFromMap(
map[string]interface{}{
"apiVersion": "apps/v1",
"kind": "ConfigMap",
@@ -463,7 +463,7 @@ func generateMergeFixtures(b ifc.GenerationBehavior) []ResMap {
func TestMergeWithOverride(t *testing.T) {
expected := ResMap{
resid.NewResId(cmap, "cmap"): resource.NewResourceFromMap(
resid.NewResId(cmap, "cmap"): resource.NewFromMap(
map[string]interface{}{
"apiVersion": "apps/v1",
"kind": "ConfigMap",

View File

@@ -38,10 +38,10 @@ func NewResMapFromSecretArgs(
if args.Behavior == "" {
args.Behavior = "create"
}
res, err := resource.NewResourceWithBehavior(
res, err := resource.NewWithBehavior(
s, ifc.NewGenerationBehavior(args.Behavior))
if err != nil {
return nil, errors.Wrap(err, "NewResourceWithBehavior")
return nil, errors.Wrap(err, "NewWithBehavior")
}
allResources = append(allResources, res)
}

View File

@@ -63,7 +63,7 @@ func TestNewResMapFromSecretArgs(t *testing.T) {
}
expected := ResMap{
resid.NewResId(secret, "apple"): resource.NewResourceFromMap(
resid.NewResId(secret, "apple"): resource.NewFromMap(
map[string]interface{}{
"apiVersion": "v1",
"kind": "Secret",
@@ -76,7 +76,7 @@ func TestNewResMapFromSecretArgs(t *testing.T) {
"DB_PASSWORD": base64.StdEncoding.EncodeToString([]byte("somepw")),
},
}).SetBehavior(ifc.BehaviorCreate),
resid.NewResId(secret, "peanuts"): resource.NewResourceFromMap(
resid.NewResId(secret, "peanuts"): resource.NewFromMap(
map[string]interface{}{
"apiVersion": "v1",
"kind": "Secret",