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,30 +4,30 @@
package merge2_test
var scalarTestCases = []testCase{
{`replace scalar -- different value in dest`,
`
{description: `replace scalar -- different value in dest`,
source: `
kind: Deployment
field: value1
`,
`
dest: `
kind: Deployment
field: value0
`,
`
expected: `
kind: Deployment
field: value1
`,
},
{`replace scalar -- missing from dest`,
`
{description: `replace scalar -- missing from dest`,
source: `
kind: Deployment
field: value1
`,
`
dest: `
kind: Deployment
`,
`
expected: `
kind: Deployment
field: value1
`,
@@ -36,16 +36,16 @@ field: value1
//
// Test Case
//
{`keep scalar -- same value in src and dest`,
`
{description: `keep scalar -- same value in src and dest`,
source: `
kind: Deployment
field: value1
`,
`
dest: `
kind: Deployment
field: value1
`,
`
expected: `
kind: Deployment
field: value1
`,
@@ -54,15 +54,15 @@ field: value1
//
// Test Case
//
{`keep scalar -- unspecified in src`,
`
{description: `keep scalar -- unspecified in src`,
source: `
kind: Deployment
`,
`
dest: `
kind: Deployment
field: value1
`,
`
expected: `
kind: Deployment
field: value1
`,
@@ -71,16 +71,16 @@ field: value1
//
// Test Case
//
{`remove scalar -- null in src`,
`
{description: `remove scalar -- null in src`,
source: `
kind: Deployment
field: null
`,
`
dest: `
kind: Deployment
field: value1
`,
`
expected: `
kind: Deployment
`,
},
@@ -88,16 +88,16 @@ kind: Deployment
//
// Test Case
//
{`remove scalar -- empty in src`,
`
{description: `remove scalar -- empty in src`,
source: `
kind: Deployment
field: {}
`,
`
dest: `
kind: Deployment
field: value1
`,
`
expected: `
kind: Deployment
field: {}
`,
@@ -106,15 +106,15 @@ field: {}
//
// Test Case
//
{`remove scalar -- null in src, missing in dest`,
`
{description: `remove scalar -- null in src, missing in dest`,
source: `
kind: Deployment
field: null
`,
`
dest: `
kind: Deployment
`,
`
expected: `
kind: Deployment
`,
},
@@ -122,15 +122,15 @@ kind: Deployment
//
// Test Case
//
{`merge an empty value`,
`
{description: `merge an empty value`,
source: `
kind: Deployment
field: {}
`,
`
dest: `
kind: Deployment
`,
`
expected: `
kind: Deployment
field: {}
`,