···11+---
22+apiVersion: apiextensions.k8s.io/v1
33+kind: CustomResourceDefinition
44+metadata:
55+ annotations:
66+ controller-gen.kubebuilder.io/version: v0.18.0
77+ name: spindlesets.loom.j5t.io
88+spec:
99+ group: loom.j5t.io
1010+ names:
1111+ kind: SpindleSet
1212+ listKind: SpindleSetList
1313+ plural: spindlesets
1414+ singular: spindleset
1515+ scope: Namespaced
1616+ versions:
1717+ - additionalPrinterColumns:
1818+ - jsonPath: .spec.pipelineRun.pipelineID
1919+ name: Pipeline ID
2020+ type: string
2121+ - jsonPath: .status.phase
2222+ name: Phase
2323+ type: string
2424+ - jsonPath: .status.runningJobs
2525+ name: Running
2626+ type: integer
2727+ - jsonPath: .status.completedJobs
2828+ name: Completed
2929+ type: integer
3030+ - jsonPath: .status.failedJobs
3131+ name: Failed
3232+ type: integer
3333+ - jsonPath: .metadata.creationTimestamp
3434+ name: Age
3535+ type: date
3636+ name: v1alpha1
3737+ schema:
3838+ openAPIV3Schema:
3939+ description: |-
4040+ SpindleSet is the Schema for the spindlesets API.
4141+ SpindleSet is an internal resource that represents a single pipeline execution.
4242+ It groups Jobs for a pipeline run and provides automatic cleanup via owner references.
4343+ properties:
4444+ apiVersion:
4545+ description: |-
4646+ APIVersion defines the versioned schema of this representation of an object.
4747+ Servers should convert recognized schemas to the latest internal value, and
4848+ may reject unrecognized values.
4949+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
5050+ type: string
5151+ kind:
5252+ description: |-
5353+ Kind is a string value representing the REST resource this object represents.
5454+ Servers may infer this from the endpoint the client submits requests to.
5555+ Cannot be updated.
5656+ In CamelCase.
5757+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
5858+ type: string
5959+ metadata:
6060+ type: object
6161+ spec:
6262+ description: |-
6363+ SpindleSetSpec defines the desired state of SpindleSet.
6464+ SpindleSet is an internal resource created by the Loom engine to manage pipeline executions.
6565+ Users do not create SpindleSet resources directly.
6666+ properties:
6767+ pipelineRun:
6868+ description: |-
6969+ PipelineRun contains pipeline-specific information for this pipeline execution.
7070+ This SpindleSet is ephemeral and represents a single pipeline run.
7171+ properties:
7272+ cloneCommands:
7373+ description: |-
7474+ CloneCommands are the git commands to run in the clone init container.
7575+ Generated by tangled.org/core/spindle/models.BuildCloneStep().
7676+ These commands are self-contained (include repo URL and commit SHA).
7777+ items:
7878+ type: string
7979+ type: array
8080+ pipelineID:
8181+ description: PipelineID is the unique identifier for this pipeline
8282+ run from the knot.
8383+ type: string
8484+ secrets:
8585+ description: |-
8686+ Secrets contains the repository secrets to inject into workflow Jobs.
8787+ Retrieved from the secrets vault and stored here for the controller to consume.
8888+ items:
8989+ description: SecretData represents a single secret key-value
9090+ pair for injection into Jobs.
9191+ properties:
9292+ key:
9393+ description: Key is the environment variable name (e.g.,
9494+ "GITHUB_TOKEN").
9595+ pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
9696+ type: string
9797+ value:
9898+ description: |-
9999+ Value is the secret value in plaintext.
100100+ This field should only be populated transiently during SpindleSet creation
101101+ and consumed immediately by the controller to create a Kubernetes Secret.
102102+ type: string
103103+ required:
104104+ - key
105105+ - value
106106+ type: object
107107+ type: array
108108+ skipClone:
109109+ description: SkipClone indicates whether to skip the clone init
110110+ container entirely.
111111+ type: boolean
112112+ workflows:
113113+ description: Workflows is the list of workflows to execute in
114114+ this pipeline.
115115+ items:
116116+ description: |-
117117+ WorkflowSpec defines a workflow to execute as part of a pipeline.
118118+ This is the canonical workflow definition that matches the .tangled/workflows/*.yaml format.
119119+ properties:
120120+ architecture:
121121+ description: Architecture is the target architecture for
122122+ this workflow (e.g., "amd64", "arm64").
123123+ enum:
124124+ - amd64
125125+ - arm64
126126+ type: string
127127+ dependencies:
128128+ description: Dependencies specifies external dependencies
129129+ for the workflow.
130130+ properties:
131131+ nixpkgs:
132132+ description: Nixpkgs is a list of Nix packages to make
133133+ available.
134134+ items:
135135+ type: string
136136+ type: array
137137+ type: object
138138+ environment:
139139+ additionalProperties:
140140+ type: string
141141+ description: Environment contains workflow-level environment
142142+ variables.
143143+ type: object
144144+ image:
145145+ description: Image is the container image to use for executing
146146+ the workflow steps.
147147+ type: string
148148+ name:
149149+ description: Name is the workflow filename (e.g., "workflow-amd64.yaml").
150150+ type: string
151151+ steps:
152152+ description: Steps is the ordered list of steps to execute
153153+ in this workflow.
154154+ items:
155155+ description: WorkflowStep defines a single step in a workflow.
156156+ properties:
157157+ command:
158158+ description: Command is the shell command to execute.
159159+ type: string
160160+ environment:
161161+ additionalProperties:
162162+ type: string
163163+ description: Environment contains step-specific environment
164164+ variables.
165165+ type: object
166166+ name:
167167+ description: Name is the human-readable name of the
168168+ step.
169169+ type: string
170170+ required:
171171+ - command
172172+ - name
173173+ type: object
174174+ type: array
175175+ when:
176176+ description: When defines conditional execution rules for
177177+ this workflow.
178178+ items:
179179+ description: WorkflowWhen defines conditional execution
180180+ rules.
181181+ properties:
182182+ branch:
183183+ description: Branch specifies which branches trigger
184184+ this workflow.
185185+ items:
186186+ type: string
187187+ type: array
188188+ event:
189189+ description: Event specifies which events trigger
190190+ this workflow (e.g., "push", "pull_request").
191191+ items:
192192+ type: string
193193+ type: array
194194+ type: object
195195+ type: array
196196+ required:
197197+ - architecture
198198+ - image
199199+ - name
200200+ type: object
201201+ minItems: 1
202202+ type: array
203203+ required:
204204+ - pipelineID
205205+ - workflows
206206+ type: object
207207+ template:
208208+ description: |-
209209+ Template is the pod template configuration for jobs in this SpindleSet.
210210+ Set internally by the engine from ConfigMap configuration.
211211+ properties:
212212+ affinity:
213213+ description: Affinity defines scheduling constraints for spindle
214214+ job pods.
215215+ properties:
216216+ nodeAffinity:
217217+ description: Describes node affinity scheduling rules for
218218+ the pod.
219219+ properties:
220220+ preferredDuringSchedulingIgnoredDuringExecution:
221221+ description: |-
222222+ The scheduler will prefer to schedule pods to nodes that satisfy
223223+ the affinity expressions specified by this field, but it may choose
224224+ a node that violates one or more of the expressions. The node that is
225225+ most preferred is the one with the greatest sum of weights, i.e.
226226+ for each node that meets all of the scheduling requirements (resource
227227+ request, requiredDuringScheduling affinity expressions, etc.),
228228+ compute a sum by iterating through the elements of this field and adding
229229+ "weight" to the sum if the node matches the corresponding matchExpressions; the
230230+ node(s) with the highest sum are the most preferred.
231231+ items:
232232+ description: |-
233233+ An empty preferred scheduling term matches all objects with implicit weight 0
234234+ (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
235235+ properties:
236236+ preference:
237237+ description: A node selector term, associated with
238238+ the corresponding weight.
239239+ properties:
240240+ matchExpressions:
241241+ description: A list of node selector requirements
242242+ by node's labels.
243243+ items:
244244+ description: |-
245245+ A node selector requirement is a selector that contains values, a key, and an operator
246246+ that relates the key and values.
247247+ properties:
248248+ key:
249249+ description: The label key that the selector
250250+ applies to.
251251+ type: string
252252+ operator:
253253+ description: |-
254254+ Represents a key's relationship to a set of values.
255255+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
256256+ type: string
257257+ values:
258258+ description: |-
259259+ An array of string values. If the operator is In or NotIn,
260260+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
261261+ the values array must be empty. If the operator is Gt or Lt, the values
262262+ array must have a single element, which will be interpreted as an integer.
263263+ This array is replaced during a strategic merge patch.
264264+ items:
265265+ type: string
266266+ type: array
267267+ x-kubernetes-list-type: atomic
268268+ required:
269269+ - key
270270+ - operator
271271+ type: object
272272+ type: array
273273+ x-kubernetes-list-type: atomic
274274+ matchFields:
275275+ description: A list of node selector requirements
276276+ by node's fields.
277277+ items:
278278+ description: |-
279279+ A node selector requirement is a selector that contains values, a key, and an operator
280280+ that relates the key and values.
281281+ properties:
282282+ key:
283283+ description: The label key that the selector
284284+ applies to.
285285+ type: string
286286+ operator:
287287+ description: |-
288288+ Represents a key's relationship to a set of values.
289289+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
290290+ type: string
291291+ values:
292292+ description: |-
293293+ An array of string values. If the operator is In or NotIn,
294294+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
295295+ the values array must be empty. If the operator is Gt or Lt, the values
296296+ array must have a single element, which will be interpreted as an integer.
297297+ This array is replaced during a strategic merge patch.
298298+ items:
299299+ type: string
300300+ type: array
301301+ x-kubernetes-list-type: atomic
302302+ required:
303303+ - key
304304+ - operator
305305+ type: object
306306+ type: array
307307+ x-kubernetes-list-type: atomic
308308+ type: object
309309+ x-kubernetes-map-type: atomic
310310+ weight:
311311+ description: Weight associated with matching the
312312+ corresponding nodeSelectorTerm, in the range 1-100.
313313+ format: int32
314314+ type: integer
315315+ required:
316316+ - preference
317317+ - weight
318318+ type: object
319319+ type: array
320320+ x-kubernetes-list-type: atomic
321321+ requiredDuringSchedulingIgnoredDuringExecution:
322322+ description: |-
323323+ If the affinity requirements specified by this field are not met at
324324+ scheduling time, the pod will not be scheduled onto the node.
325325+ If the affinity requirements specified by this field cease to be met
326326+ at some point during pod execution (e.g. due to an update), the system
327327+ may or may not try to eventually evict the pod from its node.
328328+ properties:
329329+ nodeSelectorTerms:
330330+ description: Required. A list of node selector terms.
331331+ The terms are ORed.
332332+ items:
333333+ description: |-
334334+ A null or empty node selector term matches no objects. The requirements of
335335+ them are ANDed.
336336+ The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
337337+ properties:
338338+ matchExpressions:
339339+ description: A list of node selector requirements
340340+ by node's labels.
341341+ items:
342342+ description: |-
343343+ A node selector requirement is a selector that contains values, a key, and an operator
344344+ that relates the key and values.
345345+ properties:
346346+ key:
347347+ description: The label key that the selector
348348+ applies to.
349349+ type: string
350350+ operator:
351351+ description: |-
352352+ Represents a key's relationship to a set of values.
353353+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
354354+ type: string
355355+ values:
356356+ description: |-
357357+ An array of string values. If the operator is In or NotIn,
358358+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
359359+ the values array must be empty. If the operator is Gt or Lt, the values
360360+ array must have a single element, which will be interpreted as an integer.
361361+ This array is replaced during a strategic merge patch.
362362+ items:
363363+ type: string
364364+ type: array
365365+ x-kubernetes-list-type: atomic
366366+ required:
367367+ - key
368368+ - operator
369369+ type: object
370370+ type: array
371371+ x-kubernetes-list-type: atomic
372372+ matchFields:
373373+ description: A list of node selector requirements
374374+ by node's fields.
375375+ items:
376376+ description: |-
377377+ A node selector requirement is a selector that contains values, a key, and an operator
378378+ that relates the key and values.
379379+ properties:
380380+ key:
381381+ description: The label key that the selector
382382+ applies to.
383383+ type: string
384384+ operator:
385385+ description: |-
386386+ Represents a key's relationship to a set of values.
387387+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
388388+ type: string
389389+ values:
390390+ description: |-
391391+ An array of string values. If the operator is In or NotIn,
392392+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
393393+ the values array must be empty. If the operator is Gt or Lt, the values
394394+ array must have a single element, which will be interpreted as an integer.
395395+ This array is replaced during a strategic merge patch.
396396+ items:
397397+ type: string
398398+ type: array
399399+ x-kubernetes-list-type: atomic
400400+ required:
401401+ - key
402402+ - operator
403403+ type: object
404404+ type: array
405405+ x-kubernetes-list-type: atomic
406406+ type: object
407407+ x-kubernetes-map-type: atomic
408408+ type: array
409409+ x-kubernetes-list-type: atomic
410410+ required:
411411+ - nodeSelectorTerms
412412+ type: object
413413+ x-kubernetes-map-type: atomic
414414+ type: object
415415+ podAffinity:
416416+ description: Describes pod affinity scheduling rules (e.g.
417417+ co-locate this pod in the same node, zone, etc. as some
418418+ other pod(s)).
419419+ properties:
420420+ preferredDuringSchedulingIgnoredDuringExecution:
421421+ description: |-
422422+ The scheduler will prefer to schedule pods to nodes that satisfy
423423+ the affinity expressions specified by this field, but it may choose
424424+ a node that violates one or more of the expressions. The node that is
425425+ most preferred is the one with the greatest sum of weights, i.e.
426426+ for each node that meets all of the scheduling requirements (resource
427427+ request, requiredDuringScheduling affinity expressions, etc.),
428428+ compute a sum by iterating through the elements of this field and adding
429429+ "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
430430+ node(s) with the highest sum are the most preferred.
431431+ items:
432432+ description: The weights of all of the matched WeightedPodAffinityTerm
433433+ fields are added per-node to find the most preferred
434434+ node(s)
435435+ properties:
436436+ podAffinityTerm:
437437+ description: Required. A pod affinity term, associated
438438+ with the corresponding weight.
439439+ properties:
440440+ labelSelector:
441441+ description: |-
442442+ A label query over a set of resources, in this case pods.
443443+ If it's null, this PodAffinityTerm matches with no Pods.
444444+ properties:
445445+ matchExpressions:
446446+ description: matchExpressions is a list
447447+ of label selector requirements. The requirements
448448+ are ANDed.
449449+ items:
450450+ description: |-
451451+ A label selector requirement is a selector that contains values, a key, and an operator that
452452+ relates the key and values.
453453+ properties:
454454+ key:
455455+ description: key is the label key
456456+ that the selector applies to.
457457+ type: string
458458+ operator:
459459+ description: |-
460460+ operator represents a key's relationship to a set of values.
461461+ Valid operators are In, NotIn, Exists and DoesNotExist.
462462+ type: string
463463+ values:
464464+ description: |-
465465+ values is an array of string values. If the operator is In or NotIn,
466466+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
467467+ the values array must be empty. This array is replaced during a strategic
468468+ merge patch.
469469+ items:
470470+ type: string
471471+ type: array
472472+ x-kubernetes-list-type: atomic
473473+ required:
474474+ - key
475475+ - operator
476476+ type: object
477477+ type: array
478478+ x-kubernetes-list-type: atomic
479479+ matchLabels:
480480+ additionalProperties:
481481+ type: string
482482+ description: |-
483483+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
484484+ map is equivalent to an element of matchExpressions, whose key field is "key", the
485485+ operator is "In", and the values array contains only "value". The requirements are ANDed.
486486+ type: object
487487+ type: object
488488+ x-kubernetes-map-type: atomic
489489+ matchLabelKeys:
490490+ description: |-
491491+ MatchLabelKeys is a set of pod label keys to select which pods will
492492+ be taken into consideration. The keys are used to lookup values from the
493493+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
494494+ to select the group of existing pods which pods will be taken into consideration
495495+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
496496+ pod labels will be ignored. The default value is empty.
497497+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
498498+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
499499+ items:
500500+ type: string
501501+ type: array
502502+ x-kubernetes-list-type: atomic
503503+ mismatchLabelKeys:
504504+ description: |-
505505+ MismatchLabelKeys is a set of pod label keys to select which pods will
506506+ be taken into consideration. The keys are used to lookup values from the
507507+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
508508+ to select the group of existing pods which pods will be taken into consideration
509509+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
510510+ pod labels will be ignored. The default value is empty.
511511+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
512512+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
513513+ items:
514514+ type: string
515515+ type: array
516516+ x-kubernetes-list-type: atomic
517517+ namespaceSelector:
518518+ description: |-
519519+ A label query over the set of namespaces that the term applies to.
520520+ The term is applied to the union of the namespaces selected by this field
521521+ and the ones listed in the namespaces field.
522522+ null selector and null or empty namespaces list means "this pod's namespace".
523523+ An empty selector ({}) matches all namespaces.
524524+ properties:
525525+ matchExpressions:
526526+ description: matchExpressions is a list
527527+ of label selector requirements. The requirements
528528+ are ANDed.
529529+ items:
530530+ description: |-
531531+ A label selector requirement is a selector that contains values, a key, and an operator that
532532+ relates the key and values.
533533+ properties:
534534+ key:
535535+ description: key is the label key
536536+ that the selector applies to.
537537+ type: string
538538+ operator:
539539+ description: |-
540540+ operator represents a key's relationship to a set of values.
541541+ Valid operators are In, NotIn, Exists and DoesNotExist.
542542+ type: string
543543+ values:
544544+ description: |-
545545+ values is an array of string values. If the operator is In or NotIn,
546546+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
547547+ the values array must be empty. This array is replaced during a strategic
548548+ merge patch.
549549+ items:
550550+ type: string
551551+ type: array
552552+ x-kubernetes-list-type: atomic
553553+ required:
554554+ - key
555555+ - operator
556556+ type: object
557557+ type: array
558558+ x-kubernetes-list-type: atomic
559559+ matchLabels:
560560+ additionalProperties:
561561+ type: string
562562+ description: |-
563563+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
564564+ map is equivalent to an element of matchExpressions, whose key field is "key", the
565565+ operator is "In", and the values array contains only "value". The requirements are ANDed.
566566+ type: object
567567+ type: object
568568+ x-kubernetes-map-type: atomic
569569+ namespaces:
570570+ description: |-
571571+ namespaces specifies a static list of namespace names that the term applies to.
572572+ The term is applied to the union of the namespaces listed in this field
573573+ and the ones selected by namespaceSelector.
574574+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
575575+ items:
576576+ type: string
577577+ type: array
578578+ x-kubernetes-list-type: atomic
579579+ topologyKey:
580580+ description: |-
581581+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
582582+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
583583+ whose value of the label with key topologyKey matches that of any node on which any of the
584584+ selected pods is running.
585585+ Empty topologyKey is not allowed.
586586+ type: string
587587+ required:
588588+ - topologyKey
589589+ type: object
590590+ weight:
591591+ description: |-
592592+ weight associated with matching the corresponding podAffinityTerm,
593593+ in the range 1-100.
594594+ format: int32
595595+ type: integer
596596+ required:
597597+ - podAffinityTerm
598598+ - weight
599599+ type: object
600600+ type: array
601601+ x-kubernetes-list-type: atomic
602602+ requiredDuringSchedulingIgnoredDuringExecution:
603603+ description: |-
604604+ If the affinity requirements specified by this field are not met at
605605+ scheduling time, the pod will not be scheduled onto the node.
606606+ If the affinity requirements specified by this field cease to be met
607607+ at some point during pod execution (e.g. due to a pod label update), the
608608+ system may or may not try to eventually evict the pod from its node.
609609+ When there are multiple elements, the lists of nodes corresponding to each
610610+ podAffinityTerm are intersected, i.e. all terms must be satisfied.
611611+ items:
612612+ description: |-
613613+ Defines a set of pods (namely those matching the labelSelector
614614+ relative to the given namespace(s)) that this pod should be
615615+ co-located (affinity) or not co-located (anti-affinity) with,
616616+ where co-located is defined as running on a node whose value of
617617+ the label with key <topologyKey> matches that of any node on which
618618+ a pod of the set of pods is running
619619+ properties:
620620+ labelSelector:
621621+ description: |-
622622+ A label query over a set of resources, in this case pods.
623623+ If it's null, this PodAffinityTerm matches with no Pods.
624624+ properties:
625625+ matchExpressions:
626626+ description: matchExpressions is a list of label
627627+ selector requirements. The requirements are
628628+ ANDed.
629629+ items:
630630+ description: |-
631631+ A label selector requirement is a selector that contains values, a key, and an operator that
632632+ relates the key and values.
633633+ properties:
634634+ key:
635635+ description: key is the label key that
636636+ the selector applies to.
637637+ type: string
638638+ operator:
639639+ description: |-
640640+ operator represents a key's relationship to a set of values.
641641+ Valid operators are In, NotIn, Exists and DoesNotExist.
642642+ type: string
643643+ values:
644644+ description: |-
645645+ values is an array of string values. If the operator is In or NotIn,
646646+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
647647+ the values array must be empty. This array is replaced during a strategic
648648+ merge patch.
649649+ items:
650650+ type: string
651651+ type: array
652652+ x-kubernetes-list-type: atomic
653653+ required:
654654+ - key
655655+ - operator
656656+ type: object
657657+ type: array
658658+ x-kubernetes-list-type: atomic
659659+ matchLabels:
660660+ additionalProperties:
661661+ type: string
662662+ description: |-
663663+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
664664+ map is equivalent to an element of matchExpressions, whose key field is "key", the
665665+ operator is "In", and the values array contains only "value". The requirements are ANDed.
666666+ type: object
667667+ type: object
668668+ x-kubernetes-map-type: atomic
669669+ matchLabelKeys:
670670+ description: |-
671671+ MatchLabelKeys is a set of pod label keys to select which pods will
672672+ be taken into consideration. The keys are used to lookup values from the
673673+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
674674+ to select the group of existing pods which pods will be taken into consideration
675675+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
676676+ pod labels will be ignored. The default value is empty.
677677+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
678678+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
679679+ items:
680680+ type: string
681681+ type: array
682682+ x-kubernetes-list-type: atomic
683683+ mismatchLabelKeys:
684684+ description: |-
685685+ MismatchLabelKeys is a set of pod label keys to select which pods will
686686+ be taken into consideration. The keys are used to lookup values from the
687687+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
688688+ to select the group of existing pods which pods will be taken into consideration
689689+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
690690+ pod labels will be ignored. The default value is empty.
691691+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
692692+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
693693+ items:
694694+ type: string
695695+ type: array
696696+ x-kubernetes-list-type: atomic
697697+ namespaceSelector:
698698+ description: |-
699699+ A label query over the set of namespaces that the term applies to.
700700+ The term is applied to the union of the namespaces selected by this field
701701+ and the ones listed in the namespaces field.
702702+ null selector and null or empty namespaces list means "this pod's namespace".
703703+ An empty selector ({}) matches all namespaces.
704704+ properties:
705705+ matchExpressions:
706706+ description: matchExpressions is a list of label
707707+ selector requirements. The requirements are
708708+ ANDed.
709709+ items:
710710+ description: |-
711711+ A label selector requirement is a selector that contains values, a key, and an operator that
712712+ relates the key and values.
713713+ properties:
714714+ key:
715715+ description: key is the label key that
716716+ the selector applies to.
717717+ type: string
718718+ operator:
719719+ description: |-
720720+ operator represents a key's relationship to a set of values.
721721+ Valid operators are In, NotIn, Exists and DoesNotExist.
722722+ type: string
723723+ values:
724724+ description: |-
725725+ values is an array of string values. If the operator is In or NotIn,
726726+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
727727+ the values array must be empty. This array is replaced during a strategic
728728+ merge patch.
729729+ items:
730730+ type: string
731731+ type: array
732732+ x-kubernetes-list-type: atomic
733733+ required:
734734+ - key
735735+ - operator
736736+ type: object
737737+ type: array
738738+ x-kubernetes-list-type: atomic
739739+ matchLabels:
740740+ additionalProperties:
741741+ type: string
742742+ description: |-
743743+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
744744+ map is equivalent to an element of matchExpressions, whose key field is "key", the
745745+ operator is "In", and the values array contains only "value". The requirements are ANDed.
746746+ type: object
747747+ type: object
748748+ x-kubernetes-map-type: atomic
749749+ namespaces:
750750+ description: |-
751751+ namespaces specifies a static list of namespace names that the term applies to.
752752+ The term is applied to the union of the namespaces listed in this field
753753+ and the ones selected by namespaceSelector.
754754+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
755755+ items:
756756+ type: string
757757+ type: array
758758+ x-kubernetes-list-type: atomic
759759+ topologyKey:
760760+ description: |-
761761+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
762762+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
763763+ whose value of the label with key topologyKey matches that of any node on which any of the
764764+ selected pods is running.
765765+ Empty topologyKey is not allowed.
766766+ type: string
767767+ required:
768768+ - topologyKey
769769+ type: object
770770+ type: array
771771+ x-kubernetes-list-type: atomic
772772+ type: object
773773+ podAntiAffinity:
774774+ description: Describes pod anti-affinity scheduling rules
775775+ (e.g. avoid putting this pod in the same node, zone, etc.
776776+ as some other pod(s)).
777777+ properties:
778778+ preferredDuringSchedulingIgnoredDuringExecution:
779779+ description: |-
780780+ The scheduler will prefer to schedule pods to nodes that satisfy
781781+ the anti-affinity expressions specified by this field, but it may choose
782782+ a node that violates one or more of the expressions. The node that is
783783+ most preferred is the one with the greatest sum of weights, i.e.
784784+ for each node that meets all of the scheduling requirements (resource
785785+ request, requiredDuringScheduling anti-affinity expressions, etc.),
786786+ compute a sum by iterating through the elements of this field and subtracting
787787+ "weight" from the sum if the node has pods which matches the corresponding podAffinityTerm; the
788788+ node(s) with the highest sum are the most preferred.
789789+ items:
790790+ description: The weights of all of the matched WeightedPodAffinityTerm
791791+ fields are added per-node to find the most preferred
792792+ node(s)
793793+ properties:
794794+ podAffinityTerm:
795795+ description: Required. A pod affinity term, associated
796796+ with the corresponding weight.
797797+ properties:
798798+ labelSelector:
799799+ description: |-
800800+ A label query over a set of resources, in this case pods.
801801+ If it's null, this PodAffinityTerm matches with no Pods.
802802+ properties:
803803+ matchExpressions:
804804+ description: matchExpressions is a list
805805+ of label selector requirements. The requirements
806806+ are ANDed.
807807+ items:
808808+ description: |-
809809+ A label selector requirement is a selector that contains values, a key, and an operator that
810810+ relates the key and values.
811811+ properties:
812812+ key:
813813+ description: key is the label key
814814+ that the selector applies to.
815815+ type: string
816816+ operator:
817817+ description: |-
818818+ operator represents a key's relationship to a set of values.
819819+ Valid operators are In, NotIn, Exists and DoesNotExist.
820820+ type: string
821821+ values:
822822+ description: |-
823823+ values is an array of string values. If the operator is In or NotIn,
824824+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
825825+ the values array must be empty. This array is replaced during a strategic
826826+ merge patch.
827827+ items:
828828+ type: string
829829+ type: array
830830+ x-kubernetes-list-type: atomic
831831+ required:
832832+ - key
833833+ - operator
834834+ type: object
835835+ type: array
836836+ x-kubernetes-list-type: atomic
837837+ matchLabels:
838838+ additionalProperties:
839839+ type: string
840840+ description: |-
841841+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
842842+ map is equivalent to an element of matchExpressions, whose key field is "key", the
843843+ operator is "In", and the values array contains only "value". The requirements are ANDed.
844844+ type: object
845845+ type: object
846846+ x-kubernetes-map-type: atomic
847847+ matchLabelKeys:
848848+ description: |-
849849+ MatchLabelKeys is a set of pod label keys to select which pods will
850850+ be taken into consideration. The keys are used to lookup values from the
851851+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
852852+ to select the group of existing pods which pods will be taken into consideration
853853+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
854854+ pod labels will be ignored. The default value is empty.
855855+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
856856+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
857857+ items:
858858+ type: string
859859+ type: array
860860+ x-kubernetes-list-type: atomic
861861+ mismatchLabelKeys:
862862+ description: |-
863863+ MismatchLabelKeys is a set of pod label keys to select which pods will
864864+ be taken into consideration. The keys are used to lookup values from the
865865+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
866866+ to select the group of existing pods which pods will be taken into consideration
867867+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
868868+ pod labels will be ignored. The default value is empty.
869869+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
870870+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
871871+ items:
872872+ type: string
873873+ type: array
874874+ x-kubernetes-list-type: atomic
875875+ namespaceSelector:
876876+ description: |-
877877+ A label query over the set of namespaces that the term applies to.
878878+ The term is applied to the union of the namespaces selected by this field
879879+ and the ones listed in the namespaces field.
880880+ null selector and null or empty namespaces list means "this pod's namespace".
881881+ An empty selector ({}) matches all namespaces.
882882+ properties:
883883+ matchExpressions:
884884+ description: matchExpressions is a list
885885+ of label selector requirements. The requirements
886886+ are ANDed.
887887+ items:
888888+ description: |-
889889+ A label selector requirement is a selector that contains values, a key, and an operator that
890890+ relates the key and values.
891891+ properties:
892892+ key:
893893+ description: key is the label key
894894+ that the selector applies to.
895895+ type: string
896896+ operator:
897897+ description: |-
898898+ operator represents a key's relationship to a set of values.
899899+ Valid operators are In, NotIn, Exists and DoesNotExist.
900900+ type: string
901901+ values:
902902+ description: |-
903903+ values is an array of string values. If the operator is In or NotIn,
904904+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
905905+ the values array must be empty. This array is replaced during a strategic
906906+ merge patch.
907907+ items:
908908+ type: string
909909+ type: array
910910+ x-kubernetes-list-type: atomic
911911+ required:
912912+ - key
913913+ - operator
914914+ type: object
915915+ type: array
916916+ x-kubernetes-list-type: atomic
917917+ matchLabels:
918918+ additionalProperties:
919919+ type: string
920920+ description: |-
921921+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
922922+ map is equivalent to an element of matchExpressions, whose key field is "key", the
923923+ operator is "In", and the values array contains only "value". The requirements are ANDed.
924924+ type: object
925925+ type: object
926926+ x-kubernetes-map-type: atomic
927927+ namespaces:
928928+ description: |-
929929+ namespaces specifies a static list of namespace names that the term applies to.
930930+ The term is applied to the union of the namespaces listed in this field
931931+ and the ones selected by namespaceSelector.
932932+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
933933+ items:
934934+ type: string
935935+ type: array
936936+ x-kubernetes-list-type: atomic
937937+ topologyKey:
938938+ description: |-
939939+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
940940+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
941941+ whose value of the label with key topologyKey matches that of any node on which any of the
942942+ selected pods is running.
943943+ Empty topologyKey is not allowed.
944944+ type: string
945945+ required:
946946+ - topologyKey
947947+ type: object
948948+ weight:
949949+ description: |-
950950+ weight associated with matching the corresponding podAffinityTerm,
951951+ in the range 1-100.
952952+ format: int32
953953+ type: integer
954954+ required:
955955+ - podAffinityTerm
956956+ - weight
957957+ type: object
958958+ type: array
959959+ x-kubernetes-list-type: atomic
960960+ requiredDuringSchedulingIgnoredDuringExecution:
961961+ description: |-
962962+ If the anti-affinity requirements specified by this field are not met at
963963+ scheduling time, the pod will not be scheduled onto the node.
964964+ If the anti-affinity requirements specified by this field cease to be met
965965+ at some point during pod execution (e.g. due to a pod label update), the
966966+ system may or may not try to eventually evict the pod from its node.
967967+ When there are multiple elements, the lists of nodes corresponding to each
968968+ podAffinityTerm are intersected, i.e. all terms must be satisfied.
969969+ items:
970970+ description: |-
971971+ Defines a set of pods (namely those matching the labelSelector
972972+ relative to the given namespace(s)) that this pod should be
973973+ co-located (affinity) or not co-located (anti-affinity) with,
974974+ where co-located is defined as running on a node whose value of
975975+ the label with key <topologyKey> matches that of any node on which
976976+ a pod of the set of pods is running
977977+ properties:
978978+ labelSelector:
979979+ description: |-
980980+ A label query over a set of resources, in this case pods.
981981+ If it's null, this PodAffinityTerm matches with no Pods.
982982+ properties:
983983+ matchExpressions:
984984+ description: matchExpressions is a list of label
985985+ selector requirements. The requirements are
986986+ ANDed.
987987+ items:
988988+ description: |-
989989+ A label selector requirement is a selector that contains values, a key, and an operator that
990990+ relates the key and values.
991991+ properties:
992992+ key:
993993+ description: key is the label key that
994994+ the selector applies to.
995995+ type: string
996996+ operator:
997997+ description: |-
998998+ operator represents a key's relationship to a set of values.
999999+ Valid operators are In, NotIn, Exists and DoesNotExist.
10001000+ type: string
10011001+ values:
10021002+ description: |-
10031003+ values is an array of string values. If the operator is In or NotIn,
10041004+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
10051005+ the values array must be empty. This array is replaced during a strategic
10061006+ merge patch.
10071007+ items:
10081008+ type: string
10091009+ type: array
10101010+ x-kubernetes-list-type: atomic
10111011+ required:
10121012+ - key
10131013+ - operator
10141014+ type: object
10151015+ type: array
10161016+ x-kubernetes-list-type: atomic
10171017+ matchLabels:
10181018+ additionalProperties:
10191019+ type: string
10201020+ description: |-
10211021+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
10221022+ map is equivalent to an element of matchExpressions, whose key field is "key", the
10231023+ operator is "In", and the values array contains only "value". The requirements are ANDed.
10241024+ type: object
10251025+ type: object
10261026+ x-kubernetes-map-type: atomic
10271027+ matchLabelKeys:
10281028+ description: |-
10291029+ MatchLabelKeys is a set of pod label keys to select which pods will
10301030+ be taken into consideration. The keys are used to lookup values from the
10311031+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
10321032+ to select the group of existing pods which pods will be taken into consideration
10331033+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
10341034+ pod labels will be ignored. The default value is empty.
10351035+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
10361036+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
10371037+ items:
10381038+ type: string
10391039+ type: array
10401040+ x-kubernetes-list-type: atomic
10411041+ mismatchLabelKeys:
10421042+ description: |-
10431043+ MismatchLabelKeys is a set of pod label keys to select which pods will
10441044+ be taken into consideration. The keys are used to lookup values from the
10451045+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
10461046+ to select the group of existing pods which pods will be taken into consideration
10471047+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
10481048+ pod labels will be ignored. The default value is empty.
10491049+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
10501050+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
10511051+ items:
10521052+ type: string
10531053+ type: array
10541054+ x-kubernetes-list-type: atomic
10551055+ namespaceSelector:
10561056+ description: |-
10571057+ A label query over the set of namespaces that the term applies to.
10581058+ The term is applied to the union of the namespaces selected by this field
10591059+ and the ones listed in the namespaces field.
10601060+ null selector and null or empty namespaces list means "this pod's namespace".
10611061+ An empty selector ({}) matches all namespaces.
10621062+ properties:
10631063+ matchExpressions:
10641064+ description: matchExpressions is a list of label
10651065+ selector requirements. The requirements are
10661066+ ANDed.
10671067+ items:
10681068+ description: |-
10691069+ A label selector requirement is a selector that contains values, a key, and an operator that
10701070+ relates the key and values.
10711071+ properties:
10721072+ key:
10731073+ description: key is the label key that
10741074+ the selector applies to.
10751075+ type: string
10761076+ operator:
10771077+ description: |-
10781078+ operator represents a key's relationship to a set of values.
10791079+ Valid operators are In, NotIn, Exists and DoesNotExist.
10801080+ type: string
10811081+ values:
10821082+ description: |-
10831083+ values is an array of string values. If the operator is In or NotIn,
10841084+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
10851085+ the values array must be empty. This array is replaced during a strategic
10861086+ merge patch.
10871087+ items:
10881088+ type: string
10891089+ type: array
10901090+ x-kubernetes-list-type: atomic
10911091+ required:
10921092+ - key
10931093+ - operator
10941094+ type: object
10951095+ type: array
10961096+ x-kubernetes-list-type: atomic
10971097+ matchLabels:
10981098+ additionalProperties:
10991099+ type: string
11001100+ description: |-
11011101+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
11021102+ map is equivalent to an element of matchExpressions, whose key field is "key", the
11031103+ operator is "In", and the values array contains only "value". The requirements are ANDed.
11041104+ type: object
11051105+ type: object
11061106+ x-kubernetes-map-type: atomic
11071107+ namespaces:
11081108+ description: |-
11091109+ namespaces specifies a static list of namespace names that the term applies to.
11101110+ The term is applied to the union of the namespaces listed in this field
11111111+ and the ones selected by namespaceSelector.
11121112+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
11131113+ items:
11141114+ type: string
11151115+ type: array
11161116+ x-kubernetes-list-type: atomic
11171117+ topologyKey:
11181118+ description: |-
11191119+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
11201120+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
11211121+ whose value of the label with key topologyKey matches that of any node on which any of the
11221122+ selected pods is running.
11231123+ Empty topologyKey is not allowed.
11241124+ type: string
11251125+ required:
11261126+ - topologyKey
11271127+ type: object
11281128+ type: array
11291129+ x-kubernetes-list-type: atomic
11301130+ type: object
11311131+ type: object
11321132+ registryCredentialsSecret:
11331133+ description: |-
11341134+ RegistryCredentialsSecret is the name of a kubernetes.io/dockerconfigjson secret
11351135+ containing registry credentials for buildah to use when pushing images.
11361136+ If specified, the secret is mounted at /home/user/.docker/config.json.
11371137+ type: string
11381138+ resourceProfiles:
11391139+ description: |-
11401140+ ResourceProfiles is an ordered list of resource configurations based on node labels.
11411141+ When creating a job, the first profile matching the workflow's architecture is selected.
11421142+ The profile's nodeSelector and resources are applied to the job pod.
11431143+ items:
11441144+ description: |-
11451145+ ResourceProfile defines a resource configuration for spindle jobs based on node labels.
11461146+ Profiles are matched against workflow architecture and applied to job pods.
11471147+ properties:
11481148+ nodeSelector:
11491149+ additionalProperties:
11501150+ type: string
11511151+ description: |-
11521152+ NodeSelector defines labels that must match for this profile to be used.
11531153+ Must include kubernetes.io/arch to match workflow architecture.
11541154+ Additional labels allow differentiation between node types (e.g., node-tier, instance-type).
11551155+ type: object
11561156+ resources:
11571157+ description: Resources defines the compute resource requirements
11581158+ for jobs using this profile.
11591159+ properties:
11601160+ claims:
11611161+ description: |-
11621162+ Claims lists the names of resources, defined in spec.resourceClaims,
11631163+ that are used by this container.
11641164+11651165+ This field depends on the
11661166+ DynamicResourceAllocation feature gate.
11671167+11681168+ This field is immutable. It can only be set for containers.
11691169+ items:
11701170+ description: ResourceClaim references one entry in
11711171+ PodSpec.ResourceClaims.
11721172+ properties:
11731173+ name:
11741174+ description: |-
11751175+ Name must match the name of one entry in pod.spec.resourceClaims of
11761176+ the Pod where this field is used. It makes that resource available
11771177+ inside a container.
11781178+ type: string
11791179+ request:
11801180+ description: |-
11811181+ Request is the name chosen for a request in the referenced claim.
11821182+ If empty, everything from the claim is made available, otherwise
11831183+ only the result of this request.
11841184+ type: string
11851185+ required:
11861186+ - name
11871187+ type: object
11881188+ type: array
11891189+ x-kubernetes-list-map-keys:
11901190+ - name
11911191+ x-kubernetes-list-type: map
11921192+ limits:
11931193+ additionalProperties:
11941194+ anyOf:
11951195+ - type: integer
11961196+ - type: string
11971197+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
11981198+ x-kubernetes-int-or-string: true
11991199+ description: |-
12001200+ Limits describes the maximum amount of compute resources allowed.
12011201+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
12021202+ type: object
12031203+ requests:
12041204+ additionalProperties:
12051205+ anyOf:
12061206+ - type: integer
12071207+ - type: string
12081208+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
12091209+ x-kubernetes-int-or-string: true
12101210+ description: |-
12111211+ Requests describes the minimum amount of compute resources required.
12121212+ If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
12131213+ otherwise to an implementation-defined value. Requests cannot exceed Limits.
12141214+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
12151215+ type: object
12161216+ type: object
12171217+ required:
12181218+ - nodeSelector
12191219+ - resources
12201220+ type: object
12211221+ type: array
12221222+ tolerations:
12231223+ description: Tolerations allows pods to schedule onto nodes with
12241224+ matching taints.
12251225+ items:
12261226+ description: |-
12271227+ The pod this Toleration is attached to tolerates any taint that matches
12281228+ the triple <key,value,effect> using the matching operator <operator>.
12291229+ properties:
12301230+ effect:
12311231+ description: |-
12321232+ Effect indicates the taint effect to match. Empty means match all taint effects.
12331233+ When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
12341234+ type: string
12351235+ key:
12361236+ description: |-
12371237+ Key is the taint key that the toleration applies to. Empty means match all taint keys.
12381238+ If the key is empty, operator must be Exists; this combination means to match all values and all keys.
12391239+ type: string
12401240+ operator:
12411241+ description: |-
12421242+ Operator represents a key's relationship to the value.
12431243+ Valid operators are Exists and Equal. Defaults to Equal.
12441244+ Exists is equivalent to wildcard for value, so that a pod can
12451245+ tolerate all taints of a particular category.
12461246+ type: string
12471247+ tolerationSeconds:
12481248+ description: |-
12491249+ TolerationSeconds represents the period of time the toleration (which must be
12501250+ of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
12511251+ it is not set, which means tolerate the taint forever (do not evict). Zero and
12521252+ negative values will be treated as 0 (evict immediately) by the system.
12531253+ format: int64
12541254+ type: integer
12551255+ value:
12561256+ description: |-
12571257+ Value is the taint value the toleration matches to.
12581258+ If the operator is Exists, the value should be empty, otherwise just a regular string.
12591259+ type: string
12601260+ type: object
12611261+ type: array
12621262+ type: object
12631263+ required:
12641264+ - pipelineRun
12651265+ type: object
12661266+ status:
12671267+ description: SpindleSetStatus defines the observed state of SpindleSet.
12681268+ properties:
12691269+ completedJobs:
12701270+ description: CompletedJobs is the total number of spindle jobs that
12711271+ have completed successfully.
12721272+ format: int32
12731273+ type: integer
12741274+ conditions:
12751275+ description: Conditions represent the latest available observations
12761276+ of the SpindleSet's state.
12771277+ items:
12781278+ description: Condition contains details for one aspect of the current
12791279+ state of this API Resource.
12801280+ properties:
12811281+ lastTransitionTime:
12821282+ description: |-
12831283+ lastTransitionTime is the last time the condition transitioned from one status to another.
12841284+ This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
12851285+ format: date-time
12861286+ type: string
12871287+ message:
12881288+ description: |-
12891289+ message is a human readable message indicating details about the transition.
12901290+ This may be an empty string.
12911291+ maxLength: 32768
12921292+ type: string
12931293+ observedGeneration:
12941294+ description: |-
12951295+ observedGeneration represents the .metadata.generation that the condition was set based upon.
12961296+ For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
12971297+ with respect to the current state of the instance.
12981298+ format: int64
12991299+ minimum: 0
13001300+ type: integer
13011301+ reason:
13021302+ description: |-
13031303+ reason contains a programmatic identifier indicating the reason for the condition's last transition.
13041304+ Producers of specific condition types may define expected values and meanings for this field,
13051305+ and whether the values are considered a guaranteed API.
13061306+ The value should be a CamelCase string.
13071307+ This field may not be empty.
13081308+ maxLength: 1024
13091309+ minLength: 1
13101310+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
13111311+ type: string
13121312+ status:
13131313+ description: status of the condition, one of True, False, Unknown.
13141314+ enum:
13151315+ - "True"
13161316+ - "False"
13171317+ - Unknown
13181318+ type: string
13191319+ type:
13201320+ description: type of condition in CamelCase or in foo.example.com/CamelCase.
13211321+ maxLength: 316
13221322+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
13231323+ type: string
13241324+ required:
13251325+ - lastTransitionTime
13261326+ - message
13271327+ - reason
13281328+ - status
13291329+ - type
13301330+ type: object
13311331+ type: array
13321332+ x-kubernetes-list-map-keys:
13331333+ - type
13341334+ x-kubernetes-list-type: map
13351335+ failedJobs:
13361336+ description: FailedJobs is the total number of spindle jobs that have
13371337+ failed.
13381338+ format: int32
13391339+ type: integer
13401340+ pendingJobs:
13411341+ description: PendingJobs is the number of spindle jobs currently pending.
13421342+ format: int32
13431343+ type: integer
13441344+ phase:
13451345+ description: Phase represents the current phase of the pipeline execution.
13461346+ type: string
13471347+ runningJobs:
13481348+ description: RunningJobs is the number of spindle jobs currently running.
13491349+ format: int32
13501350+ type: integer
13511351+ workflowStatuses:
13521352+ description: WorkflowStatuses tracks the status of individual workflows
13531353+ in a pipeline run.
13541354+ items:
13551355+ description: WorkflowStatus tracks the status of a single workflow
13561356+ execution.
13571357+ properties:
13581358+ completionTime:
13591359+ description: CompletionTime is when the workflow finished.
13601360+ format: date-time
13611361+ type: string
13621362+ jobName:
13631363+ description: JobName is the name of the Kubernetes Job created
13641364+ for this workflow.
13651365+ type: string
13661366+ name:
13671367+ description: Name is the workflow name.
13681368+ type: string
13691369+ phase:
13701370+ description: Phase is the current phase of the workflow (Pending,
13711371+ Running, Succeeded, Failed).
13721372+ type: string
13731373+ startTime:
13741374+ description: StartTime is when the workflow started executing.
13751375+ format: date-time
13761376+ type: string
13771377+ required:
13781378+ - name
13791379+ type: object
13801380+ type: array
13811381+ type: object
13821382+ type: object
13831383+ served: true
13841384+ storage: true
13851385+ subresources:
13861386+ status: {}
+106
helm/loom/templates/_helpers.tpl
···11+{{/*
22+Expand the name of the chart.
33+*/}}
44+{{- define "loom.name" -}}
55+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
66+{{- end }}
77+88+{{/*
99+Create a default fully qualified app name.
1010+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
1111+If release name contains chart name it will be used as a full name.
1212+*/}}
1313+{{- define "loom.fullname" -}}
1414+{{- if .Values.fullnameOverride }}
1515+{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
1616+{{- else }}
1717+{{- $name := default .Chart.Name .Values.nameOverride }}
1818+{{- if contains $name .Release.Name }}
1919+{{- .Release.Name | trunc 63 | trimSuffix "-" }}
2020+{{- else }}
2121+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
2222+{{- end }}
2323+{{- end }}
2424+{{- end }}
2525+2626+{{/*
2727+Create chart name and version as used by the chart label.
2828+*/}}
2929+{{- define "loom.chart" -}}
3030+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
3131+{{- end }}
3232+3333+{{/*
3434+Common labels
3535+*/}}
3636+{{- define "loom.labels" -}}
3737+helm.sh/chart: {{ include "loom.chart" . }}
3838+{{ include "loom.selectorLabels" . }}
3939+{{- if .Chart.AppVersion }}
4040+app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
4141+{{- end }}
4242+app.kubernetes.io/managed-by: {{ .Release.Service }}
4343+{{- end }}
4444+4545+{{/*
4646+Selector labels
4747+*/}}
4848+{{- define "loom.selectorLabels" -}}
4949+app.kubernetes.io/name: {{ include "loom.name" . }}
5050+app.kubernetes.io/instance: {{ .Release.Name }}
5151+{{- end }}
5252+5353+{{/*
5454+Controller manager labels
5555+*/}}
5656+{{- define "loom.controllerLabels" -}}
5757+control-plane: controller-manager
5858+{{ include "loom.selectorLabels" . }}
5959+{{- end }}
6060+6161+{{/*
6262+Create the name of the service account to use
6363+*/}}
6464+{{- define "loom.serviceAccountName" -}}
6565+{{- if .Values.serviceAccount.create }}
6666+{{- default (printf "%s-controller-manager" (include "loom.fullname" .)) .Values.serviceAccount.name }}
6767+{{- else }}
6868+{{- default "default" .Values.serviceAccount.name }}
6969+{{- end }}
7070+{{- end }}
7171+7272+{{/*
7373+Create the name of the job runner service account
7474+*/}}
7575+{{- define "loom.jobServiceAccountName" -}}
7676+{{- printf "%s-spindle-job-runner" (include "loom.fullname" .) }}
7777+{{- end }}
7878+7979+{{/*
8080+Create the image reference
8181+*/}}
8282+{{- define "loom.image" -}}
8383+{{- $tag := default .Chart.AppVersion .Values.image.tag }}
8484+{{- printf "%s:%s" .Values.image.repository $tag }}
8585+{{- end }}
8686+8787+{{/*
8888+Create the controller manager name
8989+*/}}
9090+{{- define "loom.controllerManagerName" -}}
9191+{{- printf "%s-controller-manager" (include "loom.fullname" .) }}
9292+{{- end }}
9393+9494+{{/*
9595+Create the configmap name
9696+*/}}
9797+{{- define "loom.configMapName" -}}
9898+{{- printf "%s-config" (include "loom.fullname" .) }}
9999+{{- end }}
100100+101101+{{/*
102102+Create the service name
103103+*/}}
104104+{{- define "loom.serviceName" -}}
105105+{{- printf "%s-spindle-service" (include "loom.fullname" .) }}
106106+{{- end }}
+24
helm/loom/templates/configmap.yaml
···11+apiVersion: v1
22+kind: ConfigMap
33+metadata:
44+ name: {{ include "loom.configMapName" . }}
55+ namespace: {{ .Release.Namespace }}
66+ labels:
77+ {{- include "loom.labels" . | nindent 4 }}
88+data:
99+ config.yaml: |
1010+ # Maximum number of concurrent spindle jobs
1111+ maxConcurrentJobs: {{ .Values.config.maxConcurrentJobs }}
1212+1313+ # Template for spindle job pods
1414+ template:
1515+ # Resource profiles are matched against workflow architecture and node labels.
1616+ # The first profile matching the workflow's architecture is selected.
1717+ # Profile's nodeSelector and resources are applied to the job pod.
1818+ resourceProfiles:
1919+ {{- range .Values.config.resourceProfiles }}
2020+ - nodeSelector:
2121+ {{- toYaml .nodeSelector | nindent 12 }}
2222+ resources:
2323+ {{- toYaml .resources | nindent 12 }}
2424+ {{- end }}