operatorv1

package
v0.0.0-...-8c81107 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 22, 2024 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Overview

Package v1 contains API Schema definitions for the ocs v1 API group +kubebuilder:object:generate=true +groupName=ocs.openshift.io

Index

Constants

View Source
const (
	// ConditionReconcileComplete communicates the status of the StorageCluster resource's
	// reconcile functionality. Basically, is the Reconcile function running to completion.
	ConditionReconcileComplete conditionsv1.ConditionType = "ReconcileComplete"

	// ConditionExternalClusterConnected condition type indicates
	// the successful connection to an external cluster
	ConditionExternalClusterConnected conditionsv1.ConditionType = "ExternalClusterConnected"

	// ConditionExternalClusterConnecting type indicates that rook is still trying for
	// an external connection
	ConditionExternalClusterConnecting conditionsv1.ConditionType = "ExternalClusterConnecting"

	// ConditionVersionMismatch type indicates that there is a mismatch in the storagecluster
	// and the operator version
	ConditionVersionMismatch conditionsv1.ConditionType = "VersionMismatch"
)
View Source
const (
	ReconcileFailed                 = "ReconcileFailed"
	ReconcileInit                   = "Init"
	ReconcileCompleted              = "ReconcileCompleted"
	ReconcileCompletedMessage       = "Reconcile completed successfully"
	ExternalClusterConnected        = "ExternalClusterConnected"
	ExternalClusterConnectedMessage = "Connected successfully to an external cluster"
)

List of constants to show different different reconciliation messages and statuses.

Variables

View Source
var (
	// GroupVersion is group version used to register these objects
	GroupVersion = schema.GroupVersion{Group: "ocs.openshift.io", Version: "v1"}

	// SchemeBuilder points to a list of functions added to Scheme.
	SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes)

	// AddToScheme is a common registration function for mapping packaged scoped group & version keys to a scheme.
	AddToScheme = localSchemeBuilder.AddToScheme
)

Functions

This section is empty.

Types

type ArbiterSpec

type ArbiterSpec struct {
	Enable bool `json:"enable,omitempty"`
	// DisableMasterNodeToleration can be used to turn off the arbiter mon toleration for the master node taint.
	DisableMasterNodeToleration bool                          `json:"disableMasterNodeToleration,omitempty"`
	ArbiterMonPVCTemplate       *corev1.PersistentVolumeClaim `json:"arbiterMonPVCTemplate,omitempty"`
}

ArbiterSpec defines if arbiter should be enabled for the Ceph Cluster. It is optional and defaults to false. If set to true, ArbiterLocation must be set in the NodeTopologies.

func (*ArbiterSpec) DeepCopy

func (in *ArbiterSpec) DeepCopy() *ArbiterSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArbiterSpec.

func (*ArbiterSpec) DeepCopyInto

