Skip to content

Commit e710fb7

Browse files
committed
apiextensions: move openapi schema builder and merge code into package
1 parent 8dea331 commit e710fb7

File tree

9 files changed

+133
-64
lines changed

9 files changed

+133
-64
lines changed
Lines changed: 8 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,75 +1,25 @@
1-
load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
1+
load("@io_bazel_rules_go//go:def.bzl", "go_library")
22

33
go_library(
44
name = "go_default_library",
5-
srcs = [
6-
"aggregator.go",
7-
"builder.go",
8-
"controller.go",
9-
"conversion.go",
10-
],
5+
srcs = ["controller.go"],
116
importmap = "k8s.io/kubernetes/vendor/k8s.io/apiextensions-apiserver/pkg/controller/openapi",
127
importpath = "k8s.io/apiextensions-apiserver/pkg/controller/openapi",
138
visibility = ["//visibility:public"],
149
deps = [
15-
"//staging/src/k8s.io/api/autoscaling/v1:go_default_library",
1610
"//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library",
17-
"//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation:go_default_library",
18-
"//staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema:go_default_library",
1911
"//staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions/internalversion:go_default_library",
2012
"//staging/src/k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/internalversion:go_default_library",
21-
"//staging/src/k8s.io/apiextensions-apiserver/pkg/generated/openapi:go_default_library",
13+
"//staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder:go_default_library",
2214
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
23-
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
24-
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1beta1:go_default_library",
2515
"//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library",
26-
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
27-
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
2816
"//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
29-
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
3017
"//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library",
31-
"//staging/src/k8s.io/apiserver/pkg/endpoints:go_default_library",
32-
"//staging/src/k8s.io/apiserver/pkg/endpoints/openapi:go_default_library",
33-
"//staging/src/k8s.io/apiserver/pkg/features:go_default_library",
34-
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
3518
"//staging/src/k8s.io/client-go/tools/cache:go_default_library",
3619
"//staging/src/k8s.io/client-go/util/workqueue:go_default_library",
37-
"//vendor/github.com/emicklei/go-restful:go_default_library",
3820
"//vendor/github.com/go-openapi/spec:go_default_library",
3921
"//vendor/k8s.io/klog:go_default_library",
40-
"//vendor/k8s.io/kube-openapi/pkg/builder:go_default_library",
41-
"//vendor/k8s.io/kube-openapi/pkg/common:go_default_library",
4222
"//vendor/k8s.io/kube-openapi/pkg/handler:go_default_library",
43-
"//vendor/k8s.io/kube-openapi/pkg/util:go_default_library",
44-
],
45-
)
46-
47-
go_test(
48-
name = "go_default_test",
49-
srcs = [
50-
"builder_test.go",
51-
"conversion_test.go",
52-
],
53-
embed = [":go_default_library"],
54-
deps = [
55-
"//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library",
56-
"//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1:go_default_library",
57-
"//staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema:go_default_library",
58-
"//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library",
59-
"//staging/src/k8s.io/apimachinery/pkg/util/json:go_default_library",
60-
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
61-
"//staging/src/k8s.io/apiserver/pkg/endpoints:go_default_library",
62-
"//staging/src/k8s.io/apiserver/pkg/features:go_default_library",
63-
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
64-
"//vendor/github.com/go-openapi/spec:go_default_library",
65-
"//vendor/github.com/google/go-cmp/cmp:go_default_library",
66-
"//vendor/github.com/google/gofuzz:go_default_library",
67-
"//vendor/github.com/googleapis/gnostic/OpenAPIv2:go_default_library",
68-
"//vendor/github.com/googleapis/gnostic/compiler:go_default_library",
69-
"//vendor/github.com/stretchr/testify/assert:go_default_library",
70-
"//vendor/github.com/stretchr/testify/require:go_default_library",
71-
"//vendor/gopkg.in/yaml.v2:go_default_library",
72-
"//vendor/k8s.io/kube-openapi/pkg/util/proto:go_default_library",
7323
],
7424
)
7525

