v1

package
v2.10.8 Latest Latest
Warning

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

Go to latest
Published: Jul 9, 2026 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Overview

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

Index

Constants

This section is empty.

Variables

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

	// SchemeBuilder is used to add go types to the GroupVersionKind scheme
	SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}

	// AddToScheme adds the types in this group-version to the given scheme.
	AddToScheme = SchemeBuilder.AddToScheme
)

Functions

This section is empty.

Types

type CAReference added in v2.5.2

type CAReference struct {
	// Kind of the resource containing the CA Certificate, either a ConfigMap or Secret.
	// +kubebuilder:default:=Secret
	// +kubebuilder:validation:Enum:=ConfigMap;Secret
	// +kubebuilder:validation:Optional
	Kind string `json:"kind,omitempty"`
	// Name of the resource containing the CA Certificate.
	// +kubebuilder:validation:Required
	Name string `json:"name"`
	// Key to select in the resource.
	// Defaults to ca.crt if not specified.
	// +kubebuilder:default:=ca.crt
	// +kubebuilder:validation:Optional
	Key string `json:"key,omitempty"`
	// Optional specifies whether the resource and its key must exist.
	// +kubebuilder:validation:Optional
	Optional *bool `json:"optional,omitempty"`
}

func (*CAReference) DeepCopy added in v2.5.2

func (in *CAReference) DeepCopy() *CAReference

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

func (*CAReference) DeepCopyInto added in v2.5.2

func (in *CAReference) DeepCopyInto(out *CAReference)

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

func (*CAReference) ToEnvVarSource added in v2.5.2

func (c *CAReference) ToEnvVarSource(fallbackSecretName string) *corev1.EnvVarSource

func (*CAReference) ToVolumeProjection added in v2.5.2

func (c *CAReference) ToVolumeProjection(fallbackSecretName string) corev1.VolumeProjection

type ClusterReference

type ClusterReference struct {
	// Name of the LinstorCluster resource controlling this satellite.
	Name string `json:"name,omitempty"`

	// ClientSecretName references the secret used by the operator to validate the https endpoint.
	ClientSecretName string `json:"clientSecretName,omitempty"`

	// CAReference configures the CA certificate to use when validating TLS certificates.
	// If not set, the TLS secret is expected to contain a "ca.crt" containing the CA certificate.
	//+kubebuilder:validation:Optional
	CAReference *CAReference `json:"caReference,omitempty"`

	// ExternalController references an external controller.
	// When set, the Operator uses the external cluster to register satellites.
	// +kubebuilder:validation:Optional
	ExternalController *LinstorExternalControllerRef `json:"externalController,omitempty"`
}

func (*ClusterReference) DeepCopy

func (in *ClusterReference) DeepCopy() *ClusterReference

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

func (*ClusterReference) DeepCopyInto

func (in *ClusterReference) DeepCopyInto(out *ClusterReference)

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

type ComponentSpec added in v2.3.0

type ComponentSpec struct {
	// Enable the component.
	// +kubebuilder:default:=true
	// +kubebuilder:validation:Optional
	Enabled bool `json:"enabled,omitempty"`

	// Template to apply to Pods of the component.
	//
	// The template is applied as a patch to the default deployment, so it can be "sparse", not listing any
	// containers or volumes that should remain unchanged.
	// See https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates
	// +kubebuilder:validation:Optional
	// +kubebuilder:validation:Schemaless
	// +kubebuilder:validation:Type=object
	// +kubebuilder:pruning:PreserveUnknownFields
	// +structType=atomic
	PodTemplate json.RawMessage `json:"podTemplate,omitempty"`
}

func (*ComponentSpec) DeepCopy added in v2.3.0

func (in *ComponentSpec) DeepCopy() *ComponentSpec

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

func (*ComponentSpec) DeepCopyInto added in v2.3.0

func (in *ComponentSpec) DeepCopyInto(out *ComponentSpec)

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

func (*ComponentSpec) GetTemplate added in v2.3.0

func (c *ComponentSpec) GetTemplate() json.RawMessage

func (*ComponentSpec) IsEnabled added in v2.3.0

func (c *ComponentSpec) IsEnabled() bool

type DeletionPolicy added in v2.9.0

type DeletionPolicy string

DeletionPolicy configures the way LinstorSatellite resources are deleted.

A LinstorSatellite may be deleted because: * It no longer matches the affinity and node selector of the LinstorCluster resource. * The node it references has been removed from Kubernetes. * It was manually deleted outside the Operator.

A LinstorSatellite may store the last copy of a volume, in which case it is not desirable to unconditionally remove the satellite from the cluster. For this reason, the following deletion policies exist:

* DeletionPolicyEvacuate will start evacuation of the LINSTOR Satellite and wait until it completes before removing the LinstorSatellite object, comparable to the "linstor node evacuate" command. * DeletionPolicyRetain will retain the LINSTOR Satellite, keeping it registered in LINSTOR, but removing associated Kubernetes resources. * DeletionPolicyDelete will remove the LINSTOR Satellite from the LINSTOR Cluster without prior eviction, comparable to the "linstor node lost" command. +kubebuilder:validation:Enum:=Evacuate;Retain;Delete

const (
	DeletionPolicyEvacuate DeletionPolicy = "Evacuate"
	DeletionPolicyRetain   DeletionPolicy = "Retain"
	DeletionPolicyDelete   DeletionPolicy = "Delete"
)

type DeploymentComponentSpec added in v2.10.0

type DeploymentComponentSpec struct {
	ComponentSpec `json:",inline"`

	// Number of desired pods. Defaults to 1.
	// +kubebuilder:validation:Optional
	// +kubebuilder:validation:Minimum=0
	Replicas *int32 `json:"replicas,omitempty"`
}

func (*DeploymentComponentSpec) DeepCopy added in v2.10.0

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

func (*DeploymentComponentSpec) DeepCopyInto added in v2.10.0

func (in *DeploymentComponentSpec) DeepCopyInto(out *DeploymentComponentSpec)

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

func (*DeploymentComponentSpec) GetReplicas added in v2.10.0

func (d *DeploymentComponentSpec) GetReplicas() *int32

func (*DeploymentComponentSpec) GetTemplate added in v2.10.0

func (d *DeploymentComponentSpec) GetTemplate() json.RawMessage

func (*DeploymentComponentSpec) IsEnabled added in v2.10.0

func (d *DeploymentComponentSpec) IsEnabled() bool

type EvacuationStrategy added in v2.10.2

