...
1
16
17 package apiserver
18
19 import (
20 "strings"
21 "testing"
22
23 "k8s.io/apimachinery/pkg/runtime/schema"
24 )
25
26 func TestNoNewBetaAPIsByDefault(t *testing.T) {
27
28
29
30 legacyBetaEnabledByDefaultResources := map[schema.GroupVersionResource]bool{
31 gvr("flowcontrol.apiserver.k8s.io", "v1beta2", "flowschemas"): true,
32 gvr("flowcontrol.apiserver.k8s.io", "v1beta2", "prioritylevelconfigurations"): true,
33 }
34
35
36
37
38
39 legacyBetaResourcesWithoutStableEquivalents := map[schema.GroupResource]bool{
40 gvr("flowcontrol.apiserver.k8s.io", "v1beta1", "flowschemas").GroupResource(): true,
41 gvr("flowcontrol.apiserver.k8s.io", "v1beta1", "prioritylevelconfigurations").GroupResource(): true,
42 }
43
44
45
46 _, kubeClient, _, tearDownFn := setupWithResources(t,
47 []schema.GroupVersion{},
48 []schema.GroupVersionResource{},
49 )
50 defer tearDownFn()
51
52 _, allResourceLists, err := kubeClient.Discovery().ServerGroupsAndResources()
53 if err != nil {
54 t.Error(err)
55 }
56
57 for _, currResourceList := range allResourceLists {
58 for _, currResource := range currResourceList.APIResources {
59 if !strings.Contains(currResource.Version, "beta") {
60 continue
61 }
62 if strings.Contains(currResource.Name, "/") {
63 continue
64 }
65 enabledGVR := schema.GroupVersionResource{
66 Group: currResource.Group,
67 Version: currResource.Version,
68 Resource: currResource.Name,
69 }
70 if legacyBetaEnabledByDefaultResources[enabledGVR] {
71 continue
72 }
73 if legacyBetaResourcesWithoutStableEquivalents[enabledGVR.GroupResource()] {
74 continue
75 }
76
77 t.Errorf("%v is a new beta API. New beta APIs may not be enabled by default. "+
78 "See https://github.com/kubernetes/enhancements/blob/0ad0fc8269165ca300d05ca51c7ce190a79976a5/keps/sig-architecture/3136-beta-apis-off-by-default/README.md "+
79 "for more details.", enabledGVR)
80 }
81 }
82 }
83
View as plain text