func (in *ArbiterSpec) DeepCopyInto(out *ArbiterSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type BackingStorageClass

type BackingStorageClass struct {
	metav1.ObjectMeta `json:"metadata,omitempty"`
	// Provisioner indicates the type of the provisioner.
	// +optional
	Provisioner string `json:"provisioner,omitempty"`

	// Parameters holds the parameters for the provisioner that should
	// create volumes of this storage class.
	// +optional
	Parameters map[string]string `json:"parameters,omitempty"`
}

BackingStorageClass defines the backing storageclass for StorageDeviceSet

func (*BackingStorageClass) DeepCopy

func (in *BackingStorageClass) DeepCopy() *BackingStorageClass

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BackingStorageClass.

func (*BackingStorageClass) DeepCopyInto

func (in *BackingStorageClass) DeepCopyInto(out *BackingStorageClass)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type BlockPoolConfigurationSpec

type BlockPoolConfigurationSpec struct {
	// +kubebuilder:validation:Optional
	Parameters map[string]string `json:"parameters,omitempty"`
}

func (*BlockPoolConfigurationSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BlockPoolConfigurationSpec.

func (*BlockPoolConfigurationSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type CSIDriverSpec

type CSIDriverSpec struct {
	// ReadAffinity defines the read affinity settings for CSI driver.
	// +kubebuilder:validation:Optional
	ReadAffinity *rookCephv1.ReadAffinitySpec `json:"readAffinity,omitempty"`
}

CSIDriverSpec defines the CSI driver settings for the StorageCluster.

func (*CSIDriverSpec) DeepCopy

func (in *CSIDriverSpec) DeepCopy() *CSIDriverSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CSIDriverSpec.

func (*CSIDriverSpec) DeepCopyInto

func (in *CSIDriverSpec) DeepCopyInto(out *CSIDriverSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ComponentImageStatus

type ComponentImageStatus struct {
	DesiredImage string `json:"desiredImage,omitempty"`
	ActualImage  string `json:"actualImage,omitempty"`
}

ComponentImageStatus holds image status information for a specific component image

func (*ComponentImageStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ComponentImageStatus.

func (*ComponentImageStatus) DeepCopyInto

func (in *ComponentImageStatus) DeepCopyInto(out *ComponentImageStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type EncryptionSpec

type EncryptionSpec struct {
	// deprecated from OCS 4.10 onwards, acting as a dummy,
	// UI will keep sending this flag for backward compatibility (OCP 4.10 + OCS 4.9)
	// +optional
	Enable bool `json:"enable,omitempty"`
	// +optional
	ClusterWide bool `json:"clusterWide,omitempty"`
	// +optional
	StorageClass bool `json:"storageClass,omitempty"`
	// StorageClassName specifies the name of the storage class created for ceph encrypted block pools
	// +kubebuilder:validation:MaxLength=253
	// +kubebuilder:validation:Pattern=^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
	StorageClassName     string                   `json:"storageClassName,omitempty"`
	KeyManagementService KeyManagementServiceSpec `json:"kms,omitempty"`
	// KeyRotation defines options for Key Rotation.
	// +optional
	KeyRotation KeyRotationSpec `json:"keyRotation,omitempty"`
}

EncryptionSpec defines if encryption should be enabled for the Storage Cluster It is optional and defaults to false.

func (*EncryptionSpec) DeepCopy

func (in *EncryptionSpec) DeepCopy() *EncryptionSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EncryptionSpec.

func (*EncryptionSpec) DeepCopyInto

func (in *EncryptionSpec) DeepCopyInto(out *EncryptionSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ExternalPGSpec

type ExternalPGSpec struct {
	// PGSecret stores the secret name which contains connection string of the Postgres server
	// +optional
	PGSecretName string `json:"pgSecretName,omitempty"`
	// AllowSelfSignedCerts will allow the Postgres server to use self signed certificates to authenticate
	// +optional
	AllowSelfSignedCerts bool `json:"allowSelfSignedCerts,omitempty"`
	// EnableTLS will allow the postgres server to connect via TLS/SSL
	// +optional
	EnableTLS bool `json:"enableTls,omitempty"`
	// TLSSecret stores the secret name which contains the client side certificates if enabled
	// +optional
	TLSSecretName string `json:"tlsSecretName,omitempty"`
}

func (*ExternalPGSpec) DeepCopy

func (in *ExternalPGSpec) DeepCopy() *ExternalPGSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalPGSpec.

func (*ExternalPGSpec) DeepCopyInto

func (in *ExternalPGSpec) DeepCopyInto(out *ExternalPGSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ExternalStorageClusterSpec

type ExternalStorageClusterSpec struct {
	// +optional
	Enable bool `json:"enable,omitempty"`
}

ExternalStorageClusterSpec defines the spec of the external Storage Cluster to be connected to the local cluster

func (*ExternalStorageClusterSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalStorageClusterSpec.

func (*ExternalStorageClusterSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ExternalStorageKind

type ExternalStorageKind string

ExternalStorageKind specifies a kind of the external storage

const (
	// KindOCS specifies a "ocs" kind of the external storage
	KindOCS ExternalStorageKind = "ocs"

	// KindRHCS specifies a "rhcs" kind of the external storage
	KindRHCS ExternalStorageKind = "rhcs"
)

type ImagesStatus

type ImagesStatus struct {
	Ceph       *ComponentImageStatus `json:"ceph,omitempty"`
	NooBaaCore *ComponentImageStatus `json:"noobaaCore,omitempty"`
	NooBaaDB   *ComponentImageStatus `json:"noobaaDB,omitempty"`
}

ImagesStatus maps every component image name it's reconciliation status information

func (*ImagesStatus) DeepCopy

func (in *ImagesStatus) DeepCopy() *ImagesStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImagesStatus.

func (*ImagesStatus) DeepCopyInto

func (in *ImagesStatus) DeepCopyInto(out *ImagesStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type KMSServerConnectionStatus

type KMSServerConnectionStatus struct {
	KMSServerAddress         string `json:"kmsServerAddress,omitempty"`
	KMSServerConnectionError string `json:"kmsServerConnectionError,omitempty"`
}

KMSServerConnectionStatus defines the observed connection state to the KMS server.

func (*KMSServerConnectionStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KMSServerConnectionStatus.

func (*KMSServerConnectionStatus) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type KeyManagementServiceSpec

type KeyManagementServiceSpec struct {
	// +optional
	Enable bool `json:"enable,omitempty"`
}

KeyManagementServiceSpec provides a way to enable KMS

func (*KeyManagementServiceSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KeyManagementServiceSpec.

func (*KeyManagementServiceSpec) DeepCopyInto

func (in *KeyManagementServiceSpec) DeepCopyInto(out *KeyManagementServiceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type KeyRotationSpec

type KeyRotationSpec struct {
	// Enable represents whether the key rotation is enabled.
	// +optional
	Enable *bool `json:"enable,omitempty"`
	// Schedule represents the cron schedule for key rotation.
	// +optional
	// +kubebuilder:default="@weekly"
	Schedule string `json:"schedule,omitempty"`
}

KeyRotationSpec represents the settings for Key Rotation.

func (*KeyRotationSpec) DeepCopy

func (in *KeyRotationSpec) DeepCopy() *KeyRotationSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KeyRotationSpec.

func (*KeyRotationSpec) DeepCopyInto

func (in *KeyRotationSpec) DeepCopyInto(out *KeyRotationSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ManageCephBlockPools

type ManageCephBlockPools struct {
	ReconcileStrategy    string `json:"reconcileStrategy,omitempty"`
	DisableStorageClass  bool   `json:"disableStorageClass,omitempty"`
	DisableSnapshotClass bool   `json:"disableSnapshotClass,omitempty"`
	// if set to true, the storageClass created for cephBlockPools will be annotated as the default for the whole cluster
	DefaultStorageClass bool `json:"defaultStorageClass,omitempty"`
	// StorageClassName specifies the name of the storage class created for ceph block pools
	// +kubebuilder:validation:MaxLength=253
	// +kubebuilder:validation:Pattern=^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
	StorageClassName string `json:"storageClassName,omitempty"`
	// VirtualizationStorageClassName specifies the name of the storage class created for ceph block pools
	// for virtualization environment
	// +kubebuilder:validation:MaxLength=253
	// +kubebuilder:validation:Pattern=^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
	VirtualizationStorageClassName string `json:"virtualizationStorageClassName,omitempty"`
}

ManageCephBlockPools defines how to reconcile CephBlockPools

func (*ManageCephBlockPools) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManageCephBlockPools.

func (*ManageCephBlockPools) DeepCopyInto

func (in *ManageCephBlockPools) DeepCopyInto(out *ManageCephBlockPools)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ManageCephCluster

type ManageCephCluster struct {
	ReconcileStrategy string `json:"reconcileStrategy,omitempty"`
	// +kubebuilder:validation:Enum=1;2
	MgrCount int `json:"mgrCount,omitempty"`
	// +kubebuilder:validation:Enum=3;5
	MonCount int `json:"monCount,omitempty"`
	// WaitTimeoutForHealthyOSDInMinutes defines the time the operator would wait before an OSD can be stopped for upgrade or restart.
	// If `continueUpgradeAfterChecksEvenIfNotHealthy` is `false` and the timeout exceeds and OSD is not ok to stop, then the operator
	// would skip upgrade for the current OSD and proceed with the next one.
	// If `continueUpgradeAfterChecksEvenIfNotHealthy` is `true`, then operator would continue with the upgrade of an OSD even if its
	// not ok to stop after the timeout.
	// This timeout won't be applied if `skipUpgradeChecks` is `true`.
	// The default wait timeout is 10 minutes.
	WaitTimeoutForHealthyOSDInMinutes time.Duration `json:"waitTimeoutForHealthyOSDInMinutes,omitempty"`
	// Whether or not upgrade should continue even if a check fails
	// This means Ceph's status could be degraded and we don't recommend upgrading but you might decide otherwise
	// Use at your OWN risk
	SkipUpgradeChecks bool `json:"skipUpgradeChecks,omitempty"`
	// Whether or not continue if PGs are not clean during an upgrade
	ContinueUpgradeAfterChecksEvenIfNotHealthy *bool `json:"continueUpgradeAfterChecksEvenIfNotHealthy,omitempty"`
	// Whether or not requires PGs are clean before an OSD upgrade. If set to `true` OSD upgrade process won't start until PGs are healthy.
	// This configuration will be ignored if `skipUpgradeChecks` is `true`.
	UpgradeOSDRequiresHealthyPGs bool `json:"upgradeOSDRequiresHealthyPGs,omitempty"`
	// A duration in minutes that determines how long an entire failureDomain like `region/zone/host` will be held in `noout` (in addition to the
	// default DOWN/OUT interval) when it is draining. This is only relevant when  `managePodBudgets` is `true` in cephCluster CR.
	// The default value is `30` minutes.
	OsdMaintenanceTimeout time.Duration `json:"osdMaintenanceTimeout,omitempty"`
	// NearFullRatio is the ratio at which the cluster is considered nearly full and will raise a ceph health warning. Default is 0.75.
	// +kubebuilder:validation:Minimum=0.0
	// +kubebuilder:validation:Maximum=1.0
	// +nullable
	NearFullRatio *float64 `json:"nearFullRatio,omitempty"`
	// BackfillFullRatio is the ratio at which the cluster is too full for backfill. Backfill will be disabled if above this threshold. Default is 0.80.
	// +kubebuilder:validation:Minimum=0.0
	// +kubebuilder:validation:Maximum=1.0
	// +nullable
	BackfillFullRatio *float64 `json:"backfillFullRatio,omitempty"`
	// FullRatio is the ratio at which the cluster is considered full and ceph will stop accepting writes. Default is 0.85.
	// +kubebuilder:validation:Minimum=0.0
	// +kubebuilder:validation:Maximum=1.0
	// +nullable
	FullRatio *float64 `json:"fullRatio,omitempty"`

	// Whether to allow updating the device class after the OSD is initially provisioned
	AllowDeviceClassUpdate bool `json:"allowDeviceClassUpdate,omitempty"`
}

ManageCephCluster defines how to reconcile the Ceph cluster definition

func (*ManageCephCluster) DeepCopy

func (in *ManageCephCluster) DeepCopy() *ManageCephCluster

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManageCephCluster.

func (*ManageCephCluster) DeepCopyInto

func (in *ManageCephCluster) DeepCopyInto(out *ManageCephCluster)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ManageCephConfig

type ManageCephConfig struct {
	ReconcileStrategy string `json:"reconcileStrategy,omitempty"`
}

ManageCephConfig defines how to reconcile the Ceph configuration

func (*ManageCephConfig) DeepCopy

func (in *ManageCephConfig) DeepCopy() *ManageCephConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManageCephConfig.

func (*ManageCephConfig) DeepCopyInto

func (in *ManageCephConfig) DeepCopyInto(out *ManageCephConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ManageCephDashboard

type ManageCephDashboard struct {
	Enable bool `json:"enable,omitempty"`
	// serve the dashboard using SSL
	SSL bool `json:"ssl,omitempty"`
}

ManageCephDashboard defines how to reconcile Ceph dashboard

func (*ManageCephDashboard) DeepCopy

func (in *ManageCephDashboard) DeepCopy() *ManageCephDashboard

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManageCephDashboard.

func (*ManageCephDashboard) DeepCopyInto

func (in *ManageCephDashboard) DeepCopyInto(out *ManageCephDashboard)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ManageCephFilesystems

type ManageCephFilesystems struct {
	ReconcileStrategy     string `json:"reconcileStrategy,omitempty"`
	DisableStorageClass   bool   `json:"disableStorageClass,omitempty"`
	ActiveMetadataServers int    `json:"activeMetadataServers,omitempty"`
	DisableSnapshotClass  bool   `json:"disableSnapshotClass,omitempty"`
	// StorageClassName specifies the name of the storage class created for cephfs
	// +kubebuilder:validation:MaxLength=253
	// +kubebuilder:validation:Pattern=^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
	StorageClassName string `json:"storageClassName,omitempty"`
	// DataPoolSpec specifies the pool specification for the default cephfs data pool
	DataPoolSpec rookCephv1.PoolSpec `json:"dataPoolSpec,omitempty"`
	// AdditionalDataPools specifies list of additional named cephfs data pools
	AdditionalDataPools []rookCephv1.NamedPoolSpec `json:"additionalDataPools,omitempty"`
}

ManageCephFilesystems defines how to reconcile CephFilesystems

func (*ManageCephFilesystems) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManageCephFilesystems.

func (*ManageCephFilesystems) DeepCopyInto

func (in *ManageCephFilesystems) DeepCopyInto(out *ManageCephFilesystems)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ManageCephNonResilientPools

type ManageCephNonResilientPools struct {
	Enable bool `json:"enable,omitempty"`
	// Count is the number of devices in this set
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:default=1
	Count int `json:"count,omitempty"`
	// ResourceRequirements (requests/limits) for the devices
	Resources corev1.ResourceRequirements `json:"resources,omitempty"`
	// VolumeClaimTemplates is a PVC template for the underlying storage devices
	VolumeClaimTemplate corev1.PersistentVolumeClaim `json:"volumeClaimTemplate,omitempty"`
	// StorageClassName specifies the name of the storage class created for ceph non-resilient pools
	// +kubebuilder:validation:MaxLength=253
	// +kubebuilder:validation:Pattern=^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
	StorageClassName string `json:"storageClassName,omitempty"`
}

ManageCephNonResilientPools defines how to reconcile ceph non-resilient pools

func (*ManageCephNonResilientPools) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManageCephNonResilientPools.

func (*ManageCephNonResilientPools) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ManageCephObjectStoreUsers

type ManageCephObjectStoreUsers struct {
	ReconcileStrategy string `json:"reconcileStrategy,omitempty"`
}

ManageCephObjectStoreUsers defines how to reconcile CephObjectStoreUsers

func (*ManageCephObjectStoreUsers) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManageCephObjectStoreUsers.

func (*ManageCephObjectStoreUsers) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ManageCephObjectStores

type ManageCephObjectStores struct {
	ReconcileStrategy   string `json:"reconcileStrategy,omitempty"`
	DisableStorageClass bool   `json:"disableStorageClass,omitempty"`
	GatewayInstances    int    `json:"gatewayInstances,omitempty"`
	DisableRoute        bool   `json:"disableRoute,omitempty"`
	HostNetwork         *bool  `json:"hostNetwork,omitempty"`
	// StorageClassName specifies the name of the storage class created for ceph obc's
	// +kubebuilder:validation:MaxLength=253
	// +kubebuilder:validation:Pattern=^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
	StorageClassName string `json:"storageClassName,omitempty"`
}

ManageCephObjectStores defines how to reconcile CephObjectStores

func (*ManageCephObjectStores) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManageCephObjectStores.

func (*ManageCephObjectStores) DeepCopyInto

func (in *ManageCephObjectStores) DeepCopyInto(out *ManageCephObjectStores)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ManageCephRBDMirror

type ManageCephRBDMirror struct {
	ReconcileStrategy string `json:"reconcileStrategy,omitempty"`
	// +kubebuilder:default=1
	// +kubebuilder:validation:Minimum=1
	DaemonCount int `json:"daemonCount,omitempty"`
}

ManageCephRBDMirror defines how to reconcile Ceph RBDMirror

func (*ManageCephRBDMirror) DeepCopy

func (in *ManageCephRBDMirror) DeepCopy() *ManageCephRBDMirror

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManageCephRBDMirror.

func (*ManageCephRBDMirror) DeepCopyInto

func (in *ManageCephRBDMirror) DeepCopyInto(out *ManageCephRBDMirror)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ManageCephToolbox

type ManageCephToolbox struct {
	ReconcileStrategy string `json:"reconcileStrategy,omitempty"`
}

ManageCephToolbox defines how to reconcile Ceph toolbox

func (*ManageCephToolbox) DeepCopy

func (in *ManageCephToolbox) DeepCopy() *ManageCephToolbox

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManageCephToolbox.

func (*ManageCephToolbox) DeepCopyInto

func (in *ManageCephToolbox) DeepCopyInto(out *ManageCephToolbox)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ManagedResourcesSpec

type ManagedResourcesSpec struct {
	CephCluster           ManageCephCluster           `json:"cephCluster,omitempty"`
	CephConfig            ManageCephConfig            `json:"cephConfig,omitempty"`
	CephDashboard         ManageCephDashboard         `json:"cephDashboard,omitempty"`
	CephBlockPools        ManageCephBlockPools        `json:"cephBlockPools,omitempty"`
	CephNonResilientPools ManageCephNonResilientPools `json:"cephNonResilientPools,omitempty"`
	CephFilesystems       ManageCephFilesystems       `json:"cephFilesystems,omitempty"`
	CephObjectStores      ManageCephObjectStores      `json:"cephObjectStores,omitempty"`
	CephObjectStoreUsers  ManageCephObjectStoreUsers  `json:"cephObjectStoreUsers,omitempty"`
	CephToolbox           ManageCephToolbox           `json:"cephToolbox,omitempty"`
	CephRBDMirror         ManageCephRBDMirror         `json:"cephRBDMirror,omitempty"`
}

ManagedResourcesSpec defines how to reconcile auxiliary resources

func (*ManagedResourcesSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedResourcesSpec.

func (*ManagedResourcesSpec) DeepCopyInto

func (in *ManagedResourcesSpec) DeepCopyInto(out *ManagedResourcesSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MgrSpec

type MgrSpec struct {
	// EnableActivePassive can be set as true to deploy 2 ceph manager pods, one active and one standby
	// Ceph will promote the standby mgr when the active mgr goes down due to any reason
	// +kubebuilder:deprecatedversion:warning="This field has been deprecated and will be removed in future. By default we now have 2 ceph manager pods, one active and one standby."
	EnableActivePassive bool `json:"enableActivePassive,omitempty"`
}

MgrSpec defines the settings for the Ceph Manager

func (*MgrSpec) DeepCopy

func (in *MgrSpec) DeepCopy() *MgrSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MgrSpec.

func (*MgrSpec) DeepCopyInto

func (in *MgrSpec) DeepCopyInto(out *MgrSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MirroringSpec

type MirroringSpec struct {
	// If true, data mirroring is enabled for the StorageCluster.
	// This configuration will only be applied to resources (such as CephBlockPool)
	// managed by the operator.
	// It is optional and defaults to false.
	// +optional
	Enabled bool `json:"enabled,omitempty"`

	// PeerSecretNames represents the Kubernetes Secret names of rbd-mirror peers tokens
	// +optional
	PeerSecretNames []string `json:"peerSecretNames,omitempty"`
}

func (*MirroringSpec) DeepCopy

func (in *MirroringSpec) DeepCopy() *MirroringSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MirroringSpec.

func (*MirroringSpec) DeepCopyInto

func (in *MirroringSpec) DeepCopyInto(out *MirroringSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MonitoringSpec

type MonitoringSpec struct {
	ReconcileStrategy string `json:"reconcileStrategy,omitempty"`
	// Labels to add to monitoring resources created by operator.
	// These labels are used as LabelSelector for Prometheus
	Labels map[string]string `json:"labels,omitempty"`
}

MonitoringSpec controls the configuration of resources for exposing OCS metrics

func (*MonitoringSpec) DeepCopy

func (in *MonitoringSpec) DeepCopy() *MonitoringSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitoringSpec.

func (*MonitoringSpec) DeepCopyInto

func (in *MonitoringSpec) DeepCopyInto(out *MonitoringSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MultiCloudGatewaySpec

type MultiCloudGatewaySpec struct {
	// ReconcileStrategy specifies whether to reconcile NooBaa CRs. Valid
	// values are "manage", "standalone", "ignore" (same as "standalone"),
	// and "" (same as "manage").
	ReconcileStrategy string `json:"reconcileStrategy,omitempty"`

	// DbStorageClassName specifies the default storage class
	// for nooba-db pods
	// +optional
	DbStorageClassName string `json:"dbStorageClassName,omitempty"`
	// Endpoints (optional) sets configuration info for the noobaa endpoint
	// deployment.
	// +optional
	Endpoints *nbv1.EndpointsSpec `json:"endpoints,omitempty"`

	// DisableLoadBalancerService (optional) sets the service type to ClusterIP instead of LoadBalancer
	// +nullable
	// +optional
	DisableLoadBalancerService bool `json:"disableLoadBalancerService,omitempty"`

	// Allows Noobaa to connect to an external Postgres server
	// +optional
	ExternalPgConfig *ExternalPGSpec `json:"externalPgConfig,omitempty"`

	// DenyHTTP (optional) if given will deny access to the NooBaa S3 service using HTTP (only HTTPS)
	// +optional
	DenyHTTP bool `json:"denyHTTP,omitempty"`
}

MultiCloudGatewaySpec defines specific multi-cloud gateway configuration options

func (*MultiCloudGatewaySpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MultiCloudGatewaySpec.

func (*MultiCloudGatewaySpec) DeepCopyInto

func (in *MultiCloudGatewaySpec) DeepCopyInto(out *MultiCloudGatewaySpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type NFSSpec

type NFSSpec struct {
	// Enable specifies whether to enable NFS.
	// +optional
	Enable bool `json:"enable,omitempty"`
	// StorageClassName specifies the name of the storage class created for NFS
	// +kubebuilder:validation:MaxLength=253
	// +kubebuilder:validation:Pattern=^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
	StorageClassName string `json:"storageClassName,omitempty"`
}

NFSSpec defines specific nfs configuration options

func (*NFSSpec) DeepCopy

func (in *NFSSpec) DeepCopy() *NFSSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NFSSpec.

func (*NFSSpec) DeepCopyInto

func (in *NFSSpec) DeepCopyInto(out *NFSSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type NodeTopologyMap

type NodeTopologyMap struct {
	// Labels is a map of topology label keys
	// (e.g. "failure-domain.kubernetes.io") to a set of values for those
	// keys.
	// +optional
	// +nullable
	Labels map[string]TopologyLabelValues `json:"labels,omitempty"`

	// ArbiterLocation is the chosen location in the failure domain for placing the arbiter resources.
	// When the failure domain is not provided as an input, ocs-operator determines the failure domain.
	ArbiterLocation string `json:"arbiterLocation,omitempty"`
}

NodeTopologyMap represents the list of all values of all topology labels across all nodes in the StorageCluster

func NewNodeTopologyMap

func NewNodeTopologyMap() *NodeTopologyMap

NewNodeTopologyMap returns an initialized NodeTopologyMap

func (*NodeTopologyMap) Add

func (m *NodeTopologyMap) Add(topologyKey string, value string)

Add adds a new value to the NodeTopologyMap under the specified key USe it with Contains() to not allow duplicate values

func (*NodeTopologyMap) Contains

func (m *NodeTopologyMap) Contains(topologyKey string, value string) bool

Contains checks whether the NodeTopologyMap contains a specific value for the specified key

func (*NodeTopologyMap) ContainsKey

func (m *NodeTopologyMap) ContainsKey(topologyKey string) bool

ContainsKey checks whether the NodeTopologyMap contains any value for the specified key

func (*NodeTopologyMap) DeepCopy

func (in *NodeTopologyMap) DeepCopy() *NodeTopologyMap

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeTopologyMap.

func (*NodeTopologyMap) DeepCopyInto

func (in *NodeTopologyMap) DeepCopyInto(out *NodeTopologyMap)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*NodeTopologyMap) GetKeyValues

func (m *NodeTopologyMap) GetKeyValues(topologyKey string) (string, []string)

GetKeyValues returns a node label matching the topologyKey and all values for that label across all storage nodes

type OCSInitialization

type OCSInitialization struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   OCSInitializationSpec   `json:"spec,omitempty"`
	Status OCSInitializationStatus `json:"status,omitempty"`
}

OCSInitialization represents the initial data to be created when the operator is installed.

func (*OCSInitialization) DeepCopy

func (in *OCSInitialization) DeepCopy() *OCSInitialization

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OCSInitialization.

func (*OCSInitialization) DeepCopyInto

func (in *OCSInitialization) DeepCopyInto(out *OCSInitialization)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*OCSInitialization) DeepCopyObject

func (in *OCSInitialization) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type OCSInitializationList

type OCSInitializationList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []OCSInitialization `json:"items"`
}

OCSInitializationList contains a list of OCSInitialization

func (*OCSInitializationList) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OCSInitializationList.

func (*OCSInitializationList) DeepCopyInto

func (in *OCSInitializationList) DeepCopyInto(out *OCSInitializationList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*OCSInitializationList) DeepCopyObject

func (in *OCSInitializationList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type OCSInitializationSpec

type OCSInitializationSpec struct {
	// EnableCephTools toggles on whether or not the ceph tools pod
	// should be deployed.
	// Defaults to false
	// +optional
	// +kubebuilder:deprecatedversion:warning="This field doesn't work anymore and will be removed in future. The ceph tool box can be enabled by setting the spec.enableCephTools field in the storage cluster CR"
	EnableCephTools bool `json:"enableCephTools,omitempty"`

	// Tolerations if specified set toolbox ceph tools pod tolerations
	// Defaults to empty
	// +optional
	// +kubebuilder:deprecatedversion:warning="This field doesn't work anymore and will be removed in future. The tolerations along with any other placement spec are now set by adding them in the storage cluster CR under spec.placement[toolbox]"
	Tolerations []corev1.Toleration `json:"tolerations,omitempty"`
}

OCSInitializationSpec defines the desired state of OCSInitialization

func (*OCSInitializationSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OCSInitializationSpec.

func (*OCSInitializationSpec) DeepCopyInto

func (in *OCSInitializationSpec) DeepCopyInto(out *OCSInitializationSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type OCSInitializationStatus

type OCSInitializationStatus struct {
	// Phase describes the Phase of OCSInitialization
	// This is used by OLM UI to provide status information
	// to the user
	Phase string `json:"phase,omitempty"`

	// Conditions describes the state of the OCSInitialization resource.
	// +optional
	Conditions []conditionsv1.Condition `json:"conditions,omitempty"`

	// RelatedObjects is a list of objects created and maintained by this
	// operator. Object references will be added to this list after they have
	// been created AND found in the cluster.
	// +optional
	RelatedObjects                []corev1.ObjectReference     `json:"relatedObjects,omitempty"`
	ErrorMessage                  string                       `json:"errorMessage,omitempty"`
	SCCsCreated                   bool                         `json:"sCCsCreated,omitempty"`
	RookCephOperatorConfigCreated bool                         `json:"rookCephOperatorConfigCreated,omitempty"`
	RookCephOperatorConfig        RookCephOperatorConfigStatus `json:"rookCephOperatorConfig,omitempty"`
}

OCSInitializationStatus defines the observed state of OCSInitialization

func (*OCSInitializationStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OCSInitializationStatus.

func (*OCSInitializationStatus) DeepCopyInto

func (in *OCSInitializationStatus) DeepCopyInto(out *OCSInitializationStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type OverprovisionControlSpec

type OverprovisionControlSpec struct {
	StorageClassName string                               `json:"storageClassName,omitempty"`
	QuotaName        string                               `json:"quotaName,omitempty"`
	Capacity         resource.Quantity                    `json:"capacity,omitempty"`
	Selector         quotav1.ClusterResourceQuotaSelector `json:"selector,omitempty"`
}

OverprovisionControlSpec defines the allowed overprovisioning PVC consumption from the underlying cluster. This may be an absolute value or as a percentage of the overall effective capacity. One, and only one of those two (Capacity and Percentage) may be defined.

func (*OverprovisionControlSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OverprovisionControlSpec.

func (*OverprovisionControlSpec) DeepCopyInto

func (in *OverprovisionControlSpec) DeepCopyInto(out *OverprovisionControlSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PeerInfo

type PeerInfo struct {
	StorageClusterUid string `json:"storageClusterUid,omitempty"`
}

func (*PeerInfo) DeepCopy

func (in *PeerInfo) DeepCopy() *PeerInfo

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PeerInfo.

func (*PeerInfo) DeepCopyInto

func (in *PeerInfo) DeepCopyInto(out *PeerInfo)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RookCephOperatorConfigStatus

type RookCephOperatorConfigStatus struct {
	// CsiPluginTolerationsModified indicates if CsiPluginTolerations are added to the configmap via controller
	CsiPluginTolerationsModified bool `json:"csiPluginTolerationsModified,omitempty"`
	// CsiProvisionerTolerationsModified indicates if CsiProvisionerTolerations are added to the configmap via controller
	CsiProvisionerTolerationsModified bool `json:"csiProvisionerTolerationsModified,omitempty"`
}

func (*RookCephOperatorConfigStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RookCephOperatorConfigStatus.

func (*RookCephOperatorConfigStatus) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SharedFilesystemConfigurationSpec

type SharedFilesystemConfigurationSpec struct {
	// +kubebuilder:validation:Optional
	Parameters map[string]string `json:"parameters,omitempty"`
}

func (*SharedFilesystemConfigurationSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SharedFilesystemConfigurationSpec.

func (*SharedFilesystemConfigurationSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type StorageCluster

type StorageCluster struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   StorageClusterSpec   `json:"spec,omitempty"`
	Status StorageClusterStatus `json:"status,omitempty"`
}

StorageCluster represents a cluster including Ceph Cluster, NooBaa and all the storage and compute resources required.

func (*StorageCluster) DeepCopy

func (in *StorageCluster) DeepCopy() *StorageCluster

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageCluster.

func (*StorageCluster) DeepCopyInto

func (in *StorageCluster) DeepCopyInto(out *StorageCluster)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*StorageCluster) DeepCopyObject

func (in *StorageCluster) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*StorageCluster) NewToolsDeployment

func (r *StorageCluster) NewToolsDeployment(tolerations []corev1.Toleration, nodeAffinity *corev1.NodeAffinity) *appsv1.Deployment

type StorageClusterList

type StorageClusterList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []StorageCluster `json:"items"`
}

StorageClusterList contains a list of StorageCluster

func (*StorageClusterList) DeepCopy

func (in *StorageClusterList) DeepCopy() *StorageClusterList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageClusterList.

func (*StorageClusterList) DeepCopyInto

func (in *StorageClusterList) DeepCopyInto(out *StorageClusterList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*StorageClusterList) DeepCopyObject

func (in *StorageClusterList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type StorageClusterPeer

type StorageClusterPeer struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// +kubebuilder:validation:Required
	Spec   StorageClusterPeerSpec   `json:"spec,omitempty"`
	Status StorageClusterPeerStatus `json:"status,omitempty"`
}

StorageClusterPeer is the Schema for the storageclusterpeers API

func (*StorageClusterPeer) DeepCopy

func (in *StorageClusterPeer) DeepCopy() *StorageClusterPeer

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageClusterPeer.

func (*StorageClusterPeer) DeepCopyInto

func (in *StorageClusterPeer) DeepCopyInto(out *StorageClusterPeer)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*StorageClusterPeer) DeepCopyObject

func (in *StorageClusterPeer) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type StorageClusterPeerList

type StorageClusterPeerList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []StorageClusterPeer `json:"items"`
}

StorageClusterPeerList contains a list of StorageClusterPeer

func (*StorageClusterPeerList) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageClusterPeerList.

func (*StorageClusterPeerList) DeepCopyInto

func (in *StorageClusterPeerList) DeepCopyInto(out *StorageClusterPeerList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*StorageClusterPeerList) DeepCopyObject

func (in *StorageClusterPeerList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type StorageClusterPeerSpec

type StorageClusterPeerSpec struct {

	// ApiEndpoint is the URI of the ODF api server
	ApiEndpoint string `json:"apiEndpoint"`

	// OnboardingToken holds an identity information required by the local ODF cluster to onboard.
	OnboardingToken string `json:"onboardingToken"`
}

StorageClusterPeerSpec defines the desired state of StorageClusterPeer

func (*StorageClusterPeerSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageClusterPeerSpec.

func (*StorageClusterPeerSpec) DeepCopyInto

func (in *StorageClusterPeerSpec) DeepCopyInto(out *StorageClusterPeerSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type StorageClusterPeerState

type StorageClusterPeerState string
const (
	StorageClusterPeerStateInitializing StorageClusterPeerState = "Initializing"
	StorageClusterPeerStatePending      StorageClusterPeerState = "Pending"
	StorageClusterPeerStatePeered       StorageClusterPeerState = "Peered"
	StorageClusterPeerStateFailed       StorageClusterPeerState = "Failed"
)

type StorageClusterPeerStatus

type StorageClusterPeerStatus struct {
	State    StorageClusterPeerState `json:"state,omitempty"`
	PeerInfo *PeerInfo               `json:"peerInfo"`
}

StorageClusterPeerStatus defines the observed state of StorageClusterPeer

func (*StorageClusterPeerStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageClusterPeerStatus.

func (*StorageClusterPeerStatus) DeepCopyInto

func (in *StorageClusterPeerStatus) DeepCopyInto(out *StorageClusterPeerStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type StorageClusterSpec

type StorageClusterSpec struct {
	ManageNodes  bool   `json:"manageNodes,omitempty"`
	InstanceType string `json:"instanceType,omitempty"`
	// LabelSelector is used to specify custom labels of nodes to run OCS on
	LabelSelector *metav1.LabelSelector `json:"labelSelector,omitempty"`
	// ExternalStorage is optional and defaults to false. When set to true, OCS will
	// connect to an external OCS Storage Cluster instead of provisioning one locally.
	ExternalStorage ExternalStorageClusterSpec `json:"externalStorage,omitempty"`
	// HostNetwork defaults to false
	HostNetwork bool `json:"hostNetwork,omitempty"`
	// Placement is optional and used to specify placements of OCS components explicitly
	Placement rookCephv1.PlacementSpec `json:"placement,omitempty"`
	// Resources follows the conventions of and is mapped to CephCluster.Spec.Resources
	Resources map[string]corev1.ResourceRequirements `json:"resources,omitempty"`
	// Resource Profile can be used to choose from a set of predefined resource profiles for the ceph daemons.
	// We have 3 profiles
	// lean: suitable for clusters with limited resources,
	// balanced: suitable for most use cases,
	// performance: suitable for clusters with high amount of resources.
	// +kubebuilder:validation:Enum=lean;Lean;balanced;Balanced;performance;Performance
	ResourceProfile    string                        `json:"resourceProfile,omitempty"`
	Encryption         EncryptionSpec                `json:"encryption,omitempty"`
	StorageDeviceSets  []StorageDeviceSet            `json:"storageDeviceSets,omitempty"`
	MonPVCTemplate     *corev1.PersistentVolumeClaim `json:"monPVCTemplate,omitempty"`
	MonDataDirHostPath string                        `json:"monDataDirHostPath,omitempty"`
	Mgr                *MgrSpec                      `json:"mgr,omitempty"`
	MultiCloudGateway  *MultiCloudGatewaySpec        `json:"multiCloudGateway,omitempty"`
	NFS                *NFSSpec                      `json:"nfs,omitempty"`
	CSI                *CSIDriverSpec                `json:"csi,omitempty"`
	// Monitoring controls the configuration of resources for exposing OCS metrics
	Monitoring *MonitoringSpec `json:"monitoring,omitempty"`
	// Version specifies the version of StorageCluster
	// +kubebuilder:deprecatedversion:warning="This field has been deprecated and will be removed in future versions. Use `StorageCluster.Status.Version` instead."
	Version string `json:"version,omitempty"`
	// Network represents cluster network settings
	Network *rookCephv1.NetworkSpec `json:"network,omitempty"`
	// ManagedResources specifies how to deal with auxiliary resources reconciled
	// with the StorageCluster
	ManagedResources ManagedResourcesSpec `json:"managedResources,omitempty"`
	// If enabled, sets the failureDomain to host, allowing devices to be
	// distributed evenly across all nodes, regardless of distribution in zones
	// or racks.
	FlexibleScaling bool `json:"flexibleScaling,omitempty"`
	// NodeTopologies specifies the nodes available for the storage cluster,
	// preferred failure domain and location for the arbiter resources. This is
	// optional for non-arbiter clusters. For arbiter clusters, the
	// arbiterLocation is required; failure domain and the node labels are
	// optional. When the failure domain and the node labels are missing, the
	// ocs-operator makes a best effort to determine them automatically.
	NodeTopologies *NodeTopologyMap `json:"nodeTopologies,omitempty"`
	// ArbiterSpec specifies the storage cluster options related to arbiter.
	// If Arbiter is enabled, ArbiterLocation in the NodeTopologies must be specified.
	Arbiter ArbiterSpec `json:"arbiter,omitempty"`
	// Mirroring specifies data mirroring configuration for the storage cluster.
	// This configuration will only be applied to resources managed by the operator.
	Mirroring *MirroringSpec `json:"mirroring,omitempty"`
	// OverprovisionControl specifies the allowed hard-limit PVs overprovisioning relative to
	// the effective usable storage capacity.
	OverprovisionControl []OverprovisionControlSpec `json:"overprovisionControl,omitempty"`

	// AllowRemoteStorageConsumers Indicates that the OCS cluster should deploy the needed
	// components to enable connections from remote consumers.
	AllowRemoteStorageConsumers bool `json:"allowRemoteStorageConsumers,omitempty"`

	// ProviderAPIServerServiceType Indicates the ServiceType for OCS Provider API Server Service.
	// The supported values are NodePort or LoadBalancer. The default ServiceType is NodePort if the value is empty.
	// This will only be used when AllowRemoteStorageConsumers is set to true
	ProviderAPIServerServiceType corev1.ServiceType `json:"providerAPIServerServiceType,omitempty"`

	// EnableCephTools toggles on whether or not the ceph tools pod
	// should be deployed.
	// Defaults to false
	// +optional
	EnableCephTools bool `json:"enableCephTools,omitempty"`

	// Logging represents loggings settings
	// +optional
	// +nullable
	LogCollector *rookCephv1.LogCollectorSpec `json:"logCollector,omitempty"`

	// BackingStorageClasses is a list of storage classes that will be
	// provisioned by the storagecluster controller to be used in
	// storageDeviceSets section of the CR.
	BackingStorageClasses []BackingStorageClass `json:"backingStorageClasses,omitempty"`
	// DefaultStorageProfile is the default storage profile to use for
	// the storagerequest as StorageProfile is optional.
	DefaultStorageProfile string `json:"defaultStorageProfile,omitempty"`
}

StorageClusterSpec defines the desired state of StorageCluster

func (*StorageClusterSpec) DeepCopy

func (in *StorageClusterSpec) DeepCopy() *StorageClusterSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageClusterSpec.

func (*StorageClusterSpec) DeepCopyInto

func (in *StorageClusterSpec) DeepCopyInto(out *StorageClusterSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type StorageClusterStatus

type StorageClusterStatus struct {
	// Version specifies the version of StorageCluster
	Version string `json:"version,omitempty"`

	// Phase describes the Phase of StorageCluster
	// This is used by OLM UI to provide status information
	// to the user
	Phase string `json:"phase,omitempty"`

	// Conditions describes the state of the StorageCluster resource.
	// +optional
	Conditions []conditionsv1.Condition `json:"conditions,omitempty"`

	// RelatedObjects is a list of objects created and maintained by this
	// operator. Object references will be added to this list after they have
	// been created AND found in the cluster.
	// +optional
	RelatedObjects []corev1.ObjectReference `json:"relatedObjects,omitempty"`

	// NodeTopologies is a list of topology labels on all nodes matching
	// the StorageCluster's placement selector.
	// +optional
	NodeTopologies *NodeTopologyMap `json:"nodeTopologies,omitempty"`

	// FailureDomain is the base CRUSH element Ceph will use to distribute
	// its data replicas for the default CephBlockPool
	// +optional
	FailureDomain string `json:"failureDomain,omitempty"`

	// FailureDomainKey is the specific key used to find the locations available
	// under a failure domain. For example topology.kubernetes.io/zone
	// +optional
	FailureDomainKey string `json:"failureDomainKey,omitempty"`

	// FailureDomainValues is the list of locations available for a failure
	// domain under the failure domain key.
	// +optional
	FailureDomainValues []string `json:"failureDomainValues,omitempty"`

	// LastAppliedResourceProfile is the resource profile that was last applied successfully & is currently in use.
	LastAppliedResourceProfile string `json:"lastAppliedResourceProfile,omitempty"`

	// StorageProviderEndpoint holds endpoint info on Provider cluster which is required
	// for consumer to establish connection with the storage providing cluster.
	StorageProviderEndpoint string `json:"storageProviderEndpoint,omitempty"`

	// ExternalSecretHash holds the checksum value of external secret data.
	ExternalSecretHash string `json:"externalSecretHash,omitempty"`

	// Images holds the image reconcile status for all images reconciled by the operator
	Images ImagesStatus `json:"images,omitempty"`

	// DefaultCephDeviceClass holds the default ceph device class to be used for the pools
	DefaultCephDeviceClass string `json:"defaultCephDeviceClass,omitempty"`

	// KMSServerConnection holds the connection state to the KMS server.
	KMSServerConnection KMSServerConnectionStatus `json:"kmsServerConnection,omitempty"`

	// CurrentMonCount holds the value of ceph mons configured in ceph cluster.
	CurrentMonCount int `json:"currentMonCount,omitempty"`
}

StorageClusterStatus defines the observed state of StorageCluster

func (*StorageClusterStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageClusterStatus.

func (*StorageClusterStatus) DeepCopyInto

func (in *StorageClusterStatus) DeepCopyInto(out *StorageClusterStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type StorageDeviceSet

type StorageDeviceSet struct {
	// Count is the number of devices in each StorageClassDeviceSet
	// +kubebuilder:validation:Minimum=1
	Count int `json:"count"`

	// Replica is the number of StorageClassDeviceSets for this
	// StorageDeviceSet
	// +kubebuilder:validation:Minimum=1
	// +optional
	Replica int `json:"replica,omitempty"`

	// DeviceType is the value of device type in
	// this StorageDeviceSet. It can have one of the
	// three values (SSD, HDD, NVMe)
	// +kubebuilder:validation:Enum=SSD;ssd;HDD;hdd;NVMe;NVME;nvme
	// +optional
	DeviceType string `json:"deviceType,omitempty"`

	// DeviceClass is an optional, fine-grained property of DeviceType.
	// If non empty, it defines the 'crushDeviceClass' value as used by ceph's
	// CRUSH map. If empty, then operator will set 'crushDeviceClass' to SSD and
	// 'TuneFastDeviceClass' to true
	// +optional
	DeviceClass string `json:"deviceClass,omitempty"`

	// InitialWeight is an optional explicit OSD weight value in TiB units.
	// If non empty, it defines the 'CrushInitialWeight' value which is
	// assigned to ceph OSD upon init
	// +kubebuilder:validation:Pattern=`^([0-9]*[.])?[0-9]+(Ti[B])$`
	// +optional
	InitialWeight string `json:"initialWeight,omitempty"`

	// PrimaryAffinity is an optional OSD primary-affinity value within the
	// range [0,1). This value influence the way Ceph's CRUSH selection of
	// primary OSDs. Lower value reduce performance bottlenecks (especially
	// on read operations). If not set, default value is 1.
	// https://docs.ceph.com/en/latest/rados/operations/crush-map/#primary-affinity
	// +kubebuilder:validation:Pattern=`^0.[0-9]+$`
	// +optional
	PrimaryAffinity string `json:"primaryAffinity,omitempty"`

	// TopologyKey is the Kubernetes topology label that the
	// StorageClassDeviceSets will be distributed across. Ignored if
	// Placement is set
	// +optional
	TopologyKey string `json:"topologyKey,omitempty"`

	// Portable says whether the OSDs in this device set can move between
	// nodes. This is ignored if Placement is not set
	// +optional
	Portable bool `json:"portable,omitempty"`

	Name                string                        `json:"name"`
	Resources           corev1.ResourceRequirements   `json:"resources,omitempty"`
	PreparePlacement    rookCephv1.Placement          `json:"preparePlacement,omitempty"`
	Placement           rookCephv1.Placement          `json:"placement,omitempty"`
	Config              StorageDeviceSetConfig        `json:"config,omitempty"`
	DataPVCTemplate     corev1.PersistentVolumeClaim  `json:"dataPVCTemplate"`
	MetadataPVCTemplate *corev1.PersistentVolumeClaim `json:"metadataPVCTemplate,omitempty"`
	WalPVCTemplate      *corev1.PersistentVolumeClaim `json:"walPVCTemplate,omitempty"`

	// Whether to encrypt the deviceSet or not
	// +optional
	Encrypted *bool `json:"encrypted,omitempty"`
}

StorageDeviceSet defines a set of storage devices. It configures the StorageClassDeviceSets field in Rook-Ceph.

func (*StorageDeviceSet) DeepCopy

func (in *StorageDeviceSet) DeepCopy() *StorageDeviceSet

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageDeviceSet.

func (*StorageDeviceSet) DeepCopyInto

func (in *StorageDeviceSet) DeepCopyInto(out *StorageDeviceSet)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type StorageDeviceSetConfig

type StorageDeviceSetConfig struct {
	// TuneSlowDeviceClass tunes the OSD when running on a slow Device Class
	// +optional
	TuneSlowDeviceClass bool `json:"tuneSlowDeviceClass,omitempty"`

	// TuneFastDeviceClass tunes the OSD when running on a fast Device Class
	// +optional
	TuneFastDeviceClass bool `json:"tuneFastDeviceClass,omitempty"`
}

StorageDeviceSetConfig defines Ceph OSD specific config options for the StorageDeviceSet

func (*StorageDeviceSetConfig) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageDeviceSetConfig.

func (*StorageDeviceSetConfig) DeepCopyInto

func (in *StorageDeviceSetConfig) DeepCopyInto(out *StorageDeviceSetConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*StorageDeviceSetConfig) ToMap

func (c *StorageDeviceSetConfig) ToMap() map[string]string

ToMap converts a StorageDeviceSetConfig object to a map[string]string that can be set in a Rook StorageClassDeviceSet object This functions just returns `nil` right now as the StorageDeviceSetConfig struct itself is empty. It will be updated to perform actual conversion and return a proper map when the StorageDeviceSetConfig struct is updated. TODO: Do actual conversion to map when StorageDeviceSetConfig has defined members

type StorageProfile

type StorageProfile struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// +kubebuilder:validation:Required
	// +kubebuilder:validation:XValidation:rule="oldSelf == self",message="spec is immutable"
	Spec   StorageProfileSpec   `json:"spec"`
	Status StorageProfileStatus `json:"status,omitempty"`
}

StorageProfile is the Schema for the storageprofiles API

func (*StorageProfile) DeepCopy

func (in *StorageProfile) DeepCopy() *StorageProfile

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageProfile.

func (*StorageProfile) DeepCopyInto

func (in *StorageProfile) DeepCopyInto(out *StorageProfile)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*StorageProfile) DeepCopyObject

func (in *StorageProfile) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*StorageProfile) GetSpecHash

func (sp *StorageProfile) GetSpecHash() string

type StorageProfileList

type StorageProfileList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []StorageProfile `json:"items"`
}

StorageProfileList contains a list of StorageProfile

func (*StorageProfileList) DeepCopy

func (in *StorageProfileList) DeepCopy() *StorageProfileList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageProfileList.

func (*StorageProfileList) DeepCopyInto

func (in *StorageProfileList) DeepCopyInto(out *StorageProfileList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*StorageProfileList) DeepCopyObject

func (in *StorageProfileList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type StorageProfilePhase

type StorageProfilePhase string

StorageProfilePhase stores a StorageProfile reconciliation phase

const (
	StorageProfilePhaseRejected StorageProfilePhase = "Rejected"
)

type StorageProfileSpec

type StorageProfileSpec struct {
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MaxLength=512
	// DeviceClass is the deviceclass name.
	DeviceClass string `json:"deviceClass"`

	// +kubebuilder:validation:Optional
	// configurations to use for cephfilesystem.
	SharedFilesystemConfiguration SharedFilesystemConfigurationSpec `json:"sharedFilesystemConfiguration,omitempty"`

	// +kubebuilder:validation:Optional
	// configurations to use for  profile specific blockpool.
	BlockPoolConfiguration BlockPoolConfigurationSpec `json:"blockPoolConfiguration,omitempty"`
}

StorageProfileSpec defines the desired state of StorageProfile

func (*StorageProfileSpec) DeepCopy

func (in *StorageProfileSpec) DeepCopy() *StorageProfileSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageProfileSpec.

func (*StorageProfileSpec) DeepCopyInto

func (in *StorageProfileSpec) DeepCopyInto(out *StorageProfileSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type StorageProfileStatus

type StorageProfileStatus struct {
	// Phase describes the Phase of StorageProfile
	// This is used by OLM UI to provide status information
	// to the user
	Phase StorageProfilePhase `json:"phase,omitempty"`
}

StorageProfileStatus defines the observed state of StorageProfile

func (*StorageProfileStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageProfileStatus.

func (*StorageProfileStatus) DeepCopyInto

func (in *StorageProfileStatus) DeepCopyInto(out *StorageProfileStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type TopologyLabelValues

type TopologyLabelValues []string

TopologyLabelValues is a list of values for a topology label

func (TopologyLabelValues) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TopologyLabelValues.

func (TopologyLabelValues) DeepCopyInto

func (in TopologyLabelValues) DeepCopyInto(out *TopologyLabelValues)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL