Use OpenAPI when merging (3way) resources

- When merging (3way) resources use the patch strategy from the openAPI if the definition exists for the field
- Allow disabling of guessing patch strategy merge keys when no definition exists
- Support defining strategy and key directly on configuration fields through line and header coments
- Support attaching schema to parent fields of lists, and propagating -- e.g. that a field is a PodTemplate
This commit is contained in:
Phillip Wittrock
2020-02-27 10:08:40 -08:00
parent 8991b193c6
commit 5d1a0346b5
24 changed files with 991 additions and 507 deletions

View File

@@ -4,19 +4,19 @@
package merge2_test
var mapTestCases = []testCase{
{`merge Map -- update field in dest`,
`
{description: `merge Map -- update field in dest`,
source: `
kind: Deployment
spec:
foo: bar1
`,
`
dest: `
kind: Deployment
spec:
foo: bar0
baz: buz
`,
`
expected: `
kind: Deployment
spec:
foo: bar1
@@ -24,19 +24,19 @@ spec:
`,
},
{`merge Map -- add field to dest`,
`
{description: `merge Map -- add field to dest`,
source: `
kind: Deployment
spec:
foo: bar1
baz: buz
`,
`
dest: `
kind: Deployment
spec:
foo: bar0
`,
`
expected: `
kind: Deployment
spec:
foo: bar1
@@ -44,18 +44,18 @@ spec:
`,
},
{`merge Map -- add list, empty in dest`,
`
{description: `merge Map -- add list, empty in dest`,
source: `
kind: Deployment
spec:
foo: bar1
baz: buz
`,
`
dest: `
kind: Deployment
spec: {}
`,
`
expected: `
kind: Deployment
spec:
foo: bar1
@@ -63,17 +63,17 @@ spec:
`,
},
{`merge Map -- add list, missing from dest`,
`
{description: `merge Map -- add list, missing from dest`,
source: `
kind: Deployment
spec:
foo: bar1
baz: buz
`,
`
dest: `
kind: Deployment
`,
`
expected: `
kind: Deployment
spec:
foo: bar1
@@ -81,19 +81,19 @@ spec:
`,
},
{`merge Map -- add Map first`,
`
{description: `merge Map -- add Map first`,
source: `
kind: Deployment
spec:
foo: bar1
baz: buz
`,
`
dest: `
kind: Deployment
spec:
foo: bar1
`,
`
expected: `
kind: Deployment
spec:
foo: bar1
@@ -101,19 +101,19 @@ spec:
`,
},
{`merge Map -- add Map second`,
`
{description: `merge Map -- add Map second`,
source: `
kind: Deployment
spec:
baz: buz
foo: bar1
`,
`
dest: `
kind: Deployment
spec:
foo: bar1
`,
`
expected: `
kind: Deployment
spec:
foo: bar1
@@ -124,17 +124,17 @@ spec:
//
// Test Case
//
{`keep map -- map missing from src`,
`
{description: `keep map -- map missing from src`,
source: `
kind: Deployment
`,
`
dest: `
kind: Deployment
spec:
foo: bar1
baz: buz
`,
`
expected: `
kind: Deployment
spec:
foo: bar1
@@ -145,18 +145,18 @@ spec:
//
// Test Case
//
{`keep map -- empty list in src`,
`
{description: `keep map -- empty list in src`,
source: `
kind: Deployment
items: {}
`,
`
dest: `
kind: Deployment
spec:
foo: bar1
baz: buz
`,
`
expected: `
kind: Deployment
spec:
foo: bar1
@@ -168,18 +168,18 @@ items: {}
//
// Test Case
//
{`remove Map -- null in src`,
`
{description: `remove Map -- null in src`,
source: `
kind: Deployment
spec: null
`,
`
dest: `
kind: Deployment
spec:
foo: bar1
baz: buz
`,
`
expected: `
kind: Deployment
`,
},