diff --git a/pkg/scheduler/framework/v1alpha1/framework.go b/pkg/scheduler/framework/v1alpha1/framework.go index 72dc586ae79..0c05bfbcd2d 100644 --- a/pkg/scheduler/framework/v1alpha1/framework.go +++ b/pkg/scheduler/framework/v1alpha1/framework.go @@ -84,66 +84,76 @@ func NewFramework(r Registry, plugins *config.Plugins, args []config.PluginConfi f.plugins[name] = p } - for _, r := range plugins.Reserve.Enabled { - if pg, ok := f.plugins[r.Name]; ok { - p, ok := pg.(ReservePlugin) - if !ok { - return nil, fmt.Errorf("plugin %v does not extend reserve plugin", r.Name) + if plugins.Reserve != nil { + for _, r := range plugins.Reserve.Enabled { + if pg, ok := f.plugins[r.Name]; ok { + p, ok := pg.(ReservePlugin) + if !ok { + return nil, fmt.Errorf("plugin %v does not extend reserve plugin", r.Name) + } + f.reservePlugins = append(f.reservePlugins, p) + } else { + return nil, fmt.Errorf("reserve plugin %v does not exist", r.Name) } - f.reservePlugins = append(f.reservePlugins, p) - } else { - return nil, fmt.Errorf("reserve plugin %v does not exist", r.Name) } } - for _, pb := range plugins.PreBind.Enabled { - if pg, ok := f.plugins[pb.Name]; ok { - p, ok := pg.(PrebindPlugin) - if !ok { - return nil, fmt.Errorf("plugin %v does not extend prebind plugin", pb.Name) + if plugins.PreBind != nil { + for _, pb := range plugins.PreBind.Enabled { + if pg, ok := f.plugins[pb.Name]; ok { + p, ok := pg.(PrebindPlugin) + if !ok { + return nil, fmt.Errorf("plugin %v does not extend prebind plugin", pb.Name) + } + f.prebindPlugins = append(f.prebindPlugins, p) + } else { + return nil, fmt.Errorf("prebind plugin %v does not exist", pb.Name) } - f.prebindPlugins = append(f.prebindPlugins, p) - } else { - return nil, fmt.Errorf("prebind plugin %v does not exist", pb.Name) } } - for _, ur := range plugins.Unreserve.Enabled { - if pg, ok := f.plugins[ur.Name]; ok { - p, ok := pg.(UnreservePlugin) - if !ok { - return nil, fmt.Errorf("plugin %v does not extend unreserve plugin", ur.Name) + if plugins.Unreserve != nil { + for _, ur := range plugins.Unreserve.Enabled { + if pg, ok := f.plugins[ur.Name]; ok { + p, ok := pg.(UnreservePlugin) + if !ok { + return nil, fmt.Errorf("plugin %v does not extend unreserve plugin", ur.Name) + } + f.unreservePlugins = append(f.unreservePlugins, p) + } else { + return nil, fmt.Errorf("unreserve plugin %v does not exist", ur.Name) } - f.unreservePlugins = append(f.unreservePlugins, p) - } else { - return nil, fmt.Errorf("unreserve plugin %v does not exist", ur.Name) } } - for _, pr := range plugins.Permit.Enabled { - if pg, ok := f.plugins[pr.Name]; ok { - p, ok := pg.(PermitPlugin) - if !ok { - return nil, fmt.Errorf("plugin %v does not extend permit plugin", pr.Name) + if plugins.Permit != nil { + for _, pr := range plugins.Permit.Enabled { + if pg, ok := f.plugins[pr.Name]; ok { + p, ok := pg.(PermitPlugin) + if !ok { + return nil, fmt.Errorf("plugin %v does not extend permit plugin", pr.Name) + } + f.permitPlugins = append(f.permitPlugins, p) + } else { + return nil, fmt.Errorf("permit plugin %v does not exist", pr.Name) } - f.permitPlugins = append(f.permitPlugins, p) - } else { - return nil, fmt.Errorf("permit plugin %v does not exist", pr.Name) } } - for _, qs := range plugins.QueueSort.Enabled { - if pg, ok := f.plugins[qs.Name]; ok { - p, ok := pg.(QueueSortPlugin) - if !ok { - return nil, fmt.Errorf("plugin %v does not extend queue sort plugin", qs.Name) + if plugins.QueueSort != nil { + for _, qs := range plugins.QueueSort.Enabled { + if pg, ok := f.plugins[qs.Name]; ok { + p, ok := pg.(QueueSortPlugin) + if !ok { + return nil, fmt.Errorf("plugin %v does not extend queue sort plugin", qs.Name) + } + f.queueSortPlugins = append(f.queueSortPlugins, p) + if len(f.queueSortPlugins) > 1 { + return nil, fmt.Errorf("only one queue sort plugin can be enabled") + } + } else { + return nil, fmt.Errorf("queue sort plugin %v does not exist", qs.Name) } - f.queueSortPlugins = append(f.queueSortPlugins, p) - if len(f.queueSortPlugins) > 1 { - return nil, fmt.Errorf("only one queue sort plugin can be enabled") - } - } else { - return nil, fmt.Errorf("queue sort plugin %v does not exist", qs.Name) } }