summaryrefslogtreecommitdiff
path: root/vendor/github.com/openshift/api/config/v1/types_scheduling.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/openshift/api/config/v1/types_scheduling.go')
-rw-r--r--vendor/github.com/openshift/api/config/v1/types_scheduling.go75
1 files changed, 75 insertions, 0 deletions
diff --git a/vendor/github.com/openshift/api/config/v1/types_scheduling.go b/vendor/github.com/openshift/api/config/v1/types_scheduling.go
new file mode 100644
index 000000000..9b8fa3a52
--- /dev/null
+++ b/vendor/github.com/openshift/api/config/v1/types_scheduling.go
@@ -0,0 +1,75 @@
+package v1
+
+import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+
+// +genclient
+// +genclient:nonNamespaced
+// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
+
+// Scheduler holds cluster-wide config information to run the Kubernetes Scheduler
+// and influence its placement decisions. The canonical name for this config is `cluster`.
+type Scheduler struct {
+ metav1.TypeMeta `json:",inline"`
+ // Standard object's metadata.
+ metav1.ObjectMeta `json:"metadata,omitempty"`
+
+ // spec holds user settable values for configuration
+ // +kubebuilder:validation:Required
+ // +required
+ Spec SchedulerSpec `json:"spec"`
+ // status holds observed values from the cluster. They may not be overridden.
+ // +optional
+ Status SchedulerStatus `json:"status"`
+}
+
+type SchedulerSpec struct {
+ // policy is a reference to a ConfigMap containing scheduler policy which has
+ // user specified predicates and priorities. If this ConfigMap is not available
+ // scheduler will default to use DefaultAlgorithmProvider.
+ // The namespace for this configmap is openshift-config.
+ // +optional
+ Policy ConfigMapNameReference `json:"policy"`
+ // defaultNodeSelector helps set the cluster-wide default node selector to
+ // restrict pod placement to specific nodes. This is applied to the pods
+ // created in all namespaces without a specified nodeSelector value.
+ // For example,
+ // defaultNodeSelector: "type=user-node,region=east" would set nodeSelector
+ // field in pod spec to "type=user-node,region=east" to all pods created
+ // in all namespaces. Namespaces having project-wide node selectors won't be
+ // impacted even if this field is set. This adds an annotation section to
+ // the namespace.
+ // For example, if a new namespace is created with
+ // node-selector='type=user-node,region=east',
+ // the annotation openshift.io/node-selector: type=user-node,region=east
+ // gets added to the project. When the openshift.io/node-selector annotation
+ // is set on the project the value is used in preference to the value we are setting
+ // for defaultNodeSelector field.
+ // For instance,
+ // openshift.io/node-selector: "type=user-node,region=west" means
+ // that the default of "type=user-node,region=east" set in defaultNodeSelector
+ // would not be applied.
+ // +optional
+ DefaultNodeSelector string `json:"defaultNodeSelector,omitempty"`
+ // MastersSchedulable allows masters nodes to be schedulable. When this flag is
+ // turned on, all the master nodes in the cluster will be made schedulable,
+ // so that workload pods can run on them. The default value for this field is false,
+ // meaning none of the master nodes are schedulable.
+ // Important Note: Once the workload pods start running on the master nodes,
+ // extreme care must be taken to ensure that cluster-critical control plane components
+ // are not impacted.
+ // Please turn on this field after doing due diligence.
+ // +optional
+ MastersSchedulable bool `json:"mastersSchedulable"`
+}
+
+type SchedulerStatus struct {
+}
+
+// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
+
+type SchedulerList struct {
+ metav1.TypeMeta `json:",inline"`
+ // Standard object's metadata.
+ metav1.ListMeta `json:"metadata"`
+ Items []Scheduler `json:"items"`
+}