/
scheduler_conf.go
84 lines (76 loc) · 3.53 KB
/
scheduler_conf.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/*
Copyright 2018 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package conf
// SchedulerConfiguration defines the configuration of scheduler.
type SchedulerConfiguration struct {
// Actions defines the actions list of scheduler in order
Actions string `yaml:"actions"`
// Tiers defines plugins in different tiers
Tiers []Tier `yaml:"tiers"`
// Configurations is configuration for actions
Configurations []Configuration `yaml:"configurations"`
}
// Tier defines plugin tier
type Tier struct {
Plugins []PluginOption `yaml:"plugins"`
}
// Configuration is configuration of action
type Configuration struct {
// Name is name of action
Name string `yaml:"name"`
// Arguments defines the different arguments that can be given to specified action
Arguments map[string]string `yaml:"arguments"`
}
// PluginOption defines the options of plugin
type PluginOption struct {
// The name of Plugin
Name string `yaml:"name"`
// EnabledJobOrder defines whether jobOrderFn is enabled
EnabledJobOrder *bool `yaml:"enableJobOrder"`
// EnabledNamespaceOrder defines whether namespaceOrderFn is enabled
EnabledNamespaceOrder *bool `yaml:"enableNamespaceOrder"`
// EnabledHierachy defines whether hierarchical sharing is enabled
EnabledHierarchy *bool `yaml:"enableHierarchy"`
// EnabledJobReady defines whether jobReadyFn is enabled
EnabledJobReady *bool `yaml:"enableJobReady"`
// EnabledJobPipelined defines whether jobPipelinedFn is enabled
EnabledJobPipelined *bool `yaml:"enableJobPipelined"`
// EnabledTaskOrder defines whether taskOrderFn is enabled
EnabledTaskOrder *bool `yaml:"enableTaskOrder"`
// EnabledPreemptable defines whether preemptableFn is enabled
EnabledPreemptable *bool `yaml:"enablePreemptable"`
// EnabledReclaimable defines whether reclaimableFn is enabled
EnabledReclaimable *bool `yaml:"enableReclaimable"`
// EnabledQueueOrder defines whether queueOrderFn is enabled
EnabledQueueOrder *bool `yaml:"enableQueueOrder"`
// EnabledPredicate defines whether predicateFn is enabled
EnabledClusterOrder *bool `yaml:"EnabledClusterOrder"`
// EnableClusterOrder defines whether clusterOrderFn is enabled
EnabledPredicate *bool `yaml:"enablePredicate"`
// EnabledBestNode defines whether bestNodeFn is enabled
EnabledBestNode *bool `yaml:"enableBestNode"`
// EnabledNodeOrder defines whether NodeOrderFn is enabled
EnabledNodeOrder *bool `yaml:"enableNodeOrder"`
// EnabledTargetJob defines whether targetJobFn is enabled
EnabledTargetJob *bool `yaml:"enableTargetJob"`
// EnabledReservedNodes defines whether reservedNodesFn is enabled
EnabledReservedNodes *bool `yaml:"enableReservedNodes"`
// EnabledJobEnqueued defines whether jobEnqueuedFn is enabled
EnabledJobEnqueued *bool `yaml:"enableJobEnqueued"`
// EnabledVictim defines whether victimsFn is enabled
EnabledVictim *bool `yaml:"enabledVictim"`
// EnabledJobStarving defines whether jobStarvingFn is enabled
EnabledJobStarving *bool `yaml:"enableJobStarving"`
// Arguments defines the different arguments that can be given to different plugins
Arguments map[string]string `yaml:"arguments"`
}