type EvacuationStrategy struct {
	// AttachedVolumeReattachTimeout configures how long evacuation waits for attached volumes to reattach on
	// different nodes. Setting this to 0 disable this evacuation step.
	// +kubebuilder:validation:Optional
	// +kubebuilder:default:="5m"
	AttachedVolumeReattachTimeout metav1.Duration `json:"attachedVolumeReattachTimeout"`
	// UnattachedVolumeAttachTimeout configures how long evacuation waits for unattached volumes to attach on
	// different nodes. Setting this to 0 disable this evacuation step.
	// +kubebuilder:validation:Optional
	// +kubebuilder:default:="5m"
	UnattachedVolumeAttachTimeout metav1.Duration `json:"unattachedVolumeAttachTimeout"`
}

EvacuationStrategy configures the evacuation of volumes from a Satellite when DeletionPolicy "Evacuate" is used.

func (*EvacuationStrategy) DeepCopy added in v2.10.2

func (in *EvacuationStrategy) DeepCopy() *EvacuationStrategy

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

func (*EvacuationStrategy) DeepCopyInto added in v2.10.2

func (in *EvacuationStrategy) DeepCopyInto(out *EvacuationStrategy)

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

type IPFamily added in v2.7.0

type IPFamily corev1.IPFamily

IPFamily represents the IP Family (IPv4 or IPv6). +kubebuilder:validation:Enum:=IPv4;IPv6

type LinstorCluster

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

	Spec   LinstorClusterSpec   `json:"spec,omitempty"`
	Status LinstorClusterStatus `json:"status,omitempty"`
}

LinstorCluster is the Schema for the linstorclusters API +kubebuilder:object:root=true +kubebuilder:subresource:status +kubebuilder:resource:scope=Cluster +kubebuilder:printcolumn:name="Available",type=string,JSONPath=`.status.conditions[?(@.type=='Available')].status`,description="If the LINSTOR Cluster is available" +kubebuilder:printcolumn:name="Configured",type=string,JSONPath=`.status.conditions[?(@.type=='Configured')].status`,description="If the LINSTOR Cluster is fully configured" +kubebuilder:printcolumn:name="Version",type=string,JSONPath=`.status.version`,description="The version of the LINSTOR Cluster",priority=10 +kubebuilder:printcolumn:name="Satellites",type=string,JSONPath=`.status.satellites`,description="The number of running/expected Satellites" +kubebuilder:printcolumn:name="Used Capacity",type=string,JSONPath=`.status.capacity`,description="The used capacity in all storage pools" +kubebuilder:printcolumn:name="Volumes",type=integer,JSONPath=`.status.numberOfVolumes`,description="The number of volumes in the cluster" +kubebuilder:printcolumn:name="Snapshots",type=integer,JSONPath=`.status.numberOfSnapshots`,description="The number of snapshots in the cluster",priority=10 +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"

func (*LinstorCluster) DeepCopy

func (in *LinstorCluster) DeepCopy() *LinstorCluster

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

func (*LinstorCluster) DeepCopyInto

func (in *LinstorCluster) DeepCopyInto(out *LinstorCluster)

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

func (*LinstorCluster) DeepCopyObject

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

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

type LinstorClusterApiTLS

type LinstorClusterApiTLS struct {
	// ApiSecretName references a secret holding the TLS key and certificate used to protect the API.
	// Defaults to "linstor-api-tls".
	//+kubebuilder:validation:Optional
	ApiSecretName string `json:"apiSecretName,omitempty"`

	// ClientSecretName references a secret holding the TLS key and certificate used by the operator to configure
	// the cluster. Defaults to "linstor-client-tls".
	//+kubebuilder:validation:Optional
	ClientSecretName string `json:"clientSecretName,omitempty"`

	// CsiControllerSecretName references a secret holding the TLS key and certificate used by the CSI Controller
	// to provision volumes. Defaults to "linstor-csi-controller-tls".
	//+kubebuilder:validation:Optional
	CsiControllerSecretName string `json:"csiControllerSecretName,omitempty"`

	// CsiNodeSecretName references a secret holding the TLS key and certificate used by the CSI Nodes to query
	// the volume state. Defaults to "linstor-csi-node-tls".
	//+kubebuilder:validation:Optional
	CsiNodeSecretName string `json:"csiNodeSecretName,omitempty"`

	// AffinityControllerSecretName references a secret holding the TLS key and certificate used by the Affinity
	// Controller to monitor volume state. Defaults to "linstor-affinity-controller-tls".
	//+kubebuilder:validation:Optional
	AffinityControllerSecretName string `json:"affinityControllerSecretName,omitempty"`

	// NFSServerSecretName references a secret holding the TLS key and certificate used by the NFS Server to query
	// the cluster state. Defaults to "linstor-csi-nfs-server-tls".
	//+kubebuilder:validation:Optional
	NFSServerSecretName string `json:"nfsServerSecretName,omitempty"`

	// CertManager references a cert-manager Issuer or ClusterIssuer.
	// If set, cert-manager.io/Certificate resources will be created, provisioning the secrets referenced in
	// *SecretName using the issuer configured here.
	//+kubebuilder:validation:Optional
	CertManager *cmmetav1.ObjectReference `json:"certManager,omitempty"`

	// CAReference configures the CA certificate to use when validating TLS certificates.
	// If not set, the TLS secret is expected to contain a "ca.crt" containing the CA certificate.
	//+kubebuilder:validation:Optional
	CAReference *CAReference `json:"caReference,omitempty"`
}

func (*LinstorClusterApiTLS) DeepCopy

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

func (*LinstorClusterApiTLS) DeepCopyInto

func (in *LinstorClusterApiTLS) DeepCopyInto(out *LinstorClusterApiTLS)

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

func (*LinstorClusterApiTLS) GetAffinityControllerSecretName added in v2.10.0

func (l *LinstorClusterApiTLS) GetAffinityControllerSecretName() string

func (*LinstorClusterApiTLS) GetApiSecretName

func (l *LinstorClusterApiTLS) GetApiSecretName() string

func (*LinstorClusterApiTLS) GetClientSecretName

func (l *LinstorClusterApiTLS) GetClientSecretName() string

func (*LinstorClusterApiTLS) GetCsiControllerSecretName

func (l *LinstorClusterApiTLS) GetCsiControllerSecretName() string

func (*LinstorClusterApiTLS) GetCsiNodeSecretName

func (l *LinstorClusterApiTLS) GetCsiNodeSecretName() string

func (*LinstorClusterApiTLS) GetNFSServerSecretName added in v2.10.0

func (l *LinstorClusterApiTLS) GetNFSServerSecretName() string

type LinstorClusterList

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

LinstorClusterList contains a list of LinstorCluster +kubebuilder:object:root=true

func (*LinstorClusterList) DeepCopy

func (in *LinstorClusterList) DeepCopy() *LinstorClusterList

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

