Merge pull request #124826 from mjudeikis/mjudeikis/plugins.move.to.generics

Move to generics for sets in kubeapiserver plugins
This commit is contained in:
Kubernetes Prow Robot 2024-05-13 14:09:58 -07:00 committed by GitHub
commit 4f04dffe5b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 15 additions and 15 deletions

View File

@ -141,8 +141,8 @@ func RegisterAllAdmissionPlugins(plugins *admission.Plugins) {
} }
// DefaultOffAdmissionPlugins get admission plugins off by default for kube-apiserver. // DefaultOffAdmissionPlugins get admission plugins off by default for kube-apiserver.
func DefaultOffAdmissionPlugins() sets.String { func DefaultOffAdmissionPlugins() sets.Set[string] {
defaultOnPlugins := sets.NewString( defaultOnPlugins := sets.New(
lifecycle.PluginName, // NamespaceLifecycle lifecycle.PluginName, // NamespaceLifecycle
limitranger.PluginName, // LimitRanger limitranger.PluginName, // LimitRanger
serviceaccount.PluginName, // ServiceAccount serviceaccount.PluginName, // ServiceAccount
@ -165,5 +165,5 @@ func DefaultOffAdmissionPlugins() sets.String {
validatingadmissionpolicy.PluginName, // ValidatingAdmissionPolicy, only active when feature gate ValidatingAdmissionPolicy is enabled validatingadmissionpolicy.PluginName, // ValidatingAdmissionPolicy, only active when feature gate ValidatingAdmissionPolicy is enabled
) )
return sets.NewString(AllOrderedPlugins...).Difference(defaultOnPlugins) return sets.New(AllOrderedPlugins...).Difference(defaultOnPlugins)
} }

View File

@ -59,7 +59,7 @@ type AdmissionOptions struct {
// RecommendedPluginOrder holds an ordered list of plugin names we recommend to use by default // RecommendedPluginOrder holds an ordered list of plugin names we recommend to use by default
RecommendedPluginOrder []string RecommendedPluginOrder []string
// DefaultOffPlugins is a set of plugin names that is disabled by default // DefaultOffPlugins is a set of plugin names that is disabled by default
DefaultOffPlugins sets.String DefaultOffPlugins sets.Set[string]
// EnablePlugins indicates plugins to be enabled passed through `--enable-admission-plugins`. // EnablePlugins indicates plugins to be enabled passed through `--enable-admission-plugins`.
EnablePlugins []string EnablePlugins []string
@ -91,7 +91,7 @@ func NewAdmissionOptions() *AdmissionOptions {
// after all the mutating ones, so their relative order in this list // after all the mutating ones, so their relative order in this list
// doesn't matter. // doesn't matter.
RecommendedPluginOrder: []string{lifecycle.PluginName, mutatingwebhook.PluginName, validatingadmissionpolicy.PluginName, validatingwebhook.PluginName}, RecommendedPluginOrder: []string{lifecycle.PluginName, mutatingwebhook.PluginName, validatingadmissionpolicy.PluginName, validatingwebhook.PluginName},
DefaultOffPlugins: sets.NewString(), DefaultOffPlugins: sets.Set[string]{},
} }
server.RegisterAllAdmissionPlugins(options.Plugins) server.RegisterAllAdmissionPlugins(options.Plugins)
return options return options
@ -226,7 +226,7 @@ func (a *AdmissionOptions) Validate() []error {
// EnablePlugins, DisablePlugins fields // EnablePlugins, DisablePlugins fields
// to prepare a list of ordered plugin names that are enabled. // to prepare a list of ordered plugin names that are enabled.
func (a *AdmissionOptions) enabledPluginNames() []string { func (a *AdmissionOptions) enabledPluginNames() []string {
allOffPlugins := append(a.DefaultOffPlugins.List(), a.DisablePlugins...) allOffPlugins := append(sets.List[string](a.DefaultOffPlugins), a.DisablePlugins...)
disabledPlugins := sets.NewString(allOffPlugins...) disabledPlugins := sets.NewString(allOffPlugins...)
enabledPlugins := sets.NewString(a.EnablePlugins...) enabledPlugins := sets.NewString(a.EnablePlugins...)
disabledPlugins = disabledPlugins.Difference(enabledPlugins) disabledPlugins = disabledPlugins.Difference(enabledPlugins)

View File

@ -28,7 +28,7 @@ import (
func TestEnabledPluginNames(t *testing.T) { func TestEnabledPluginNames(t *testing.T) {
scenarios := []struct { scenarios := []struct {
expectedPluginNames []string expectedPluginNames []string
setDefaultOffPlugins sets.String setDefaultOffPlugins sets.Set[string]
setRecommendedPluginOrder []string setRecommendedPluginOrder []string
setEnablePlugins []string setEnablePlugins []string
setDisablePlugins []string setDisablePlugins []string
@ -43,21 +43,21 @@ func TestEnabledPluginNames(t *testing.T) {
{ {
expectedPluginNames: []string{"pluginB"}, expectedPluginNames: []string{"pluginB"},
setRecommendedPluginOrder: []string{"pluginA", "pluginB", "pluginC", "pluginD"}, setRecommendedPluginOrder: []string{"pluginA", "pluginB", "pluginC", "pluginD"},
setDefaultOffPlugins: sets.NewString("pluginA", "pluginC", "pluginD"), setDefaultOffPlugins: sets.New("pluginA", "pluginC", "pluginD"),
}, },
// scenario 2: use default off plugins and with RecommendedPluginOrder // scenario 2: use default off plugins and with RecommendedPluginOrder
{ {
expectedPluginNames: []string{"pluginA", "pluginB", "pluginC", "pluginD"}, expectedPluginNames: []string{"pluginA", "pluginB", "pluginC", "pluginD"},
setRecommendedPluginOrder: []string{"pluginA", "pluginB", "pluginC", "pluginD"}, setRecommendedPluginOrder: []string{"pluginA", "pluginB", "pluginC", "pluginD"},
setDefaultOffPlugins: sets.NewString(), setDefaultOffPlugins: sets.Set[string]{},
}, },
// scenario 3: use default off plugins and specified by enable-admission-plugins with RecommendedPluginOrder // scenario 3: use default off plugins and specified by enable-admission-plugins with RecommendedPluginOrder
{ {
expectedPluginNames: []string{"pluginA", "pluginB", "pluginC", "pluginD"}, expectedPluginNames: []string{"pluginA", "pluginB", "pluginC", "pluginD"},
setRecommendedPluginOrder: []string{"pluginA", "pluginB", "pluginC", "pluginD"}, setRecommendedPluginOrder: []string{"pluginA", "pluginB", "pluginC", "pluginD"},
setDefaultOffPlugins: sets.NewString("pluginC", "pluginD"), setDefaultOffPlugins: sets.New("pluginC", "pluginD"),
setEnablePlugins: []string{"pluginD", "pluginC"}, setEnablePlugins: []string{"pluginD", "pluginC"},
}, },
@ -65,7 +65,7 @@ func TestEnabledPluginNames(t *testing.T) {
{ {
expectedPluginNames: []string{"pluginB"}, expectedPluginNames: []string{"pluginB"},
setRecommendedPluginOrder: []string{"pluginA", "pluginB", "pluginC", "pluginD"}, setRecommendedPluginOrder: []string{"pluginA", "pluginB", "pluginC", "pluginD"},
setDefaultOffPlugins: sets.NewString("pluginC", "pluginD"), setDefaultOffPlugins: sets.New("pluginC", "pluginD"),
setDisablePlugins: []string{"pluginA"}, setDisablePlugins: []string{"pluginA"},
}, },
@ -73,7 +73,7 @@ func TestEnabledPluginNames(t *testing.T) {
{ {
expectedPluginNames: []string{"pluginA", "pluginC"}, expectedPluginNames: []string{"pluginA", "pluginC"},
setRecommendedPluginOrder: []string{"pluginA", "pluginB", "pluginC", "pluginD"}, setRecommendedPluginOrder: []string{"pluginA", "pluginB", "pluginC", "pluginD"},
setDefaultOffPlugins: sets.NewString("pluginC", "pluginD"), setDefaultOffPlugins: sets.New("pluginC", "pluginD"),
setEnablePlugins: []string{"pluginC"}, setEnablePlugins: []string{"pluginC"},
setDisablePlugins: []string{"pluginB"}, setDisablePlugins: []string{"pluginB"},
}, },
@ -82,7 +82,7 @@ func TestEnabledPluginNames(t *testing.T) {
{ {
expectedPluginNames: []string{"pluginA", "pluginB", "pluginC"}, expectedPluginNames: []string{"pluginA", "pluginB", "pluginC"},
setRecommendedPluginOrder: []string{"pluginA", "pluginB", "pluginC", "pluginD"}, setRecommendedPluginOrder: []string{"pluginA", "pluginB", "pluginC", "pluginD"},
setDefaultOffPlugins: sets.NewString("pluginD"), setDefaultOffPlugins: sets.New("pluginD"),
setAdmissionControl: []string{"pluginA", "pluginB"}, setAdmissionControl: []string{"pluginA", "pluginB"},
}, },
@ -90,7 +90,7 @@ func TestEnabledPluginNames(t *testing.T) {
{ {
expectedPluginNames: []string{"pluginA", "pluginB", "pluginC"}, expectedPluginNames: []string{"pluginA", "pluginB", "pluginC"},
setRecommendedPluginOrder: []string{"pluginA", "pluginB", "pluginC", "pluginD"}, setRecommendedPluginOrder: []string{"pluginA", "pluginB", "pluginC", "pluginD"},
setDefaultOffPlugins: sets.NewString("pluginC", "pluginD"), setDefaultOffPlugins: sets.New("pluginC", "pluginD"),
setAdmissionControl: []string{"pluginA", "pluginB", "pluginC"}, setAdmissionControl: []string{"pluginA", "pluginB", "pluginC"},
}, },
} }
@ -208,7 +208,7 @@ func TestValidate(t *testing.T) {
for index, scenario := range scenarios { for index, scenario := range scenarios {
t.Run(fmt.Sprintf("scenario %d", index), func(t *testing.T) { t.Run(fmt.Sprintf("scenario %d", index), func(t *testing.T) {
options := NewAdmissionOptions() options := NewAdmissionOptions()
options.DefaultOffPlugins = sets.NewString("pluginC", "pluginD") options.DefaultOffPlugins = sets.New("pluginC", "pluginD")
options.RecommendedPluginOrder = []string{"pluginA", "pluginB", "pluginC", "pluginD"} options.RecommendedPluginOrder = []string{"pluginA", "pluginB", "pluginC", "pluginD"}
options.Plugins = &admission.Plugins{} options.Plugins = &admission.Plugins{}
for _, plugin := range options.RecommendedPluginOrder { for _, plugin := range options.RecommendedPluginOrder {