@@ -82,7 +32,11 @@ filegroup(
8232

8333
filegroup(
8434
name = "all-srcs",
85-
srcs = [":package-srcs"],
35+
srcs = [
36+
":package-srcs",
37+
"//staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder:all-srcs",
38+
"//staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/v2:all-srcs",
39+
],
8640
tags = ["automanaged"],
8741
visibility = ["//visibility:public"],
8842
)
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
2+
3+
go_library(
4+
name = "go_default_library",
5+
srcs = [
6+
"builder.go",
7+
"merge.go",
8+
],
9+
importmap = "k8s.io/kubernetes/vendor/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder",
10+
importpath = "k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder",
11+
visibility = ["//visibility:public"],
12+
deps = [
13+
"//staging/src/k8s.io/api/autoscaling/v1:go_default_library",
14+
"//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library",
15+
"//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation:go_default_library",
16+
"//staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema:go_default_library",
17+
"//staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/v2:go_default_library",
18+
"//staging/src/k8s.io/apiextensions-apiserver/pkg/generated/openapi:go_default_library",
19+
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
20+
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1beta1:go_default_library",
21+
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
22+
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
23+
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
24+
"//staging/src/k8s.io/apiserver/pkg/endpoints:go_default_library",
25+
"//staging/src/k8s.io/apiserver/pkg/endpoints/openapi:go_default_library",
26+
"//staging/src/k8s.io/apiserver/pkg/features:go_default_library",
27+
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
28+
"//vendor/github.com/emicklei/go-restful:go_default_library",
29+
"//vendor/github.com/go-openapi/spec:go_default_library",
30+
"//vendor/k8s.io/kube-openapi/pkg/builder:go_default_library",
31+
"//vendor/k8s.io/kube-openapi/pkg/common:go_default_library",
32+
"//vendor/k8s.io/kube-openapi/pkg/util:go_default_library",
33+
],
34+
)
35+
36+
go_test(
37+
name = "go_default_test",
38+
srcs = ["builder_test.go"],
39+
embed = [":go_default_library"],
40+
deps = [
41+
"//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library",
42+
"//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1:go_default_library",
43+
"//staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema:go_default_library",
44+
"//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library",
45+
"//staging/src/k8s.io/apimachinery/pkg/util/json:go_default_library",
46+
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
47+
"//staging/src/k8s.io/apiserver/pkg/endpoints:go_default_library",
48+
"//staging/src/k8s.io/apiserver/pkg/features:go_default_library",
49+
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
50+
"//vendor/github.com/go-openapi/spec:go_default_library",
51+
"//vendor/github.com/stretchr/testify/assert:go_default_library",
52+
"//vendor/github.com/stretchr/testify/require:go_default_library",
53+
],
54+
)
55+
56+
filegroup(
57+
name = "package-srcs",
58+
srcs = glob(["**"]),
59+
tags = ["automanaged"],
60+
visibility = ["//visibility:private"],
61+
)
62+
63+
filegroup(
64+
name = "all-srcs",
65+
srcs = [":package-srcs"],
66+
tags = ["automanaged"],
67+
visibility = ["//visibility:public"],
68+
)

staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder.go renamed to staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder/builder.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
1616

17-
package openapi
17+
package builder
1818

1919
import (
2020
"fmt"
@@ -29,6 +29,7 @@ import (
2929
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions"
3030
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation"
3131
structuralschema "k8s.io/apiextensions-apiserver/pkg/apiserver/schema"
32+
openapiv2 "k8s.io/apiextensions-apiserver/pkg/controller/openapi/v2"
3233
generatedopenapi "k8s.io/apiextensions-apiserver/pkg/generated/openapi"
3334
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3435
metav1beta1 "k8s.io/apimachinery/pkg/apis/meta/v1beta1"
@@ -324,7 +325,7 @@ func (b *builder) buildKubeNative(schema *structuralschema.Structural, v2 bool)
324325
// unknown fields for anything else.
325326
} else {
326327
if v2 {
327-
schema = ToStructuralOpenAPIV2(schema)
328+
schema = openapiv2.ToStructuralOpenAPIV2(schema)
328329
}
329330
ret = schema.ToGoOpenAPI()
330331
ret.SetProperty("metadata", *spec.RefSchema(objectMetaSchemaRef).

staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder_test.go renamed to staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder/builder_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
1616

17-
package openapi
17+
package builder
1818

1919
import (
2020
"reflect"

staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/aggregator.go renamed to staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder/merge.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,16 @@ See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
1616

17-
package openapi
17+
package builder
1818

1919
import (
2020
"github.com/go-openapi/spec"
2121
)
2222

23-
// mergeSpecs aggregates all OpenAPI specs, reusing the metadata of the first, static spec as the basis.
24-
func mergeSpecs(staticSpec *spec.Swagger, crdSpecs ...*spec.Swagger) *spec.Swagger {
23+
// MergeSpecs aggregates all OpenAPI specs, reusing the metadata of the first, static spec as the basis.
24+
// Later paths and definitions override earlier ones. None of the input is mutated, but input
25+
// and output share data structures.
26+
func MergeSpecs(staticSpec *spec.Swagger, crdSpecs ...*spec.Swagger) *spec.Swagger {
2527
// create shallow copy of staticSpec, but replace paths and definitions because we modify them.
2628
specToReturn := *staticSpec
2729
if staticSpec.Definitions != nil {

staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/controller.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"time"
2424

2525
"github.com/go-openapi/spec"
26+
2627
"k8s.io/apimachinery/pkg/api/errors"
2728
"k8s.io/apimachinery/pkg/labels"
2829
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
@@ -35,6 +36,7 @@ import (
3536
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions"
3637
informers "k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions/internalversion"
3738
listers "k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/internalversion"
39+
"k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder"
3840
)
3941

4042
// Controller watches CustomResourceDefinitions and publishes validation schema
@@ -191,7 +193,7 @@ func buildVersionSpecs(crd *apiextensions.CustomResourceDefinition, oldSpecs map
191193
if !v.Served {
192194
continue
193195
}
194-
spec, err := BuildSwagger(crd, v.Name)
196+
spec, err := builder.BuildSwagger(crd, v.Name)
195197
if err != nil {
196198
return nil, false, err
197199
}
@@ -216,7 +218,7 @@ func (c *Controller) updateSpecLocked() error {
216218
crdSpecs = append(crdSpecs, s)
217219
}
218220
}
219-
return c.openAPIService.UpdateSpec(mergeSpecs(c.staticSpec, crdSpecs...))
221+
return c.openAPIService.UpdateSpec(builder.MergeSpecs(c.staticSpec, crdSpecs...))
220222
}
221223

222224
func (c *Controller) addCustomResourceDefinition(obj interface{}) {
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
2+
3+
go_library(
4+
name = "go_default_library",
5+
srcs = ["conversion.go"],
6+
importmap = "k8s.io/kubernetes/vendor/k8s.io/apiextensions-apiserver/pkg/controller/openapi/v2",
7+
importpath = "k8s.io/apiextensions-apiserver/pkg/controller/openapi/v2",
8+
visibility = ["//visibility:public"],
9+
deps = ["//staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema:go_default_library"],
10+
)
11+
12+
go_test(
13+
name = "go_default_test",
14+
srcs = ["conversion_test.go"],
15+
embed = [":go_default_library"],
16+
deps = [
17+
"//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library",
18+
"//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1:go_default_library",
19+
"//staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema:go_default_library",
20+
"//vendor/github.com/go-openapi/spec:go_default_library",
21+
"//vendor/github.com/google/go-cmp/cmp:go_default_library",
22+
"//vendor/github.com/google/gofuzz:go_default_library",
23+
"//vendor/github.com/googleapis/gnostic/OpenAPIv2:go_default_library",
24+
"//vendor/github.com/googleapis/gnostic/compiler:go_default_library",
25+
"//vendor/gopkg.in/yaml.v2:go_default_library",
26+
"//vendor/k8s.io/kube-openapi/pkg/util/proto:go_default_library",
27+
],
28+
)
29+
30+
filegroup(
31+
name = "package-srcs",
32+
srcs = glob(["**"]),
33+
tags = ["automanaged"],
34+
visibility = ["//visibility:private"],
35+
)
36+
37+
filegroup(
38+
name = "all-srcs",
39+
srcs = [":package-srcs"],
40+
tags = ["automanaged"],
41+
visibility = ["//visibility:public"],
42+
)

staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/conversion.go renamed to staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/v2/conversion.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
1616

17-
package openapi
17+
package v2
1818

1919
import (
2020
structuralschema "k8s.io/apiextensions-apiserver/pkg/apiserver/schema"

staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/conversion_test.go renamed to staging/src/k8s.io/apiextensions-apiserver/pkg/controller/openapi/v2/conversion_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
1616

17-
package openapi
17+
package v2
1818

1919
import (
2020
"encoding/json"

0 commit comments

Comments
 (0)