func (*LinstorClusterList) DeepCopyInto

func (in *LinstorClusterList) DeepCopyInto(out *LinstorClusterList)

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

func (*LinstorClusterList) DeepCopyObject

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

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

type LinstorClusterSpec

type LinstorClusterSpec struct {
	// Repository used to pull workload images.
	// +kubebuilder:validation:Optional
	Repository string `json:"repository,omitempty"`

	// ExternalController references an external controller.
	// When set, the Operator will skip deploying a LINSTOR Controller and instead use the external cluster
	// to register satellites.
	// +kubebuilder:validation:Optional
	ExternalController *LinstorExternalControllerRef `json:"externalController,omitempty"`

	// NodeSelector selects the nodes on which LINSTOR Satellites will be deployed.
	// See https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
	// +kubebuilder:validation:Optional
	NodeSelector map[string]string `json:"nodeSelector,omitempty"`

	// NodeAffinity selects the nodes on which LINSTOR Satellites will be deployed.
	// See https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
	// +kubebuilder:validation:Optional
	NodeAffinity *corev1.NodeSelector `json:"nodeAffinity,omitempty"`

	// Tolerations selects the nodes on which LINSTOR Satellites will be deployed.
	//
	// The default tolerations for DaemonSets are automatically added.
	// +kubebuilder:validation:Optional
	// +listType=atomic
	Tolerations []corev1.Toleration `json:"tolerations,omitempty"`

	// Properties to apply on the cluster level.
	//
	// Use to create default settings for DRBD that should apply to all resources or to configure some other cluster
	// wide default.
	// +kubebuilder:validation:Optional
	// +listType=map
	// +listMapKey=name
	// +patchMergeKey=name
	// +patchStrategy=merge
	Properties []LinstorControllerProperty `json:"properties,omitempty"`

	// Patches is a list of kustomize patches to apply.
	//
	// See https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/patches/ for how to create patches.
	// +kubebuilder:validation:Optional
	Patches []Patch `json:"patches,omitempty"`

	// LinstorPassphraseSecret used to configure the LINSTOR master passphrase.
	//
	// The referenced secret must contain a single key "MASTER_PASSPHRASE". The master passphrase is used to
	// * Derive encryption keys for volumes using the LUKS layer.
	// * Store credentials for accessing remotes for backups.
	// See https://linbit.com/drbd-user-guide/linstor-guide-1_0-en/#s-encrypt_commands for more information.
	// +kubebuilder:validation:Optional
	LinstorPassphraseSecret string `json:"linstorPassphraseSecret,omitempty"`

	// InternalTLS secures the connection between LINSTOR Controller and Satellite.
	//
	// This configures the client certificate used when the Controller connects to a Satellite. This only has an effect
	// when the Satellite is configured to for secure connections using `LinstorSatellite.spec.internalTLS`.
	// +kubebuilder:validation:Optional
	// + See LinstorSatelliteSpec.InternalTLS for why nullable is needed.
	// +nullable
	InternalTLS *TLSConfig `json:"internalTLS,omitempty"`

	// ApiTLS secures the LINSTOR API.
	//
	// This configures the TLS key and certificate used to secure the LINSTOR API.
	// +kubebuilder:validation:Optional
	// + See LinstorSatelliteSpec.InternalTLS for why nullable is needed.
	// +nullable
	ApiTLS *LinstorClusterApiTLS `json:"apiTLS,omitempty"`

	// Controller controls the deployment of the LINSTOR Controller Deployment.
	// +kubebuilder:validation:Optional
	Controller *ComponentSpec `json:"controller,omitempty"`

	// CSIController controls the deployment of the CSI Controller Deployment.
	// +kubebuilder:validation:Optional
	CSIController *DeploymentComponentSpec `json:"csiController,omitempty"`

	// CSINode controls the deployment of the CSI Node DaemonSet.
	// +kubebuilder:validation:Optional
	CSINode *ComponentSpec `json:"csiNode,omitempty"`

	// HighAvailabilityController controls the deployment of the High Availability Controller DaemonSet.
	// +kubebuilder:validation:Optional
	HighAvailabilityController *ComponentSpec `json:"highAvailabilityController,omitempty"`

	// AffinityController controls the deployment of the Affinity Controller Deployment.
	// +kubebuilder:validation:Optional
	AffinityController *DeploymentComponentSpec `json:"affinityController,omitempty"`

	// NFSServer controls the deployment of the LINSTOR CSI NFS Server DaemonSet.
	// +kubebuilder:validation:Optional
	NFSServer *ComponentSpec `json:"nfsServer,omitempty"`
}

LinstorClusterSpec defines the desired state of LinstorCluster

func (*LinstorClusterSpec) DeepCopy

func (in *LinstorClusterSpec) DeepCopy() *LinstorClusterSpec

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

func (*LinstorClusterSpec) DeepCopyInto

func (in *LinstorClusterSpec) DeepCopyInto(out *LinstorClusterSpec)

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

type LinstorClusterStatus

