make kube-apiserver admission flag disable other plugins

pull/6/head
David Eads 2018-01-19 08:14:04 -05:00
parent 5c9e020d7d
commit 98eb592291
2 changed files with 41 additions and 1 deletions

View File

@ -116,8 +116,13 @@ func (a *AdmissionOptions) ApplyTo(
if a.PluginNames != nil {
// pass PluginNames to generic AdmissionOptions
a.GenericAdmission.EnablePlugins = a.PluginNames
a.GenericAdmission.EnablePlugins, a.GenericAdmission.DisablePlugins = computePluginNames(a.PluginNames, a.GenericAdmission.RecommendedPluginOrder)
}
return a.GenericAdmission.ApplyTo(c, informers, kubeAPIServerClientConfig, scheme, pluginInitializers...)
}
// explicitly disable all plugins that are not in the enabled list
func computePluginNames(explicitlyEnabled []string, all []string) (enabled []string, disabled []string) {
return explicitlyEnabled, sets.NewString(all...).Difference(sets.NewString(explicitlyEnabled...)).List()
}

View File

@ -17,6 +17,7 @@ limitations under the License.
package options
import (
"reflect"
"testing"
)
@ -51,3 +52,37 @@ func TestValidate(t *testing.T) {
t.Errorf("Unexpected err: %v", errs)
}
}
func TestComputeEnabledAdmission(t *testing.T) {
tests := []struct {
name string
all []string
enabled []string
expectedDisabled []string
}{
{
name: "matches",
all: []string{"one", "two"},
enabled: []string{"one", "two"},
expectedDisabled: []string{},
},
{
name: "choose one",
all: []string{"one", "two"},
enabled: []string{"one"},
expectedDisabled: []string{"two"},
},
}
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
actualEnabled, actualDisabled := computePluginNames(tc.enabled, tc.all)
if e, a := tc.enabled, actualEnabled; !reflect.DeepEqual(e, a) {
t.Errorf("expected %v, got %v", e, a)
}
if e, a := tc.expectedDisabled, actualDisabled; !reflect.DeepEqual(e, a) {
t.Errorf("expected %v, got %v", e, a)
}
})
}
}