package v1 import ( "cue.dev/x/k8s.io/apimachinery/pkg/apis/meta/v1" v1_9 "cue.dev/x/k8s.io/api/core/v1" ) // CronJob represents the configuration of a single cron job. #CronJob: { // APIVersion defines the versioned schema of this representation of an object. // Servers should convert recognized schemas to the latest internal value, and // may reject unrecognized values. More info: // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources "apiVersion": "batch/v1" // Kind is a string value representing the REST resource this object represents. // Servers may infer this from the endpoint the client submits requests to. // Cannot be updated. In CamelCase. More info: // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds "kind": "CronJob" // Standard object's metadata. More info: // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata "metadata"?: v1.#ObjectMeta // Specification of the desired behavior of a cron job, including the schedule. // More info: // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status "spec"!: #CronJobSpec // Current status of a cron job. More info: // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status "status"?: #CronJobStatus } // CronJobList is a collection of cron jobs. #CronJobList: { // APIVersion defines the versioned schema of this representation of an object. // Servers should convert recognized schemas to the latest internal value, and // may reject unrecognized values. More info: // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources "apiVersion": "batch/v1" // items is the list of CronJobs. "items"!: [...#CronJob] // Kind is a string value representing the REST resource this object represents. // Servers may infer this from the endpoint the client submits requests to. // Cannot be updated. In CamelCase. More info: // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds "kind": "CronJobList" // Standard list metadata. More info: // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata "metadata"?: v1.#ListMeta } // CronJobSpec describes how the job execution will look like and when it will actually run. #CronJobSpec: { // Specifies how to treat concurrent executions of a Job. Valid values are: // // - "Allow" (default): allows CronJobs to run concurrently; - "Forbid": forbids // concurrent runs, skipping next run if previous run hasn't finished yet; - // "Replace": cancels currently running job and replaces it with a new one "concurrencyPolicy"?: string // The number of failed finished jobs to retain. Value must be non-negative integer. Defaults to 1. "failedJobsHistoryLimit"?: int32 & int // Specifies the job that will be created when executing a CronJob. "jobTemplate"!: #JobTemplateSpec // The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron. "schedule"!: string // 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. "startingDeadlineSeconds"?: int64 & int // The number of successful finished jobs to retain. Value must be non-negative // integer. Defaults to 3. "successfulJobsHistoryLimit"?: int32 & int // This flag tells the controller to suspend subsequent executions, it does not // apply to already started executions. Defaults to false. "suspend"?: bool // The time zone name for the given schedule, see // https://en.wikipedia.org/wiki/List_of_tz_database_time_zones. If not // specified, this will default to the time zone of the kube-controller-manager // process. The set of valid time zone names and the time zone offset is loaded // from the system-wide time zone database by the API server during CronJob // validation and the controller manager during execution. If no system-wide // time zone database can be found a bundled version of the database is used // instead. If the time zone name becomes invalid during the lifetime of a // CronJob or due to a change in host configuration, the controller will stop // creating new new Jobs and will create a system event with the reason // UnknownTimeZone. More information can be found in // https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/#time-zones "timeZone"?: string } // CronJobStatus represents the current state of a cron job. #CronJobStatus: { // A list of pointers to currently running jobs. "active"?: [...v1_9.#ObjectReference] // Information when was the last time the job was successfully scheduled. "lastScheduleTime"?: v1.#Time // Information when was the last time the job successfully completed. "lastSuccessfulTime"?: v1.#Time } // Job represents the configuration of a single job. #Job: { // APIVersion defines the versioned schema of this representation of an object. // Servers should convert recognized schemas to the latest internal value, and // may reject unrecognized values. More info: // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources "apiVersion": "batch/v1" // Kind is a string value representing the REST resource this object represents. // Servers may infer this from the endpoint the client submits requests to. // Cannot be updated. In CamelCase. More info: // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds "kind": "Job" // Standard object's metadata. More info: // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata "metadata"?: v1.#ObjectMeta // Specification of the desired behavior of a job. More info: // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status "spec"?: #JobSpec // Current status of a job. More info: // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status "status"?: #JobStatus } // JobCondition describes current state of a job. #JobCondition: { // Last time the condition was checked. "lastProbeTime"?: v1.#Time // Last time the condition transit from one status to another. "lastTransitionTime"?: v1.#Time // Human readable message indicating details about last transition. "message"?: string // (brief) reason for the condition's last transition. "reason"?: string // Status of the condition, one of True, False, Unknown. "status"!: string // Type of job condition, Complete or Failed. "type"!: string } // JobList is a collection of jobs. #JobList: { // APIVersion defines the versioned schema of this representation of an object. // Servers should convert recognized schemas to the latest internal value, and // may reject unrecognized values. More info: // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources "apiVersion": "batch/v1" // items is the list of Jobs. "items"!: [...#Job] // Kind is a string value representing the REST resource this object represents. // Servers may infer this from the endpoint the client submits requests to. // Cannot be updated. In CamelCase. More info: // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds "kind": "JobList" // Standard list metadata. More info: // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata "metadata"?: v1.#ListMeta } // JobSpec describes how the job execution will look like. #JobSpec: { // Specifies the duration in seconds relative to the startTime that the job may // be continuously active before the system tries to terminate it; value must // be positive integer. If a Job is suspended (at creation or through an // update), this timer will effectively be stopped and reset when the Job is // resumed again. "activeDeadlineSeconds"?: int64 & int // Specifies the number of retries before marking this job failed. Defaults to // 6, unless backoffLimitPerIndex (only Indexed Job) is specified. When // backoffLimitPerIndex is specified, backoffLimit defaults to 2147483647. "backoffLimit"?: int32 & int // Specifies the limit for the number of retries within an index before marking // this index as failed. When enabled the number of failures per index is kept // in the pod's batch.kubernetes.io/job-index-failure-count annotation. It can // only be set when Job's completionMode=Indexed, and the Pod's restart policy // is Never. The field is immutable. "backoffLimitPerIndex"?: int32 & int // completionMode specifies how Pod completions are tracked. It can be // `NonIndexed` (default) or `Indexed`. // // `NonIndexed` means that the Job is considered complete when there have been // .spec.completions successfully completed Pods. Each Pod completion is // homologous to each other. // // `Indexed` means that the Pods of a Job get an associated completion index // from 0 to (.spec.completions - 1), available in the annotation // batch.kubernetes.io/job-completion-index. The Job is considered complete // when there is one successfully completed Pod for each index. When value is // `Indexed`, .spec.completions must be specified and `.spec.parallelism` must // be less than or equal to 10^5. In addition, The Pod name takes the form // `$(job-name)-$(index)-$(random-string)`, the Pod hostname takes the form // `$(job-name)-$(index)`. // // More completion modes can be added in the future. If the Job controller // observes a mode that it doesn't recognize, which is possible during upgrades // due to version skew, the controller skips updates for the Job. "completionMode"?: string // Specifies the desired number of successfully finished pods the job should be // run with. Setting to null 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. More info: // https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ "completions"?: int32 & int // ManagedBy field indicates the controller that manages a Job. The k8s Job // controller reconciles jobs which don't have this field at all or the field // value is the reserved string `kubernetes.io/job-controller`, but skips // reconciling Jobs with a custom value for this field. The value must be a // valid domain-prefixed path (e.g. acme.io/foo) - all characters before the // first "/" must be a valid subdomain as defined by RFC 1123. All characters // trailing the first "/" must be valid HTTP Path characters as defined by RFC // 3986. The value cannot exceed 63 characters. This field is immutable. "managedBy"?: string // 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: // https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector "manualSelector"?: bool // Specifies the maximal number of failed indexes before marking the Job as // failed, when backoffLimitPerIndex is set. Once the number of failed indexes // exceeds this number the entire Job is marked as Failed and its execution is // terminated. When left as null the job continues execution of all of its // indexes and is marked with the `Complete` Job condition. It can only be // specified when backoffLimitPerIndex is set. It can be null or up to // completions. It is required and must be less than or equal to 10^4 when is // completions greater than 10^5. "maxFailedIndexes"?: int32 & int // 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. More info: // https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ "parallelism"?: int32 & int // Specifies the policy of handling failed pods. In particular, it allows to // specify the set of actions and conditions which need to be satisfied to take // the associated action. If empty, the default behaviour applies - the counter // of failed pods, represented by the jobs's .status.failed field, is // incremented and it is checked against the backoffLimit. This field cannot be // used in combination with restartPolicy=OnFailure. "podFailurePolicy"?: #PodFailurePolicy // podReplacementPolicy specifies when to create replacement Pods. Possible // values are: - TerminatingOrFailed means that we recreate pods // when they are terminating (has a metadata.deletionTimestamp) or failed. // - Failed means to wait until a previously created Pod is fully terminated (has phase // Failed or Succeeded) before creating a replacement Pod. // // When using podFailurePolicy, Failed is the the only allowed value. // TerminatingOrFailed and Failed are allowed values when podFailurePolicy is // not in use. "podReplacementPolicy"?: string // A label query over pods that should match the pod count. Normally, the system // sets this field for you. More info: // https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors "selector"?: v1.#LabelSelector // successPolicy specifies the policy when the Job can be declared as succeeded. // If empty, the default behavior applies - the Job is declared as succeeded // only when the number of succeeded pods equals to the completions. When the // field is specified, it must be immutable and works only for the Indexed // Jobs. Once the Job meets the SuccessPolicy, the lingering pods are // terminated. "successPolicy"?: #SuccessPolicy // suspend specifies whether the Job controller should create Pods or not. If a // Job is created with suspend set to true, no Pods are created by the Job // controller. If a Job is suspended after creation (i.e. the flag goes from // false to true), the Job controller will delete all active Pods associated // with this Job. Users must design their workload to gracefully handle this. // Suspending a Job will reset the StartTime field of the Job, effectively // resetting the ActiveDeadlineSeconds timer too. Defaults to false. "suspend"?: bool // Describes the pod that will be created when executing a job. The only allowed // template.spec.restartPolicy values are "Never" or "OnFailure". More info: // https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ "template"!: v1_9.#PodTemplateSpec // ttlSecondsAfterFinished limits the lifetime of a Job that has finished // execution (either Complete or Failed). If this field is set, // ttlSecondsAfterFinished after the Job finishes, it is eligible to be // automatically deleted. When the Job is being deleted, its lifecycle // guarantees (e.g. finalizers) will be honored. If this field is unset, the // Job won't be automatically deleted. If this field is set to zero, the Job // becomes eligible to be deleted immediately after it finishes. "ttlSecondsAfterFinished"?: int32 & int } // JobStatus represents the current state of a Job. #JobStatus: { // The number of pending and running pods which are not terminating (without a // deletionTimestamp). The value is zero for finished jobs. "active"?: int32 & int // completedIndexes holds the completed indexes when .spec.completionMode = // "Indexed" in a text format. The indexes are represented as decimal integers // separated by commas. The numbers are listed in increasing order. Three or // more consecutive numbers are compressed and represented by the first and // last element of the series, separated by a hyphen. For example, if the // completed indexes are 1, 3, 4, 5 and 7, they are represented as "1,3-5,7". "completedIndexes"?: string // 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. The completion time is set when the job finishes // successfully, and only then. The value cannot be updated or removed. The // value indicates the same or later point in time as the startTime field. "completionTime"?: v1.#Time // The latest available observations of an object's current state. When a Job // fails, one of the conditions will have type "Failed" and status true. When a // Job is suspended, one of the conditions will have type "Suspended" and // status true; when the Job is resumed, the status of this condition will // become false. When a Job is completed, one of the conditions will have type // "Complete" and status true. // // A job is considered finished when it is in a terminal condition, either // "Complete" or "Failed". A Job cannot have both the "Complete" and "Failed" // conditions. Additionally, it cannot be in the "Complete" and "FailureTarget" // conditions. The "Complete", "Failed" and "FailureTarget" conditions cannot // be disabled. // // More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ "conditions"?: [...#JobCondition] // The number of pods which reached phase Failed. The value increases monotonically. "failed"?: int32 & int // FailedIndexes holds the failed indexes when spec.backoffLimitPerIndex is set. // The indexes are represented in the text format analogous as for the // `completedIndexes` field, ie. they are kept as decimal integers separated by // commas. The numbers are listed in increasing order. Three or more // consecutive numbers are compressed and represented by the first and last // element of the series, separated by a hyphen. For example, if the failed // indexes are 1, 3, 4, 5 and 7, they are represented as "1,3-5,7". The set of // failed indexes cannot overlap with the set of completed indexes. "failedIndexes"?: string // The number of active pods which have a Ready condition and are not // terminating (without a deletionTimestamp). "ready"?: int32 & int // Represents time when the job controller started processing a job. When a Job // is created in the suspended state, this field is not set until the first // time it is resumed. This field is reset every time a Job is resumed from // suspension. It is represented in RFC3339 form and is in UTC. // // Once set, the field can only be removed when the job is suspended. The field // cannot be modified while the job is unsuspended or finished. "startTime"?: v1.#Time // The number of pods which reached phase Succeeded. The value increases // monotonically for a given spec. However, it may decrease in reaction to // scale down of elastic indexed jobs. "succeeded"?: int32 & int // The number of pods which are terminating (in phase Pending or Running and // have a deletionTimestamp). // // This field is beta-level. The job controller populates the field when the // feature gate JobPodReplacementPolicy is enabled (enabled by default). "terminating"?: int32 & int // uncountedTerminatedPods holds the UIDs of Pods that have terminated but the // job controller hasn't yet accounted for in the status counters. // // The job controller creates pods with a finalizer. When a pod terminates // (succeeded or failed), the controller does three steps to account for it in // the job status: // // 1. Add the pod UID to the arrays in this field. 2. Remove the pod finalizer. // 3. Remove the pod UID from the arrays while increasing the corresponding // counter. // // Old jobs might not be tracked using this field, in which case the field // remains null. The structure is empty for finished jobs. "uncountedTerminatedPods"?: #UncountedTerminatedPods } // JobTemplateSpec describes the data a Job should have when created from a template #JobTemplateSpec: { // Standard object's metadata of the jobs created from this template. More info: // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata "metadata"?: v1.#ObjectMeta // Specification of the desired behavior of the job. More info: // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status "spec"?: #JobSpec } // PodFailurePolicy describes how failed pods influence the backoffLimit. #PodFailurePolicy: { // A list of pod failure policy rules. The rules are evaluated in order. Once a // rule matches a Pod failure, the remaining of the rules are ignored. When no // rule matches the Pod failure, the default handling applies - the counter of // pod failures is incremented and it is checked against the backoffLimit. At // most 20 elements are allowed. "rules"!: [...#PodFailurePolicyRule] } // PodFailurePolicyOnExitCodesRequirement describes the requirement for handling // a failed pod based on its container exit codes. In particular, it lookups // the .state.terminated.exitCode for each app container and init container // status, represented by the .status.containerStatuses and // .status.initContainerStatuses fields in the Pod status, respectively. // Containers completed with success (exit code 0) are excluded from the // requirement check. #PodFailurePolicyOnExitCodesRequirement: { // Restricts the check for exit codes to the container with the specified name. // When null, the rule applies to all containers. When specified, it should // match one the container or initContainer names in the pod template. "containerName"?: string // Represents the relationship between the container exit code(s) and the // specified values. Containers completed with success (exit code 0) are // excluded from the requirement check. Possible values are: // // - In: the requirement is satisfied if at least one container exit code // (might be multiple if there are multiple containers not restricted // by the 'containerName' field) is in the set of specified values. // - NotIn: the requirement is satisfied if at least one container exit code // (might be multiple if there are multiple containers not restricted // by the 'containerName' field) is not in the set of specified values. // Additional values are considered to be added in the future. Clients should // react to an unknown operator by assuming the requirement is not satisfied. "operator"!: string // Specifies the set of values. Each returned container exit code (might be // multiple in case of multiple containers) is checked against this set of // values with respect to the operator. The list of values must be ordered and // must not contain duplicates. Value '0' cannot be used for the In operator. // At least one element is required. At most 255 elements are allowed. "values"!: [...int32 & int] } // PodFailurePolicyOnPodConditionsPattern describes a pattern for matching an // actual pod condition type. #PodFailurePolicyOnPodConditionsPattern: { // Specifies the required Pod condition status. To match a pod condition it is // required that the specified status equals the pod condition status. Defaults // to True. "status"?: string // Specifies the required Pod condition type. To match a pod condition it is // required that specified type equals the pod condition type. "type"!: string } // PodFailurePolicyRule describes how a pod failure is handled when the // requirements are met. One of onExitCodes and onPodConditions, but not both, // can be used in each rule. #PodFailurePolicyRule: { // Specifies the action taken on a pod failure when the requirements are // satisfied. Possible values are: // // - FailJob: indicates that the pod's job is marked as Failed and all // running pods are terminated. // - FailIndex: indicates that the pod's index is marked as Failed and will // not be restarted. // - Ignore: indicates that the counter towards the .backoffLimit is not // incremented and a replacement pod is created. // - Count: indicates that the pod is handled in the default way - the // counter towards the .backoffLimit is incremented. // Additional values are considered to be added in the future. Clients should // react to an unknown action by skipping the rule. "action"!: string // Represents the requirement on the container exit codes. "onExitCodes"?: #PodFailurePolicyOnExitCodesRequirement // Represents the requirement on the pod conditions. The requirement is // represented as a list of pod condition patterns. The requirement is // satisfied if at least one pattern matches an actual pod condition. At most // 20 elements are allowed. "onPodConditions"?: [...#PodFailurePolicyOnPodConditionsPattern] } // SuccessPolicy describes when a Job can be declared as succeeded based on the // success of some indexes. #SuccessPolicy: { // rules represents the list of alternative rules for the declaring the Jobs as // successful before `.status.succeeded >= .spec.completions`. Once any of the // rules are met, the "SuccessCriteriaMet" condition is added, and the // lingering pods are removed. The terminal state for such a Job has the // "Complete" condition. Additionally, these rules are evaluated in order; Once // the Job meets one of the rules, other rules are ignored. At most 20 elements // are allowed. "rules"!: [...#SuccessPolicyRule] } // SuccessPolicyRule describes rule for declaring a Job as succeeded. Each rule // must have at least one of the "succeededIndexes" or "succeededCount" // specified. #SuccessPolicyRule: { // succeededCount specifies the minimal required size of the actual set of the // succeeded indexes for the Job. When succeededCount is used along with // succeededIndexes, the check is constrained only to the set of indexes // specified by succeededIndexes. For example, given that succeededIndexes is // "1-4", succeededCount is "3", and completed indexes are "1", "3", and "5", // the Job isn't declared as succeeded because only "1" and "3" indexes are // considered in that rules. When this field is null, this doesn't default to // any value and is never evaluated at any time. When specified it needs to be // a positive integer. "succeededCount"?: int32 & int // succeededIndexes specifies the set of indexes which need to be contained in // the actual set of the succeeded indexes for the Job. The list of indexes // must be within 0 to ".spec.completions-1" and must not contain duplicates. // At least one element is required. The indexes are represented as intervals // separated by commas. The intervals can be a decimal integer or a pair of // decimal integers separated by a hyphen. The number are listed in represented // by the first and last element of the series, separated by a hyphen. For // example, if the completed indexes are 1, 3, 4, 5 and 7, they are represented // as "1,3-5,7". When this field is null, this field doesn't default to any // value and is never evaluated at any time. "succeededIndexes"?: string } // UncountedTerminatedPods holds UIDs of Pods that have terminated but haven't // been accounted in Job status counters. #UncountedTerminatedPods: { // failed holds UIDs of failed Pods. "failed"?: [...string] // succeeded holds UIDs of succeeded Pods. "succeeded"?: [...string] }