type LinstorClusterStatus struct {
	// Current LINSTOR Cluster state
	// +kubebuilder:validation:Optional
	// +listType=map
	// +listMapKey=type
	Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`

	// The Version of the LINSTOR Cluster.
	//+kubebuilder:validation:Optional
	Version string `json:"version,omitempty"`

	// The number of LINSTOR Satellites that are expected to run.
	//+kubebuilder:validation:Optional
	ScheduledSatellites *int32 `json:"scheduledSatellites"`

	// The number of LINSTOR Satellites currently running.
	//+kubebuilder:validation:Optional
	RunningSatellites *int32 `json:"runningSatellites"`

	// The number of volumes in the LINSTOR Cluster.
	//+kubebuilder:validation:Optional
	NumberOfVolumes *int32 `json:"numberOfVolumes"`

	// The number of snapshots in the LINSTOR Cluster.
	//+kubebuilder:validation:Optional
	NumberOfSnapshots *int32 `json:"numberOfSnapshots"`

	// The number of bytes in total in all storage pools in the LINSTOR Cluster.
	//+kubebuilder:validation:Optional
	TotalCapacityBytes *int64 `json:"availableCapacityBytes"`

	// The number of bytes free in all storage pools in the LINSTOR Cluster.
	//+kubebuilder:validation:Optional
	FreeCapacityBytes *int64 `json:"freeCapacityBytes"`

	// Satellites mirrors the information from ScheduledSatellites and RunningSatellites in a human-readable string
	//+kubebuilder:validation:Optional
	Satellites string `json:"satellites"`

	// Capacity mirrors the information from TotalCapacityBytes and FreeCapacityBytes in a human-readable string
	//+kubebuilder:validation:Optional
	Capacity string `json:"capacity"`
}

LinstorClusterStatus defines the observed state of LinstorCluster

func (*LinstorClusterStatus) DeepCopy

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

func (*LinstorClusterStatus) DeepCopyInto

func (in *LinstorClusterStatus) DeepCopyInto(out *LinstorClusterStatus)

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

type LinstorControllerProperty

type LinstorControllerProperty struct {
	// Name of the property to set.
	//+kubebuilder:validation:MinLength=1
	//+kubebuilder:validation:Required
	Name string `json:"name"`

	// Value to set the property to.
	Value string `json:"value,omitempty"`
}

func (*LinstorControllerProperty) DeepCopy

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

func (*LinstorControllerProperty) DeepCopyInto

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

type LinstorExternalControllerRef added in v2.1.0

type LinstorExternalControllerRef struct {
	// URL of the external controller.
	//+kubebuilder:validation:MinLength=3
	URL string `json:"url"`
}

func (*LinstorExternalControllerRef) DeepCopy added in v2.1.0

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

func (*LinstorExternalControllerRef) DeepCopyInto added in v2.1.0

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

type LinstorNodeConnection added in v2.2.0

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

	Spec   LinstorNodeConnectionSpec   `json:"spec,omitempty"`
	Status LinstorNodeConnectionStatus `json:"status,omitempty"`
}

LinstorNodeConnection is the Schema for the linstornodeconnections API +kubebuilder:object:root=true +kubebuilder:subresource:status +kubebuilder:resource:scope=Cluster +kubebuilder:printcolumn:name="Configured",type=string,JSONPath=`.status.conditions[?(@.type=='Configured')].status`,description="If the LINSTOR Node Connection is fully configured" +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"

func (*LinstorNodeConnection) DeepCopy added in v2.2.0

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

func (*LinstorNodeConnection) DeepCopyInto added in v2.2.0

func (in *LinstorNodeConnection) DeepCopyInto(out *LinstorNodeConnection)

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

func (*LinstorNodeConnection) DeepCopyObject added in v2.2.0

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

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

type LinstorNodeConnectionList added in v2.2.0

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

LinstorNodeConnectionList contains a list of LinstorNodeConnection

func (*LinstorNodeConnectionList) DeepCopy added in v2.2.0

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

func (*LinstorNodeConnectionList) DeepCopyInto added in v2.2.0

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

func (*LinstorNodeConnectionList) DeepCopyObject added in v2.2.0

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

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

type LinstorNodeConnectionPath added in v2.2.0

type LinstorNodeConnectionPath struct {
	// Name of the path.
	// +required
	// +kubebuilder:validation:Required
	Name string `json:"name"`

	// Interface to use on both nodes.
	// +required
	// +kubebuilder:validation:Required
	Interface string `json:"interface"`
}

func (*LinstorNodeConnectionPath) DeepCopy added in v2.2.0

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

func (*LinstorNodeConnectionPath) DeepCopyInto added in v2.2.0

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

type LinstorNodeConnectionSpec added in v2.2.0

type LinstorNodeConnectionSpec struct {
	// Selector selects which pair of Satellites the connection should apply to.
	// If not given, the connection will be applied to all connections.
	// +kubebuilder:validation:Optional
	Selector []SelectorTerm `json:"selector,omitempty"`

	// Properties to apply for the node connection.
	//
	// Use to create default settings for DRBD that should apply to all resources connections between a set of
	// cluster nodes.
	// +kubebuilder:validation:Optional
	// +listType=map
	// +listMapKey=name
	// +patchMergeKey=name
	// +patchStrategy=merge
	Properties []LinstorControllerProperty `json:"properties,omitempty"`

	// Paths configure the network path used when connecting two nodes.
	// +kubebuilder:validation:Optional
	// +listType=map
	// +listMapKey=name
	// +patchMergeKey=name
	// +patchStrategy=merge
	Paths []LinstorNodeConnectionPath `json:"paths,omitempty"`
}

LinstorNodeConnectionSpec defines the desired state of LinstorNodeConnection

func (*LinstorNodeConnectionSpec) DeepCopy added in v2.2.0

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

func (*LinstorNodeConnectionSpec) DeepCopyInto added in v2.2.0

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

type LinstorNodeConnectionStatus added in v2.2.0

type LinstorNodeConnectionStatus struct {
	// Current LINSTOR Node Connection state
	// +kubebuilder:validation:Optional
	// +listType=map
	// +listMapKey=type
	Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
}

LinstorNodeConnectionStatus defines the observed state of LinstorNodeConnection

func (*LinstorNodeConnectionStatus) DeepCopy added in v2.2.0

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

func (*LinstorNodeConnectionStatus) DeepCopyInto added in v2.2.0

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

type LinstorNodeProperty

type LinstorNodeProperty struct {
	// Name of the property to set.
	//+kubebuilder:validation:MinLength=1
	//+kubebuilder:validation:Required
	Name string `json:"name"`

	// Value to set the property to.
	//+kubebuilder:validation:Optional
	Value string `json:"value,omitempty"`

	// ValueFrom sets the value from an existing resource.
	//+kubebuilder:validation:Optional
	ValueFrom *LinstorNodePropertyValueFrom `json:"valueFrom,omitempty"`

	// ExpandFrom can reference multiple resource fields at once.
	// It either sets the property to an aggregate value based on matched resource fields, or expands to multiple
	// properties.
	//+kubebuilder:validation:Optional
	ExpandFrom *LinstorNodePropertyExpandFrom `json:"expandFrom,omitempty"`

	// Optional values are only set if they have a non-empty value
	//+kubebuilder:validation:Optional
	Optional bool `json:"optional,omitempty"`
}

func (*LinstorNodeProperty) DeepCopy

func (in *LinstorNodeProperty) DeepCopy() *LinstorNodeProperty

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

func (*LinstorNodeProperty) DeepCopyInto

func (in *LinstorNodeProperty) DeepCopyInto(out *LinstorNodeProperty)

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

type LinstorNodePropertyExpandFrom added in v2.6.0

type LinstorNodePropertyExpandFrom struct {
	LinstorNodePropertyValueFrom `json:",inline"`

	// NameTemplate defines how the property key is expanded.
	// If set, the template is appended to the defined property name, creating multiple properties instead of one
	// aggregate.
	// * $1 is replaced with the matched key.
	// * $2 is replaced with the matched value.
	//+kubebuilder:validation:Optional
	NameTemplate string `json:"nameTemplate,omitempty"`

	// ValueTemplate defines how the property value is expanded.
	// * $1 is replaced with the matched key.
	// * $2 is replaced with the matched value.
	//+kubebuilder:validation:Optional
	ValueTemplate string `json:"valueTemplate,omitempty"`

	// Delimiter used to join multiple key and value pairs together.
	//+kubebuilder:validation:Optional
	Delimiter string `json:"delimiter,omitempty"`
}

func (*LinstorNodePropertyExpandFrom) DeepCopy added in v2.6.0

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

func (*LinstorNodePropertyExpandFrom) DeepCopyInto added in v2.6.0

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

type LinstorNodePropertyValueFrom

type LinstorNodePropertyValueFrom struct {
	// Select a field of the node. Supports `metadata.name`, `metadata.labels['<KEY>']`, `metadata.annotations['<KEY>']`.
	//+kubebuilder:validation:MinLength=1
	//+kubebuilder:validation:Required
	NodeFieldRef string `json:"nodeFieldRef,omitempty"`
}

func (*LinstorNodePropertyValueFrom) DeepCopy

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

func (*LinstorNodePropertyValueFrom) DeepCopyInto

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

type LinstorSatellite

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

	Spec   LinstorSatelliteSpec   `json:"spec,omitempty"`
	Status LinstorSatelliteStatus `json:"status,omitempty"`
}

LinstorSatellite is the Schema for the linstorsatellites API +kubebuilder:object:root=true +kubebuilder:subresource:status +kubebuilder:resource:scope=Cluster +kubebuilder:printcolumn:name="Connected",type=string,JSONPath=`.status.conditions[?(@.type=='Available')].status`,description="If the LINSTOR Satellite is connected" +kubebuilder:printcolumn:name="Configured",type=string,JSONPath=`.status.conditions[?(@.type=='Configured')].status`,description="If the LINSTOR Satellite is fully configured" +kubebuilder:printcolumn:name="Applied Configurations",type=string,JSONPath=`.metadata.annotations.piraeus\.io/applied-configurations`,description="The Satellite Configurations applied to this Satellite",priority=10 +kubebuilder:printcolumn:name="Deletion Policy",type=string,JSONPath=`.spec.deletionPolicy`,description="The deletion policy of the Satellite" +kubebuilder:printcolumn:name="Used Capacity",type=string,JSONPath=`.status.capacity`,description="The used capacity on the node" +kubebuilder:printcolumn:name="Volumes",type=integer,JSONPath=`.status.numberOfVolumes`,description="The number of volumes on the node" +kubebuilder:printcolumn:name="Snapshots",type=integer,JSONPath=`.status.numberOfSnapshots`,description="The number of snapshots on the node",priority=10 +kubebuilder:printcolumn:name="Storage Providers",type=string,JSONPath=`.status.storageProviders`,description="The storage providers supported by the node",priority=10 +kubebuilder:printcolumn:name="Device Layers",type=string,JSONPath=`.status.deviceLayers`,description="The device layers supported by the node",priority=10 +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"

func (*LinstorSatellite) DeepCopy

func (in *LinstorSatellite) DeepCopy() *LinstorSatellite

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

func (*LinstorSatellite) DeepCopyInto

func (in *LinstorSatellite) DeepCopyInto(out *LinstorSatellite)

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

func (*LinstorSatellite) DeepCopyObject

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

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

type LinstorSatelliteConfiguration

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

	Spec   LinstorSatelliteConfigurationSpec   `json:"spec,omitempty"`
	Status LinstorSatelliteConfigurationStatus `json:"status,omitempty"`
}

LinstorSatelliteConfiguration is the Schema for the linstorsatelliteconfigurations API +kubebuilder:object:root=true +kubebuilder:subresource:status +kubebuilder:resource:scope=Cluster +kubebuilder:printcolumn:name="Selector",type=string,JSONPath=`.spec.nodeSelector`,description="The node selector used" +kubebuilder:printcolumn:name="Applied",type=string,JSONPath=`.status.conditions[?(@.type=='Applied')].status`,description="If the Configuration was applied" +kubebuilder:printcolumn:name="Matched",type=integer,JSONPath=`.status.matched`,description="Number of Satellites this Configuration has been applied to" +kubebuilder:printcolumn:name="Satellites",type=string,JSONPath=`.status.appliedTo`,description="Satellites this Configuration has been applied to",priority=10 +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"

func (*LinstorSatelliteConfiguration) DeepCopy

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

func (*LinstorSatelliteConfiguration) DeepCopyInto

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

func (*LinstorSatelliteConfiguration) DeepCopyObject

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

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

type LinstorSatelliteConfigurationList

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

LinstorSatelliteConfigurationList contains a list of LinstorSatelliteConfiguration +kubebuilder:object:root=true

func (*LinstorSatelliteConfigurationList) DeepCopy

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

func (*LinstorSatelliteConfigurationList) DeepCopyInto

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

func (*LinstorSatelliteConfigurationList) DeepCopyObject

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

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

type LinstorSatelliteConfigurationSpec

type LinstorSatelliteConfigurationSpec struct {
	// NodeSelector selects which LinstorSatellite resources this spec should be applied to.
	// See https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
	// +kubebuilder:validation:Optional
	NodeSelector map[string]string `json:"nodeSelector,omitempty"`

	// NodeAffinity selects which LinstorSatellite resources this spec should be applied to.
	// See https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
	// +kubebuilder:validation:Optional
	NodeAffinity *corev1.NodeSelector `json:"nodeAffinity,omitempty"`

	// Patches is a list of kustomize patches to apply.
	//
	// See https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/patches/ for how to create patches.
	// +kubebuilder:validation:Optional
	Patches []Patch `json:"patches,omitempty"`

	// StoragePools is a list of storage pools to configure on the node.
	// +kubebuilder:validation:Optional
	StoragePools []LinstorStoragePool `json:"storagePools,omitempty"`

	// Properties is a list of properties to set on the node.
	// +kubebuilder:validation:Optional
	// +listType=map
	// +listMapKey=name
	// +patchMergeKey=name
	// +patchStrategy=merge
	Properties []LinstorNodeProperty `json:"properties,omitempty"`

	// InternalTLS configures secure communication for the LINSTOR Satellite.
	//
	// If set, the control traffic between LINSTOR Controller and Satellite will be encrypted using mTLS.
	// +kubebuilder:validation:Optional
	// + See LinstorSatelliteSpec.InternalTLS for why nullable is needed.
	// +nullable
	InternalTLS *TLSConfigWithHandshakeDaemon `json:"internalTLS,omitempty"`

	// IPFamilies configures the IP Family (IPv4 or IPv6) to use to connect to the LINSTOR Satellite.
	//
	// If set, the control traffic between LINSTOR Controller and Satellite will use only the given IP Family.
	// If not set, the Operator will configure all families found in the Satellites Pods' Status.
	// +kubebuilder:validation:Optional
	IPFamilies []IPFamily `json:"ipFamilies,omitempty"`

	// +kubebuilder:validation:Optional
	DeletionPolicy DeletionPolicy `json:"deletionPolicy,omitempty"`

	// +kubebuilder:validation:Optional
	// +nullable
	EvacuationStrategy *EvacuationStrategy `json:"evacuationStrategy,omitempty"`

	// Template to apply to Satellite Pods.
	//
	// The template is applied as a patch to the default resource, so it can be "sparse", not listing any
	// containers or volumes that should remain unchanged.
	// See https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates
	// +kubebuilder:validation:Optional
	// +kubebuilder:validation:Schemaless
	// +kubebuilder:validation:Type=object
	// +kubebuilder:pruning:PreserveUnknownFields
	// +structType=atomic
	PodTemplate json.RawMessage `json:"podTemplate,omitempty"`
}

LinstorSatelliteConfigurationSpec defines a partial, desired state of a LinstorSatelliteSpec.

All the LinstorSatelliteConfiguration resources with matching NodeSelector will be merged into a single LinstorSatelliteSpec.

func (*LinstorSatelliteConfigurationSpec) DeepCopy

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

func (*LinstorSatelliteConfigurationSpec) DeepCopyInto

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

type LinstorSatelliteConfigurationStatus

type LinstorSatelliteConfigurationStatus struct {
	// Current LINSTOR Satellite Config state
	// +kubebuilder:validation:Optional
	// +listType=map
	// +listMapKey=type
	Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`

	// AppliedTo lists the LinstorSatellite resource this configuration was applied to
	// +kubebuilder:validation:Optional
	AppliedTo []string `json:"appliedTo"`

	// Number of configured LinstorSatellite resource.
	// +kubebuilder:validation:Optional
	Matched *int64 `json:"matched"`
}

