Skip to content
Open
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions api/common_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,10 +59,11 @@ type VersionTemplate struct {
}

// ReadinessGating defines the readiness-gate and completion-condition fields shared by the
// BIOS/BMC settings and version templates. It is embedded (inline) in each template so both
// the single-object resource (e.g. BIOSSettingsSpec) and the corresponding Set resource's
// template (e.g. BIOSSettingsSetSpec.BIOSSettingsTemplate) expose it identically, and Set
// controllers propagate it to owned objects for free by copying the whole template.
// BIOS/BMC settings, version, and firmware update templates. It is embedded (inline) in each
// template so both the single-object resource (e.g. BIOSSettingsSpec, FirmwareUpdateSpec) and
// the corresponding Set resource's template (e.g. BIOSSettingsSetSpec.BIOSSettingsTemplate)
// expose it identically, and Set controllers propagate it to owned objects for free by
// copying the whole template.
type ReadinessGating struct {
// ReadinessGates is a list of Server conditions that must be satisfied before the
// controller starts applying this resource. Semantics mirror Kubernetes
Expand Down
3 changes: 3 additions & 0 deletions api/system/v1alpha1/firmwareupdate_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@ type FirmwareUpdateTemplate struct {
// RetryPolicy defines the retry behavior for automatic retries on transient failures.
// +optional
RetryPolicy *api.RetryPolicy `json:"retryPolicy,omitempty"`

// ReadinessGating defines the readiness gates and completion condition propagated to the Server.
api.ReadinessGating `json:",inline"`
}

// FirmwareUpdateSpec defines the desired state of FirmwareUpdate.
Expand Down
1 change: 1 addition & 0 deletions api/system/v1alpha1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

46 changes: 46 additions & 0 deletions config/crd/bases/system.metal.ironcore.dev_firmwareupdates.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,20 @@ spec:
spec:
description: FirmwareUpdateSpec defines the desired state of FirmwareUpdate.
properties:
completionConditionType:
description: |-
CompletionConditionType, if set, is the condition Type patched (status True) onto the
related Server(s) once this resource reaches its terminal success state. Downstream
resources can reference this Type in their own ReadinessGates to build a manual
sequence across resources.
Immutable once set: it can be patched from empty to a value, but not changed or cleared
afterwards.
maxLength: 316
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])$
type: string
Comment thread
nagadeesh-nagaraja marked this conversation as resolved.
Resolved
x-kubernetes-validations:
- message: completionConditionType is immutable once set
rule: oldSelf == '' || self == oldSelf
Comment thread
nagadeesh-nagaraja marked this conversation as resolved.
Resolved
dellRepository:
description: DellRepository describes the network share hosting the
Dell update repository/catalog.
Expand Down Expand Up @@ -123,6 +137,38 @@ spec:
progress before the update is marked Failed. Defaults to 3600 (1 hour).
format: int32
type: integer
readinessGates:
description: |-
ReadinessGates is a list of Server conditions that must be satisfied before the
controller starts applying this resource. Semantics mirror Kubernetes
Pod.Spec.ReadinessGates: every listed condition type must be present on the related
Server(s) with the required status.
items:
description: |-
ConditionRequirement defines a specific Server condition and the status value
required to trigger the controller's action.
properties:
requiredStatus:
description: RequiredStatus is status of the condition, one
of True, False, Unknown.
enum:
- "True"
- "False"
- Unknown
type: string
type:
description: |-
Type of server condition

Following kubebuilder validation is referred from https://pkg.go.dev/k8s.io/apimachinery/pkg/apis/meta/v1#Condition
maxLength: 316
minLength: 1
type: string
required:
- requiredStatus
- type
type: object
type: array
retryPolicy:
description: RetryPolicy defines the retry behavior for automatic
retries on transient failures.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,20 @@ spec:
spec:
description: FirmwareUpdateSpec defines the desired state of FirmwareUpdate.
properties:
completionConditionType:
description: |-
CompletionConditionType, if set, is the condition Type patched (status True) onto the
related Server(s) once this resource reaches its terminal success state. Downstream
resources can reference this Type in their own ReadinessGates to build a manual
sequence across resources.
Immutable once set: it can be patched from empty to a value, but not changed or cleared
afterwards.
maxLength: 316
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])$
type: string
x-kubernetes-validations:
- message: completionConditionType is immutable once set
rule: oldSelf == '' || self == oldSelf
dellRepository:
description: DellRepository describes the network share hosting the
Dell update repository/catalog.
Expand Down Expand Up @@ -126,6 +140,38 @@ spec:
progress before the update is marked Failed. Defaults to 3600 (1 hour).
format: int32
type: integer
readinessGates:
description: |-
ReadinessGates is a list of Server conditions that must be satisfied before the
controller starts applying this resource. Semantics mirror Kubernetes
Pod.Spec.ReadinessGates: every listed condition type must be present on the related
Server(s) with the required status.
items:
description: |-
ConditionRequirement defines a specific Server condition and the status value
required to trigger the controller's action.
properties:
requiredStatus:
description: RequiredStatus is status of the condition, one
of True, False, Unknown.
enum:
- "True"
- "False"
- Unknown
type: string
type:
description: |-
Type of server condition

