diff --git a/features.md b/features.md
index 5259884ec63..3b2eda05cbf 100644
--- a/features.md
+++ b/features.md
@@ -101,11 +101,7 @@
| InsightsOnDemandDataGather| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| KMSv1| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| MachineConfigNodes| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
-| ManagedBootImages| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
-| ManagedBootImagesAWS| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
-| ManagedBootImagesAzure| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| ManagedBootImagesCPMS| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
-| ManagedBootImagesvSphere| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| MetricsCollectionProfiles| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| MutableCSINodeAllocatableCount| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| OpenShiftPodSecurityAdmission| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
diff --git a/features/features.go b/features/features.go
index 3ba5f3113e9..d9f17b941ec 100644
--- a/features/features.go
+++ b/features/features.go
@@ -312,38 +312,6 @@ var (
enable(inTechPreviewNoUpgrade(), inDevPreviewNoUpgrade()).
mustRegister()
- FeatureGateManagedBootImages = newFeatureGate("ManagedBootImages").
- reportProblemsToJiraComponent("MachineConfigOperator").
- contactPerson("djoshy").
- productScope(ocpSpecific).
- enhancementPR(legacyFeatureGateWithoutEnhancement).
- enable(inDefault(), inOKD(), inTechPreviewNoUpgrade(), inDevPreviewNoUpgrade()).
- mustRegister()
-
- FeatureGateManagedBootImagesAWS = newFeatureGate("ManagedBootImagesAWS").
- reportProblemsToJiraComponent("MachineConfigOperator").
- contactPerson("djoshy").
- productScope(ocpSpecific).
- enhancementPR(legacyFeatureGateWithoutEnhancement).
- enable(inDefault(), inOKD(), inTechPreviewNoUpgrade(), inDevPreviewNoUpgrade()).
- mustRegister()
-
- FeatureGateManagedBootImagesvSphere = newFeatureGate("ManagedBootImagesvSphere").
- reportProblemsToJiraComponent("MachineConfigOperator").
- contactPerson("rsaini").
- productScope(ocpSpecific).
- enhancementPR("https://github.com/openshift/enhancements/pull/1496").
- enable(inDefault(), inOKD(), inTechPreviewNoUpgrade(), inDevPreviewNoUpgrade()).
- mustRegister()
-
- FeatureGateManagedBootImagesAzure = newFeatureGate("ManagedBootImagesAzure").
- reportProblemsToJiraComponent("MachineConfigOperator").
- contactPerson("djoshy").
- productScope(ocpSpecific).
- enhancementPR("https://github.com/openshift/enhancements/pull/1761").
- enable(inDefault(), inOKD(), inTechPreviewNoUpgrade(), inDevPreviewNoUpgrade()).
- mustRegister()
-
FeatureGateManagedBootImagesCPMS = newFeatureGate("ManagedBootImagesCPMS").
reportProblemsToJiraComponent("MachineConfigOperator").
contactPerson("djoshy").
diff --git a/operator/v1/tests/machineconfigurations.operator.openshift.io/ManagedBootImages.yaml b/operator/v1/tests/machineconfigurations.operator.openshift.io/ManagedBootImages.yaml
index 8b0deb7dc35..ec46616bbd4 100644
--- a/operator/v1/tests/machineconfigurations.operator.openshift.io/ManagedBootImages.yaml
+++ b/operator/v1/tests/machineconfigurations.operator.openshift.io/ManagedBootImages.yaml
@@ -1,8 +1,6 @@
apiVersion: apiextensions.k8s.io/v1 # Hack because controller-gen complains if we don't have this
name: "MachineConfiguration"
crdName: machineconfigurations.operator.openshift.io
-featureGates:
-- ManagedBootImages
tests:
onCreate:
- name: Should be able to create a minimal MachineConfiguration
diff --git a/operator/v1/tests/machineconfigurations.operator.openshift.io/ManagedBootImages+ManagedBootImagesCPMS.yaml b/operator/v1/tests/machineconfigurations.operator.openshift.io/ManagedBootImagesCPMS.yaml
similarity index 99%
rename from operator/v1/tests/machineconfigurations.operator.openshift.io/ManagedBootImages+ManagedBootImagesCPMS.yaml
rename to operator/v1/tests/machineconfigurations.operator.openshift.io/ManagedBootImagesCPMS.yaml
index d4631364dee..5abb67aa766 100644
--- a/operator/v1/tests/machineconfigurations.operator.openshift.io/ManagedBootImages+ManagedBootImagesCPMS.yaml
+++ b/operator/v1/tests/machineconfigurations.operator.openshift.io/ManagedBootImagesCPMS.yaml
@@ -2,7 +2,6 @@ apiVersion: apiextensions.k8s.io/v1 # Hack because controller-gen complains if w
name: "MachineConfiguration"
crdName: machineconfigurations.operator.openshift.io
featureGates:
-- ManagedBootImages
- ManagedBootImagesCPMS
tests:
onCreate:
diff --git a/operator/v1/types_machineconfiguration.go b/operator/v1/types_machineconfiguration.go
index f5836af0f8c..ec106deaa3a 100644
--- a/operator/v1/types_machineconfiguration.go
+++ b/operator/v1/types_machineconfiguration.go
@@ -47,7 +47,6 @@ type MachineConfigurationSpec struct {
// and the platform is left to choose a reasonable default, which is subject to change over time.
// The default for each machine manager mode is All for GCP and AWS platforms, and None for all
// other platforms.
- // +openshift:enable:FeatureGate=ManagedBootImages
// +optional
ManagedBootImages ManagedBootImages `json:"managedBootImages"`
@@ -288,7 +287,6 @@ type MachineConfigurationStatus struct {
// managedBootImagesStatus reflects what the latest cluster-validated boot image configuration is
// and will be used by Machine Config Controller while performing boot image updates.
- // +openshift:enable:FeatureGate=ManagedBootImages
// +optional
ManagedBootImagesStatus ManagedBootImages `json:"managedBootImagesStatus"`
@@ -367,7 +365,7 @@ type ManagedBootImages struct {
// MachineManager describes a target machine resource that is registered for boot image updates. It stores identifying information
// such as the resource type and the API Group of the resource. It also provides granular control via the selection field.
-// +openshift:validation:FeatureGateAwareXValidation:requiredFeatureGate=ManagedBootImages;ManagedBootImagesCPMS,rule="self.resource != 'controlplanemachinesets' || self.selection.mode == 'All' || self.selection.mode == 'None'", message="Only All or None selection mode is permitted for ControlPlaneMachineSets"
+// +openshift:validation:FeatureGateAwareXValidation:requiredFeatureGate=ManagedBootImagesCPMS,rule="self.resource != 'controlplanemachinesets' || self.selection.mode == 'All' || self.selection.mode == 'None'", message="Only All or None selection mode is permitted for ControlPlaneMachineSets"
type MachineManager struct {
// resource is the machine management resource's type.
// Valid values are machinesets and controlplanemachinesets.
@@ -431,8 +429,8 @@ const (
// MachineManagerManagedResourceType is a string enum used in the MachineManager type to describe the resource
// type to be registered.
-// +openshift:validation:FeatureGateAwareEnum:requiredFeatureGate=ManagedBootImages,enum=machinesets
-// +openshift:validation:FeatureGateAwareEnum:requiredFeatureGate=ManagedBootImages;ManagedBootImagesCPMS,enum=machinesets;controlplanemachinesets
+// +kubebuilder:validation:Enum:="machinesets"
+// +openshift:validation:FeatureGateAwareEnum:requiredFeatureGate=ManagedBootImagesCPMS,enum=machinesets;controlplanemachinesets
type MachineManagerMachineSetsResourceType string
const (
diff --git a/operator/v1/zz_generated.featuregated-crd-manifests.yaml b/operator/v1/zz_generated.featuregated-crd-manifests.yaml
index 51a758804d6..1c552b0c0e5 100644
--- a/operator/v1/zz_generated.featuregated-crd-manifests.yaml
+++ b/operator/v1/zz_generated.featuregated-crd-manifests.yaml
@@ -305,8 +305,7 @@ machineconfigurations.operator.openshift.io:
FeatureGates:
- BootImageSkewEnforcement
- IrreconcilableMachineConfig
- - ManagedBootImages
- - ManagedBootImages+ManagedBootImagesCPMS
+ - ManagedBootImagesCPMS
FilenameOperatorName: machine-config
FilenameOperatorOrdering: "01"
FilenameRunLevel: "0000_80"
diff --git a/operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/AAA_ungated.yaml b/operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/AAA_ungated.yaml
index cf52b6b7e4c..bdf4cdc02bf 100644
--- a/operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/AAA_ungated.yaml
+++ b/operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/AAA_ungated.yaml
@@ -73,6 +73,137 @@ spec:
- Trace
- TraceAll
type: string
+ managedBootImages:
+ description: |-
+ managedBootImages allows configuration for the management of boot images for machine
+ resources within the cluster. This configuration allows users to select resources that should
+ be updated to the latest boot images during cluster upgrades, ensuring that new machines
+ always boot with the current cluster version's boot image. When omitted, this means no opinion
+ and the platform is left to choose a reasonable default, which is subject to change over time.
+ The default for each machine manager mode is All for GCP and AWS platforms, and None for all
+ other platforms.
+ properties:
+ machineManagers:
+ description: |-
+ machineManagers can be used to register machine management resources for boot image updates. The Machine Config Operator
+ will watch for changes to this list. Only one entry is permitted per type of machine management resource.
+ items:
+ description: |-
+ MachineManager describes a target machine resource that is registered for boot image updates. It stores identifying information
+ such as the resource type and the API Group of the resource. It also provides granular control via the selection field.
+ properties:
+ apiGroup:
+ description: |-
+ apiGroup is name of the APIGroup that the machine management resource belongs to.
+ The only current valid value is machine.openshift.io.
+ machine.openshift.io means that the machine manager will only register resources that belong to OpenShift machine API group.
+ enum:
+ - machine.openshift.io
+ type: string
+ resource:
+ description: |-
+ resource is the machine management resource's type.
+ Valid values are machinesets and controlplanemachinesets.
+ machinesets means that the machine manager will only register resources of the kind MachineSet.
+ controlplanemachinesets means that the machine manager will only register resources of the kind ControlPlaneMachineSet.
+ enum:
+ - machinesets
+ type: string
+ selection:
+ description: selection allows granular control of the machine
+ management resources that will be registered for boot
+ image updates.
+ properties:
+ mode:
+ description: |-
+ mode determines how machine managers will be selected for updates.
+ Valid values are All, Partial and None.
+ All means that every resource matched by the machine manager will be updated.
+ Partial requires specified selector(s) and allows customisation of which resources matched by the machine manager will be updated.
+ Partial is not permitted for the controlplanemachinesets resource type as they are a singleton within the cluster.
+ None means that every resource matched by the machine manager will not be updated.
+ enum:
+ - All
+ - Partial
+ - None
+ type: string
+ partial:
+ description: |-
+ partial provides label selector(s) that can be used to match machine management resources.
+ Only permitted when mode is set to "Partial".
+ properties:
+ machineResourceSelector:
+ description: machineResourceSelector is a label
+ selector that can be used to select machine resources
+ like MachineSets.
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label
+ selector requirements. The requirements are
+ ANDed.
+ items:
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
+ properties:
+ key:
+ description: key is the label key that
+ the selector applies to.
+ type: string
+ operator:
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ x-kubernetes-list-type: atomic
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ required:
+ - machineResourceSelector
+ type: object
+ required:
+ - mode
+ type: object
+ x-kubernetes-validations:
+ - message: Partial is required when type is partial, and
+ forbidden otherwise
+ rule: 'has(self.mode) && self.mode == ''Partial'' ? has(self.partial)
+ : !has(self.partial)'
+ required:
+ - apiGroup
+ - resource
+ - selection
+ type: object
+ maxItems: 5
+ type: array
+ x-kubernetes-list-map-keys:
+ - resource
+ - apiGroup
+ x-kubernetes-list-type: map
+ type: object
managementState:
description: managementState indicates whether and how the operator
should manage the component
@@ -580,6 +711,132 @@ spec:
x-kubernetes-list-map-keys:
- type
x-kubernetes-list-type: map
+ managedBootImagesStatus:
+ description: |-
+ managedBootImagesStatus reflects what the latest cluster-validated boot image configuration is
+ and will be used by Machine Config Controller while performing boot image updates.
+ properties:
+ machineManagers:
+ description: |-
+ machineManagers can be used to register machine management resources for boot image updates. The Machine Config Operator
+ will watch for changes to this list. Only one entry is permitted per type of machine management resource.
+ items:
+ description: |-
+ MachineManager describes a target machine resource that is registered for boot image updates. It stores identifying information
+ such as the resource type and the API Group of the resource. It also provides granular control via the selection field.
+ properties:
+ apiGroup:
+ description: |-
+ apiGroup is name of the APIGroup that the machine management resource belongs to.
+ The only current valid value is machine.openshift.io.
+ machine.openshift.io means that the machine manager will only register resources that belong to OpenShift machine API group.
+ enum:
+ - machine.openshift.io
+ type: string
+ resource:
+ description: |-
+ resource is the machine management resource's type.
+ Valid values are machinesets and controlplanemachinesets.
+ machinesets means that the machine manager will only register resources of the kind MachineSet.
+ controlplanemachinesets means that the machine manager will only register resources of the kind ControlPlaneMachineSet.
+ enum:
+ - machinesets
+ type: string
+ selection:
+ description: selection allows granular control of the machine
+ management resources that will be registered for boot
+ image updates.
+ properties:
+ mode:
+ description: |-
+ mode determines how machine managers will be selected for updates.
+ Valid values are All, Partial and None.
+ All means that every resource matched by the machine manager will be updated.
+ Partial requires specified selector(s) and allows customisation of which resources matched by the machine manager will be updated.
+ Partial is not permitted for the controlplanemachinesets resource type as they are a singleton within the cluster.
+ None means that every resource matched by the machine manager will not be updated.
+ enum:
+ - All
+ - Partial
+ - None
+ type: string
+ partial:
+ description: |-
+ partial provides label selector(s) that can be used to match machine management resources.
+ Only permitted when mode is set to "Partial".
+ properties:
+ machineResourceSelector:
+ description: machineResourceSelector is a label
+ selector that can be used to select machine resources
+ like MachineSets.
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label
+ selector requirements. The requirements are
+ ANDed.
+ items:
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
+ properties:
+ key:
+ description: key is the label key that
+ the selector applies to.
+ type: string
+ operator:
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ x-kubernetes-list-type: atomic
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ required:
+ - machineResourceSelector
+ type: object
+ required:
+ - mode
+ type: object
+ x-kubernetes-validations:
+ - message: Partial is required when type is partial, and
+ forbidden otherwise
+ rule: 'has(self.mode) && self.mode == ''Partial'' ? has(self.partial)
+ : !has(self.partial)'
+ required:
+ - apiGroup
+ - resource
+ - selection
+ type: object
+ maxItems: 5
+ type: array
+ x-kubernetes-list-map-keys:
+ - resource
+ - apiGroup
+ x-kubernetes-list-type: map
+ type: object
nodeDisruptionPolicyStatus:
description: |-
nodeDisruptionPolicyStatus status reflects what the latest cluster-validated policies are,
diff --git a/operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/BootImageSkewEnforcement.yaml b/operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/BootImageSkewEnforcement.yaml
index 3f7eac5c86a..a067f75d4c4 100644
--- a/operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/BootImageSkewEnforcement.yaml
+++ b/operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/BootImageSkewEnforcement.yaml
@@ -165,6 +165,137 @@ spec:
- Trace
- TraceAll
type: string
+ managedBootImages:
+ description: |-
+ managedBootImages allows configuration for the management of boot images for machine
+ resources within the cluster. This configuration allows users to select resources that should
+ be updated to the latest boot images during cluster upgrades, ensuring that new machines
+ always boot with the current cluster version's boot image. When omitted, this means no opinion
+ and the platform is left to choose a reasonable default, which is subject to change over time.
+ The default for each machine manager mode is All for GCP and AWS platforms, and None for all
+ other platforms.
+ properties:
+ machineManagers:
+ description: |-
+ machineManagers can be used to register machine management resources for boot image updates. The Machine Config Operator
+ will watch for changes to this list. Only one entry is permitted per type of machine management resource.
+ items:
+ description: |-
+ MachineManager describes a target machine resource that is registered for boot image updates. It stores identifying information
+ such as the resource type and the API Group of the resource. It also provides granular control via the selection field.
+ properties:
+ apiGroup:
+ description: |-
+ apiGroup is name of the APIGroup that the machine management resource belongs to.
+ The only current valid value is machine.openshift.io.
+ machine.openshift.io means that the machine manager will only register resources that belong to OpenShift machine API group.
+ enum:
+ - machine.openshift.io
+ type: string
+ resource:
+ description: |-
+ resource is the machine management resource's type.
+ Valid values are machinesets and controlplanemachinesets.
+ machinesets means that the machine manager will only register resources of the kind MachineSet.
+ controlplanemachinesets means that the machine manager will only register resources of the kind ControlPlaneMachineSet.
+ enum:
+ - machinesets
+ type: string
+ selection:
+ description: selection allows granular control of the machine
+ management resources that will be registered for boot
+ image updates.
+ properties:
+ mode:
+ description: |-
+ mode determines how machine managers will be selected for updates.
+ Valid values are All, Partial and None.
+ All means that every resource matched by the machine manager will be updated.
+ Partial requires specified selector(s) and allows customisation of which resources matched by the machine manager will be updated.
+ Partial is not permitted for the controlplanemachinesets resource type as they are a singleton within the cluster.
+ None means that every resource matched by the machine manager will not be updated.
+ enum:
+ - All
+ - Partial
+ - None
+ type: string
+ partial:
+ description: |-
+ partial provides label selector(s) that can be used to match machine management resources.
+ Only permitted when mode is set to "Partial".
+ properties:
+ machineResourceSelector:
+ description: machineResourceSelector is a label
+ selector that can be used to select machine resources
+ like MachineSets.
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label
+ selector requirements. The requirements are
+ ANDed.
+ items:
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
+ properties:
+ key:
+ description: key is the label key that
+ the selector applies to.
+ type: string
+ operator:
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ x-kubernetes-list-type: atomic
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ required:
+ - machineResourceSelector
+ type: object
+ required:
+ - mode
+ type: object
+ x-kubernetes-validations:
+ - message: Partial is required when type is partial, and
+ forbidden otherwise
+ rule: 'has(self.mode) && self.mode == ''Partial'' ? has(self.partial)
+ : !has(self.partial)'
+ required:
+ - apiGroup
+ - resource
+ - selection
+ type: object
+ maxItems: 5
+ type: array
+ x-kubernetes-list-map-keys:
+ - resource
+ - apiGroup
+ x-kubernetes-list-type: map
+ type: object
managementState:
description: managementState indicates whether and how the operator
should manage the component
@@ -806,6 +937,132 @@ spec:
x-kubernetes-list-map-keys:
- type
x-kubernetes-list-type: map
+ managedBootImagesStatus:
+ description: |-
+ managedBootImagesStatus reflects what the latest cluster-validated boot image configuration is
+ and will be used by Machine Config Controller while performing boot image updates.
+ properties:
+ machineManagers:
+ description: |-
+ machineManagers can be used to register machine management resources for boot image updates. The Machine Config Operator
+ will watch for changes to this list. Only one entry is permitted per type of machine management resource.
+ items:
+ description: |-
+ MachineManager describes a target machine resource that is registered for boot image updates. It stores identifying information
+ such as the resource type and the API Group of the resource. It also provides granular control via the selection field.
+ properties:
+ apiGroup:
+ description: |-
+ apiGroup is name of the APIGroup that the machine management resource belongs to.
+ The only current valid value is machine.openshift.io.
+ machine.openshift.io means that the machine manager will only register resources that belong to OpenShift machine API group.
+ enum:
+ - machine.openshift.io
+ type: string
+ resource:
+ description: |-
+ resource is the machine management resource's type.
+ Valid values are machinesets and controlplanemachinesets.
+ machinesets means that the machine manager will only register resources of the kind MachineSet.
+ controlplanemachinesets means that the machine manager will only register resources of the kind ControlPlaneMachineSet.
+ enum:
+ - machinesets
+ type: string
+ selection:
+ description: selection allows granular control of the machine
+ management resources that will be registered for boot
+ image updates.
+ properties:
+ mode:
+ description: |-
+ mode determines how machine managers will be selected for updates.
+ Valid values are All, Partial and None.
+ All means that every resource matched by the machine manager will be updated.
+ Partial requires specified selector(s) and allows customisation of which resources matched by the machine manager will be updated.
+ Partial is not permitted for the controlplanemachinesets resource type as they are a singleton within the cluster.
+ None means that every resource matched by the machine manager will not be updated.
+ enum:
+ - All
+ - Partial
+ - None
+ type: string
+ partial:
+ description: |-
+ partial provides label selector(s) that can be used to match machine management resources.
+ Only permitted when mode is set to "Partial".
+ properties:
+ machineResourceSelector:
+ description: machineResourceSelector is a label
+ selector that can be used to select machine resources
+ like MachineSets.
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label
+ selector requirements. The requirements are
+ ANDed.
+ items:
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
+ properties:
+ key:
+ description: key is the label key that
+ the selector applies to.
+ type: string
+ operator:
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ x-kubernetes-list-type: atomic
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ required:
+ - machineResourceSelector
+ type: object
+ required:
+ - mode
+ type: object
+ x-kubernetes-validations:
+ - message: Partial is required when type is partial, and
+ forbidden otherwise
+ rule: 'has(self.mode) && self.mode == ''Partial'' ? has(self.partial)
+ : !has(self.partial)'
+ required:
+ - apiGroup
+ - resource
+ - selection
+ type: object
+ maxItems: 5
+ type: array
+ x-kubernetes-list-map-keys:
+ - resource
+ - apiGroup
+ x-kubernetes-list-type: map
+ type: object
nodeDisruptionPolicyStatus:
description: |-
nodeDisruptionPolicyStatus status reflects what the latest cluster-validated policies are,
diff --git a/operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/IrreconcilableMachineConfig.yaml b/operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/IrreconcilableMachineConfig.yaml
index a85697937cd..1f767a29545 100644
--- a/operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/IrreconcilableMachineConfig.yaml
+++ b/operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/IrreconcilableMachineConfig.yaml
@@ -106,6 +106,137 @@ spec:
- Trace
- TraceAll
type: string
+ managedBootImages:
+ description: |-
+ managedBootImages allows configuration for the management of boot images for machine
+ resources within the cluster. This configuration allows users to select resources that should
+ be updated to the latest boot images during cluster upgrades, ensuring that new machines
+ always boot with the current cluster version's boot image. When omitted, this means no opinion
+ and the platform is left to choose a reasonable default, which is subject to change over time.
+ The default for each machine manager mode is All for GCP and AWS platforms, and None for all
+ other platforms.
+ properties:
+ machineManagers:
+ description: |-
+ machineManagers can be used to register machine management resources for boot image updates. The Machine Config Operator
+ will watch for changes to this list. Only one entry is permitted per type of machine management resource.
+ items:
+ description: |-
+ MachineManager describes a target machine resource that is registered for boot image updates. It stores identifying information
+ such as the resource type and the API Group of the resource. It also provides granular control via the selection field.
+ properties:
+ apiGroup:
+ description: |-
+ apiGroup is name of the APIGroup that the machine management resource belongs to.
+ The only current valid value is machine.openshift.io.
+ machine.openshift.io means that the machine manager will only register resources that belong to OpenShift machine API group.
+ enum:
+ - machine.openshift.io
+ type: string
+ resource:
+ description: |-
+ resource is the machine management resource's type.
+ Valid values are machinesets and controlplanemachinesets.
+ machinesets means that the machine manager will only register resources of the kind MachineSet.
+ controlplanemachinesets means that the machine manager will only register resources of the kind ControlPlaneMachineSet.
+ enum:
+ - machinesets
+ type: string
+ selection:
+ description: selection allows granular control of the machine
+ management resources that will be registered for boot
+ image updates.
+ properties:
+ mode:
+ description: |-
+ mode determines how machine managers will be selected for updates.
+ Valid values are All, Partial and None.
+ All means that every resource matched by the machine manager will be updated.
+ Partial requires specified selector(s) and allows customisation of which resources matched by the machine manager will be updated.
+ Partial is not permitted for the controlplanemachinesets resource type as they are a singleton within the cluster.
+ None means that every resource matched by the machine manager will not be updated.
+ enum:
+ - All
+ - Partial
+ - None
+ type: string
+ partial:
+ description: |-
+ partial provides label selector(s) that can be used to match machine management resources.
+ Only permitted when mode is set to "Partial".
+ properties:
+ machineResourceSelector:
+ description: machineResourceSelector is a label
+ selector that can be used to select machine resources
+ like MachineSets.
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label
+ selector requirements. The requirements are
+ ANDed.
+ items:
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
+ properties:
+ key:
+ description: key is the label key that
+ the selector applies to.
+ type: string
+ operator:
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ x-kubernetes-list-type: atomic
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ required:
+ - machineResourceSelector
+ type: object
+ required:
+ - mode
+ type: object
+ x-kubernetes-validations:
+ - message: Partial is required when type is partial, and
+ forbidden otherwise
+ rule: 'has(self.mode) && self.mode == ''Partial'' ? has(self.partial)
+ : !has(self.partial)'
+ required:
+ - apiGroup
+ - resource
+ - selection
+ type: object
+ maxItems: 5
+ type: array
+ x-kubernetes-list-map-keys:
+ - resource
+ - apiGroup
+ x-kubernetes-list-type: map
+ type: object
managementState:
description: managementState indicates whether and how the operator
should manage the component
@@ -613,6 +744,132 @@ spec:
x-kubernetes-list-map-keys:
- type
x-kubernetes-list-type: map
+ managedBootImagesStatus:
+ description: |-
+ managedBootImagesStatus reflects what the latest cluster-validated boot image configuration is
+ and will be used by Machine Config Controller while performing boot image updates.
+ properties:
+ machineManagers:
+ description: |-
+ machineManagers can be used to register machine management resources for boot image updates. The Machine Config Operator
+ will watch for changes to this list. Only one entry is permitted per type of machine management resource.
+ items:
+ description: |-
+ MachineManager describes a target machine resource that is registered for boot image updates. It stores identifying information
+ such as the resource type and the API Group of the resource. It also provides granular control via the selection field.
+ properties:
+ apiGroup:
+ description: |-
+ apiGroup is name of the APIGroup that the machine management resource belongs to.
+ The only current valid value is machine.openshift.io.
+ machine.openshift.io means that the machine manager will only register resources that belong to OpenShift machine API group.
+ enum:
+ - machine.openshift.io
+ type: string
+ resource:
+ description: |-
+ resource is the machine management resource's type.
+ Valid values are machinesets and controlplanemachinesets.
+ machinesets means that the machine manager will only register resources of the kind MachineSet.
+ controlplanemachinesets means that the machine manager will only register resources of the kind ControlPlaneMachineSet.
+ enum:
+ - machinesets
+ type: string
+ selection:
+ description: selection allows granular control of the machine
+ management resources that will be registered for boot
+ image updates.
+ properties:
+ mode:
+ description: |-
+ mode determines how machine managers will be selected for updates.
+ Valid values are All, Partial and None.
+ All means that every resource matched by the machine manager will be updated.
+ Partial requires specified selector(s) and allows customisation of which resources matched by the machine manager will be updated.
+ Partial is not permitted for the controlplanemachinesets resource type as they are a singleton within the cluster.
+ None means that every resource matched by the machine manager will not be updated.
+ enum:
+ - All
+ - Partial
+ - None
+ type: string
+ partial:
+ description: |-
+ partial provides label selector(s) that can be used to match machine management resources.
+ Only permitted when mode is set to "Partial".
+ properties:
+ machineResourceSelector:
+ description: machineResourceSelector is a label
+ selector that can be used to select machine resources
+ like MachineSets.
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label
+ selector requirements. The requirements are
+ ANDed.
+ items:
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
+ properties:
+ key:
+ description: key is the label key that
+ the selector applies to.
+ type: string
+ operator:
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ x-kubernetes-list-type: atomic
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ required:
+ - machineResourceSelector
+ type: object
+ required:
+ - mode
+ type: object
+ x-kubernetes-validations:
+ - message: Partial is required when type is partial, and
+ forbidden otherwise
+ rule: 'has(self.mode) && self.mode == ''Partial'' ? has(self.partial)
+ : !has(self.partial)'
+ required:
+ - apiGroup
+ - resource
+ - selection
+ type: object
+ maxItems: 5
+ type: array
+ x-kubernetes-list-map-keys:
+ - resource
+ - apiGroup
+ x-kubernetes-list-type: map
+ type: object
nodeDisruptionPolicyStatus:
description: |-
nodeDisruptionPolicyStatus status reflects what the latest cluster-validated policies are,
diff --git a/operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/ManagedBootImages.yaml b/operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/ManagedBootImages.yaml
deleted file mode 100644
index 36594dde245..00000000000
--- a/operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/ManagedBootImages.yaml
+++ /dev/null
@@ -1,1253 +0,0 @@
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
- annotations:
- api-approved.openshift.io: https://github.com/openshift/api/pull/1453
- api.openshift.io/filename-cvo-runlevel: "0000_80"
- api.openshift.io/filename-operator: machine-config
- api.openshift.io/filename-ordering: "01"
- feature-gate.release.openshift.io/ManagedBootImages: "true"
- name: machineconfigurations.operator.openshift.io
-spec:
- group: operator.openshift.io
- names:
- kind: MachineConfiguration
- listKind: MachineConfigurationList
- plural: machineconfigurations
- singular: machineconfiguration
- scope: Cluster
- versions:
- - name: v1
- schema:
- openAPIV3Schema:
- description: |-
- MachineConfiguration provides information to configure an operator to manage Machine Configuration.
-
- Compatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer).
- properties:
- apiVersion:
- description: |-
- 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
- type: string
- kind:
- description: |-
- 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
- type: string
- metadata:
- type: object
- spec:
- description: spec is the specification of the desired behavior of the
- Machine Config Operator
- properties:
- failedRevisionLimit:
- description: |-
- failedRevisionLimit is the number of failed static pod installer revisions to keep on disk and in the api
- -1 = unlimited, 0 or unset = 5 (default)
- format: int32
- type: integer
- forceRedeploymentReason:
- description: |-
- forceRedeploymentReason can be used to force the redeployment of the operand by providing a unique string.
- This provides a mechanism to kick a previously failed deployment and provide a reason why you think it will work
- this time instead of failing again on the same config.
- type: string
- logLevel:
- default: Normal
- description: |-
- logLevel is an intent based logging for an overall component. It does not give fine grained control, but it is a
- simple way to manage coarse grained logging choices that operators have to interpret for their operands.
-
- Valid values are: "Normal", "Debug", "Trace", "TraceAll".
- Defaults to "Normal".
- enum:
- - ""
- - Normal
- - Debug
- - Trace
- - TraceAll
- type: string
- managedBootImages:
- description: |-
- managedBootImages allows configuration for the management of boot images for machine
- resources within the cluster. This configuration allows users to select resources that should
- be updated to the latest boot images during cluster upgrades, ensuring that new machines
- always boot with the current cluster version's boot image. When omitted, this means no opinion
- and the platform is left to choose a reasonable default, which is subject to change over time.
- The default for each machine manager mode is All for GCP and AWS platforms, and None for all
- other platforms.
- properties:
- machineManagers:
- description: |-
- machineManagers can be used to register machine management resources for boot image updates. The Machine Config Operator
- will watch for changes to this list. Only one entry is permitted per type of machine management resource.
- items:
- description: |-
- MachineManager describes a target machine resource that is registered for boot image updates. It stores identifying information
- such as the resource type and the API Group of the resource. It also provides granular control via the selection field.
- properties:
- apiGroup:
- description: |-
- apiGroup is name of the APIGroup that the machine management resource belongs to.
- The only current valid value is machine.openshift.io.
- machine.openshift.io means that the machine manager will only register resources that belong to OpenShift machine API group.
- enum:
- - machine.openshift.io
- type: string
- resource:
- description: |-
- resource is the machine management resource's type.
- Valid values are machinesets and controlplanemachinesets.
- machinesets means that the machine manager will only register resources of the kind MachineSet.
- controlplanemachinesets means that the machine manager will only register resources of the kind ControlPlaneMachineSet.
- enum:
- - machinesets
- type: string
- selection:
- description: selection allows granular control of the machine
- management resources that will be registered for boot
- image updates.
- properties:
- mode:
- description: |-
- mode determines how machine managers will be selected for updates.
- Valid values are All, Partial and None.
- All means that every resource matched by the machine manager will be updated.
- Partial requires specified selector(s) and allows customisation of which resources matched by the machine manager will be updated.
- Partial is not permitted for the controlplanemachinesets resource type as they are a singleton within the cluster.
- None means that every resource matched by the machine manager will not be updated.
- enum:
- - All
- - Partial
- - None
- type: string
- partial:
- description: |-
- partial provides label selector(s) that can be used to match machine management resources.
- Only permitted when mode is set to "Partial".
- properties:
- machineResourceSelector:
- description: machineResourceSelector is a label
- selector that can be used to select machine resources
- like MachineSets.
- properties:
- matchExpressions:
- description: matchExpressions is a list of label
- selector requirements. The requirements are
- ANDed.
- items:
- description: |-
- A label selector requirement is a selector that contains values, a key, and an operator that
- relates the key and values.
- properties:
- key:
- description: key is the label key that
- the selector applies to.
- type: string
- operator:
- description: |-
- operator represents a key's relationship to a set of values.
- Valid operators are In, NotIn, Exists and DoesNotExist.
- type: string
- values:
- description: |-
- values is an array of string values. If the operator is In or NotIn,
- the values array must be non-empty. If the operator is Exists or DoesNotExist,
- the values array must be empty. This array is replaced during a strategic
- merge patch.
- items:
- type: string
- type: array
- x-kubernetes-list-type: atomic
- required:
- - key
- - operator
- type: object
- type: array
- x-kubernetes-list-type: atomic
- matchLabels:
- additionalProperties:
- type: string
- description: |-
- matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions, whose key field is "key", the
- operator is "In", and the values array contains only "value". The requirements are ANDed.
- type: object
- type: object
- x-kubernetes-map-type: atomic
- required:
- - machineResourceSelector
- type: object
- required:
- - mode
- type: object
- x-kubernetes-validations:
- - message: Partial is required when type is partial, and
- forbidden otherwise
- rule: 'has(self.mode) && self.mode == ''Partial'' ? has(self.partial)
- : !has(self.partial)'
- required:
- - apiGroup
- - resource
- - selection
- type: object
- maxItems: 5
- type: array
- x-kubernetes-list-map-keys:
- - resource
- - apiGroup
- x-kubernetes-list-type: map
- type: object
- managementState:
- description: managementState indicates whether and how the operator
- should manage the component
- pattern: ^(Managed|Unmanaged|Force|Removed)$
- type: string
- nodeDisruptionPolicy:
- description: |-
- nodeDisruptionPolicy allows an admin to set granular node disruption actions for
- MachineConfig-based updates, such as drains, service reloads, etc. Specifying this will allow
- for less downtime when doing small configuration updates to the cluster. This configuration
- has no effect on cluster upgrades which will still incur node disruption where required.
- properties:
- files:
- description: |-
- files is a list of MachineConfig file definitions and actions to take to changes on those paths
- This list supports a maximum of 50 entries.
- items:
- description: NodeDisruptionPolicySpecFile is a file entry and
- corresponding actions to take and is used in the NodeDisruptionPolicyConfig
- object
- properties:
- actions:
- description: |-
- actions represents the series of commands to be executed on changes to the file at
- the corresponding file path. Actions will be applied in the order that
- they are set in this list. If there are other incoming changes to other MachineConfig
- entries in the same update that require a reboot, the reboot will supercede these actions.
- Valid actions are Reboot, Drain, Reload, DaemonReload and None.
- The Reboot action and the None action cannot be used in conjunction with any of the other actions.
- This list supports a maximum of 10 entries.
- items:
- properties:
- reload:
- description: reload specifies the service to reload,
- only valid if type is reload
- properties:
- serviceName:
- description: |-
- serviceName is the full name (e.g. crio.service) of the service to be reloaded
- Service names should be of the format ${NAME}${SERVICETYPE} and can up to 255 characters long.
- ${NAME} must be atleast 1 character long and can only consist of alphabets, digits, ":", "-", "_", ".", and "\".
- ${SERVICETYPE} must be one of ".service", ".socket", ".device", ".mount", ".automount", ".swap", ".target", ".path", ".timer", ".snapshot", ".slice" or ".scope".
- maxLength: 255
- type: string
- x-kubernetes-validations:
- - message: Invalid ${SERVICETYPE} in service name.
- Expected format is ${NAME}${SERVICETYPE},
- where ${SERVICETYPE} must be one of ".service",
- ".socket", ".device", ".mount", ".automount",
- ".swap", ".target", ".path", ".timer",".snapshot",
- ".slice" or ".scope".
- rule: self.matches('\\.(service|socket|device|mount|automount|swap|target|path|timer|snapshot|slice|scope)$')
- - message: Invalid ${NAME} in service name. Expected
- format is ${NAME}${SERVICETYPE}, where {NAME}
- must be atleast 1 character long and can only
- consist of alphabets, digits, ":", "-", "_",
- ".", and "\"
- rule: self.matches('^[a-zA-Z0-9:._\\\\-]+\\..')
- required:
- - serviceName
- type: object
- restart:
- description: restart specifies the service to restart,
- only valid if type is restart
- properties:
- serviceName:
- description: |-
- serviceName is the full name (e.g. crio.service) of the service to be restarted
- Service names should be of the format ${NAME}${SERVICETYPE} and can up to 255 characters long.
- ${NAME} must be atleast 1 character long and can only consist of alphabets, digits, ":", "-", "_", ".", and "\".
- ${SERVICETYPE} must be one of ".service", ".socket", ".device", ".mount", ".automount", ".swap", ".target", ".path", ".timer", ".snapshot", ".slice" or ".scope".
- maxLength: 255
- type: string
- x-kubernetes-validations:
- - message: Invalid ${SERVICETYPE} in service name.
- Expected format is ${NAME}${SERVICETYPE},
- where ${SERVICETYPE} must be one of ".service",
- ".socket", ".device", ".mount", ".automount",
- ".swap", ".target", ".path", ".timer",".snapshot",
- ".slice" or ".scope".
- rule: self.matches('\\.(service|socket|device|mount|automount|swap|target|path|timer|snapshot|slice|scope)$')
- - message: Invalid ${NAME} in service name. Expected
- format is ${NAME}${SERVICETYPE}, where {NAME}
- must be atleast 1 character long and can only
- consist of alphabets, digits, ":", "-", "_",
- ".", and "\"
- rule: self.matches('^[a-zA-Z0-9:._\\\\-]+\\..')
- required:
- - serviceName
- type: object
- type:
- description: |-
- type represents the commands that will be carried out if this NodeDisruptionPolicySpecActionType is executed
- Valid values are Reboot, Drain, Reload, Restart, DaemonReload and None.
- reload/restart requires a corresponding service target specified in the reload/restart field.
- Other values require no further configuration
- enum:
- - Reboot
- - Drain
- - Reload
- - Restart
- - DaemonReload
- - None
- type: string
- required:
- - type
- type: object
- x-kubernetes-validations:
- - message: reload is required when type is Reload, and
- forbidden otherwise
- rule: 'has(self.type) && self.type == ''Reload'' ? has(self.reload)
- : !has(self.reload)'
- - message: restart is required when type is Restart, and
- forbidden otherwise
- rule: 'has(self.type) && self.type == ''Restart'' ?
- has(self.restart) : !has(self.restart)'
- maxItems: 10
- type: array
- x-kubernetes-list-type: atomic
- x-kubernetes-validations:
- - message: Reboot action can only be specified standalone,
- as it will override any other actions
- rule: 'self.exists(x, x.type==''Reboot'') ? size(self)
- == 1 : true'
- - message: None action can only be specified standalone,
- as it will override any other actions
- rule: 'self.exists(x, x.type==''None'') ? size(self) ==
- 1 : true'
- path:
- description: |-
- path is the location of a file being managed through a MachineConfig.
- The Actions in the policy will apply to changes to the file at this path.
- type: string
- required:
- - actions
- - path
- type: object
- maxItems: 50
- type: array
- x-kubernetes-list-map-keys:
- - path
- x-kubernetes-list-type: map
- sshkey:
- description: |-
- sshkey maps to the ignition.sshkeys field in the MachineConfig object, definition an action for this
- will apply to all sshkey changes in the cluster
- properties:
- actions:
- description: |-
- actions represents the series of commands to be executed on changes to the file at
- the corresponding file path. Actions will be applied in the order that
- they are set in this list. If there are other incoming changes to other MachineConfig
- entries in the same update that require a reboot, the reboot will supercede these actions.
- Valid actions are Reboot, Drain, Reload, DaemonReload and None.
- The Reboot action and the None action cannot be used in conjunction with any of the other actions.
- This list supports a maximum of 10 entries.
- items:
- properties:
- reload:
- description: reload specifies the service to reload,
- only valid if type is reload
- properties:
- serviceName:
- description: |-
- serviceName is the full name (e.g. crio.service) of the service to be reloaded
- Service names should be of the format ${NAME}${SERVICETYPE} and can up to 255 characters long.
- ${NAME} must be atleast 1 character long and can only consist of alphabets, digits, ":", "-", "_", ".", and "\".
- ${SERVICETYPE} must be one of ".service", ".socket", ".device", ".mount", ".automount", ".swap", ".target", ".path", ".timer", ".snapshot", ".slice" or ".scope".
- maxLength: 255
- type: string
- x-kubernetes-validations:
- - message: Invalid ${SERVICETYPE} in service name.
- Expected format is ${NAME}${SERVICETYPE}, where
- ${SERVICETYPE} must be one of ".service", ".socket",
- ".device", ".mount", ".automount", ".swap",
- ".target", ".path", ".timer",".snapshot", ".slice"
- or ".scope".
- rule: self.matches('\\.(service|socket|device|mount|automount|swap|target|path|timer|snapshot|slice|scope)$')
- - message: Invalid ${NAME} in service name. Expected
- format is ${NAME}${SERVICETYPE}, where {NAME}
- must be atleast 1 character long and can only
- consist of alphabets, digits, ":", "-", "_",
- ".", and "\"
- rule: self.matches('^[a-zA-Z0-9:._\\\\-]+\\..')
- required:
- - serviceName
- type: object
- restart:
- description: restart specifies the service to restart,
- only valid if type is restart
- properties:
- serviceName:
- description: |-
- serviceName is the full name (e.g. crio.service) of the service to be restarted
- Service names should be of the format ${NAME}${SERVICETYPE} and can up to 255 characters long.
- ${NAME} must be atleast 1 character long and can only consist of alphabets, digits, ":", "-", "_", ".", and "\".
- ${SERVICETYPE} must be one of ".service", ".socket", ".device", ".mount", ".automount", ".swap", ".target", ".path", ".timer", ".snapshot", ".slice" or ".scope".
- maxLength: 255
- type: string
- x-kubernetes-validations:
- - message: Invalid ${SERVICETYPE} in service name.
- Expected format is ${NAME}${SERVICETYPE}, where
- ${SERVICETYPE} must be one of ".service", ".socket",
- ".device", ".mount", ".automount", ".swap",
- ".target", ".path", ".timer",".snapshot", ".slice"
- or ".scope".
- rule: self.matches('\\.(service|socket|device|mount|automount|swap|target|path|timer|snapshot|slice|scope)$')
- - message: Invalid ${NAME} in service name. Expected
- format is ${NAME}${SERVICETYPE}, where {NAME}
- must be atleast 1 character long and can only
- consist of alphabets, digits, ":", "-", "_",
- ".", and "\"
- rule: self.matches('^[a-zA-Z0-9:._\\\\-]+\\..')
- required:
- - serviceName
- type: object
- type:
- description: |-
- type represents the commands that will be carried out if this NodeDisruptionPolicySpecActionType is executed
- Valid values are Reboot, Drain, Reload, Restart, DaemonReload and None.
- reload/restart requires a corresponding service target specified in the reload/restart field.
- Other values require no further configuration
- enum:
- - Reboot
- - Drain
- - Reload
- - Restart
- - DaemonReload
- - None
- type: string
- required:
- - type
- type: object
- x-kubernetes-validations:
- - message: reload is required when type is Reload, and forbidden
- otherwise
- rule: 'has(self.type) && self.type == ''Reload'' ? has(self.reload)
- : !has(self.reload)'
- - message: restart is required when type is Restart, and
- forbidden otherwise
- rule: 'has(self.type) && self.type == ''Restart'' ? has(self.restart)
- : !has(self.restart)'
- maxItems: 10
- type: array
- x-kubernetes-list-type: atomic
- x-kubernetes-validations:
- - message: Reboot action can only be specified standalone,
- as it will override any other actions
- rule: 'self.exists(x, x.type==''Reboot'') ? size(self) ==
- 1 : true'
- - message: None action can only be specified standalone, as
- it will override any other actions
- rule: 'self.exists(x, x.type==''None'') ? size(self) ==
- 1 : true'
- required:
- - actions
- type: object
- units:
- description: |-
- units is a list MachineConfig unit definitions and actions to take on changes to those services
- This list supports a maximum of 50 entries.
- items:
- description: NodeDisruptionPolicySpecUnit is a systemd unit
- name and corresponding actions to take and is used in the
- NodeDisruptionPolicyConfig object
- properties:
- actions:
- description: |-
- actions represents the series of commands to be executed on changes to the file at
- the corresponding file path. Actions will be applied in the order that
- they are set in this list. If there are other incoming changes to other MachineConfig
- entries in the same update that require a reboot, the reboot will supercede these actions.
- Valid actions are Reboot, Drain, Reload, DaemonReload and None.
- The Reboot action and the None action cannot be used in conjunction with any of the other actions.
- This list supports a maximum of 10 entries.
- items:
- properties:
- reload:
- description: reload specifies the service to reload,
- only valid if type is reload
- properties:
- serviceName:
- description: |-
- serviceName is the full name (e.g. crio.service) of the service to be reloaded
- Service names should be of the format ${NAME}${SERVICETYPE} and can up to 255 characters long.
- ${NAME} must be atleast 1 character long and can only consist of alphabets, digits, ":", "-", "_", ".", and "\".
- ${SERVICETYPE} must be one of ".service", ".socket", ".device", ".mount", ".automount", ".swap", ".target", ".path", ".timer", ".snapshot", ".slice" or ".scope".
- maxLength: 255
- type: string
- x-kubernetes-validations:
- - message: Invalid ${SERVICETYPE} in service name.
- Expected format is ${NAME}${SERVICETYPE},
- where ${SERVICETYPE} must be one of ".service",
- ".socket", ".device", ".mount", ".automount",
- ".swap", ".target", ".path", ".timer",".snapshot",
- ".slice" or ".scope".
- rule: self.matches('\\.(service|socket|device|mount|automount|swap|target|path|timer|snapshot|slice|scope)$')
- - message: Invalid ${NAME} in service name. Expected
- format is ${NAME}${SERVICETYPE}, where {NAME}
- must be atleast 1 character long and can only
- consist of alphabets, digits, ":", "-", "_",
- ".", and "\"
- rule: self.matches('^[a-zA-Z0-9:._\\\\-]+\\..')
- required:
- - serviceName
- type: object
- restart:
- description: restart specifies the service to restart,
- only valid if type is restart
- properties:
- serviceName:
- description: |-
- serviceName is the full name (e.g. crio.service) of the service to be restarted
- Service names should be of the format ${NAME}${SERVICETYPE} and can up to 255 characters long.
- ${NAME} must be atleast 1 character long and can only consist of alphabets, digits, ":", "-", "_", ".", and "\".
- ${SERVICETYPE} must be one of ".service", ".socket", ".device", ".mount", ".automount", ".swap", ".target", ".path", ".timer", ".snapshot", ".slice" or ".scope".
- maxLength: 255
- type: string
- x-kubernetes-validations:
- - message: Invalid ${SERVICETYPE} in service name.
- Expected format is ${NAME}${SERVICETYPE},
- where ${SERVICETYPE} must be one of ".service",
- ".socket", ".device", ".mount", ".automount",
- ".swap", ".target", ".path", ".timer",".snapshot",
- ".slice" or ".scope".
- rule: self.matches('\\.(service|socket|device|mount|automount|swap|target|path|timer|snapshot|slice|scope)$')
- - message: Invalid ${NAME} in service name. Expected
- format is ${NAME}${SERVICETYPE}, where {NAME}
- must be atleast 1 character long and can only
- consist of alphabets, digits, ":", "-", "_",
- ".", and "\"
- rule: self.matches('^[a-zA-Z0-9:._\\\\-]+\\..')
- required:
- - serviceName
- type: object
- type:
- description: |-
- type represents the commands that will be carried out if this NodeDisruptionPolicySpecActionType is executed
- Valid values are Reboot, Drain, Reload, Restart, DaemonReload and None.
- reload/restart requires a corresponding service target specified in the reload/restart field.
- Other values require no further configuration
- enum:
- - Reboot
- - Drain
- - Reload
- - Restart
- - DaemonReload
- - None
- type: string
- required:
- - type
- type: object
- x-kubernetes-validations:
- - message: reload is required when type is Reload, and
- forbidden otherwise
- rule: 'has(self.type) && self.type == ''Reload'' ? has(self.reload)
- : !has(self.reload)'
- - message: restart is required when type is Restart, and
- forbidden otherwise
- rule: 'has(self.type) && self.type == ''Restart'' ?
- has(self.restart) : !has(self.restart)'
- maxItems: 10
- type: array
- x-kubernetes-list-type: atomic
- x-kubernetes-validations:
- - message: Reboot action can only be specified standalone,
- as it will override any other actions
- rule: 'self.exists(x, x.type==''Reboot'') ? size(self)
- == 1 : true'
- - message: None action can only be specified standalone,
- as it will override any other actions
- rule: 'self.exists(x, x.type==''None'') ? size(self) ==
- 1 : true'
- name:
- description: |-
- name represents the service name of a systemd service managed through a MachineConfig
- Actions specified will be applied for changes to the named service.
- Service names should be of the format ${NAME}${SERVICETYPE} and can up to 255 characters long.
- ${NAME} must be atleast 1 character long and can only consist of alphabets, digits, ":", "-", "_", ".", and "\".
- ${SERVICETYPE} must be one of ".service", ".socket", ".device", ".mount", ".automount", ".swap", ".target", ".path", ".timer", ".snapshot", ".slice" or ".scope".
- maxLength: 255
- type: string
- x-kubernetes-validations:
- - message: Invalid ${SERVICETYPE} in service name. Expected
- format is ${NAME}${SERVICETYPE}, where ${SERVICETYPE}
- must be one of ".service", ".socket", ".device", ".mount",
- ".automount", ".swap", ".target", ".path", ".timer",".snapshot",
- ".slice" or ".scope".
- rule: self.matches('\\.(service|socket|device|mount|automount|swap|target|path|timer|snapshot|slice|scope)$')
- - message: Invalid ${NAME} in service name. Expected format
- is ${NAME}${SERVICETYPE}, where {NAME} must be atleast
- 1 character long and can only consist of alphabets,
- digits, ":", "-", "_", ".", and "\"
- rule: self.matches('^[a-zA-Z0-9:._\\\\-]+\\..')
- required:
- - actions
- - name
- type: object
- maxItems: 50
- type: array
- x-kubernetes-list-map-keys:
- - name
- x-kubernetes-list-type: map
- type: object
- observedConfig:
- description: |-
- observedConfig holds a sparse config that controller has observed from the cluster state. It exists in spec because
- it is an input to the level for the operator
- nullable: true
- type: object
- x-kubernetes-preserve-unknown-fields: true
- operatorLogLevel:
- default: Normal
- description: |-
- operatorLogLevel is an intent based logging for the operator itself. It does not give fine grained control, but it is a
- simple way to manage coarse grained logging choices that operators have to interpret for themselves.
-
- Valid values are: "Normal", "Debug", "Trace", "TraceAll".
- Defaults to "Normal".
- enum:
- - ""
- - Normal
- - Debug
- - Trace
- - TraceAll
- type: string
- succeededRevisionLimit:
- description: |-
- succeededRevisionLimit is the number of successful static pod installer revisions to keep on disk and in the api
- -1 = unlimited, 0 or unset = 5 (default)
- format: int32
- type: integer
- unsupportedConfigOverrides:
- description: |-
- unsupportedConfigOverrides overrides the final configuration that was computed by the operator.
- Red Hat does not support the use of this field.
- Misuse of this field could lead to unexpected behavior or conflict with other configuration options.
- Seek guidance from the Red Hat support before using this field.
- Use of this property blocks cluster upgrades, it must be removed before upgrading your cluster.
- nullable: true
- type: object
- x-kubernetes-preserve-unknown-fields: true
- type: object
- status:
- description: status is the most recently observed status of the Machine
- Config Operator
- properties:
- conditions:
- description: conditions is a list of conditions and their status
- items:
- description: Condition contains details for one aspect of the current
- state of this API Resource.
- properties:
- lastTransitionTime:
- description: |-
- lastTransitionTime is the last time the condition transitioned from one status to another.
- This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
- format: date-time
- type: string
- message:
- description: |-
- message is a human readable message indicating details about the transition.
- This may be an empty string.
- maxLength: 32768
- type: string
- observedGeneration:
- description: |-
- observedGeneration represents the .metadata.generation that the condition was set based upon.
- For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
- with respect to the current state of the instance.
- format: int64
- minimum: 0
- type: integer
- reason:
- description: |-
- reason contains a programmatic identifier indicating the reason for the condition's last transition.
- Producers of specific condition types may define expected values and meanings for this field,
- and whether the values are considered a guaranteed API.
- The value should be a CamelCase string.
- This field may not be empty.
- maxLength: 1024
- minLength: 1
- pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
- type: string
- status:
- description: status of the condition, one of True, False, Unknown.
- enum:
- - "True"
- - "False"
- - Unknown
- type: string
- type:
- description: type of condition in CamelCase or in foo.example.com/CamelCase.
- 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
- required:
- - lastTransitionTime
- - message
- - reason
- - status
- - type
- type: object
- type: array
- x-kubernetes-list-map-keys:
- - type
- x-kubernetes-list-type: map
- managedBootImagesStatus:
- description: |-
- managedBootImagesStatus reflects what the latest cluster-validated boot image configuration is
- and will be used by Machine Config Controller while performing boot image updates.
- properties:
- machineManagers:
- description: |-
- machineManagers can be used to register machine management resources for boot image updates. The Machine Config Operator
- will watch for changes to this list. Only one entry is permitted per type of machine management resource.
- items:
- description: |-
- MachineManager describes a target machine resource that is registered for boot image updates. It stores identifying information
- such as the resource type and the API Group of the resource. It also provides granular control via the selection field.
- properties:
- apiGroup:
- description: |-
- apiGroup is name of the APIGroup that the machine management resource belongs to.
- The only current valid value is machine.openshift.io.
- machine.openshift.io means that the machine manager will only register resources that belong to OpenShift machine API group.
- enum:
- - machine.openshift.io
- type: string
- resource:
- description: |-
- resource is the machine management resource's type.
- Valid values are machinesets and controlplanemachinesets.
- machinesets means that the machine manager will only register resources of the kind MachineSet.
- controlplanemachinesets means that the machine manager will only register resources of the kind ControlPlaneMachineSet.
- enum:
- - machinesets
- type: string
- selection:
- description: selection allows granular control of the machine
- management resources that will be registered for boot
- image updates.
- properties:
- mode:
- description: |-
- mode determines how machine managers will be selected for updates.
- Valid values are All, Partial and None.
- All means that every resource matched by the machine manager will be updated.
- Partial requires specified selector(s) and allows customisation of which resources matched by the machine manager will be updated.
- Partial is not permitted for the controlplanemachinesets resource type as they are a singleton within the cluster.
- None means that every resource matched by the machine manager will not be updated.
- enum:
- - All
- - Partial
- - None
- type: string
- partial:
- description: |-
- partial provides label selector(s) that can be used to match machine management resources.
- Only permitted when mode is set to "Partial".
- properties:
- machineResourceSelector:
- description: machineResourceSelector is a label
- selector that can be used to select machine resources
- like MachineSets.
- properties:
- matchExpressions:
- description: matchExpressions is a list of label
- selector requirements. The requirements are
- ANDed.
- items:
- description: |-
- A label selector requirement is a selector that contains values, a key, and an operator that
- relates the key and values.
- properties:
- key:
- description: key is the label key that
- the selector applies to.
- type: string
- operator:
- description: |-
- operator represents a key's relationship to a set of values.
- Valid operators are In, NotIn, Exists and DoesNotExist.
- type: string
- values:
- description: |-
- values is an array of string values. If the operator is In or NotIn,
- the values array must be non-empty. If the operator is Exists or DoesNotExist,
- the values array must be empty. This array is replaced during a strategic
- merge patch.
- items:
- type: string
- type: array
- x-kubernetes-list-type: atomic
- required:
- - key
- - operator
- type: object
- type: array
- x-kubernetes-list-type: atomic
- matchLabels:
- additionalProperties:
- type: string
- description: |-
- matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions, whose key field is "key", the
- operator is "In", and the values array contains only "value". The requirements are ANDed.
- type: object
- type: object
- x-kubernetes-map-type: atomic
- required:
- - machineResourceSelector
- type: object
- required:
- - mode
- type: object
- x-kubernetes-validations:
- - message: Partial is required when type is partial, and
- forbidden otherwise
- rule: 'has(self.mode) && self.mode == ''Partial'' ? has(self.partial)
- : !has(self.partial)'
- required:
- - apiGroup
- - resource
- - selection
- type: object
- maxItems: 5
- type: array
- x-kubernetes-list-map-keys:
- - resource
- - apiGroup
- x-kubernetes-list-type: map
- type: object
- nodeDisruptionPolicyStatus:
- description: |-
- nodeDisruptionPolicyStatus status reflects what the latest cluster-validated policies are,
- and will be used by the Machine Config Daemon during future node updates.
- properties:
- clusterPolicies:
- description: clusterPolicies is a merge of cluster default and
- user provided node disruption policies.
- properties:
- files:
- description: files is a list of MachineConfig file definitions
- and actions to take to changes on those paths
- items:
- description: NodeDisruptionPolicyStatusFile is a file entry
- and corresponding actions to take and is used in the NodeDisruptionPolicyClusterStatus
- object
- properties:
- actions:
- description: |-
- actions represents the series of commands to be executed on changes to the file at
- the corresponding file path. Actions will be applied in the order that
- they are set in this list. If there are other incoming changes to other MachineConfig
- entries in the same update that require a reboot, the reboot will supercede these actions.
- Valid actions are Reboot, Drain, Reload, DaemonReload and None.
- The Reboot action and the None action cannot be used in conjunction with any of the other actions.
- This list supports a maximum of 10 entries.
- items:
- properties:
- reload:
- description: reload specifies the service to reload,
- only valid if type is reload
- properties:
- serviceName:
- description: |-
- serviceName is the full name (e.g. crio.service) of the service to be reloaded
- Service names should be of the format ${NAME}${SERVICETYPE} and can up to 255 characters long.
- ${NAME} must be atleast 1 character long and can only consist of alphabets, digits, ":", "-", "_", ".", and "\".
- ${SERVICETYPE} must be one of ".service", ".socket", ".device", ".mount", ".automount", ".swap", ".target", ".path", ".timer", ".snapshot", ".slice" or ".scope".
- maxLength: 255
- type: string
- x-kubernetes-validations:
- - message: Invalid ${SERVICETYPE} in service
- name. Expected format is ${NAME}${SERVICETYPE},
- where ${SERVICETYPE} must be one of ".service",
- ".socket", ".device", ".mount", ".automount",
- ".swap", ".target", ".path", ".timer",".snapshot",
- ".slice" or ".scope".
- rule: self.matches('\\.(service|socket|device|mount|automount|swap|target|path|timer|snapshot|slice|scope)$')
- - message: Invalid ${NAME} in service name.
- Expected format is ${NAME}${SERVICETYPE},
- where {NAME} must be atleast 1 character
- long and can only consist of alphabets,
- digits, ":", "-", "_", ".", and "\"
- rule: self.matches('^[a-zA-Z0-9:._\\\\-]+\\..')
- required:
- - serviceName
- type: object
- restart:
- description: restart specifies the service to
- restart, only valid if type is restart
- properties:
- serviceName:
- description: |-
- serviceName is the full name (e.g. crio.service) of the service to be restarted
- Service names should be of the format ${NAME}${SERVICETYPE} and can up to 255 characters long.
- ${NAME} must be atleast 1 character long and can only consist of alphabets, digits, ":", "-", "_", ".", and "\".
- ${SERVICETYPE} must be one of ".service", ".socket", ".device", ".mount", ".automount", ".swap", ".target", ".path", ".timer", ".snapshot", ".slice" or ".scope".
- maxLength: 255
- type: string
- x-kubernetes-validations:
- - message: Invalid ${SERVICETYPE} in service
- name. Expected format is ${NAME}${SERVICETYPE},
- where ${SERVICETYPE} must be one of ".service",
- ".socket", ".device", ".mount", ".automount",
- ".swap", ".target", ".path", ".timer",".snapshot",
- ".slice" or ".scope".
- rule: self.matches('\\.(service|socket|device|mount|automount|swap|target|path|timer|snapshot|slice|scope)$')
- - message: Invalid ${NAME} in service name.
- Expected format is ${NAME}${SERVICETYPE},
- where {NAME} must be atleast 1 character
- long and can only consist of alphabets,
- digits, ":", "-", "_", ".", and "\"
- rule: self.matches('^[a-zA-Z0-9:._\\\\-]+\\..')
- required:
- - serviceName
- type: object
- type:
- description: |-
- type represents the commands that will be carried out if this NodeDisruptionPolicyStatusActionType is executed
- Valid values are Reboot, Drain, Reload, Restart, DaemonReload, None and Special.
- reload/restart requires a corresponding service target specified in the reload/restart field.
- Other values require no further configuration
- enum:
- - Reboot
- - Drain
- - Reload
- - Restart
- - DaemonReload
- - None
- - Special
- type: string
- required:
- - type
- type: object
- x-kubernetes-validations:
- - message: reload is required when type is Reload,
- and forbidden otherwise
- rule: 'has(self.type) && self.type == ''Reload''
- ? has(self.reload) : !has(self.reload)'
- - message: restart is required when type is Restart,
- and forbidden otherwise
- rule: 'has(self.type) && self.type == ''Restart''
- ? has(self.restart) : !has(self.restart)'
- maxItems: 10
- type: array
- x-kubernetes-list-type: atomic
- x-kubernetes-validations:
- - message: Reboot action can only be specified standalone,
- as it will override any other actions
- rule: 'self.exists(x, x.type==''Reboot'') ? size(self)
- == 1 : true'
- - message: None action can only be specified standalone,
- as it will override any other actions
- rule: 'self.exists(x, x.type==''None'') ? size(self)
- == 1 : true'
- path:
- description: |-
- path is the location of a file being managed through a MachineConfig.
- The Actions in the policy will apply to changes to the file at this path.
- type: string
- required:
- - actions
- - path
- type: object
- maxItems: 100
- type: array
- x-kubernetes-list-map-keys:
- - path
- x-kubernetes-list-type: map
- sshkey:
- description: sshkey is the overall sshkey MachineConfig definition
- properties:
- actions:
- description: |-
- actions represents the series of commands to be executed on changes to the file at
- the corresponding file path. Actions will be applied in the order that
- they are set in this list. If there are other incoming changes to other MachineConfig
- entries in the same update that require a reboot, the reboot will supercede these actions.
- Valid actions are Reboot, Drain, Reload, DaemonReload and None.
- The Reboot action and the None action cannot be used in conjunction with any of the other actions.
- This list supports a maximum of 10 entries.
- items:
- properties:
- reload:
- description: reload specifies the service to reload,
- only valid if type is reload
- properties:
- serviceName:
- description: |-
- serviceName is the full name (e.g. crio.service) of the service to be reloaded
- Service names should be of the format ${NAME}${SERVICETYPE} and can up to 255 characters long.
- ${NAME} must be atleast 1 character long and can only consist of alphabets, digits, ":", "-", "_", ".", and "\".
- ${SERVICETYPE} must be one of ".service", ".socket", ".device", ".mount", ".automount", ".swap", ".target", ".path", ".timer", ".snapshot", ".slice" or ".scope".
- maxLength: 255
- type: string
- x-kubernetes-validations:
- - message: Invalid ${SERVICETYPE} in service
- name. Expected format is ${NAME}${SERVICETYPE},
- where ${SERVICETYPE} must be one of ".service",
- ".socket", ".device", ".mount", ".automount",
- ".swap", ".target", ".path", ".timer",".snapshot",
- ".slice" or ".scope".
- rule: self.matches('\\.(service|socket|device|mount|automount|swap|target|path|timer|snapshot|slice|scope)$')
- - message: Invalid ${NAME} in service name.
- Expected format is ${NAME}${SERVICETYPE},
- where {NAME} must be atleast 1 character
- long and can only consist of alphabets,
- digits, ":", "-", "_", ".", and "\"
- rule: self.matches('^[a-zA-Z0-9:._\\\\-]+\\..')
- required:
- - serviceName
- type: object
- restart:
- description: restart specifies the service to restart,
- only valid if type is restart
- properties:
- serviceName:
- description: |-
- serviceName is the full name (e.g. crio.service) of the service to be restarted
- Service names should be of the format ${NAME}${SERVICETYPE} and can up to 255 characters long.
- ${NAME} must be atleast 1 character long and can only consist of alphabets, digits, ":", "-", "_", ".", and "\".
- ${SERVICETYPE} must be one of ".service", ".socket", ".device", ".mount", ".automount", ".swap", ".target", ".path", ".timer", ".snapshot", ".slice" or ".scope".
- maxLength: 255
- type: string
- x-kubernetes-validations:
- - message: Invalid ${SERVICETYPE} in service
- name. Expected format is ${NAME}${SERVICETYPE},
- where ${SERVICETYPE} must be one of ".service",
- ".socket", ".device", ".mount", ".automount",
- ".swap", ".target", ".path", ".timer",".snapshot",
- ".slice" or ".scope".
- rule: self.matches('\\.(service|socket|device|mount|automount|swap|target|path|timer|snapshot|slice|scope)$')
- - message: Invalid ${NAME} in service name.
- Expected format is ${NAME}${SERVICETYPE},
- where {NAME} must be atleast 1 character
- long and can only consist of alphabets,
- digits, ":", "-", "_", ".", and "\"
- rule: self.matches('^[a-zA-Z0-9:._\\\\-]+\\..')
- required:
- - serviceName
- type: object
- type:
- description: |-
- type represents the commands that will be carried out if this NodeDisruptionPolicyStatusActionType is executed
- Valid values are Reboot, Drain, Reload, Restart, DaemonReload, None and Special.
- reload/restart requires a corresponding service target specified in the reload/restart field.
- Other values require no further configuration
- enum:
- - Reboot
- - Drain
- - Reload
- - Restart
- - DaemonReload
- - None
- - Special
- type: string
- required:
- - type
- type: object
- x-kubernetes-validations:
- - message: reload is required when type is Reload, and
- forbidden otherwise
- rule: 'has(self.type) && self.type == ''Reload'' ?
- has(self.reload) : !has(self.reload)'
- - message: restart is required when type is Restart,
- and forbidden otherwise
- rule: 'has(self.type) && self.type == ''Restart''
- ? has(self.restart) : !has(self.restart)'
- maxItems: 10
- type: array
- x-kubernetes-list-type: atomic
- x-kubernetes-validations:
- - message: Reboot action can only be specified standalone,
- as it will override any other actions
- rule: 'self.exists(x, x.type==''Reboot'') ? size(self)
- == 1 : true'
- - message: None action can only be specified standalone,
- as it will override any other actions
- rule: 'self.exists(x, x.type==''None'') ? size(self)
- == 1 : true'
- required:
- - actions
- type: object
- units:
- description: units is a list MachineConfig unit definitions
- and actions to take on changes to those services
- items:
- description: NodeDisruptionPolicyStatusUnit is a systemd
- unit name and corresponding actions to take and is used
- in the NodeDisruptionPolicyClusterStatus object
- properties:
- actions:
- description: |-
- actions represents the series of commands to be executed on changes to the file at
- the corresponding file path. Actions will be applied in the order that
- they are set in this list. If there are other incoming changes to other MachineConfig
- entries in the same update that require a reboot, the reboot will supercede these actions.
- Valid actions are Reboot, Drain, Reload, DaemonReload and None.
- The Reboot action and the None action cannot be used in conjunction with any of the other actions.
- This list supports a maximum of 10 entries.
- items:
- properties:
- reload:
- description: reload specifies the service to reload,
- only valid if type is reload
- properties:
- serviceName:
- description: |-
- serviceName is the full name (e.g. crio.service) of the service to be reloaded
- Service names should be of the format ${NAME}${SERVICETYPE} and can up to 255 characters long.
- ${NAME} must be atleast 1 character long and can only consist of alphabets, digits, ":", "-", "_", ".", and "\".
- ${SERVICETYPE} must be one of ".service", ".socket", ".device", ".mount", ".automount", ".swap", ".target", ".path", ".timer", ".snapshot", ".slice" or ".scope".
- maxLength: 255
- type: string
- x-kubernetes-validations:
- - message: Invalid ${SERVICETYPE} in service
- name. Expected format is ${NAME}${SERVICETYPE},
- where ${SERVICETYPE} must be one of ".service",
- ".socket", ".device", ".mount", ".automount",
- ".swap", ".target", ".path", ".timer",".snapshot",
- ".slice" or ".scope".
- rule: self.matches('\\.(service|socket|device|mount|automount|swap|target|path|timer|snapshot|slice|scope)$')
- - message: Invalid ${NAME} in service name.
- Expected format is ${NAME}${SERVICETYPE},
- where {NAME} must be atleast 1 character
- long and can only consist of alphabets,
- digits, ":", "-", "_", ".", and "\"
- rule: self.matches('^[a-zA-Z0-9:._\\\\-]+\\..')
- required:
- - serviceName
- type: object
- restart:
- description: restart specifies the service to
- restart, only valid if type is restart
- properties:
- serviceName:
- description: |-
- serviceName is the full name (e.g. crio.service) of the service to be restarted
- Service names should be of the format ${NAME}${SERVICETYPE} and can up to 255 characters long.
- ${NAME} must be atleast 1 character long and can only consist of alphabets, digits, ":", "-", "_", ".", and "\".
- ${SERVICETYPE} must be one of ".service", ".socket", ".device", ".mount", ".automount", ".swap", ".target", ".path", ".timer", ".snapshot", ".slice" or ".scope".
- maxLength: 255
- type: string
- x-kubernetes-validations:
- - message: Invalid ${SERVICETYPE} in service
- name. Expected format is ${NAME}${SERVICETYPE},
- where ${SERVICETYPE} must be one of ".service",
- ".socket", ".device", ".mount", ".automount",
- ".swap", ".target", ".path", ".timer",".snapshot",
- ".slice" or ".scope".
- rule: self.matches('\\.(service|socket|device|mount|automount|swap|target|path|timer|snapshot|slice|scope)$')
- - message: Invalid ${NAME} in service name.
- Expected format is ${NAME}${SERVICETYPE},
- where {NAME} must be atleast 1 character
- long and can only consist of alphabets,
- digits, ":", "-", "_", ".", and "\"
- rule: self.matches('^[a-zA-Z0-9:._\\\\-]+\\..')
- required:
- - serviceName
- type: object
- type:
- description: |-
- type represents the commands that will be carried out if this NodeDisruptionPolicyStatusActionType is executed
- Valid values are Reboot, Drain, Reload, Restart, DaemonReload, None and Special.
- reload/restart requires a corresponding service target specified in the reload/restart field.
- Other values require no further configuration
- enum:
- - Reboot
- - Drain
- - Reload
- - Restart
- - DaemonReload
- - None
- - Special
- type: string
- required:
- - type
- type: object
- x-kubernetes-validations:
- - message: reload is required when type is Reload,
- and forbidden otherwise
- rule: 'has(self.type) && self.type == ''Reload''
- ? has(self.reload) : !has(self.reload)'
- - message: restart is required when type is Restart,
- and forbidden otherwise
- rule: 'has(self.type) && self.type == ''Restart''
- ? has(self.restart) : !has(self.restart)'
- maxItems: 10
- type: array
- x-kubernetes-list-type: atomic
- x-kubernetes-validations:
- - message: Reboot action can only be specified standalone,
- as it will override any other actions
- rule: 'self.exists(x, x.type==''Reboot'') ? size(self)
- == 1 : true'
- - message: None action can only be specified standalone,
- as it will override any other actions
- rule: 'self.exists(x, x.type==''None'') ? size(self)
- == 1 : true'
- name:
- description: |-
- name represents the service name of a systemd service managed through a MachineConfig
- Actions specified will be applied for changes to the named service.
- Service names should be of the format ${NAME}${SERVICETYPE} and can up to 255 characters long.
- ${NAME} must be atleast 1 character long and can only consist of alphabets, digits, ":", "-", "_", ".", and "\".
- ${SERVICETYPE} must be one of ".service", ".socket", ".device", ".mount", ".automount", ".swap", ".target", ".path", ".timer", ".snapshot", ".slice" or ".scope".
- maxLength: 255
- type: string
- x-kubernetes-validations:
- - message: Invalid ${SERVICETYPE} in service name. Expected
- format is ${NAME}${SERVICETYPE}, where ${SERVICETYPE}
- must be one of ".service", ".socket", ".device",
- ".mount", ".automount", ".swap", ".target", ".path",
- ".timer",".snapshot", ".slice" or ".scope".
- rule: self.matches('\\.(service|socket|device|mount|automount|swap|target|path|timer|snapshot|slice|scope)$')
- - message: Invalid ${NAME} in service name. Expected
- format is ${NAME}${SERVICETYPE}, where {NAME} must
- be atleast 1 character long and can only consist
- of alphabets, digits, ":", "-", "_", ".", and "\"
- rule: self.matches('^[a-zA-Z0-9:._\\\\-]+\\..')
- required:
- - actions
- - name
- type: object
- maxItems: 100
- type: array
- x-kubernetes-list-map-keys:
- - name
- x-kubernetes-list-type: map
- type: object
- type: object
- observedGeneration:
- description: observedGeneration is the last generation change you've
- dealt with
- format: int64
- type: integer
- type: object
- required:
- - spec
- type: object
- served: true
- storage: true
- subresources:
- status: {}
diff --git a/operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/ManagedBootImages+ManagedBootImagesCPMS.yaml b/operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/ManagedBootImagesCPMS.yaml
similarity index 99%
rename from operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/ManagedBootImages+ManagedBootImagesCPMS.yaml
rename to operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/ManagedBootImagesCPMS.yaml
index cff91c39a91..c1d6b1f3ee8 100644
--- a/operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/ManagedBootImages+ManagedBootImagesCPMS.yaml
+++ b/operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/ManagedBootImagesCPMS.yaml
@@ -6,7 +6,6 @@ metadata:
api.openshift.io/filename-cvo-runlevel: "0000_80"
api.openshift.io/filename-operator: machine-config
api.openshift.io/filename-ordering: "01"
- feature-gate.release.openshift.io/ManagedBootImages: "true"
feature-gate.release.openshift.io/ManagedBootImagesCPMS: "true"
name: machineconfigurations.operator.openshift.io
spec:
diff --git a/payload-manifests/featuregates/featureGate-4-10-Hypershift-Default.yaml b/payload-manifests/featuregates/featureGate-4-10-Hypershift-Default.yaml
index db59d186a29..f7094f8a7c7 100644
--- a/payload-manifests/featuregates/featureGate-4-10-Hypershift-Default.yaml
+++ b/payload-manifests/featuregates/featureGate-4-10-Hypershift-Default.yaml
@@ -319,21 +319,9 @@
{
"name": "MachineConfigNodes"
},
- {
- "name": "ManagedBootImages"
- },
- {
- "name": "ManagedBootImagesAWS"
- },
- {
- "name": "ManagedBootImagesAzure"
- },
{
"name": "ManagedBootImagesCPMS"
},
- {
- "name": "ManagedBootImagesvSphere"
- },
{
"name": "MetricsCollectionProfiles"
},
diff --git a/payload-manifests/featuregates/featureGate-4-10-Hypershift-DevPreviewNoUpgrade.yaml b/payload-manifests/featuregates/featureGate-4-10-Hypershift-DevPreviewNoUpgrade.yaml
index bcb089a53bf..731bb6a6276 100644
--- a/payload-manifests/featuregates/featureGate-4-10-Hypershift-DevPreviewNoUpgrade.yaml
+++ b/payload-manifests/featuregates/featureGate-4-10-Hypershift-DevPreviewNoUpgrade.yaml
@@ -270,21 +270,9 @@
{
"name": "MachineConfigNodes"
},
- {
- "name": "ManagedBootImages"
- },
- {
- "name": "ManagedBootImagesAWS"
- },
- {
- "name": "ManagedBootImagesAzure"
- },
{
"name": "ManagedBootImagesCPMS"
},
- {
- "name": "ManagedBootImagesvSphere"
- },
{
"name": "MaxUnavailableStatefulSet"
},
diff --git a/payload-manifests/featuregates/featureGate-4-10-Hypershift-OKD.yaml b/payload-manifests/featuregates/featureGate-4-10-Hypershift-OKD.yaml
index 332c549cafa..11a47bb29fc 100644
--- a/payload-manifests/featuregates/featureGate-4-10-Hypershift-OKD.yaml
+++ b/payload-manifests/featuregates/featureGate-4-10-Hypershift-OKD.yaml
@@ -321,21 +321,9 @@
{
"name": "MachineConfigNodes"
},
- {
- "name": "ManagedBootImages"
- },
- {
- "name": "ManagedBootImagesAWS"
- },
- {
- "name": "ManagedBootImagesAzure"
- },
{
"name": "ManagedBootImagesCPMS"
},
- {
- "name": "ManagedBootImagesvSphere"
- },
{
"name": "MetricsCollectionProfiles"
},
diff --git a/payload-manifests/featuregates/featureGate-4-10-Hypershift-TechPreviewNoUpgrade.yaml b/payload-manifests/featuregates/featureGate-4-10-Hypershift-TechPreviewNoUpgrade.yaml
index dcf160c5417..6a436039fb5 100644
--- a/payload-manifests/featuregates/featureGate-4-10-Hypershift-TechPreviewNoUpgrade.yaml
+++ b/payload-manifests/featuregates/featureGate-4-10-Hypershift-TechPreviewNoUpgrade.yaml
@@ -276,21 +276,9 @@
{
"name": "MachineConfigNodes"
},
- {
- "name": "ManagedBootImages"
- },
- {
- "name": "ManagedBootImagesAWS"
- },
- {
- "name": "ManagedBootImagesAzure"
- },
{
"name": "ManagedBootImagesCPMS"
},
- {
- "name": "ManagedBootImagesvSphere"
- },
{
"name": "MaxUnavailableStatefulSet"
},
diff --git a/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-Default.yaml b/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-Default.yaml
index 72e73eb4233..f019691868b 100644
--- a/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-Default.yaml
+++ b/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-Default.yaml
@@ -310,21 +310,9 @@
{
"name": "MachineConfigNodes"
},
- {
- "name": "ManagedBootImages"
- },
- {
- "name": "ManagedBootImagesAWS"
- },
- {
- "name": "ManagedBootImagesAzure"
- },
{
"name": "ManagedBootImagesCPMS"
},
- {
- "name": "ManagedBootImagesvSphere"
- },
{
"name": "MetricsCollectionProfiles"
},
diff --git a/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-DevPreviewNoUpgrade.yaml b/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-DevPreviewNoUpgrade.yaml
index f29f4947246..a086aa91ec2 100644
--- a/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-DevPreviewNoUpgrade.yaml
+++ b/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-DevPreviewNoUpgrade.yaml
@@ -249,21 +249,9 @@
{
"name": "MachineConfigNodes"
},
- {
- "name": "ManagedBootImages"
- },
- {
- "name": "ManagedBootImagesAWS"
- },
- {
- "name": "ManagedBootImagesAzure"
- },
{
"name": "ManagedBootImagesCPMS"
},
- {
- "name": "ManagedBootImagesvSphere"
- },
{
"name": "MaxUnavailableStatefulSet"
},
diff --git a/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml b/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml
index 7f29f0d1a1a..c52f8133f2e 100644
--- a/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml
+++ b/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml
@@ -312,21 +312,9 @@
{
"name": "MachineConfigNodes"
},
- {
- "name": "ManagedBootImages"
- },
- {
- "name": "ManagedBootImagesAWS"
- },
- {
- "name": "ManagedBootImagesAzure"
- },
{
"name": "ManagedBootImagesCPMS"
},
- {
- "name": "ManagedBootImagesvSphere"
- },
{
"name": "MetricsCollectionProfiles"
},
diff --git a/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-TechPreviewNoUpgrade.yaml b/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-TechPreviewNoUpgrade.yaml
index be6d15233f7..2da2e7d26b1 100644
--- a/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-TechPreviewNoUpgrade.yaml
+++ b/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-TechPreviewNoUpgrade.yaml
@@ -255,21 +255,9 @@
{
"name": "MachineConfigNodes"
},
- {
- "name": "ManagedBootImages"
- },
- {
- "name": "ManagedBootImagesAWS"
- },
- {
- "name": "ManagedBootImagesAzure"
- },
{
"name": "ManagedBootImagesCPMS"
},
- {
- "name": "ManagedBootImagesvSphere"
- },
{
"name": "MaxUnavailableStatefulSet"
},