LinstorSatelliteConfigurationStatus defines the observed state of LinstorSatelliteConfiguration

func (*LinstorSatelliteConfigurationStatus) DeepCopy

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

func (*LinstorSatelliteConfigurationStatus) DeepCopyInto

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

type LinstorSatelliteList

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

LinstorSatelliteList contains a list of LinstorSatellite +kubebuilder:object:root=true

func (*LinstorSatelliteList) DeepCopy

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

func (*LinstorSatelliteList) DeepCopyInto

func (in *LinstorSatelliteList) DeepCopyInto(out *LinstorSatelliteList)

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

func (*LinstorSatelliteList) DeepCopyObject

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

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

type LinstorSatelliteSpec

type LinstorSatelliteSpec struct {
	// ClusterRef references the LinstorCluster used to create this LinstorSatellite.
	ClusterRef ClusterReference `json:"clusterRef"`

	// Repository used to pull workload images.
	// +kubebuilder:validation:Optional
	Repository string `json:"repository,omitempty"`

	// Patches is a list of kustomize patches to apply.
	//
	// See https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/patches/ for how to create patches.
	// +kubebuilder:validation:Optional
	Patches []Patch `json:"patches,omitempty"`

	// StoragePools is a list of storage pools to configure on the node.
	// +kubebuilder:validation:Optional
	StoragePools []LinstorStoragePool `json:"storagePools,omitempty"`

	// Properties is a list of properties to set on the node.
	// +kubebuilder:validation:Optional
	// +listType=map
	// +listMapKey=name
	// +patchMergeKey=name
	// +patchStrategy=merge
	Properties []LinstorNodeProperty `json:"properties,omitempty"`

	// InternalTLS configures secure communication for the LINSTOR Satellite.
	//
	// If set, the control traffic between LINSTOR Controller and Satellite will be encrypted using mTLS.
	// The Controller will use the client key from `LinstorCluster.spec.internalTLS` when connecting.
	// +kubebuilder:validation:Optional
	// + Without "nullable" the k8s API does not accept patches with 'internalTLS: {}', which seems to be a bug.
	// +nullable
	InternalTLS *TLSConfigWithHandshakeDaemon `json:"internalTLS,omitempty"`

	// IPFamilies configures the IP Family (IPv4 or IPv6) to use to connect to the LINSTOR Satellite.
	//
	// If set, the control traffic between LINSTOR Controller and Satellite will use only the given IP Family.
	// If not set, the Operator will configure all families found in the Satellites Pods' Status.
	// +kubebuilder:validation:Optional
	IPFamilies []IPFamily `json:"ipFamilies,omitempty"`

	// +kubebuilder:validation:Optional
	// +kubebuilder:default:=Retain
	DeletionPolicy DeletionPolicy `json:"deletionPolicy,omitempty"`

	// +kubebuilder:validation:Optional
	EvacuationStrategy EvacuationStrategy `json:"evacuationStrategy,omitempty"`
}

