Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 19 additions & 1 deletion config/v1/types_cluster_version.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import (
// +kubebuilder:subresource:status
// +kubebuilder:resource:path=clusterversions,scope=Cluster
// +kubebuilder:validation:XValidation:rule="has(self.spec.capabilities) && has(self.spec.capabilities.additionalEnabledCapabilities) && self.spec.capabilities.baselineCapabilitySet == 'None' && 'marketplace' in self.spec.capabilities.additionalEnabledCapabilities ? 'OperatorLifecycleManager' in self.spec.capabilities.additionalEnabledCapabilities || (has(self.status) && has(self.status.capabilities) && has(self.status.capabilities.enabledCapabilities) && 'OperatorLifecycleManager' in self.status.capabilities.enabledCapabilities) : true",message="the `marketplace` capability requires the `OperatorLifecycleManager` capability, which is neither explicitly or implicitly enabled in this cluster, please enable the `OperatorLifecycleManager` capability"
// +kubebuilder:validation:XValidation:rule="has(self.spec.capabilities) && has(self.spec.capabilities.additionalEnabledCapabilities) && 'ClusterAPI' in self.spec.capabilities.additionalEnabledCapabilities ? 'CompatibilityRequirements' in self.spec.capabilities.additionalEnabledCapabilities || (has(self.status) && has(self.status.capabilities) && has(self.status.capabilities.enabledCapabilities) && 'CompatibilityRequirements' in self.status.capabilities.enabledCapabilities) : true",message="the `ClusterAPI` capability requires the `CompatibilityRequirements` capability, which is neither explicitly or implicitly enabled in this cluster, please enable the `CompatibilityRequirements` capability"
// +kubebuilder:printcolumn:name=Version,JSONPath=.status.history[?(@.state=="Completed")].version,type=string
// +kubebuilder:printcolumn:name=Available,JSONPath=.status.conditions[?(@.type=="Available")].status,type=string
// +kubebuilder:printcolumn:name=Progressing,JSONPath=.status.conditions[?(@.type=="Progressing")].status,type=string
Expand Down Expand Up @@ -304,7 +305,7 @@ const (
)

// ClusterVersionCapability enumerates optional, core cluster components.
// +kubebuilder:validation:Enum=openshift-samples;baremetal;marketplace;Console;Insights;Storage;CSISnapshot;NodeTuning;MachineAPI;Build;DeploymentConfig;ImageRegistry;OperatorLifecycleManager;CloudCredential;Ingress;CloudControllerManager;OperatorLifecycleManagerV1
// +kubebuilder:validation:Enum=openshift-samples;baremetal;marketplace;Console;Insights;Storage;CSISnapshot;NodeTuning;MachineAPI;Build;DeploymentConfig;ImageRegistry;OperatorLifecycleManager;CloudCredential;Ingress;CloudControllerManager;OperatorLifecycleManagerV1;CompatibilityRequirements;ClusterAPI
type ClusterVersionCapability string

const (
Expand Down Expand Up @@ -425,6 +426,19 @@ const (
// Managers deployed on top of OpenShift. They help you to work with cloud
// provider API and embeds cloud-specific control logic.
ClusterVersionCapabilityCloudControllerManager ClusterVersionCapability = "CloudControllerManager"

// ClusterVersionCapabilityCompatibilityRequirements manages the Compatibility
// Requirements operator which enforces CRD compatibility constraints via
// validating webhooks.
ClusterVersionCapabilityCompatibilityRequirements ClusterVersionCapability = "CompatibilityRequirements"

// ClusterVersionCapabilityClusterAPI manages the Cluster API operator and
// controllers which provide forward-compatible machine management for
// OpenShift clusters.
//
// Note that Cluster API has a hard requirement on CompatibilityRequirements.
// CompatibilityRequirements cannot be disabled while Cluster API is enabled.
ClusterVersionCapabilityClusterAPI ClusterVersionCapability = "ClusterAPI"
)

// KnownClusterVersionCapabilities includes all known optional, core cluster components.
Expand All @@ -446,6 +460,8 @@ var KnownClusterVersionCapabilities = []ClusterVersionCapability{
ClusterVersionCapabilityCloudCredential,
ClusterVersionCapabilityIngress,
ClusterVersionCapabilityCloudControllerManager,
ClusterVersionCapabilityCompatibilityRequirements,
ClusterVersionCapabilityClusterAPI,
}

// ClusterVersionCapabilitySet defines sets of cluster version capabilities.
Expand Down Expand Up @@ -644,6 +660,8 @@ var ClusterVersionCapabilitySets = map[ClusterVersionCapabilitySet][]ClusterVers
ClusterVersionCapabilityCloudCredential,
ClusterVersionCapabilityIngress,
ClusterVersionCapabilityCloudControllerManager,
ClusterVersionCapabilityCompatibilityRequirements,
ClusterVersionCapabilityClusterAPI,
},
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,8 @@ spec:
- Ingress
- CloudControllerManager
- OperatorLifecycleManagerV1
- CompatibilityRequirements
- ClusterAPI
type: string
type: array
x-kubernetes-list-type: atomic
Expand Down Expand Up @@ -442,6 +444,8 @@ spec:
- Ingress
- CloudControllerManager
- OperatorLifecycleManagerV1
- CompatibilityRequirements
- ClusterAPI
type: string
type: array
x-kubernetes-list-type: atomic
Expand Down Expand Up @@ -469,6 +473,8 @@ spec:
- Ingress
- CloudControllerManager
- OperatorLifecycleManagerV1
- CompatibilityRequirements
- ClusterAPI
type: string
type: array
x-kubernetes-list-type: atomic
Expand Down Expand Up @@ -1133,6 +1139,15 @@ spec:
&& has(self.status.capabilities) && has(self.status.capabilities.enabledCapabilities)
&& ''OperatorLifecycleManager'' in self.status.capabilities.enabledCapabilities)
: true'
- message: the `ClusterAPI` capability requires the `CompatibilityRequirements`
capability, which is neither explicitly or implicitly enabled in this
cluster, please enable the `CompatibilityRequirements` capability
rule: 'has(self.spec.capabilities) && has(self.spec.capabilities.additionalEnabledCapabilities)
&& ''ClusterAPI'' in self.spec.capabilities.additionalEnabledCapabilities
? ''CompatibilityRequirements'' in self.spec.capabilities.additionalEnabledCapabilities
|| (has(self.status) && has(self.status.capabilities) && has(self.status.capabilities.enabledCapabilities)
&& ''CompatibilityRequirements'' in self.status.capabilities.enabledCapabilities)
: true'
served: true
storage: true
subresources:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,8 @@ spec:
- Ingress
- CloudControllerManager
- OperatorLifecycleManagerV1
- CompatibilityRequirements
- ClusterAPI
type: string
type: array
x-kubernetes-list-type: atomic
Expand Down Expand Up @@ -346,6 +348,8 @@ spec:
- Ingress
- CloudControllerManager
- OperatorLifecycleManagerV1
- CompatibilityRequirements
- ClusterAPI
type: string
type: array
x-kubernetes-list-type: atomic
Expand Down Expand Up @@ -373,6 +377,8 @@ spec:
- Ingress
- CloudControllerManager
- OperatorLifecycleManagerV1
- CompatibilityRequirements
- ClusterAPI
type: string
type: array
x-kubernetes-list-type: atomic
Expand Down Expand Up @@ -790,6 +796,15 @@ spec:
&& has(self.status.capabilities) && has(self.status.capabilities.enabledCapabilities)
&& ''OperatorLifecycleManager'' in self.status.capabilities.enabledCapabilities)
: true'
- message: the `ClusterAPI` capability requires the `CompatibilityRequirements`
capability, which is neither explicitly or implicitly enabled in this
cluster, please enable the `CompatibilityRequirements` capability
rule: 'has(self.spec.capabilities) && has(self.spec.capabilities.additionalEnabledCapabilities)
&& ''ClusterAPI'' in self.spec.capabilities.additionalEnabledCapabilities
? ''CompatibilityRequirements'' in self.spec.capabilities.additionalEnabledCapabilities
|| (has(self.status) && has(self.status.capabilities) && has(self.status.capabilities.enabledCapabilities)
&& ''CompatibilityRequirements'' in self.status.capabilities.enabledCapabilities)
: true'
served: true
storage: true
subresources:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,8 @@ spec:
- Ingress
- CloudControllerManager
- OperatorLifecycleManagerV1
- CompatibilityRequirements
- ClusterAPI
type: string
type: array
x-kubernetes-list-type: atomic
Expand Down Expand Up @@ -442,6 +444,8 @@ spec:
- Ingress
- CloudControllerManager
- OperatorLifecycleManagerV1
- CompatibilityRequirements
- ClusterAPI
type: string
type: array
x-kubernetes-list-type: atomic
Expand Down Expand Up @@ -469,6 +473,8 @@ spec:
- Ingress
- CloudControllerManager
- OperatorLifecycleManagerV1
- CompatibilityRequirements
- ClusterAPI
type: string
type: array
x-kubernetes-list-type: atomic
Expand Down Expand Up @@ -1133,6 +1139,15 @@ spec:
&& has(self.status.capabilities) && has(self.status.capabilities.enabledCapabilities)
&& ''OperatorLifecycleManager'' in self.status.capabilities.enabledCapabilities)
: true'
- message: the `ClusterAPI` capability requires the `CompatibilityRequirements`
capability, which is neither explicitly or implicitly enabled in this
cluster, please enable the `CompatibilityRequirements` capability
rule: 'has(self.spec.capabilities) && has(self.spec.capabilities.additionalEnabledCapabilities)
&& ''ClusterAPI'' in self.spec.capabilities.additionalEnabledCapabilities
? ''CompatibilityRequirements'' in self.spec.capabilities.additionalEnabledCapabilities
|| (has(self.status) && has(self.status.capabilities) && has(self.status.capabilities.enabledCapabilities)
&& ''CompatibilityRequirements'' in self.status.capabilities.enabledCapabilities)
: true'
served: true
storage: true
subresources:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,8 @@ spec:
- Ingress
- CloudControllerManager
- OperatorLifecycleManagerV1
- CompatibilityRequirements
- ClusterAPI
type: string
type: array
x-kubernetes-list-type: atomic
Expand Down Expand Up @@ -346,6 +348,8 @@ spec:
- Ingress
- CloudControllerManager
- OperatorLifecycleManagerV1
- CompatibilityRequirements
- ClusterAPI
type: string
type: array
x-kubernetes-list-type: atomic
Expand Down Expand Up @@ -373,6 +377,8 @@ spec:
- Ingress
- CloudControllerManager
- OperatorLifecycleManagerV1
- CompatibilityRequirements
- ClusterAPI
type: string
type: array
x-kubernetes-list-type: atomic
Expand Down Expand Up @@ -790,6 +796,15 @@ spec:
&& has(self.status.capabilities) && has(self.status.capabilities.enabledCapabilities)
&& ''OperatorLifecycleManager'' in self.status.capabilities.enabledCapabilities)
: true'
- message: the `ClusterAPI` capability requires the `CompatibilityRequirements`
capability, which is neither explicitly or implicitly enabled in this
cluster, please enable the `CompatibilityRequirements` capability
rule: 'has(self.spec.capabilities) && has(self.spec.capabilities.additionalEnabledCapabilities)
&& ''ClusterAPI'' in self.spec.capabilities.additionalEnabledCapabilities
? ''CompatibilityRequirements'' in self.spec.capabilities.additionalEnabledCapabilities
|| (has(self.status) && has(self.status.capabilities) && has(self.status.capabilities.enabledCapabilities)
&& ''CompatibilityRequirements'' in self.status.capabilities.enabledCapabilities)
: true'
served: true
storage: true
subresources:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,8 @@ spec:
- Ingress
- CloudControllerManager
- OperatorLifecycleManagerV1
- CompatibilityRequirements
- ClusterAPI
type: string
type: array
x-kubernetes-list-type: atomic
Expand Down Expand Up @@ -425,6 +427,8 @@ spec:
- Ingress
- CloudControllerManager
- OperatorLifecycleManagerV1
- CompatibilityRequirements
- ClusterAPI
type: string
type: array
x-kubernetes-list-type: atomic
Expand Down Expand Up @@ -452,6 +456,8 @@ spec:
- Ingress
- CloudControllerManager
- OperatorLifecycleManagerV1
- CompatibilityRequirements
- ClusterAPI
type: string
type: array
x-kubernetes-list-type: atomic
Expand Down Expand Up @@ -1116,6 +1122,15 @@ spec:
&& has(self.status.capabilities) && has(self.status.capabilities.enabledCapabilities)
&& ''OperatorLifecycleManager'' in self.status.capabilities.enabledCapabilities)
: true'
- message: the `ClusterAPI` capability requires the `CompatibilityRequirements`
capability, which is neither explicitly or implicitly enabled in this
cluster, please enable the `CompatibilityRequirements` capability
rule: 'has(self.spec.capabilities) && has(self.spec.capabilities.additionalEnabledCapabilities)
&& ''ClusterAPI'' in self.spec.capabilities.additionalEnabledCapabilities
? ''CompatibilityRequirements'' in self.spec.capabilities.additionalEnabledCapabilities
|| (has(self.status) && has(self.status.capabilities) && has(self.status.capabilities.enabledCapabilities)
&& ''CompatibilityRequirements'' in self.status.capabilities.enabledCapabilities)
: true'
served: true
storage: true
subresources:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,8 @@ spec:
- Ingress
- CloudControllerManager
- OperatorLifecycleManagerV1
- CompatibilityRequirements
- ClusterAPI
type: string
type: array
x-kubernetes-list-type: atomic
Expand Down Expand Up @@ -337,6 +339,8 @@ spec:
- Ingress
- CloudControllerManager
- OperatorLifecycleManagerV1
- CompatibilityRequirements
- ClusterAPI
type: string
type: array
x-kubernetes-list-type: atomic
Expand Down Expand Up @@ -364,6 +368,8 @@ spec:
- Ingress
- CloudControllerManager
- OperatorLifecycleManagerV1
- CompatibilityRequirements
- ClusterAPI
type: string
type: array
x-kubernetes-list-type: atomic
Expand Down Expand Up @@ -759,6 +765,15 @@ spec:
&& has(self.status.capabilities) && has(self.status.capabilities.enabledCapabilities)
&& ''OperatorLifecycleManager'' in self.status.capabilities.enabledCapabilities)
: true'
- message: the `ClusterAPI` capability requires the `CompatibilityRequirements`
capability, which is neither explicitly or implicitly enabled in this
cluster, please enable the `CompatibilityRequirements` capability
rule: 'has(self.spec.capabilities) && has(self.spec.capabilities.additionalEnabledCapabilities)
&& ''ClusterAPI'' in self.spec.capabilities.additionalEnabledCapabilities
? ''CompatibilityRequirements'' in self.spec.capabilities.additionalEnabledCapabilities
|| (has(self.status) && has(self.status.capabilities) && has(self.status.capabilities.enabledCapabilities)
&& ''CompatibilityRequirements'' in self.status.capabilities.enabledCapabilities)
: true'
served: true
storage: true
subresources:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,8 @@ spec:
- Ingress
- CloudControllerManager
- OperatorLifecycleManagerV1
- CompatibilityRequirements
- ClusterAPI
type: string
type: array
x-kubernetes-list-type: atomic
Expand Down Expand Up @@ -365,6 +367,8 @@ spec:
- Ingress
- CloudControllerManager
- OperatorLifecycleManagerV1
- CompatibilityRequirements
- ClusterAPI
type: string
type: array
x-kubernetes-list-type: atomic
Expand Down Expand Up @@ -392,6 +396,8 @@ spec:
- Ingress
- CloudControllerManager
- OperatorLifecycleManagerV1
- CompatibilityRequirements
- ClusterAPI
type: string
type: array
x-kubernetes-list-type: atomic
Expand Down Expand Up @@ -1034,6 +1040,15 @@ spec:
&& has(self.status.capabilities) && has(self.status.capabilities.enabledCapabilities)
&& ''OperatorLifecycleManager'' in self.status.capabilities.enabledCapabilities)
: true'
- message: the `ClusterAPI` capability requires the `CompatibilityRequirements`
capability, which is neither explicitly or implicitly enabled in this
cluster, please enable the `CompatibilityRequirements` capability
rule: 'has(self.spec.capabilities) && has(self.spec.capabilities.additionalEnabledCapabilities)
&& ''ClusterAPI'' in self.spec.capabilities.additionalEnabledCapabilities
? ''CompatibilityRequirements'' in self.spec.capabilities.additionalEnabledCapabilities
|| (has(self.status) && has(self.status.capabilities) && has(self.status.capabilities.enabledCapabilities)
&& ''CompatibilityRequirements'' in self.status.capabilities.enabledCapabilities)
: true'
served: true
storage: true
subresources:
Expand Down
Loading