Skip to content

Commit 5d0da2f

Browse files
committed
Add a script for automatically updating scheme
Signed-off-by: Shiming Zhang <[email protected]>
1 parent cb4be5d commit 5d0da2f

File tree

4 files changed

+147
-99
lines changed

4 files changed

+147
-99
lines changed

Makefile

+5-1
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,8 @@ release-docker-build:
5555
clean:
5656
rm -rf build
5757

58-
.PHONY: build test release release-docker-build clean
58+
generate:
59+
go mod vendor
60+
go generate ./...
61+
62+
.PHONY: build test release release-docker-build clean generate

pkg/encoding/init.go

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/*
2+
Copyright 2024 The Kubernetes Authors.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
package encoding
18+
19+
//go:generate bash scheme.sh
20+
21+
import (
22+
"os"
23+
24+
"k8s.io/apimachinery/pkg/apimachinery/registered"
25+
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
26+
runtime "k8s.io/apimachinery/pkg/runtime"
27+
schema "k8s.io/apimachinery/pkg/runtime/schema"
28+
serializer "k8s.io/apimachinery/pkg/runtime/serializer"
29+
)
30+
31+
var Registry = registered.NewOrDie(os.Getenv("KUBE_API_VERSIONS"))
32+
var Scheme = runtime.NewScheme()
33+
var Codecs = serializer.NewCodecFactory(Scheme)
34+
var ParameterCodec = runtime.NewParameterCodec(Scheme)
35+
36+
func init() {
37+
v1.AddToGroupVersion(Scheme, schema.GroupVersion{Version: "v1"})
38+
AddToScheme(Scheme)
39+
}

pkg/encoding/scheme.go

+35-98
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
Copyright 2017 The Kubernetes Authors.
2+
Copyright The Kubernetes Authors.
33
44
Licensed under the Apache License, Version 2.0 (the "License");
55
you may not use this file except in compliance with the License.
@@ -16,134 +16,71 @@ limitations under the License.
1616

1717
package encoding
1818

19+
// Don't edit this file directly. It is generated by scheme.sh.
1920
import (
20-
"os"
21-
22-
admissionv1beta1 "k8s.io/api/admission/v1beta1"
23-
2421
admissionregistrationv1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
2522
admissionregistrationv1beta1 "k8s.io/api/admissionregistration/v1beta1"
26-
23+
admissionv1beta1 "k8s.io/api/admission/v1beta1"
2724
appsv1 "k8s.io/api/apps/v1"
2825
appsv1beta1 "k8s.io/api/apps/v1beta1"
2926
appsv1beta2 "k8s.io/api/apps/v1beta2"
30-
3127
authenticationv1 "k8s.io/api/authentication/v1"
3228
authenticationv1beta1 "k8s.io/api/authentication/v1beta1"
33-
3429
authorizationv1 "k8s.io/api/authorization/v1"
3530
authorizationv1beta1 "k8s.io/api/authorization/v1beta1"
36-
3731
autoscalingv1 "k8s.io/api/autoscaling/v1"
3832
autoscalingv2beta1 "k8s.io/api/autoscaling/v2beta1"
39-
4033
batchv1 "k8s.io/api/batch/v1"
4134
batchv1beta1 "k8s.io/api/batch/v1beta1"
4235
batchv2alpha1 "k8s.io/api/batch/v2alpha1"
43-
4436
certificatesv1beta1 "k8s.io/api/certificates/v1beta1"
45-
4637
corev1 "k8s.io/api/core/v1"
47-
4838
eventsv1beta1 "k8s.io/api/events/v1beta1"
49-
5039
extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
51-
5240
imagepolicyv1alpha1 "k8s.io/api/imagepolicy/v1alpha1"
53-
5441
networkingv1 "k8s.io/api/networking/v1"
55-
5642
policyv1beta1 "k8s.io/api/policy/v1beta1"
57-
5843
rbacv1 "k8s.io/api/rbac/v1"
5944
rbacv1alpha1 "k8s.io/api/rbac/v1alpha1"
6045
rbacv1beta1 "k8s.io/api/rbac/v1beta1"
61-
6246
schedulingv1alpha1 "k8s.io/api/scheduling/v1alpha1"
63-
6447
settingsv1alpha1 "k8s.io/api/settings/v1alpha1"
65-
6648
storagev1 "k8s.io/api/storage/v1"
6749
storagev1alpha1 "k8s.io/api/storage/v1alpha1"
6850
storagev1beta1 "k8s.io/api/storage/v1beta1"
69-
70-
"k8s.io/apimachinery/pkg/apimachinery/registered"
71-
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
72-
runtime "k8s.io/apimachinery/pkg/runtime"
73-
schema "k8s.io/apimachinery/pkg/runtime/schema"
74-
serializer "k8s.io/apimachinery/pkg/runtime/serializer"
51+
"k8s.io/apimachinery/pkg/runtime"
7552
)
7653

77-
var Registry = registered.NewOrDie(os.Getenv("KUBE_API_VERSIONS"))
78-
var Scheme = runtime.NewScheme()
79-
var Codecs = serializer.NewCodecFactory(Scheme)
80-
var ParameterCodec = runtime.NewParameterCodec(Scheme)
81-
82-
func init() {
83-
v1.AddToGroupVersion(Scheme, schema.GroupVersion{Version: "v1"})
84-
AddToScheme(Scheme)
85-
}
86-
87-
// AddToScheme adds all types of this clientset into the given scheme. This allows composition
88-
// of clientsets, like in:
89-
//
90-
// import (
91-
// "k8s.io/client-go/kubernetes"
92-
// clientsetscheme "k8s.io/client-go/kuberentes/scheme"
93-
// aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme"
94-
// )
95-
//
96-
// kclientset, _ := kubernetes.NewForConfig(c)
97-
// aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme)
98-
//
99-
// After this, RawExtensions in Kubernetes types will serialize kube-aggregator types
100-
// correctly.
54+
// AddToScheme adds all types of this clientset into the given scheme.
10155
func AddToScheme(scheme *runtime.Scheme) {
102-
admissionv1beta1.AddToScheme(scheme)
103-
104-
admissionregistrationv1alpha1.AddToScheme(scheme)
105-
admissionregistrationv1beta1.AddToScheme(scheme)
106-
107-
appsv1.AddToScheme(scheme)
108-
appsv1beta1.AddToScheme(scheme)
109-
appsv1beta2.AddToScheme(scheme)
110-
111-
authenticationv1.AddToScheme(scheme)
112-
authenticationv1beta1.AddToScheme(scheme)
113-
114-
authorizationv1.AddToScheme(scheme)
115-
authorizationv1beta1.AddToScheme(scheme)
116-
117-
autoscalingv1.AddToScheme(scheme)
118-
autoscalingv2beta1.AddToScheme(scheme)
119-
120-
batchv1.AddToScheme(scheme)
121-
batchv1beta1.AddToScheme(scheme)
122-
batchv2alpha1.AddToScheme(scheme)
123-
124-
certificatesv1beta1.AddToScheme(scheme)
125-
126-
corev1.AddToScheme(scheme)
127-
128-
eventsv1beta1.AddToScheme(scheme)
129-
130-
extensionsv1beta1.AddToScheme(scheme)
131-
132-
imagepolicyv1alpha1.AddToScheme(scheme)
133-
134-
networkingv1.AddToScheme(scheme)
135-
136-
policyv1beta1.AddToScheme(scheme)
137-
138-
rbacv1.AddToScheme(scheme)
139-
rbacv1alpha1.AddToScheme(scheme)
140-
rbacv1beta1.AddToScheme(scheme)
141-
142-
schedulingv1alpha1.AddToScheme(scheme)
143-
144-
settingsv1alpha1.AddToScheme(scheme)
145-
146-
storagev1.AddToScheme(scheme)
147-
storagev1alpha1.AddToScheme(scheme)
148-
storagev1beta1.AddToScheme(scheme)
56+
_ = admissionregistrationv1alpha1.AddToScheme(scheme)
57+
_ = admissionregistrationv1beta1.AddToScheme(scheme)
58+
_ = admissionv1beta1.AddToScheme(scheme)
59+
_ = appsv1.AddToScheme(scheme)
60+
_ = appsv1beta1.AddToScheme(scheme)
61+
_ = appsv1beta2.AddToScheme(scheme)
62+
_ = authenticationv1.AddToScheme(scheme)
63+
_ = authenticationv1beta1.AddToScheme(scheme)
64+
_ = authorizationv1.AddToScheme(scheme)
65+
_ = authorizationv1beta1.AddToScheme(scheme)
66+
_ = autoscalingv1.AddToScheme(scheme)
67+
_ = autoscalingv2beta1.AddToScheme(scheme)
68+
_ = batchv1.AddToScheme(scheme)
69+
_ = batchv1beta1.AddToScheme(scheme)
70+
_ = batchv2alpha1.AddToScheme(scheme)
71+
_ = certificatesv1beta1.AddToScheme(scheme)
72+
_ = corev1.AddToScheme(scheme)
73+
_ = eventsv1beta1.AddToScheme(scheme)
74+
_ = extensionsv1beta1.AddToScheme(scheme)
75+
_ = imagepolicyv1alpha1.AddToScheme(scheme)
76+
_ = networkingv1.AddToScheme(scheme)
77+
_ = policyv1beta1.AddToScheme(scheme)
78+
_ = rbacv1.AddToScheme(scheme)
79+
_ = rbacv1alpha1.AddToScheme(scheme)
80+
_ = rbacv1beta1.AddToScheme(scheme)
81+
_ = schedulingv1alpha1.AddToScheme(scheme)
82+
_ = settingsv1alpha1.AddToScheme(scheme)
83+
_ = storagev1.AddToScheme(scheme)
84+
_ = storagev1alpha1.AddToScheme(scheme)
85+
_ = storagev1beta1.AddToScheme(scheme)
14986
}

pkg/encoding/scheme.sh

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
#!/usr/bin/env bash
2+
# Copyright 2024 The Kubernetes Authors.
3+
#
4+
# Licensed under the Apache License, Version 2.0 (the "License");
5+
# you may not use this file except in compliance with the License.
6+
# You may obtain a copy of the License at
7+
#
8+
# http://www.apache.org/licenses/LICENSE-2.0
9+
#
10+
# Unless required by applicable law or agreed to in writing, software
11+
# distributed under the License is distributed on an "AS IS" BASIS,
12+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
# See the License for the specific language governing permissions and
14+
# limitations under the License.
15+
16+
set -o errexit
17+
set -o nounset
18+
set -o pipefail
19+
20+
DIR="$(dirname "${BASH_SOURCE[0]}")"
21+
ROOT_DIR="$(realpath "${DIR}/../..")"
22+
23+
function gen() {
24+
cat <<EOF
25+
/*
26+
Copyright The Kubernetes Authors.
27+
28+
Licensed under the Apache License, Version 2.0 (the "License");
29+
you may not use this file except in compliance with the License.
30+
You may obtain a copy of the License at
31+
32+
http://www.apache.org/licenses/LICENSE-2.0
33+
34+
Unless required by applicable law or agreed to in writing, software
35+
distributed under the License is distributed on an "AS IS" BASIS,
36+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
37+
See the License for the specific language governing permissions and
38+
limitations under the License.
39+
*/
40+
41+
package encoding
42+
43+
// Don't edit this file directly. It is generated by scheme.sh.
44+
import (
45+
EOF
46+
47+
find "${ROOT_DIR}/vendor/k8s.io/api" | grep register.go | sed "s#${ROOT_DIR}/vendor/##g" | sed "s#/register.go##g" | awk -F '/' '{print " "$3$4, "\""$1"\/"$2"\/"$3"\/"$4"\""}' | sort
48+
49+
cat <<EOF
50+
"k8s.io/apimachinery/pkg/runtime"
51+
)
52+
53+
// AddToScheme adds all types of this clientset into the given scheme.
54+
func AddToScheme(scheme *runtime.Scheme) {
55+
EOF
56+
57+
find "${ROOT_DIR}/vendor/k8s.io/api" | grep register.go | sed "s#${ROOT_DIR}/vendor/##g" | sed "s#/register.go##g" | awk -F '/' '{print " _ = " $3$4"\.AddToScheme(scheme)"}' | sort
58+
59+
cat <<EOF
60+
}
61+
EOF
62+
}
63+
64+
function gen_file() {
65+
gen >"${DIR}/scheme.go"
66+
}
67+
68+
gen_file

0 commit comments

Comments
 (0)