LinstorSatelliteSpec defines the desired state of LinstorSatellite

func (*LinstorSatelliteSpec) DeepCopy

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

func (*LinstorSatelliteSpec) DeepCopyInto

func (in *LinstorSatelliteSpec) DeepCopyInto(out *LinstorSatelliteSpec)

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

type LinstorSatelliteStatus

type LinstorSatelliteStatus struct {
	// Current LINSTOR Satellite state
	// +kubebuilder:validation:Optional
	// +listType=map
	// +listMapKey=type
	Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`

	// The number of volumes on this Satellite.
	//+kubebuilder:validation:Optional
	NumberOfVolumes *int32 `json:"numberOfVolumes"`

	// The number of snapshots on this Satellite.
	//+kubebuilder:validation:Optional
	NumberOfSnapshots *int32 `json:"numberOfSnapshots"`

	// The number of bytes in total in all storage pools on this Satellite.
	//+kubebuilder:validation:Optional
	TotalCapacityBytes *int64 `json:"availableCapacityBytes"`

	// The number of bytes free in all storage pools on this Satellite.
	//+kubebuilder:validation:Optional
	FreeCapacityBytes *int64 `json:"freeCapacityBytes"`

	// Capacity mirrors the information from TotalCapacityBytes and FreeCapacityBytes in a human-readable string.
	//+kubebuilder:validation:Optional
	Capacity string `json:"capacity"`

	// StorageProviders lists the storage providers (LVM, ZFS, etc...) this Satellite supports.
	//+kubebuilder:validation:Optional
	StorageProviders []string `json:"storageProviders,omitempty"`

	// DeviceLayers lists the device layers (LUKS, CACHE, etc...) this Satellite supports.
	//+kubebuilder:validation:Optional
	DeviceLayers []string `json:"deviceLayers,omitempty"`
}

LinstorSatelliteStatus defines the observed state of LinstorSatellite

func (*LinstorSatelliteStatus) DeepCopy

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

func (*LinstorSatelliteStatus) DeepCopyInto

func (in *LinstorSatelliteStatus) DeepCopyInto(out *LinstorSatelliteStatus)

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

type LinstorStoragePool

type LinstorStoragePool struct {
	// Name of the storage pool in linstor.
	//+kubebuilder:validation:MinLength=3
	Name string `json:"name"`

	// Properties to set on the storage pool.
	// +listType=map
	// +listMapKey=name
	// +patchMergeKey=name
	// +patchStrategy=merge
	Properties []LinstorNodeProperty `json:"properties,omitempty"`

	// Configures a LVM Volume Group as storage pool.
	// +kubebuilder:validation:Optional
	LvmPool *LinstorStoragePoolLvm `json:"lvmPool,omitempty"`
	// Configures a LVM Thin Pool as storage pool.
	// +kubebuilder:validation:Optional
	LvmThinPool *LinstorStoragePoolLvmThin `json:"lvmThinPool,omitempty"`
	// Configures a file system based storage pool, allocating a regular file per volume.
	// +kubebuilder:validation:Optional
	FilePool *LinstorStoragePoolFile `json:"filePool,omitempty"`
	// Configures a file system based storage pool, allocating a sparse file per volume.
	// +kubebuilder:validation:Optional
	FileThinPool *LinstorStoragePoolFile `json:"fileThinPool,omitempty"`
	// Configures a ZFS system based storage pool, allocating zvols from the given zpool.
	// +kubebuilder:validation:Optional
	ZfsPool *LinstorStoragePoolZfs `json:"zfsPool,omitempty"`
	// Configures a ZFS system based storage pool, allocating sparse zvols from the given zpool.
	// +kubebuilder:validation:Optional
	ZfsThinPool *LinstorStoragePoolZfs `json:"zfsThinPool,omitempty"`

	Source *LinstorStoragePoolSource `json:"source,omitempty"`
}

func (*LinstorStoragePool) BackendProbeCommand added in v2.10.8

func (p *LinstorStoragePool) BackendProbeCommand() []string

BackendProbeCommand returns a read-only command that lists the existing backend storage objects of the same kind as this storage pool (all LVM volume groups, or all ZFS datasets), one identifier per line. It returns nil for storage pools without a separate backend to probe (file based pools).

func (*LinstorStoragePool) DeepCopy

func (in *LinstorStoragePool) DeepCopy() *LinstorStoragePool

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

func (*LinstorStoragePool) DeepCopyInto

func (in *LinstorStoragePool) DeepCopyInto(out *LinstorStoragePool)

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

func (*LinstorStoragePool) PoolName

func (p *LinstorStoragePool) PoolName() string

func (*LinstorStoragePool) ProviderKind

func (p *LinstorStoragePool) ProviderKind() lclient.ProviderKind

type LinstorStoragePoolFile

type LinstorStoragePoolFile struct {
	// Directory is the path to the host directory used to store volume data.
	Directory string `json:"directory,omitempty"`
}

func (*LinstorStoragePoolFile) DeepCopy

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

func (*LinstorStoragePoolFile) DeepCopyInto

func (in *LinstorStoragePoolFile) DeepCopyInto(out *LinstorStoragePoolFile)

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

func (*LinstorStoragePoolFile) DirectoryOrDefault

func (l *LinstorStoragePoolFile) DirectoryOrDefault(name string) string

type LinstorStoragePoolLvm

type LinstorStoragePoolLvm struct {
	VolumeGroup string `json:"volumeGroup,omitempty"`
}

func (*LinstorStoragePoolLvm) DeepCopy

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

func (*LinstorStoragePoolLvm) DeepCopyInto

func (in *LinstorStoragePoolLvm) DeepCopyInto(out *LinstorStoragePoolLvm)

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

type LinstorStoragePoolLvmThin

type LinstorStoragePoolLvmThin struct {
	VolumeGroup string `json:"volumeGroup,omitempty"`
	// ThinPool is the name of the thinpool LV (without VG prefix).
	ThinPool string `json:"thinPool,omitempty"`
}

func (*LinstorStoragePoolLvmThin) DeepCopy

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

func (*LinstorStoragePoolLvmThin) DeepCopyInto

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

type LinstorStoragePoolSource

type LinstorStoragePoolSource struct {
	// HostDevices is a list of device paths used to configure the given pool.
	// +kubebuilder:validation:Optional
	// +kubebuilder:validation:MinItems:=1
	HostDevices []string `json:"hostDevices,omitempty"`
}

func (*LinstorStoragePoolSource) DeepCopy

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

func (*LinstorStoragePoolSource) DeepCopyInto

func (in *LinstorStoragePoolSource) DeepCopyInto(out *LinstorStoragePoolSource)

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

func (*LinstorStoragePoolSource) Validate

func (s *LinstorStoragePoolSource) Validate(oldSP *LinstorStoragePool, knownDevices sets.Set[string], fieldPrefix *field.Path) field.ErrorList

type LinstorStoragePoolZfs added in v2.5.0

type LinstorStoragePoolZfs struct {
	// ZPool is the name of the ZFS zpool.
	ZPool string `json:"zPool,omitempty"`
}

func (*LinstorStoragePoolZfs) DeepCopy added in v2.5.0

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

func (*LinstorStoragePoolZfs) DeepCopyInto added in v2.5.0

func (in *LinstorStoragePoolZfs) DeepCopyInto(out *LinstorStoragePoolZfs)

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

func (*LinstorStoragePoolZfs) Validate added in v2.5.0

func (l *LinstorStoragePoolZfs) Validate(oldSP *LinstorStoragePool, fieldPrefix *field.Path, name string, thin bool) field.ErrorList

type MatchLabelSelector added in v2.2.0

type MatchLabelSelector struct {
	// Key is the name of a node label.
	//+kubebuilder:validation:MinLength=1
	//+kubebuilder:validation:Required
	Key string `json:"key"`
	// Op to apply to the label.
	// Exists (default) checks for the presence of the label on both nodes in the pair.
	// DoesNotExist checks that the label is not present on either node in the pair.
	// In checks for the presence of the label value given by Values on both nodes in the pair.
	// NotIn checks that both nodes in the pair do not have any of the label values given by Values.
	// Same checks that the label value is equal in the node pair.
	// NotSame checks that the label value is not equal in the node pair.
	// +kubebuilder:default:=Exists
	// +kubebuilder:validation:Enum:=Exists;DoesNotExist;In;NotIn;Same;NotSame
	// +kubebuilder:validation:Optional
	Op MatchLabelSelectorOperator `json:"op,omitempty"`
	// Values to match on, using the provided Op.
	// +kubebuilder:validation:Optional
	Values []string `json:"values,omitempty"`
}

func (*MatchLabelSelector) DeepCopy added in v2.2.0

func (in *MatchLabelSelector) DeepCopy() *MatchLabelSelector

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

func (*MatchLabelSelector) DeepCopyInto added in v2.2.0

func (in *MatchLabelSelector) DeepCopyInto(out *MatchLabelSelector)

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

type MatchLabelSelectorOperator added in v2.2.0

type MatchLabelSelectorOperator string
const (
	MatchLabelSelectorOpExists       MatchLabelSelectorOperator = "Exists"
	MatchLabelSelectorOpDoesNotExist MatchLabelSelectorOperator = "DoesNotExist"
	MatchLabelSelectorOpIn           MatchLabelSelectorOperator = "In"
	MatchLabelSelectorOpNotIn        MatchLabelSelectorOperator = "NotIn"
	MatchLabelSelectorOpSame         MatchLabelSelectorOperator = "Same"
	MatchLabelSelectorOpNotSame      MatchLabelSelectorOperator = "NotSame"
)

type Patch

type Patch struct {
	// Patch is the content of a patch.
	//+kubebuilder:validation:MinLength=1
	//+kubebuilder:validation:Required
	Patch string `json:"patch,omitempty" yaml:"patch,omitempty"`

	// Target points to the resources that the patch is applied to
	Target *Selector `json:"target,omitempty" yaml:"target,omitempty"`

	// Options is a list of options for the patch
	// +kubebuilder:validation:Optional
	Options *PatchArgs `json:"options,omitempty" yaml:"options,omitempty"`
}

Patch represent either a Strategic Merge Patch or a JSON patch and its targets.

func (*Patch) DeepCopy

func (in *Patch) DeepCopy() *Patch

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

func (*Patch) DeepCopyInto

func (in *Patch) DeepCopyInto(out *Patch)

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

func (*Patch) GetJsonPatch added in v2.8.0

func (p *Patch) GetJsonPatch() (jsonpatch.Patch, error)

GetJsonPatch loads a JSON 6902 patch. Taken from sigs.k8s.io/kustomize/api@v0.12.1/internal/builtins/PatchTransformer.go

func (*Patch) GetStrategicMergePatch added in v2.8.0

func (p *Patch) GetStrategicMergePatch() (*kustresource.Resource, error)

func (*Patch) GetTarget added in v2.4.0

func (p *Patch) GetTarget() *Selector

type PatchArgs added in v2.10.1

type PatchArgs struct {
	// AllowNameChange allows name changes to the resource.
	AllowNameChange bool `json:"allowNameChange,omitempty" yaml:"allowNameChange,omitempty"`

	// AllowKindChange allows kind changes to the resource.
	AllowKindChange bool `json:"allowKindChange,omitempty" yaml:"allowKindChange,omitempty"`
}

PatchArgs represent set of options on resources of a patch.

func (*PatchArgs) DeepCopy added in v2.10.1

func (in *PatchArgs) DeepCopy() *PatchArgs

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

func (*PatchArgs) DeepCopyInto added in v2.10.1

func (in *PatchArgs) DeepCopyInto(out *PatchArgs)

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

type Selector

type Selector struct {
	Group   string `json:"group,omitempty" yaml:"group,omitempty"`
	Version string `json:"version,omitempty" yaml:"version,omitempty"`
	Kind    string `json:"kind,omitempty" yaml:"kind,omitempty"`

	// Name of the resource.
	Name string `json:"name,omitempty" yaml:"name,omitempty"`

	// Namespace the resource belongs to, if it can belong to a namespace.
	Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`

	// AnnotationSelector is a string that follows the label selection expression
	// https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api
	// It matches against the resource annotations.
	AnnotationSelector string `json:"annotationSelector,omitempty" yaml:"annotationSelector,omitempty"`

	// LabelSelector is a string that follows the label selection expression
	// https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api
	// It matches against the resource labels.
	LabelSelector string `json:"labelSelector,omitempty" yaml:"labelSelector,omitempty"`
}

