diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema/BUILD b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema/BUILD index a47aa903b57..6cfacb38340 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema/BUILD +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema/BUILD @@ -6,6 +6,7 @@ go_library( "complete.go", "convert.go", "goopenapi.go", + "skeleton.go", "structural.go", "unfold.go", "validation.go", diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema/skeleton.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema/skeleton.go new file mode 100644 index 00000000000..ef1fa7808f7 --- /dev/null +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema/skeleton.go @@ -0,0 +1,51 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package schema + +// StripDefaults returns a copy without defaults. +func (s *Structural) StripDefaults() *Structural { + s = s.DeepCopy() + v := Visitor{ + Structural: func(s *Structural) bool { + changed := false + if s.Default.Object != nil { + s.Default.Object = nil + changed = true + } + return changed + }, + } + v.Visit(s) + return s +} + +// StripValueValidations returns a copy without value validations. +func (s *Structural) StripValueValidations() *Structural { + s = s.DeepCopy() + v := Visitor{ + Structural: func(s *Structural) bool { + changed := false + if s.ValueValidation != nil { + s.ValueValidation = nil + changed = true + } + return changed + }, + } + v.Visit(s) + return s +} diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/BUILD b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/BUILD index 2d347cfc283..cd6e61f53f9 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/BUILD +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/BUILD @@ -1,75 +1,25 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") +load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", - srcs = [ - "aggregator.go", - "builder.go", - "controller.go", - "conversion.go", - ], + srcs = ["controller.go"], importmap = "k8s.io/kubernetes/vendor/k8s.io/apiextensions-apiserver/pkg/controller/openapi", importpath = "k8s.io/apiextensions-apiserver/pkg/controller/openapi", visibility = ["//visibility:public"], deps = [ - "//staging/src/k8s.io/api/autoscaling/v1:go_default_library", "//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library", - "//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation:go_default_library", - "//staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema:go_default_library", "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions/internalversion:go_default_library", "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/internalversion:go_default_library", - "//staging/src/k8s.io/apiextensions-apiserver/pkg/generated/openapi:go_default_library", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1beta1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", - "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", - "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//staging/src/k8s.io/apiserver/pkg/endpoints:go_default_library", - "//staging/src/k8s.io/apiserver/pkg/endpoints/openapi:go_default_library", - "//staging/src/k8s.io/apiserver/pkg/features:go_default_library", - "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", "//staging/src/k8s.io/client-go/tools/cache:go_default_library", "//staging/src/k8s.io/client-go/util/workqueue:go_default_library", - "//vendor/github.com/emicklei/go-restful:go_default_library", "//vendor/github.com/go-openapi/spec:go_default_library", "//vendor/k8s.io/klog:go_default_library", - "//vendor/k8s.io/kube-openapi/pkg/builder:go_default_library", - "//vendor/k8s.io/kube-openapi/pkg/common:go_default_library", "//vendor/k8s.io/kube-openapi/pkg/handler:go_default_library", - "//vendor/k8s.io/kube-openapi/pkg/util:go_default_library", - ], -) - -go_test( - name = "go_default_test", - srcs = [ - "builder_test.go", - "conversion_test.go", - ], - embed = [":go_default_library"], - deps = [ - "//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library", - "//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1:go_default_library", - "//staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema:go_default_library", - "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", - "//staging/src/k8s.io/apimachinery/pkg/util/json:go_default_library", - "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//staging/src/k8s.io/apiserver/pkg/endpoints:go_default_library", - "//staging/src/k8s.io/apiserver/pkg/features:go_default_library", - "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", - "//vendor/github.com/go-openapi/spec:go_default_library", - "//vendor/github.com/google/go-cmp/cmp:go_default_library", - "//vendor/github.com/google/gofuzz:go_default_library", - "//vendor/github.com/googleapis/gnostic/OpenAPIv2:go_default_library", - "//vendor/github.com/googleapis/gnostic/compiler:go_default_library", - "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/github.com/stretchr/testify/require:go_default_library", - "//vendor/gopkg.in/yaml.v2:go_default_library", - "//vendor/k8s.io/kube-openapi/pkg/util/proto:go_default_library", ], ) @@ -82,7 +32,11 @@ filegroup( filegroup( name = "all-srcs", - srcs = [":package-srcs"], + srcs = [ + ":package-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder:all-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/v2:all-srcs", + ], tags = ["automanaged"], visibility = ["//visibility:public"], ) diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder/BUILD b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder/BUILD new file mode 100644 index 00000000000..32405eed904 --- /dev/null +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder/BUILD @@ -0,0 +1,68 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "go_default_library", + srcs = [ + "builder.go", + "merge.go", + ], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder", + importpath = "k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder", + visibility = ["//visibility:public"], + deps = [ + "//staging/src/k8s.io/api/autoscaling/v1:go_default_library", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation:go_default_library", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema:go_default_library", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/v2:go_default_library", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/generated/openapi:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/endpoints:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/endpoints/openapi:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/features:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//vendor/github.com/emicklei/go-restful:go_default_library", + "//vendor/github.com/go-openapi/spec:go_default_library", + "//vendor/k8s.io/kube-openapi/pkg/builder:go_default_library", + "//vendor/k8s.io/kube-openapi/pkg/common:go_default_library", + "//vendor/k8s.io/kube-openapi/pkg/util:go_default_library", + ], +) + +go_test( + name = "go_default_test", + srcs = ["builder_test.go"], + embed = [":go_default_library"], + deps = [ + "//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1:go_default_library", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/json:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/endpoints:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/features:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//vendor/github.com/go-openapi/spec:go_default_library", + "//vendor/github.com/stretchr/testify/assert:go_default_library", + "//vendor/github.com/stretchr/testify/require:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], + visibility = ["//visibility:public"], +) diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder/builder.go similarity index 96% rename from staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder.go rename to staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder/builder.go index de9e7e39e6f..9d057603ca1 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder/builder.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package openapi +package builder import ( "fmt" @@ -29,6 +29,7 @@ import ( "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions" "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation" structuralschema "k8s.io/apiextensions-apiserver/pkg/apiserver/schema" + openapiv2 "k8s.io/apiextensions-apiserver/pkg/controller/openapi/v2" generatedopenapi "k8s.io/apiextensions-apiserver/pkg/generated/openapi" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1beta1 "k8s.io/apimachinery/pkg/apis/meta/v1beta1" @@ -64,8 +65,20 @@ var definitions map[string]common.OpenAPIDefinition var buildDefinitions sync.Once var namer *openapi.DefinitionNamer +// Options contains builder options. +type Options struct { + // Convert to OpenAPI v2. + V2 bool + + // Strip defaults. + StripDefaults bool + + // Strip value validation. + StripValueValidation bool +} + // BuildSwagger builds swagger for the given crd in the given version -func BuildSwagger(crd *apiextensions.CustomResourceDefinition, version string) (*spec.Swagger, error) { +func BuildSwagger(crd *apiextensions.CustomResourceDefinition, version string, opts Options) (*spec.Swagger, error) { var schema *structuralschema.Structural s, err := apiextensions.GetSchemaForVersion(crd, version) if err != nil { @@ -75,7 +88,17 @@ func BuildSwagger(crd *apiextensions.CustomResourceDefinition, version string) ( if s != nil && s.OpenAPIV3Schema != nil { if !validation.SchemaHasInvalidTypes(s.OpenAPIV3Schema) { if ss, err := structuralschema.NewStructural(s.OpenAPIV3Schema); err == nil { - schema = ss.Unfold() + // skip non-structural schemas + schema = ss + + if opts.StripDefaults { + schema = schema.StripDefaults() + } + if opts.StripValueValidation { + schema = schema.StripValueValidations() + } + + schema = schema.Unfold() } } } @@ -84,7 +107,7 @@ func BuildSwagger(crd *apiextensions.CustomResourceDefinition, version string) ( // comes from function registerResourceHandlers() in k8s.io/apiserver. // Alternatives are either (ideally) refactoring registerResourceHandlers() to // reuse the code, or faking an APIInstaller for CR to feed to registerResourceHandlers(). - b := newBuilder(crd, version, schema, true) + b := newBuilder(crd, version, schema, opts.V2) // Sample response types for building web service sample := &CRDCanonicalTypeNamer{ @@ -324,7 +347,7 @@ func (b *builder) buildKubeNative(schema *structuralschema.Structural, v2 bool) // unknown fields for anything else. } else { if v2 { - schema = ToStructuralOpenAPIV2(schema) + schema = openapiv2.ToStructuralOpenAPIV2(schema) } ret = schema.ToGoOpenAPI() ret.SetProperty("metadata", *spec.RefSchema(objectMetaSchemaRef). diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder_test.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder/builder_test.go similarity index 90% rename from staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder_test.go rename to staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder/builder_test.go index 2a1d2f01862..69eb3964b75 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder_test.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder/builder_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package openapi +package builder import ( "reflect" @@ -485,7 +485,7 @@ func TestCRDRouteParameterBuilder(t *testing.T) { }, }, } - swagger, err := BuildSwagger(testNamespacedCRD, testCRDVersion) + swagger, err := BuildSwagger(testNamespacedCRD, testCRDVersion, Options{V2: true, StripDefaults: true}) require.NoError(t, err) require.Equal(t, len(testCase.paths), len(swagger.Paths.Paths), testCase.scope) for path, expected := range testCase.paths { @@ -557,21 +557,49 @@ func TestBuildSwagger(t *testing.T) { name string schema string wantedSchema string + opts Options }{ { "nil", "", `{"type":"object","x-kubernetes-group-version-kind":[{"group":"bar.k8s.io","kind":"Foo","version":"v1"}]}`, + Options{V2: true, StripDefaults: true}, }, { "with properties", `{"type":"object","properties":{"spec":{"type":"object"},"status":{"type":"object"}}}`, `{"type":"object","properties":{"apiVersion":{"type":"string"},"kind":{"type":"string"},"metadata":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"type":"object"},"status":{"type":"object"}},"x-kubernetes-group-version-kind":[{"group":"bar.k8s.io","kind":"Foo","version":"v1"}]}`, + Options{V2: true, StripDefaults: true}, }, { "with invalid-typed properties", `{"type":"object","properties":{"spec":{"type":"bug"},"status":{"type":"object"}}}`, `{"type":"object","x-kubernetes-group-version-kind":[{"group":"bar.k8s.io","kind":"Foo","version":"v1"}]}`, + Options{V2: true, StripDefaults: true}, + }, + { + "with stripped defaults", + `{"type":"object","properties":{"foo":{"type":"string","default":"bar"}}}`, + `{"type":"object","properties":{"apiVersion":{"type":"string"},"kind":{"type":"string"},"metadata":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"foo":{"type":"string"}},"x-kubernetes-group-version-kind":[{"group":"bar.k8s.io","kind":"Foo","version":"v1"}]}`, + Options{V2: true, StripDefaults: true}, + }, + { + "with stripped defaults", + `{"type":"object","properties":{"foo":{"type":"string","default":"bar"}}}`, + `{"type":"object","properties":{"apiVersion":{"type":"string"},"kind":{"type":"string"},"metadata":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"foo":{"type":"string"}},"x-kubernetes-group-version-kind":[{"group":"bar.k8s.io","kind":"Foo","version":"v1"}]}`, + Options{V2: true, StripDefaults: true}, + }, + { + "v2", + `{"type":"object","properties":{"foo":{"type":"string","oneOf":[{"pattern":"a"},{"pattern":"b"}]}}}`, + `{"type":"object","properties":{"apiVersion":{"type":"string"},"kind":{"type":"string"},"metadata":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"foo":{"type":"string"}},"x-kubernetes-group-version-kind":[{"group":"bar.k8s.io","kind":"Foo","version":"v1"}]}`, + Options{V2: true, StripDefaults: true}, + }, + { + "v3", + `{"type":"object","properties":{"foo":{"type":"string","oneOf":[{"pattern":"a"},{"pattern":"b"}]}}}`, + `{"type":"object","properties":{"apiVersion":{"type":"string"},"kind":{"type":"string"},"metadata":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"foo":{"type":"string","oneOf":[{"pattern":"a"},{"pattern":"b"}]}},"x-kubernetes-group-version-kind":[{"group":"bar.k8s.io","kind":"Foo","version":"v1"}]}`, + Options{V2: false, StripDefaults: true}, }, } for _, tt := range tests { @@ -603,7 +631,7 @@ func TestBuildSwagger(t *testing.T) { Scope: apiextensions.NamespaceScoped, Validation: validation, }, - }, "v1") + }, "v1", tt.opts) if err != nil { t.Fatal(err) } diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/aggregator.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder/merge.go similarity index 87% rename from staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/aggregator.go rename to staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder/merge.go index 1dc355fd94c..f2cc8135b51 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/aggregator.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder/merge.go @@ -14,14 +14,16 @@ See the License for the specific language governing permissions and limitations under the License. */ -package openapi +package builder import ( "github.com/go-openapi/spec" ) -// mergeSpecs aggregates all OpenAPI specs, reusing the metadata of the first, static spec as the basis. -func mergeSpecs(staticSpec *spec.Swagger, crdSpecs ...*spec.Swagger) *spec.Swagger { +// MergeSpecs aggregates all OpenAPI specs, reusing the metadata of the first, static spec as the basis. +// Later paths and definitions override earlier ones. None of the input is mutated, but input +// and output share data structures. +func MergeSpecs(staticSpec *spec.Swagger, crdSpecs ...*spec.Swagger) *spec.Swagger { // create shallow copy of staticSpec, but replace paths and definitions because we modify them. specToReturn := *staticSpec if staticSpec.Definitions != nil { diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/controller.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/controller.go index 4d5e9ed5359..4d54b411f3d 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/controller.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/controller.go @@ -23,6 +23,7 @@ import ( "time" "github.com/go-openapi/spec" + "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/labels" utilruntime "k8s.io/apimachinery/pkg/util/runtime" @@ -35,6 +36,7 @@ import ( "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions" informers "k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions/internalversion" listers "k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/internalversion" + "k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder" ) // Controller watches CustomResourceDefinitions and publishes validation schema @@ -191,7 +193,7 @@ func buildVersionSpecs(crd *apiextensions.CustomResourceDefinition, oldSpecs map if !v.Served { continue } - spec, err := BuildSwagger(crd, v.Name) + spec, err := builder.BuildSwagger(crd, v.Name, builder.Options{V2: true, StripDefaults: true}) if err != nil { return nil, false, err } @@ -216,7 +218,7 @@ func (c *Controller) updateSpecLocked() error { crdSpecs = append(crdSpecs, s) } } - return c.openAPIService.UpdateSpec(mergeSpecs(c.staticSpec, crdSpecs...)) + return c.openAPIService.UpdateSpec(builder.MergeSpecs(c.staticSpec, crdSpecs...)) } func (c *Controller) addCustomResourceDefinition(obj interface{}) { diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/v2/BUILD b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/v2/BUILD new file mode 100644 index 00000000000..71274252b2d --- /dev/null +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/v2/BUILD @@ -0,0 +1,42 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "go_default_library", + srcs = ["conversion.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiextensions-apiserver/pkg/controller/openapi/v2", + importpath = "k8s.io/apiextensions-apiserver/pkg/controller/openapi/v2", + visibility = ["//visibility:public"], + deps = ["//staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema:go_default_library"], +) + +go_test( + name = "go_default_test", + srcs = ["conversion_test.go"], + embed = [":go_default_library"], + deps = [ + "//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1:go_default_library", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema:go_default_library", + "//vendor/github.com/go-openapi/spec:go_default_library", + "//vendor/github.com/google/go-cmp/cmp:go_default_library", + "//vendor/github.com/google/gofuzz:go_default_library", + "//vendor/github.com/googleapis/gnostic/OpenAPIv2:go_default_library", + "//vendor/github.com/googleapis/gnostic/compiler:go_default_library", + "//vendor/gopkg.in/yaml.v2:go_default_library", + "//vendor/k8s.io/kube-openapi/pkg/util/proto:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], + visibility = ["//visibility:public"], +) diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/conversion.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/v2/conversion.go similarity index 99% rename from staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/conversion.go rename to staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/v2/conversion.go index 5b998e65bd7..f5c342a8e82 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/conversion.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/v2/conversion.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package openapi +package v2 import ( structuralschema "k8s.io/apiextensions-apiserver/pkg/apiserver/schema" diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/conversion_test.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/v2/conversion_test.go similarity index 99% rename from staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/conversion_test.go rename to staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/v2/conversion_test.go index f88e070a010..1793842af0d 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/conversion_test.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/v2/conversion_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package openapi +package v2 import ( "encoding/json" diff --git a/vendor/modules.txt b/vendor/modules.txt index c1b8ace9783..addf3198a8e 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1163,6 +1163,8 @@ k8s.io/apiextensions-apiserver/pkg/controller/establish k8s.io/apiextensions-apiserver/pkg/controller/finalizer k8s.io/apiextensions-apiserver/pkg/controller/nonstructuralschema k8s.io/apiextensions-apiserver/pkg/controller/openapi +k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder +k8s.io/apiextensions-apiserver/pkg/controller/openapi/v2 k8s.io/apiextensions-apiserver/pkg/controller/status k8s.io/apiextensions-apiserver/pkg/crdserverscheme k8s.io/apiextensions-apiserver/pkg/features