Skip to content

Commit e8c5968

Browse files
authored
implement catalog (#9)
1 parent 943005c commit e8c5968

37 files changed

+871
-755
lines changed

.github/workflows/golangci-lint.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,3 @@ jobs:
1919
with:
2020
version: v1.44.0
2121
working-directory: ${{matrix.working-directory}}
22-
args: -v

.golangci.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,14 +258,15 @@ run:
258258
- e2e
259259
skip-files:
260260
- "zz_generated.*\\.go$"
261+
- internal/runtime/catalog/openapi.go
261262
skip-dirs:
262263
- third_party
263264
- exp/runtime/controllers
264265
- exp/runtime/hooks
265266
- exp/runtime/internal
266-
- internal/runtime/catalog
267267
- internal/runtime/client
268268
- internal/runtime/registry
269269
- internal/runtime/server
270270
- poc
271+
- runtime-openapi-gen
271272
allow-parallel-runners: true

Makefile

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -180,11 +180,11 @@ help: # Display this help
180180

181181
##@ generate:
182182

183-
ALL_GENERATE_MODULES = core kubeadm-bootstrap kubeadm-control-plane
183+
ALL_GENERATE_MODULES = core kubeadm-bootstrap kubeadm-control-plane runtime
184184

185185
.PHONY: generate
186-
generate: ## Run all generate-manifests-*, generate-go-deepcopy-* and generate-go-conversions-* targets
187-
$(MAKE) generate-modules generate-manifests generate-go-deepcopy generate-go-conversions
186+
generate: ## Run all generate-manifests-*, generate-go-deepcopy-*, generate-go-conversions-* and generate-go-openapi targets
187+
$(MAKE) generate-modules generate-manifests generate-go-deepcopy generate-go-conversions generate-go-openapi
188188
$(MAKE) -C $(CAPD_DIR) generate
189189

190190
.PHONY: generate-manifests
@@ -237,6 +237,10 @@ generate-manifests-kubeadm-control-plane: $(CONTROLLER_GEN) ## Generate manifest
237237
output:webhook:dir=./controlplane/kubeadm/config/webhook \
238238
webhook
239239

240+
.PHONY: generate-manifests-runtime
241+
generate-manifests-runtime: $(CONTROLLER_GEN) ## Generate manifests e.g. CRD, RBAC etc. for runtime
242+
# TODO
243+
240244
.PHONY: generate-go-deepcopy
241245
generate-go-deepcopy: ## Run all generate-go-deepcopy-* targets
242246
$(MAKE) $(addprefix generate-go-deepcopy-,$(ALL_GENERATE_MODULES))
@@ -265,6 +269,12 @@ generate-go-deepcopy-kubeadm-control-plane: $(CONTROLLER_GEN) ## Generate deepco
265269
object:headerFile=./hack/boilerplate/boilerplate.generatego.txt \
266270
paths=./controlplane/kubeadm/api/...
267271

272+
.PHONY: generate-go-deepcopy-runtime
273+
generate-go-deepcopy-runtime: $(CONTROLLER_GEN) ## Generate deepcopy go code for runtime
274+
$(CONTROLLER_GEN) \
275+
object:headerFile=./hack/boilerplate/boilerplate.generatego.txt \
276+
paths=./exp/runtime/hooks/api/...
277+
268278
.PHONY: generate-go-conversions
269279
generate-go-conversions: ## Run all generate-go-conversions-* targets
270280
$(MAKE) $(addprefix generate-go-conversions-,$(ALL_GENERATE_MODULES))
@@ -323,6 +333,27 @@ generate-go-conversions-kubeadm-control-plane: $(CONVERSION_GEN) ## Generate con
323333
--output-file-base=zz_generated.conversion $(CONVERSION_GEN_OUTPUT_BASE) \
324334
--go-header-file=./hack/boilerplate/boilerplate.generatego.txt
325335

336+
.PHONY: generate-go-conversions-runtime
337+
generate-go-conversions-runtime: $(CONVERSION_GEN)
338+
$(MAKE) clean-generated-conversions SRC_DIRS="./exp/runtime/hooks/api/v1alpha1,./exp/runtime/hooks/api/v1alpha2,./exp/runtime/hooks/api/v1alpha3"
339+
$(CONVERSION_GEN) \
340+
--input-dirs=./exp/runtime/hooks/api/v1alpha1 \
341+
--input-dirs=./exp/runtime/hooks/api/v1alpha2 \
342+
--input-dirs=./exp/runtime/hooks/api/v1alpha3 \
343+
--build-tag=ignore_autogenerated_runtime \
344+
--output-file-base=zz_generated.conversion $(CONVERSION_GEN_OUTPUT_BASE) \
345+
--go-header-file=./hack/boilerplate/boilerplate.generatego.txt
346+
347+
.PHONY: generate-go-openapi
348+
generate-go-openapi: $(OPENAPI_GEN) $(CONTROLLER_GEN)
349+
$(MAKE) clean-generated-openapi_definitions SRC_DIRS="./exp/runtime/hooks/api/v1alpha1,./exp/runtime/hooks/api/v1alpha2,./exp/runtime/hooks/api/v1alpha3"
350+
$(OPENAPI_GEN) \
351+
--input-dirs=./exp/runtime/hooks/api/v1alpha1 \
352+
--input-dirs=./exp/runtime/hooks/api/v1alpha2 \
353+
--input-dirs=./exp/runtime/hooks/api/v1alpha3 \
354+
--output-file-base=zz_generated.openapi \
355+
--header-file=./hack/boilerplate/boilerplate.generatego.txt
356+
326357
.PHONY: generate-modules
327358
generate-modules: ## Run go mod tidy to ensure modules are up to date
328359
go mod tidy

exp/runtime/hooks/api/v1alpha1/operation1_types.go renamed to exp/runtime/hooks/api/v1alpha1/discovery_types.go

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,20 @@ limitations under the License.
1616

1717
package v1alpha1
1818

19-
import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
19+
import (
20+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
21+
22+
"sigs.k8s.io/cluster-api/internal/runtime/catalog"
23+
)
2024

2125
// DiscoveryHookRequest foo bar baz.
2226
// +k8s:openapi-gen=true
2327
// +kubebuilder:object:root=true
2428
type DiscoveryHookRequest struct {
2529
metav1.TypeMeta `json:",inline"`
2630

27-
Second string
28-
First int
31+
Second string `json:"second"`
32+
First int `json:"first"`
2933
}
3034

3135
// DiscoveryHookResponse foo bar baz.
@@ -34,14 +38,16 @@ type DiscoveryHookRequest struct {
3438
type DiscoveryHookResponse struct {
3539
metav1.TypeMeta `json:",inline"`
3640

37-
Message string
41+
Message string `json:"message"`
3842
}
3943

40-
// DiscoveryHook foo bar baz.
41-
// +k8s:conversion-gen=false
42-
type DiscoveryHook struct{}
44+
func DiscoveryHook(*DiscoveryHookRequest, *DiscoveryHookResponse) {}
4345

4446
func init() {
45-
// Register rpc services defined in this package and their request and response types.
46-
catalogBuilder.RegisterHook(&DiscoveryHook{}, &DiscoveryHookRequest{}, &DiscoveryHookResponse{})
47+
catalogBuilder.RegisterHook(DiscoveryHook, &catalog.HookMeta{
48+
Tags: []string{"discovery"},
49+
Summary: "Discovery endpoint",
50+
Description: "Discovery endpoint discovers...",
51+
Deprecated: true,
52+
})
4753
}

exp/runtime/hooks/api/v1alpha1/doc.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,5 @@ limitations under the License.
1515
*/
1616

1717
// Package v1alpha1 contains the v1alpha1 idl implementation for extension1.
18-
// +k8s:conversion-gen=sigs.k8s.io/cluster-api/rte/idl/extension1/v1alpha3
18+
// +k8s:conversion-gen=sigs.k8s.io/cluster-api/exp/runtime/hooks/api/v1alpha3
1919
package v1alpha1

exp/runtime/hooks/api/v1alpha1/groupversion_info.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ var (
2929

3030
// catalogBuilder is used to add rpc services and their request and response types
3131
// to a Catalog.
32-
catalogBuilder = catalog.NewBuilder(GroupVersion)
32+
catalogBuilder = catalog.Builder{GroupVersion: GroupVersion}
3333

3434
// AddToCatalog adds rpc services defined in this package and their request and
3535
// response types to a catalog.

exp/runtime/hooks/api/v1alpha1/zz_generated.conversion.go

Lines changed: 23 additions & 24 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

exp/runtime/hooks/api/v1alpha1/zz_generated.openapi.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,12 @@ import (
2828

2929
func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenAPIDefinition {
3030
return map[string]common.OpenAPIDefinition{
31-
"sigs.k8s.io/cluster-api/rte/idl/extension1/v1alpha1.DiscoveryHookRequest": schema_rte_idl_extension1_v1alpha1_Operation1Input(ref),
32-
"sigs.k8s.io/cluster-api/rte/idl/extension1/v1alpha1.DiscoveryHookResponse": schema_rte_idl_extension1_v1alpha1_Operation1Output(ref),
31+
"sigs.k8s.io/cluster-api/exp/runtime/hooks/api/v1alpha1.DiscoveryHookRequest": schema_runtime_hooks_api_v1alpha1_DiscoveryHookRequest(ref),
32+
"sigs.k8s.io/cluster-api/exp/runtime/hooks/api/v1alpha1.DiscoveryHookResponse": schema_runtime_hooks_api_v1alpha1_DiscoveryHookResponse(ref),
3333
}
3434
}
3535

36-
func schema_rte_idl_extension1_v1alpha1_Operation1Input(ref common.ReferenceCallback) common.OpenAPIDefinition {
36+
func schema_runtime_hooks_api_v1alpha1_DiscoveryHookRequest(ref common.ReferenceCallback) common.OpenAPIDefinition {
3737
return common.OpenAPIDefinition{
3838
Schema: spec.Schema{
3939
SchemaProps: spec.SchemaProps{
@@ -54,28 +54,28 @@ func schema_rte_idl_extension1_v1alpha1_Operation1Input(ref common.ReferenceCall
5454
Format: "",
5555
},
5656
},
57-
"Second": {
57+
"second": {
5858
SchemaProps: spec.SchemaProps{
5959
Default: "",
6060
Type: []string{"string"},
6161
Format: "",
6262
},
6363
},
64-
"First": {
64+
"first": {
6565
SchemaProps: spec.SchemaProps{
6666
Default: 0,
6767
Type: []string{"integer"},
6868
Format: "int32",
6969
},
7070
},
7171
},
72-
Required: []string{"Second", "First"},
72+
Required: []string{"second", "first"},
7373
},
7474
},
7575
}
7676
}
7777

78-
func schema_rte_idl_extension1_v1alpha1_Operation1Output(ref common.ReferenceCallback) common.OpenAPIDefinition {
78+
func schema_runtime_hooks_api_v1alpha1_DiscoveryHookResponse(ref common.ReferenceCallback) common.OpenAPIDefinition {
7979
return common.OpenAPIDefinition{
8080
Schema: spec.Schema{
8181
SchemaProps: spec.SchemaProps{
@@ -96,15 +96,15 @@ func schema_rte_idl_extension1_v1alpha1_Operation1Output(ref common.ReferenceCal
9696
Format: "",
9797
},
9898
},
99-
"Message": {
99+
"message": {
100100
SchemaProps: spec.SchemaProps{
101101
Default: "",
102102
Type: []string{"string"},
103103
Format: "",
104104
},
105105
},
106106
},
107-
Required: []string{"Message"},
107+
Required: []string{"message"},
108108
},
109109
},
110110
}

exp/runtime/hooks/api/v1alpha2/operation1_types.go renamed to exp/runtime/hooks/api/v1alpha2/discovery_types.go

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,20 @@ limitations under the License.
1616

1717
package v1alpha2
1818

19-
import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
19+
import (
20+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
21+
22+
"sigs.k8s.io/cluster-api/internal/runtime/catalog"
23+
)
2024

2125
// DiscoveryHookRequest foo bar baz.
2226
// +k8s:openapi-gen=true
2327
// +kubebuilder:object:root=true
2428
type DiscoveryHookRequest struct {
2529
metav1.TypeMeta `json:",inline"`
2630

27-
Second string
28-
First int
31+
Second string `json:"second"`
32+
First int `json:"first"`
2933
}
3034

3135
// DiscoveryHookResponse foo bar baz.
@@ -34,14 +38,16 @@ type DiscoveryHookRequest struct {
3438
type DiscoveryHookResponse struct {
3539
metav1.TypeMeta `json:",inline"`
3640

37-
Message string
41+
Message string `json:"message"`
3842
}
3943

40-
// DiscoveryHook foo bar baz.
41-
// +k8s:conversion-gen=false
42-
type DiscoveryHook struct{}
44+
func DiscoveryHook(*DiscoveryHookRequest, *DiscoveryHookResponse) {}
4345

4446
func init() {
45-
// Register rpc services defined in this package and their request and response types.
46-
catalogBuilder.RegisterHook(&DiscoveryHook{}, &DiscoveryHookRequest{}, &DiscoveryHookResponse{})
47+
catalogBuilder.RegisterHook(DiscoveryHook, &catalog.HookMeta{
48+
Tags: []string{"discovery"},
49+
Summary: "Discovery endpoint",
50+
Description: "Discovery endpoint discovers...",
51+
Deprecated: true,
52+
})
4753
}

exp/runtime/hooks/api/v1alpha2/doc.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,5 @@ limitations under the License.
1515
*/
1616

1717
// Package v1alpha2 contains the v1alpha2 idl implementation for extension1.
18-
// +k8s:conversion-gen=sigs.k8s.io/cluster-api/rte/idl/extension1/v1alpha3
18+
// +k8s:conversion-gen=sigs.k8s.io/cluster-api/exp/runtime/hooks/api/v1alpha3
1919
package v1alpha2

exp/runtime/hooks/api/v1alpha2/groupversion_info.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ var (
2929

3030
// catalogBuilder is used to add rpc services and their request and response types
3131
// to a Catalog.
32-
catalogBuilder = catalog.NewBuilder(GroupVersion)
32+
catalogBuilder = catalog.Builder{GroupVersion: GroupVersion}
3333

3434
// AddToCatalog adds rpc services defined in this package and their request and
3535
// response types to a catalog.

0 commit comments

Comments
 (0)