Skip to content

Commit fc3fca2

Browse files
committed
preserve behavior of ignoring invalid --runtime-config keys and api/all=false
1 parent 62e8a1b commit fc3fca2

File tree

5 files changed

+50
-26
lines changed

5 files changed

+50
-26
lines changed

staging/src/k8s.io/apiserver/pkg/server/resourceconfig/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ go_library(
1414
"//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
1515
"//staging/src/k8s.io/apiserver/pkg/server/storage:go_default_library",
1616
"//staging/src/k8s.io/apiserver/pkg/util/flag:go_default_library",
17+
"//vendor/k8s.io/klog:go_default_library",
1718
],
1819
)
1920

staging/src/k8s.io/apiserver/pkg/server/resourceconfig/helpers.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525
"k8s.io/apimachinery/pkg/runtime/schema"
2626
serverstore "k8s.io/apiserver/pkg/server/storage"
2727
utilflag "k8s.io/apiserver/pkg/util/flag"
28+
"k8s.io/klog"
2829
)
2930

3031
// GroupVersionRegistry provides access to registered group versions.
@@ -106,7 +107,8 @@ func MergeAPIResourceConfigs(
106107
// individual resource enablement/disablement is only supported in the extensions/v1beta1 API group for legacy reasons.
107108
// all other API groups are expected to contain coherent sets of resources that are enabled/disabled together.
108109
if len(tokens) > 2 && (groupVersion != schema.GroupVersion{Group: "extensions", Version: "v1beta1"}) {
109-
return nil, fmt.Errorf("invalid key %s, individual resource enablement/disablement is not supported in %s", key, groupVersion.String())
110+
klog.Warningf("ignoring invalid key %s, individual resource enablement/disablement is not supported in %s, and will prevent starting in future releases", key, groupVersion.String())
111+
continue
110112
}
111113

112114
// Exclude group not registered into the registry.

staging/src/k8s.io/apiserver/pkg/server/resourceconfig/helpers_test.go

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -117,11 +117,6 @@ func TestParseRuntimeConfig(t *testing.T) {
117117
expectedAPIConfig: func() *serverstore.ResourceConfig {
118118
config := newFakeAPIResourceConfigSource()
119119
config.EnableVersions(scheme.PrioritizedVersionsAllGroups()...)
120-
config.EnableResources(
121-
extensionsapiv1beta1.SchemeGroupVersion.WithResource("deployments"),
122-
extensionsapiv1beta1.SchemeGroupVersion.WithResource("replicasets"),
123-
extensionsapiv1beta1.SchemeGroupVersion.WithResource("daemonsets"),
124-
)
125120
return config
126121
},
127122
err: false,
@@ -138,7 +133,6 @@ func TestParseRuntimeConfig(t *testing.T) {
138133
expectedAPIConfig: func() *serverstore.ResourceConfig {
139134
config := newFakeAPIResourceConfigSource()
140135
config.DisableVersions(extensionsapiv1beta1.SchemeGroupVersion)
141-
config.DisableResources(extensionsapiv1beta1.SchemeGroupVersion.WithResource("ingresses"))
142136
return config
143137
},
144138
err: false,
@@ -197,11 +191,9 @@ func TestParseRuntimeConfig(t *testing.T) {
197191
return newFakeAPIResourceConfigSource()
198192
},
199193
expectedAPIConfig: func() *serverstore.ResourceConfig {
200-
config := newFakeAPIResourceConfigSource()
201-
config.DisableVersions(extensionsapiv1beta1.SchemeGroupVersion)
202-
return config
194+
return newFakeAPIResourceConfigSource()
203195
},
204-
err: true,
196+
err: false, // no error for backwards compatibility
205197
},
206198
}
207199
for index, test := range testCases {

staging/src/k8s.io/apiserver/pkg/server/storage/resource_config.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,22 +38,18 @@ func NewResourceConfig() *ResourceConfig {
3838
return &ResourceConfig{GroupVersionConfigs: map[schema.GroupVersion]bool{}, ResourceConfigs: map[schema.GroupVersionResource]bool{}}
3939
}
4040

41+
// DisableAll disables all group/versions. It does not modify individual resource enablement/disablement.
4142
func (o *ResourceConfig) DisableAll() {
4243
for k := range o.GroupVersionConfigs {
4344
o.GroupVersionConfigs[k] = false
4445
}
45-
for k := range o.ResourceConfigs {
46-
o.ResourceConfigs[k] = false
47-
}
4846
}
4947

48+
// EnableAll enables all group/versions. It does not modify individual resource enablement/disablement.
5049
func (o *ResourceConfig) EnableAll() {
5150
for k := range o.GroupVersionConfigs {
5251
o.GroupVersionConfigs[k] = true
5352
}
54-
for k := range o.ResourceConfigs {
55-
o.ResourceConfigs[k] = true
56-
}
5753
}
5854

5955
// DisableVersions disables the versions entirely.

staging/src/k8s.io/apiserver/pkg/server/storage/resource_config_test.go

Lines changed: 42 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -98,26 +98,59 @@ func TestDisabledResource(t *testing.T) {
9898
t.Errorf("expected enabled for %v, from %v", g2v1rEnabled, config)
9999
}
100100

101-
// Enable all enables specific resources
101+
// DisableAll() only disables to the group/version level for compatibility
102+
// corresponds to --runtime-config=api/all=false
103+
config.DisableAll()
104+
if config.ResourceEnabled(g1v1rEnabled) {
105+
t.Errorf("expected disabled for %v, from %v", g1v1rEnabled, config)
106+
}
107+
if config.ResourceEnabled(g1v2rEnabled) {
108+
t.Errorf("expected disabled for %v, from %v", g1v2rEnabled, config)
109+
}
110+
if config.ResourceEnabled(g2v1rEnabled) {
111+
t.Errorf("expected disabled for %v, from %v", g2v1rEnabled, config)
112+
}
113+
114+
// DisableAll() only disables to the group/version level for compatibility
115+
// corresponds to --runtime-config=api/all=false,g1/v1=true
116+
config.DisableAll()
117+
config.EnableVersions(g1v1)
118+
if !config.ResourceEnabled(g1v1rEnabled) {
119+
t.Errorf("expected enabled for %v, from %v", g1v1rEnabled, config)
120+
}
121+
122+
// EnableAll() only enables to the group/version level for compatibility
102123
config.EnableAll()
103124

104-
// all resources under g1v1 are now enabled
125+
// all unspecified or enabled resources under all groups now enabled
105126
if !config.ResourceEnabled(g1v1rUnspecified) {
106127
t.Errorf("expected enabled for %v, from %v", g1v1rUnspecified, config)
107128
}
108129
if !config.ResourceEnabled(g1v1rEnabled) {
109130
t.Errorf("expected enabled for %v, from %v", g1v1rEnabled, config)
110131
}
111-
if !config.ResourceEnabled(g1v1rDisabled) {
112-
t.Errorf("expected enabled for %v, from %v", g1v1rDisabled, config)
132+
if !config.ResourceEnabled(g1v2rUnspecified) {
133+
t.Errorf("expected enabled for %v, from %v", g1v2rUnspecified, config)
134+
}
135+
if !config.ResourceEnabled(g1v2rEnabled) {
136+
t.Errorf("expected enabled for %v, from %v", g1v2rEnabled, config)
137+
}
138+
if !config.ResourceEnabled(g2v1rUnspecified) {
139+
t.Errorf("expected enabled for %v, from %v", g2v1rUnspecified, config)
140+
}
141+
if !config.ResourceEnabled(g2v1rEnabled) {
142+
t.Errorf("expected enabled for %v, from %v", g2v1rEnabled, config)
113143
}
114144

115-
// previously disabled resources are now enabled
116-
if !config.ResourceEnabled(g1v2rDisabled) {
117-
t.Errorf("expected enabled for %v, from %v", g1v2rDisabled, config)
145+
// previously disabled resources are still disabled
146+
if config.ResourceEnabled(g1v1rDisabled) {
147+
t.Errorf("expected disabled for %v, from %v", g1v1rDisabled, config)
118148
}
119-
if !config.ResourceEnabled(g2v1rDisabled) {
120-
t.Errorf("expected enabled for %v, from %v", g2v1rDisabled, config)
149+
if config.ResourceEnabled(g1v2rDisabled) {
150+
t.Errorf("expected disabled for %v, from %v", g1v2rDisabled, config)
151+
}
152+
if config.ResourceEnabled(g2v1rDisabled) {
153+
t.Errorf("expected disabled for %v, from %v", g2v1rDisabled, config)
121154
}
122155
}
123156

0 commit comments

Comments
 (0)