Documentation
¶
Index ¶
- Constants
- type ClusterInfo
- type ClusterScore
- type ClusterScoreList
- type ClusterToResultMap
- type Code
- type Diagnosis
- type FilterContext
- type FilterPlugin
- type FilterPluginWithContext
- type FitError
- type Framework
- type Plugin
- type PluginToClusterScores
- type PluginToResult
- type Result
- type ScoreExtensions
- type ScorePlugin
- type UnschedulableError
Constants ¶
const ( // MinClusterScore is the minimum score a Score plugin is expected to return. MinClusterScore int64 = 0 // MaxClusterScore is the maximum score a Score plugin is expected to return. MaxClusterScore int64 = 100 )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ClusterInfo ¶
type ClusterInfo struct {
// contains filtered or unexported fields
}
ClusterInfo is cluster level aggregated information.
func NewClusterInfo ¶
func NewClusterInfo(cluster *clusterv1alpha1.Cluster) *ClusterInfo
NewClusterInfo creates a ClusterInfo object.
func (*ClusterInfo) Cluster ¶
func (n *ClusterInfo) Cluster() *clusterv1alpha1.Cluster
Cluster returns overall information about this cluster.
type ClusterScore ¶
type ClusterScore struct {
Cluster *clusterv1alpha1.Cluster
Score int64
}
ClusterScore represent the cluster score.
type ClusterScoreList ¶
type ClusterScoreList []ClusterScore
ClusterScoreList declares a list of clusters and their scores.
type ClusterToResultMap ¶ added in v1.4.0
ClusterToResultMap declares map from cluster name to its Result.
type Code ¶
type Code int
Code is the Status code/type which is returned from plugins.
const ( // Success means that plugin ran correctly and found resource schedulable. // NOTE: A nil status is also considered as "Success". Success Code = iota // Unschedulable is used when a plugin finds the resource unschedulable. // The accompanying status message should explain why it is unschedulable. Unschedulable // Error is used for internal plugin errors, unexpected input, etc. Error )
These are predefined codes used in a Status.
type Diagnosis ¶ added in v1.4.0
type Diagnosis struct {
ClusterToResultMap ClusterToResultMap
}
Diagnosis records the details to diagnose a scheduling failure.
type FilterContext ¶ added in v1.17.0
type FilterContext struct {
// Context is the scheduling context.
Context context.Context
// BindingSpec contains the resource binding specification.
BindingSpec *workv1alpha2.ResourceBindingSpec
// BindingStatus contains the resource binding status.
BindingStatus *workv1alpha2.ResourceBindingStatus
// Cluster is the cluster being evaluated.
Cluster *clusterv1alpha1.Cluster
// ResourceBindingIndexer provides access to ResourceBindings for advanced scheduling logic.
ResourceBindingIndexer cache.Indexer
// AssigningBindings stores the ResourceBindings that are in the "assigning" state.
AssigningBindings map[string]*workv1alpha2.ResourceBinding
}
FilterContext encapsulates all parameters needed for Filter plugins. It groups scheduling context data in a single struct for flexibility and extensibility.
type FilterPlugin ¶
type FilterPlugin interface {
Plugin
// Filter is called by the scheduling framework.
Filter(ctx context.Context, bindingSpec *workv1alpha2.ResourceBindingSpec, bindingStatus *workv1alpha2.ResourceBindingStatus, cluster *clusterv1alpha1.Cluster) *Result
}
FilterPlugin is an interface for filter plugins. These filters are used to filter out clusters that are not fit for the resource.
type FilterPluginWithContext ¶ added in v1.17.0
type FilterPluginWithContext interface {
Plugin
// FilterWithContext is called by the scheduling framework with consolidated parameters.
FilterWithContext(filterCtx *FilterContext) *Result
}
FilterPluginWithContext is an extended interface for filter plugins that use FilterContext. Plugins implementing this interface can benefit from better parameter extensibility. The framework will automatically detect and use this interface if implemented.
type Framework ¶
type Framework interface {
// RunFilterPlugins runs the set of configured Filter plugins for resources on the given cluster.
RunFilterPlugins(filterCtx *FilterContext) *Result
// RunScorePlugins runs the set of configured Score plugins, it returns a map of plugin names to scores
RunScorePlugins(ctx context.Context, spec *workv1alpha2.ResourceBindingSpec, clusters []*clusterv1alpha1.Cluster) (PluginToClusterScores, *Result)
}
Framework manages the set of plugins in use by the scheduling framework. Configured plugins are called at specified points in a scheduling context.
type Plugin ¶
type Plugin interface {
Name() string
}
Plugin is the parent type for all the scheduling framework plugins.
type PluginToClusterScores ¶
type PluginToClusterScores map[string]ClusterScoreList
PluginToClusterScores declares a map from plugin name to its ClusterScoreList.
type PluginToResult ¶
PluginToResult maps plugin name to Result.
func (PluginToResult) Merge ¶
func (p PluginToResult) Merge() *Result
Merge merges the statuses in the map into one. The resulting status code have the following precedence: Error, Unschedulable.
type Result ¶
type Result struct {
// contains filtered or unexported fields
}
Result indicates the result of running a plugin. It consists of a code, a message and (optionally) an error. When the status code is not `Success`, the reasons should explain why.
func (*Result) AsError ¶
AsError returns nil if the Result is a success; otherwise returns an "error" object with a concatenated message on reasons of the Result.
type ScoreExtensions ¶ added in v1.2.0
type ScoreExtensions interface {
// NormalizeScore is called for all cluster scores produced
// by the same plugin's "Score"
NormalizeScore(ctx context.Context, scores ClusterScoreList) *Result
}
ScoreExtensions is an interface for Score extended functionality.
type ScorePlugin ¶
type ScorePlugin interface {
Plugin
// Score is called on each filtered cluster. It must return success and an integer
// indicating the rank of the cluster. All scoring plugins must return success or
// the resource will be rejected.
Score(ctx context.Context, spec *workv1alpha2.ResourceBindingSpec, cluster *clusterv1alpha1.Cluster) (int64, *Result)
// ScoreExtensions returns a ScoreExtensions interface
// if it implements one, or nil if does not.
ScoreExtensions() ScoreExtensions
}
ScorePlugin is an interface that must be implemented by "Score" plugins to rank clusters that passed the filtering phase.
type UnschedulableError ¶ added in v1.7.0
type UnschedulableError struct {
Message string
}
UnschedulableError describes a unschedulable error, for example due to insufficient resources.
func (*UnschedulableError) Error ¶ added in v1.7.0
func (u *UnschedulableError) Error() string
Directories
¶
| Path | Synopsis |
|---|---|
|
Package testing is a generated GoMock package.
|
Package testing is a generated GoMock package. |