2017-02-07 21:33:23 +00:00
|
|
|
/*
|
|
|
|
Copyright 2016 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 v2alpha1
|
|
|
|
|
|
|
|
import (
|
2017-04-07 10:49:53 +00:00
|
|
|
"k8s.io/client-go/pkg/api/unversioned"
|
|
|
|
"k8s.io/client-go/pkg/api/v1"
|
2017-02-07 21:33:23 +00:00
|
|
|
)
|
|
|
|
|
2017-04-07 10:49:53 +00:00
|
|
|
// +genclient=true
|
|
|
|
|
2017-02-07 21:33:23 +00:00
|
|
|
// Job represents the configuration of a single job.
|
|
|
|
type Job struct {
|
|
|
|
unversioned.TypeMeta `json:",inline"`
|
|
|
|
// Standard object's metadata.
|
|
|
|
// More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
|
2017-04-07 10:49:53 +00:00
|
|
|
// +optional
|
2017-02-07 21:33:23 +00:00
|
|
|
v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
|
|
|
|
|
|
|
// Spec is a structure defining the expected behavior of a job.
|
|
|
|
// More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
|
2017-04-07 10:49:53 +00:00
|
|
|
// +optional
|
2017-02-07 21:33:23 +00:00
|
|
|
Spec JobSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
|
|
|
|
|
|
|
|
// Status is a structure describing current status of a job.
|
|
|
|
// More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
|
2017-04-07 10:49:53 +00:00
|
|
|
// +optional
|
2017-02-07 21:33:23 +00:00
|
|
|
Status JobStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// JobList is a collection of jobs.
|
|
|
|
type JobList struct {
|
|
|
|
unversioned.TypeMeta `json:",inline"`
|
|
|
|
// Standard list metadata
|
|
|
|
// More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
|
2017-04-07 10:49:53 +00:00
|
|
|
// +optional
|
2017-02-07 21:33:23 +00:00
|
|
|
unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
|
|
|
|
|
|
|
// Items is the list of Job.
|
|
|
|
Items []Job `json:"items" protobuf:"bytes,2,rep,name=items"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// JobTemplate describes a template for creating copies of a predefined pod.
|
|
|
|
type JobTemplate struct {
|
|
|
|
unversioned.TypeMeta `json:",inline"`
|
|
|
|
// Standard object's metadata.
|
|
|
|
// More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
|
2017-04-07 10:49:53 +00:00
|
|
|
// +optional
|
2017-02-07 21:33:23 +00:00
|
|
|
v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
|
|
|
|
|
|
|
// Template defines jobs that will be created from this template
|
|
|
|
// http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
|
2017-04-07 10:49:53 +00:00
|
|
|
// +optional
|
2017-02-07 21:33:23 +00:00
|
|
|
Template JobTemplateSpec `json:"template,omitempty" protobuf:"bytes,2,opt,name=template"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// JobTemplateSpec describes the data a Job should have when created from a template
|
|
|
|
type JobTemplateSpec struct {
|
|
|
|
// Standard object's metadata of the jobs created from this template.
|
|
|
|
// More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
|
2017-04-07 10:49:53 +00:00
|
|
|
// +optional
|
2017-02-07 21:33:23 +00:00
|
|
|
v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
|
|
|
|
|
|
|
// Specification of the desired behavior of the job.
|
|
|
|
// More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
|
2017-04-07 10:49:53 +00:00
|
|
|
// +optional
|
2017-02-07 21:33:23 +00:00
|
|
|
Spec JobSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// JobSpec describes how the job execution will look like.
|
|
|
|
type JobSpec struct {
|
|
|
|
|
|
|
|
// Parallelism specifies the maximum desired number of pods the job should
|
|
|
|
// run at any given time. The actual number of pods running in steady state will
|
|
|
|
// be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism),
|
|
|
|
// i.e. when the work left to do is less than max parallelism.
|
2017-04-07 10:49:53 +00:00
|
|
|
// More info: http://kubernetes.io/docs/user-guide/jobs
|
|
|
|
// +optional
|
2017-02-07 21:33:23 +00:00
|
|
|
Parallelism *int32 `json:"parallelism,omitempty" protobuf:"varint,1,opt,name=parallelism"`
|
|
|
|
|
|
|
|
// Completions specifies the desired number of successfully finished pods the
|
|
|
|
// job should be run with. Setting to nil means that the success of any
|
|
|
|
// pod signals the success of all pods, and allows parallelism to have any positive
|
|
|
|
// value. Setting to 1 means that parallelism is limited to 1 and the success of that
|
|
|
|
// pod signals the success of the job.
|
2017-04-07 10:49:53 +00:00
|
|
|
// More info: http://kubernetes.io/docs/user-guide/jobs
|
|
|
|
// +optional
|
2017-02-07 21:33:23 +00:00
|
|
|
Completions *int32 `json:"completions,omitempty" protobuf:"varint,2,opt,name=completions"`
|
|
|
|
|
|
|
|
// Optional duration in seconds relative to the startTime that the job may be active
|
|
|
|
// before the system tries to terminate it; value must be positive integer
|
2017-04-07 10:49:53 +00:00
|
|
|
// +optional
|
2017-02-07 21:33:23 +00:00
|
|
|
ActiveDeadlineSeconds *int64 `json:"activeDeadlineSeconds,omitempty" protobuf:"varint,3,opt,name=activeDeadlineSeconds"`
|
|
|
|
|
|
|
|
// Selector is a label query over pods that should match the pod count.
|
|
|
|
// Normally, the system sets this field for you.
|
2017-04-07 10:49:53 +00:00
|
|
|
// More info: http://kubernetes.io/docs/user-guide/labels#label-selectors
|
|
|
|
// +optional
|
|
|
|
Selector *unversioned.LabelSelector `json:"selector,omitempty" protobuf:"bytes,4,opt,name=selector"`
|
2017-02-07 21:33:23 +00:00
|
|
|
|
|
|
|
// ManualSelector controls generation of pod labels and pod selectors.
|
|
|
|
// Leave `manualSelector` unset unless you are certain what you are doing.
|
|
|
|
// When false or unset, the system pick labels unique to this job
|
|
|
|
// and appends those labels to the pod template. When true,
|
|
|
|
// the user is responsible for picking unique labels and specifying
|
|
|
|
// the selector. Failure to pick a unique label may cause this
|
|
|
|
// and other jobs to not function correctly. However, You may see
|
|
|
|
// `manualSelector=true` in jobs that were created with the old `extensions/v1beta1`
|
|
|
|
// API.
|
|
|
|
// More info: http://releases.k8s.io/HEAD/docs/design/selector-generation.md
|
2017-04-07 10:49:53 +00:00
|
|
|
// +optional
|
2017-02-07 21:33:23 +00:00
|
|
|
ManualSelector *bool `json:"manualSelector,omitempty" protobuf:"varint,5,opt,name=manualSelector"`
|
|
|
|
|
|
|
|
// Template is the object that describes the pod that will be created when
|
|
|
|
// executing a job.
|
2017-04-07 10:49:53 +00:00
|
|
|
// More info: http://kubernetes.io/docs/user-guide/jobs
|
2017-02-07 21:33:23 +00:00
|
|
|
Template v1.PodTemplateSpec `json:"template" protobuf:"bytes,6,opt,name=template"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// JobStatus represents the current state of a Job.
|
|
|
|
type JobStatus struct {
|
|
|
|
|
|
|
|
// Conditions represent the latest available observations of an object's current state.
|
2017-04-07 10:49:53 +00:00
|
|
|
// More info: http://kubernetes.io/docs/user-guide/jobs
|
|
|
|
// +optional
|
2017-02-07 21:33:23 +00:00
|
|
|
Conditions []JobCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"`
|
|
|
|
|
|
|
|
// StartTime represents time when the job was acknowledged by the Job Manager.
|
|
|
|
// It is not guaranteed to be set in happens-before order across separate operations.
|
|
|
|
// It is represented in RFC3339 form and is in UTC.
|
2017-04-07 10:49:53 +00:00
|
|
|
// +optional
|
2017-02-07 21:33:23 +00:00
|
|
|
StartTime *unversioned.Time `json:"startTime,omitempty" protobuf:"bytes,2,opt,name=startTime"`
|
|
|
|
|
|
|
|
// CompletionTime represents time when the job was completed. It is not guaranteed to
|
|
|
|
// be set in happens-before order across separate operations.
|
|
|
|
// It is represented in RFC3339 form and is in UTC.
|
2017-04-07 10:49:53 +00:00
|
|
|
// +optional
|
2017-02-07 21:33:23 +00:00
|
|
|
CompletionTime *unversioned.Time `json:"completionTime,omitempty" protobuf:"bytes,3,opt,name=completionTime"`
|
|
|
|
|
|
|
|
// Active is the number of actively running pods.
|
2017-04-07 10:49:53 +00:00
|
|
|
// +optional
|
2017-02-07 21:33:23 +00:00
|
|
|
Active int32 `json:"active,omitempty" protobuf:"varint,4,opt,name=active"`
|
|
|
|
|
|
|
|
// Succeeded is the number of pods which reached Phase Succeeded.
|
2017-04-07 10:49:53 +00:00
|
|
|
// +optional
|
2017-02-07 21:33:23 +00:00
|
|
|
Succeeded int32 `json:"succeeded,omitempty" protobuf:"varint,5,opt,name=succeeded"`
|
|
|
|
|
|
|
|
// Failed is the number of pods which reached Phase Failed.
|
2017-04-07 10:49:53 +00:00
|
|
|
// +optional
|
2017-02-07 21:33:23 +00:00
|
|
|
Failed int32 `json:"failed,omitempty" protobuf:"varint,6,opt,name=failed"`
|
|
|
|
}
|
|
|
|
|
|
|
|
type JobConditionType string
|
|
|
|
|
|
|
|
// These are valid conditions of a job.
|
|
|
|
const (
|
|
|
|
// JobComplete means the job has completed its execution.
|
|
|
|
JobComplete JobConditionType = "Complete"
|
|
|
|
// JobFailed means the job has failed its execution.
|
|
|
|
JobFailed JobConditionType = "Failed"
|
|
|
|
)
|
|
|
|
|
|
|
|
// JobCondition describes current state of a job.
|
|
|
|
type JobCondition struct {
|
|
|
|
// Type of job condition, Complete or Failed.
|
|
|
|
Type JobConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=JobConditionType"`
|
|
|
|
// Status of the condition, one of True, False, Unknown.
|
|
|
|
Status v1.ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=k8s.io/kubernetes/pkg/api/v1.ConditionStatus"`
|
|
|
|
// Last time the condition was checked.
|
2017-04-07 10:49:53 +00:00
|
|
|
// +optional
|
2017-02-07 21:33:23 +00:00
|
|
|
LastProbeTime unversioned.Time `json:"lastProbeTime,omitempty" protobuf:"bytes,3,opt,name=lastProbeTime"`
|
|
|
|
// Last time the condition transit from one status to another.
|
2017-04-07 10:49:53 +00:00
|
|
|
// +optional
|
2017-02-07 21:33:23 +00:00
|
|
|
LastTransitionTime unversioned.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,4,opt,name=lastTransitionTime"`
|
|
|
|
// (brief) reason for the condition's last transition.
|
2017-04-07 10:49:53 +00:00
|
|
|
// +optional
|
2017-02-07 21:33:23 +00:00
|
|
|
Reason string `json:"reason,omitempty" protobuf:"bytes,5,opt,name=reason"`
|
|
|
|
// Human readable message indicating details about last transition.
|
2017-04-07 10:49:53 +00:00
|
|
|
// +optional
|
2017-02-07 21:33:23 +00:00
|
|
|
Message string `json:"message,omitempty" protobuf:"bytes,6,opt,name=message"`
|
|
|
|
}
|
|
|
|
|
2017-04-07 10:49:53 +00:00
|
|
|
// +genclient=true
|
|
|
|
|
|
|
|
// CronJob represents the configuration of a single cron job.
|
|
|
|
type CronJob struct {
|
2017-02-07 21:33:23 +00:00
|
|
|
unversioned.TypeMeta `json:",inline"`
|
|
|
|
// Standard object's metadata.
|
|
|
|
// More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
|
2017-04-07 10:49:53 +00:00
|
|
|
// +optional
|
2017-02-07 21:33:23 +00:00
|
|
|
v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
|
|
|
|
|
|
|
// Spec is a structure defining the expected behavior of a job, including the schedule.
|
|
|
|
// More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
|
2017-04-07 10:49:53 +00:00
|
|
|
// +optional
|
|
|
|
Spec CronJobSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
|
2017-02-07 21:33:23 +00:00
|
|
|
|
|
|
|
// Status is a structure describing current status of a job.
|
|
|
|
// More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
|
2017-04-07 10:49:53 +00:00
|
|
|
// +optional
|
|
|
|
Status CronJobStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
|
2017-02-07 21:33:23 +00:00
|
|
|
}
|
|
|
|
|
2017-04-07 10:49:53 +00:00
|
|
|
// CronJobList is a collection of cron jobs.
|
|
|
|
type CronJobList struct {
|
2017-02-07 21:33:23 +00:00
|
|
|
unversioned.TypeMeta `json:",inline"`
|
|
|
|
// Standard list metadata
|
|
|
|
// More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
|
2017-04-07 10:49:53 +00:00
|
|
|
// +optional
|
2017-02-07 21:33:23 +00:00
|
|
|
unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
|
|
|
|
2017-04-07 10:49:53 +00:00
|
|
|
// Items is the list of CronJob.
|
|
|
|
Items []CronJob `json:"items" protobuf:"bytes,2,rep,name=items"`
|
2017-02-07 21:33:23 +00:00
|
|
|
}
|
|
|
|
|
2017-04-07 10:49:53 +00:00
|
|
|
// CronJobSpec describes how the job execution will look like and when it will actually run.
|
|
|
|
type CronJobSpec struct {
|
2017-02-07 21:33:23 +00:00
|
|
|
|
|
|
|
// Schedule contains the schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.
|
|
|
|
Schedule string `json:"schedule" protobuf:"bytes,1,opt,name=schedule"`
|
|
|
|
|
|
|
|
// Optional deadline in seconds for starting the job if it misses scheduled
|
|
|
|
// time for any reason. Missed jobs executions will be counted as failed ones.
|
2017-04-07 10:49:53 +00:00
|
|
|
// +optional
|
2017-02-07 21:33:23 +00:00
|
|
|
StartingDeadlineSeconds *int64 `json:"startingDeadlineSeconds,omitempty" protobuf:"varint,2,opt,name=startingDeadlineSeconds"`
|
|
|
|
|
|
|
|
// ConcurrencyPolicy specifies how to treat concurrent executions of a Job.
|
2017-04-07 10:49:53 +00:00
|
|
|
// +optional
|
2017-02-07 21:33:23 +00:00
|
|
|
ConcurrencyPolicy ConcurrencyPolicy `json:"concurrencyPolicy,omitempty" protobuf:"bytes,3,opt,name=concurrencyPolicy,casttype=ConcurrencyPolicy"`
|
|
|
|
|
|
|
|
// Suspend flag tells the controller to suspend subsequent executions, it does
|
|
|
|
// not apply to already started executions. Defaults to false.
|
2017-04-07 10:49:53 +00:00
|
|
|
// +optional
|
2017-02-07 21:33:23 +00:00
|
|
|
Suspend *bool `json:"suspend,omitempty" protobuf:"varint,4,opt,name=suspend"`
|
|
|
|
|
|
|
|
// JobTemplate is the object that describes the job that will be created when
|
2017-04-07 10:49:53 +00:00
|
|
|
// executing a CronJob.
|
2017-02-07 21:33:23 +00:00
|
|
|
JobTemplate JobTemplateSpec `json:"jobTemplate" protobuf:"bytes,5,opt,name=jobTemplate"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// ConcurrencyPolicy describes how the job will be handled.
|
|
|
|
// Only one of the following concurrent policies may be specified.
|
|
|
|
// If none of the following policies is specified, the default one
|
|
|
|
// is AllowConcurrent.
|
|
|
|
type ConcurrencyPolicy string
|
|
|
|
|
|
|
|
const (
|
2017-04-07 10:49:53 +00:00
|
|
|
// AllowConcurrent allows CronJobs to run concurrently.
|
2017-02-07 21:33:23 +00:00
|
|
|
AllowConcurrent ConcurrencyPolicy = "Allow"
|
|
|
|
|
|
|
|
// ForbidConcurrent forbids concurrent runs, skipping next run if previous
|
|
|
|
// hasn't finished yet.
|
|
|
|
ForbidConcurrent ConcurrencyPolicy = "Forbid"
|
|
|
|
|
|
|
|
// ReplaceConcurrent cancels currently running job and replaces it with a new one.
|
|
|
|
ReplaceConcurrent ConcurrencyPolicy = "Replace"
|
|
|
|
)
|
|
|
|
|
2017-04-07 10:49:53 +00:00
|
|
|
// CronJobStatus represents the current state of a cron job.
|
|
|
|
type CronJobStatus struct {
|
2017-02-07 21:33:23 +00:00
|
|
|
// Active holds pointers to currently running jobs.
|
2017-04-07 10:49:53 +00:00
|
|
|
// +optional
|
2017-02-07 21:33:23 +00:00
|
|
|
Active []v1.ObjectReference `json:"active,omitempty" protobuf:"bytes,1,rep,name=active"`
|
|
|
|
|
|
|
|
// LastScheduleTime keeps information of when was the last time the job was successfully scheduled.
|
2017-04-07 10:49:53 +00:00
|
|
|
// +optional
|
2017-02-07 21:33:23 +00:00
|
|
|
LastScheduleTime *unversioned.Time `json:"lastScheduleTime,omitempty" protobuf:"bytes,4,opt,name=lastScheduleTime"`
|
|
|
|
}
|