// // Code generated by Microsoft (R) AutoRest Code Generator. // Changes may cause incorrect behavior and will be lost if the code is // regenerated. // namespace k8s.Models { using Microsoft.Rest; using Newtonsoft.Json; using System.Linq; /// /// JobSpec describes how the job execution will look like. /// public partial class V1JobSpec { /// /// Initializes a new instance of the V1JobSpec class. /// public V1JobSpec() { CustomInit(); } /// /// Initializes a new instance of the V1JobSpec class. /// /// Describes the pod that will be created when /// executing a job. More info: /// https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ /// 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. /// Specifies the number of retries before /// marking this job failed. Defaults to 6 /// 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. /// /// This field is alpha-level and is only honored by servers that /// enable the IndexedJob feature gate. More completion modes can be /// added in the future. If the Job controller observes a mode that it /// doesn't recognize, the controller skips updates for the /// Job. /// 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. More info: /// https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ /// 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 /// 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/ /// 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 /// 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. This is /// an alpha field and requires the SuspendJob feature gate to be /// enabled; otherwise this field may not be set to true. Defaults to /// false. /// 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. This /// field is alpha-level and is only honored by servers that enable the /// TTLAfterFinished feature. public V1JobSpec(V1PodTemplateSpec template, long? activeDeadlineSeconds = default(long?), int? backoffLimit = default(int?), string completionMode = default(string), int? completions = default(int?), bool? manualSelector = default(bool?), int? parallelism = default(int?), V1LabelSelector selector = default(V1LabelSelector), bool? suspend = default(bool?), int? ttlSecondsAfterFinished = default(int?)) { ActiveDeadlineSeconds = activeDeadlineSeconds; BackoffLimit = backoffLimit; CompletionMode = completionMode; Completions = completions; ManualSelector = manualSelector; Parallelism = parallelism; Selector = selector; Suspend = suspend; Template = template; TtlSecondsAfterFinished = ttlSecondsAfterFinished; CustomInit(); } /// /// An initialization method that performs custom operations like setting defaults /// partial void CustomInit(); /// /// Gets or sets 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. /// [JsonProperty(PropertyName = "activeDeadlineSeconds")] public long? ActiveDeadlineSeconds { get; set; } /// /// Gets or sets specifies the number of retries before marking this /// job failed. Defaults to 6 /// [JsonProperty(PropertyName = "backoffLimit")] public int? BackoffLimit { get; set; } /// /// Gets or sets 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. /// /// This field is alpha-level and is only honored by servers that /// enable the IndexedJob feature gate. More completion modes can be /// added in the future. If the Job controller observes a mode that it /// doesn't recognize, the controller skips updates for the Job. /// [JsonProperty(PropertyName = "completionMode")] public string CompletionMode { get; set; } /// /// Gets or sets 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. More info: /// https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ /// [JsonProperty(PropertyName = "completions")] public int? Completions { get; set; } /// /// Gets or sets 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 /// [JsonProperty(PropertyName = "manualSelector")] public bool? ManualSelector { get; set; } /// /// Gets or sets 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) &lt; .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/ /// [JsonProperty(PropertyName = "parallelism")] public int? Parallelism { get; set; } /// /// Gets or sets 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 /// [JsonProperty(PropertyName = "selector")] public V1LabelSelector Selector { get; set; } /// /// Gets or sets 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. This is /// an alpha field and requires the SuspendJob feature gate to be /// enabled; otherwise this field may not be set to true. Defaults to /// false. /// [JsonProperty(PropertyName = "suspend")] public bool? Suspend { get; set; } /// /// Gets or sets describes the pod that will be created when executing /// a job. More info: /// https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ /// [JsonProperty(PropertyName = "template")] public V1PodTemplateSpec Template { get; set; } /// /// Gets or sets 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. This field is alpha-level /// and is only honored by servers that enable the TTLAfterFinished /// feature. /// [JsonProperty(PropertyName = "ttlSecondsAfterFinished")] public int? TtlSecondsAfterFinished { get; set; } /// /// Validate the object. /// /// /// Thrown if validation fails /// public virtual void Validate() { if (Template == null) { throw new ValidationException(ValidationRules.CannotBeNull, "Template"); } if (Template != null) { Template.Validate(); } } } }