1
0
mirror of https://github.com/kubernetes-sigs/descheduler.git synced 2026-01-27 05:46:13 +01:00

Extend PluginRegistry with plugin type

This commit is contained in:
Jan Chaloupka
2023-03-30 10:55:59 +02:00
parent 757661110a
commit 3897ff069f
4 changed files with 29 additions and 16 deletions

View File

@@ -26,6 +26,8 @@ var PluginRegistry Registry
type PluginUtilities struct {
PluginBuilder PluginBuilder
PluginType interface{}
// Just an example instance of this PluginArg so we can avoid having
// to deal with reflect Types
PluginArgInstance runtime.Object
@@ -46,12 +48,21 @@ func NewRegistry() Registry {
return Registry{}
}
func Register(name string, builderFunc PluginBuilder, exampleArg runtime.Object, pluginArgValidator PluginArgValidator, pluginArgDefaulter PluginArgDefaulter, registry Registry) {
func Register(
name string,
builderFunc PluginBuilder,
pluginType interface{},
exampleArg runtime.Object,
pluginArgValidator PluginArgValidator,
pluginArgDefaulter PluginArgDefaulter,
registry Registry,
) {
if _, ok := registry[name]; ok {
klog.V(10).InfoS("Plugin already registered", "plugin", name)
} else {
registry[name] = PluginUtilities{
PluginBuilder: builderFunc,
PluginType: pluginType,
PluginArgInstance: exampleArg,
PluginArgValidator: pluginArgValidator,
PluginArgDefaulter: pluginArgDefaulter,

View File

@@ -193,6 +193,7 @@ func TestProfileTopExtensionPoints(t *testing.T) {
pluginregistry.Register(
"FakePlugin",
fakeplugin.NewPluginFncFromFake(&fakePlugin),
&fakeplugin.FakePlugin{},
&fakeplugin.FakePluginArgs{},
fakeplugin.ValidateFakePluginArgs,
fakeplugin.SetDefaults_FakePluginArgs,
@@ -202,6 +203,7 @@ func TestProfileTopExtensionPoints(t *testing.T) {
pluginregistry.Register(
defaultevictor.PluginName,
defaultevictor.New,
&defaultevictor.DefaultEvictor{},
&defaultevictor.DefaultEvictorArgs{},
defaultevictor.ValidateDefaultEvictorArgs,
defaultevictor.SetDefaults_DefaultEvictorArgs,