Selector specifies a set of resources. Any resource that matches all of the conditions is included in this set.

func (*Selector) DeepCopy

func (in *Selector) DeepCopy() *Selector

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

func (*Selector) DeepCopyInto

func (in *Selector) DeepCopyInto(out *Selector)

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

type SelectorTerm added in v2.2.0

type SelectorTerm struct {
	// MatchLabels is a list of match expressions that the node pairs must meet.
	//+kubebuilder:validation:Required
	MatchLabels []MatchLabelSelector `json:"matchLabels,omitempty"`
}

SelectorTerm matches pairs of nodes by checking that the nodes match all specified requirements.

func (*SelectorTerm) DeepCopy added in v2.2.0

func (in *SelectorTerm) DeepCopy() *SelectorTerm

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

func (*SelectorTerm) DeepCopyInto added in v2.2.0

func (in *SelectorTerm) DeepCopyInto(out *SelectorTerm)

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

type TLSConfig

type TLSConfig struct {
	// SecretName references a secret holding the TLS key and certificates.
	//+kubebuilder:validation:Optional
	SecretName string `json:"secretName,omitempty"`

	// CertManager references a cert-manager Issuer or ClusterIssuer.
	// If set, a Certificate resource will be created, provisioning the secret references in SecretName using the
	// issuer configured here.
	//+kubebuilder:validation:Optional
	CertManager *cmmetav1.ObjectReference `json:"certManager,omitempty"`

	// CAReference configures the CA certificate to use when validating TLS certificates.
	// If not set, the TLS secret is expected to contain a "ca.crt" containing the CA certificate.
	//+kubebuilder:validation:Optional
	CAReference *CAReference `json:"caReference,omitempty"`
}

TLSConfig configures TLS for a component.

func (*TLSConfig) DeepCopy

func (in *TLSConfig) DeepCopy() *TLSConfig

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

func (*TLSConfig) DeepCopyInto

func (in *TLSConfig) DeepCopyInto(out *TLSConfig)

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

type TLSConfigWithHandshakeDaemon added in v2.3.0

type TLSConfigWithHandshakeDaemon struct {
	TLSConfig `json:",inline"`

	// TLSHandshakeDaemon enables tlshd for establishing TLS sessions for use by DRBD.
	//
	// If enabled, adds a new sidecar to the LINSTOR Satellite that runs the tlshd handshake daemon.
	// The daemon uses the TLS certificate and key to establish secure connections on behalf of DRBD.
	//+kubebuilder:validation:Optional
	TLSHandshakeDaemon bool `json:"tlsHandshakeDaemon,omitempty"`
}

func (*TLSConfigWithHandshakeDaemon) DeepCopy added in v2.3.0

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

func (*TLSConfigWithHandshakeDaemon) DeepCopyInto added in v2.3.0

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