Following kubebuilder validation is referred from https://pkg.go.dev/k8s.io/apimachinery/pkg/apis/meta/v1#Condition
maxLength: 316
minLength: 1
type: string
required:
- requiredStatus
- type
type: object
type: array
retryPolicy:
description: RetryPolicy defines the retry behavior for automatic
retries on transient failures.
Expand Down
46 changes: 46 additions & 0 deletions dist/install.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3353,6 +3353,20 @@ spec:
spec:
description: FirmwareUpdateSpec defines the desired state of FirmwareUpdate.
properties:
completionConditionType:
description: |-
CompletionConditionType, if set, is the condition Type patched (status True) onto the
related Server(s) once this resource reaches its terminal success state. Downstream
resources can reference this Type in their own ReadinessGates to build a manual
sequence across resources.
Immutable once set: it can be patched from empty to a value, but not changed or cleared
afterwards.
maxLength: 316
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])$
type: string
x-kubernetes-validations:
- message: completionConditionType is immutable once set
rule: oldSelf == '' || self == oldSelf
dellRepository:
description: DellRepository describes the network share hosting the
Dell update repository/catalog.
Expand Down Expand Up @@ -3425,6 +3439,38 @@ spec:
progress before the update is marked Failed. Defaults to 3600 (1 hour).
format: int32
type: integer
readinessGates:
description: |-
ReadinessGates is a list of Server conditions that must be satisfied before the
controller starts applying this resource. Semantics mirror Kubernetes
Pod.Spec.ReadinessGates: every listed condition type must be present on the related
Server(s) with the required status.
items:
description: |-
ConditionRequirement defines a specific Server condition and the status value
required to trigger the controller's action.
properties:
requiredStatus:
description: RequiredStatus is status of the condition, one
of True, False, Unknown.
enum:
- "True"
- "False"
- Unknown
type: string
type:
description: |-
Type of server condition

Following kubebuilder validation is referred from https://pkg.go.dev/k8s.io/apimachinery/pkg/apis/meta/v1#Condition
maxLength: 316
minLength: 1
type: string
required:
- requiredStatus
- type
type: object
type: array
retryPolicy:
description: RetryPolicy defines the retry behavior for automatic
retries on transient failures.
Expand Down
4 changes: 4 additions & 0 deletions docs/api-reference/api.md
Original file line number Diff line number Diff line change
Expand Up @@ -1239,6 +1239,8 @@ _Appears in:_
| `dellRepository` _[DellFirmwareRepository](#dellfirmwarerepository)_ | DellRepository describes the network share hosting the Dell update repository/catalog. | | |
| `serverMaintenancePolicy` _[ServerMaintenancePolicy](#servermaintenancepolicy)_ | ServerMaintenancePolicy is a maintenance policy to be enforced on the server. | | |
| `retryPolicy` _[RetryPolicy](#retrypolicy)_ | RetryPolicy defines the retry behavior for automatic retries on transient failures. | | |
| `readinessGates` _ConditionRequirement array_ | ReadinessGates is a list of Server conditions that must be satisfied before the<br />controller starts applying this resource. Semantics mirror Kubernetes<br />Pod.Spec.ReadinessGates: every listed condition type must be present on the related<br />Server(s) with the required status. | | |
| `completionConditionType` _string_ | CompletionConditionType, if set, is the condition Type patched (status True) onto the<br />related Server(s) once this resource reaches its terminal success state. Downstream<br />resources can reference this Type in their own ReadinessGates to build a manual<br />sequence across resources.<br />Immutable once set: it can be patched from empty to a value, but not changed or cleared<br />afterwards. | | MaxLength: 316 <br />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])$` <br /> |
| `serverRef` _[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#localobjectreference-v1-core)_ | ServerRef is a reference to a specific server to apply the firmware update on. | | |
| `progressDeadlineSeconds` _integer_ | ProgressDeadlineSeconds is the maximum time in seconds to wait without observable forward<br />progress before the update is marked Failed. Defaults to 3600 (1 hour). | 3600 | |
| `ttlSecondsAfterFinished` _integer_ | TTLSecondsAfterFinished, if set, causes the FirmwareUpdate to be deleted that many seconds<br />after it reaches Completed state. Failed objects are retained for operator inspection. | | |
Expand Down Expand Up @@ -1302,6 +1304,8 @@ _Appears in:_
| `dellRepository` _[DellFirmwareRepository](#dellfirmwarerepository)_ | DellRepository describes the network share hosting the Dell update repository/catalog. | | |
| `serverMaintenancePolicy` _[ServerMaintenancePolicy](#servermaintenancepolicy)_ | ServerMaintenancePolicy is a maintenance policy to be enforced on the server. | | |
| `retryPolicy` _[RetryPolicy](#retrypolicy)_ | RetryPolicy defines the retry behavior for automatic retries on transient failures. | | |
| `readinessGates` _ConditionRequirement array_ | ReadinessGates is a list of Server conditions that must be satisfied before the<br />controller starts applying this resource. Semantics mirror Kubernetes<br />Pod.Spec.ReadinessGates: every listed condition type must be present on the related<br />Server(s) with the required status. | | |
| `completionConditionType` _string_ | CompletionConditionType, if set, is the condition Type patched (status True) onto the<br />related Server(s) once this resource reaches its terminal success state. Downstream<br />resources can reference this Type in their own ReadinessGates to build a manual<br />sequence across resources.<br />Immutable once set: it can be patched from empty to a value, but not changed or cleared<br />afterwards. | | MaxLength: 316 <br />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])$` <br /> |


#### RepositoryJob
Expand Down
Loading
Loading