Merge pull request #4567 from mvgmb/master

Add support for remote OpenAPI schema
This commit is contained in:
Kubernetes Prow Robot
2022-05-10 11:01:43 -07:00
committed by GitHub
3 changed files with 65 additions and 5 deletions

View File

@@ -6,7 +6,6 @@ package target
import (
"encoding/json"
"fmt"
"path/filepath"
"strings"
"github.com/pkg/errors"
@@ -481,9 +480,8 @@ func (kt *KustTarget) accumulateDirectory(
subKt.kustomization.BuildMetadata = kt.kustomization.BuildMetadata
subKt.origin = kt.origin
var bytes []byte
path := ldr.Root()
if openApiPath, exists := subKt.Kustomization().OpenAPI["path"]; exists {
bytes, err = ldr.Load(filepath.Join(path, openApiPath))
bytes, err = ldr.Load(openApiPath)
if err != nil {
return nil, err
}

View File

@@ -5,7 +5,6 @@ package krusty
import (
"fmt"
"path/filepath"
"sigs.k8s.io/kustomize/api/internal/builtins"
pLdr "sigs.k8s.io/kustomize/api/internal/plugins/loader"
@@ -76,7 +75,7 @@ func (b *Kustomizer) Run(
}
var bytes []byte
if openApiPath, exists := kt.Kustomization().OpenAPI["path"]; exists {
bytes, err = ldr.Load(filepath.Join(ldr.Root(), openApiPath))
bytes, err = ldr.Load(openApiPath)
if err != nil {
return nil, err
}

View File

@@ -170,6 +170,23 @@ openapi:
})
}
func TestCustomOpenApiFieldBasicUsageWithRemoteSchema(t *testing.T) {
runOpenApiTest(t, func(t *testing.T) {
t.Helper()
th := kusttest_test.MakeHarness(t)
th.WriteK(".", `
resources:
- mycrd.yaml
openapi:
path: https://github.com/kubernetes-sigs/kustomize/raw/master/api/krusty/testdata/customschema.json
`+customSchemaPatch)
writeCustomResource(th, "mycrd.yaml")
writeTestSchema(th, "./")
m := th.Run(".", th.MakeDefaultOptions())
th.AssertActualEqualsExpected(m, patchedCustomResource)
})
}
func TestCustomOpenApiFieldWithTwoGvks(t *testing.T) {
runOpenApiTest(t, func(t *testing.T) {
t.Helper()
@@ -303,6 +320,29 @@ resources:
})
}
func TestCustomOpenApiFieldFromBaseWithRemoteSchema(t *testing.T) {
runOpenApiTest(t, func(t *testing.T) {
t.Helper()
th := kusttest_test.MakeHarness(t)
th.WriteK("base", `
resources:
- mycrd.yaml
openapi:
path: https://github.com/kubernetes-sigs/kustomize/raw/master/api/krusty/testdata/customschema.json
`)
th.WriteK("overlay", `
resources:
- ../base
`+customSchemaPatch)
writeCustomResource(th, "base/mycrd.yaml")
writeTestSchema(th, "base/")
m := th.Run("overlay", th.MakeDefaultOptions())
th.AssertActualEqualsExpected(m, patchedCustomResource)
assert.Equal(t, "using custom schema from file provided",
openapi.GetSchemaVersion())
})
}
func TestCustomOpenApiFieldFromOverlay(t *testing.T) {
runOpenApiTest(t, func(t *testing.T) {
t.Helper()
@@ -326,6 +366,29 @@ openapi:
})
}
func TestCustomOpenApiFieldFromOverlayWithRemoteSchema(t *testing.T) {
runOpenApiTest(t, func(t *testing.T) {
t.Helper()
th := kusttest_test.MakeHarness(t)
th.WriteK("base", `
resources:
- mycrd.yaml
`)
th.WriteK("overlay", `
resources:
- ../base
openapi:
path: https://github.com/kubernetes-sigs/kustomize/raw/master/api/krusty/testdata/customschema.json
`+customSchemaPatch)
writeCustomResource(th, "base/mycrd.yaml")
writeTestSchema(th, "overlay/")
m := th.Run("overlay", th.MakeDefaultOptions())
th.AssertActualEqualsExpected(m, patchedCustomResource)
assert.Equal(t, "using custom schema from file provided",
openapi.GetSchemaVersion())
})
}
func TestCustomOpenApiFieldOverlayTakesPrecedence(t *testing.T) {
runOpenApiTest(t, func(t *testing.T) {
t.Helper()