persistentvolumeclaim

package
v1.21.2 Latest Latest
Warning

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

Go to latest
Published: Dec 21, 2023 License: Apache-2.0 Imports: 24 Imported by: 0

Documentation

Overview

Package persistentvolumeclaim contains all the logic to reconcile and build PVCS

Index

Constants

This section is empty.

Variables

View Source
var ErrorInvalidSize = fmt.Errorf("invalid storage size")

ErrorInvalidSize is raised when the size specified by the user is not valid and can't be specified in a PVC declaration

Functions

func BelongToInstance added in v1.18.4

func BelongToInstance(cluster *apiv1.Cluster, instanceName, pvcName string) bool

BelongToInstance returns a boolean indicating if that given PVC belongs to an instance

func Build

func Build(
	cluster *apiv1.Cluster,
	configuration *CreateConfiguration,
) (*corev1.PersistentVolumeClaim, error)

Build spec of a PVC, given its name and the storage configuration TODO: this logic eventually should be moved inside reconcile

func CreateInstancePVCs added in v1.18.4

func CreateInstancePVCs(
	ctx context.Context,
	c client.Client,
	cluster *apiv1.Cluster,
	source *StorageSource,
	serial int,
) error

CreateInstancePVCs creates the expected pvcs for the instance

func EnrichStatus

func EnrichStatus(
	ctx context.Context,
	cluster *apiv1.Cluster,
	runningInstances []corev1.Pod,
	jobs []batchv1.Job,
	managedPVCs []corev1.PersistentVolumeClaim,
)

EnrichStatus obtains and classifies the current status of each managed PVC

func EnsureInstancePVCGroupIsDeleted added in v1.18.4

func EnsureInstancePVCGroupIsDeleted(
	ctx context.Context,
	c client.Client,
	cluster *apiv1.Cluster,
	name string,
	namespace string,
) error

EnsureInstancePVCGroupIsDeleted ensures that all the expected pvc for a given instance are deleted

func FilterByPodSpec added in v1.18.4

func FilterByPodSpec(
	pvcs []corev1.PersistentVolumeClaim,
	instanceSpec corev1.PodSpec,
) []corev1.PersistentVolumeClaim

FilterByPodSpec returns all the corev1.PersistentVolumeClaim that are used inside the podSpec

func GetInstancePVCs added in v1.21.0

func GetInstancePVCs(
	ctx context.Context,
	cli client.Client,
	instanceName string,
	namespace string,
) ([]corev1.PersistentVolumeClaim, error)

GetInstancePVCs gets all the PVC associated with a given instance

func GetName

func GetName(instanceName string, role utils.PVCRole) string

GetName builds the name for a given PVC of the instance

func InstanceHasMissingMounts added in v1.18.4

func InstanceHasMissingMounts(cluster *apiv1.Cluster, instance *corev1.Pod) bool

InstanceHasMissingMounts returns true if the instance has expected PVCs that are not mounted

func IsUsedByPodSpec

func IsUsedByPodSpec(podSpec corev1.PodSpec, pvcNames ...string) bool

IsUsedByPodSpec checks if the given pod spec is using the PVCs

func Reconcile added in v1.18.4

func Reconcile(
	ctx context.Context,
	c client.Client,
	cluster *apiv1.Cluster,
	instances []corev1.Pod,
	pvcs []corev1.PersistentVolumeClaim,
) (ctrl.Result, error)

Reconcile reconciles the PVCs

Types

type CreateConfiguration

type CreateConfiguration struct {
	Status     PVCStatus
	NodeSerial int
	Role       utils.PVCRole
	Storage    apiv1.StorageConfiguration
	Source     *corev1.TypedLocalObjectReference
}

CreateConfiguration specifies how a PVC should be created

type PVCStatus

type PVCStatus = string

PVCStatus describes the PVC phase

const (
	// StatusInitializing is the annotation value for PVC initializing status
	StatusInitializing PVCStatus = "initializing"

	// StatusReady is the annotation value for PVC ready status
	StatusReady PVCStatus = "ready"

	// StatusDetached is the annotation value for PVC detached status
	StatusDetached PVCStatus = "detached"
)

type StorageSource added in v1.21.0

type StorageSource struct {
	// The data source that should be used for PGDATA
	DataSource corev1.TypedLocalObjectReference `json:"dataSource"`

	// The (optional) data source that should be used for WALs
	WALSource *corev1.TypedLocalObjectReference `json:"walSource"`
}

StorageSource the storage source to be used when creating a set of PVCs

func GetCandidateStorageSourceForPrimary added in v1.21.0

func GetCandidateStorageSourceForPrimary(
	cluster *apiv1.Cluster,
	backup *apiv1.Backup,
) *StorageSource

GetCandidateStorageSourceForPrimary gets the candidate storage source to be used to create a primary PVC

func GetCandidateStorageSourceForReplica added in v1.21.0

func GetCandidateStorageSourceForReplica(
	ctx context.Context,
	cluster *apiv1.Cluster,
	backupList apiv1.BackupList,
) *StorageSource

GetCandidateStorageSourceForReplica gets the candidate storage source to be used to create a replica PVC

func (*StorageSource) ForRole added in v1.21.0

ForRole gets the storage source given a PVC role

type ValidationMessage added in v1.21.1

type ValidationMessage struct {
	ObjectName string `json:"objectName"`
	Message    string `json:"message"`
}

ValidationMessage is a message about a snapshot

type ValidationStatus added in v1.21.1

type ValidationStatus struct {
	// Errors is the list of blocking errors
	Errors []ValidationMessage `json:"errors"`

	// Warnings is the list of warnings that are not blocking
	Warnings []ValidationMessage `json:"warnings"`
}

ValidationStatus is the result of the validation of a cluster datasource

func VerifyDataSourceCoherence added in v1.21.1

func VerifyDataSourceCoherence(
	ctx context.Context,
	c client.Client,
	namespace string,
	source *apiv1.DataSource,
) (ValidationStatus, error)

VerifyDataSourceCoherence verifies if th specified data source that we should use when creating a new cluster is coherent. We check for:

  • role of the volume snapshot is coherent with the requested section (being storage or walStorage)

  • the specified snapshots all belong to the same cluster and backupName

func (*ValidationStatus) ContainsErrors added in v1.21.1

func (status *ValidationStatus) ContainsErrors() bool

ContainsErrors returns true if the validation result has any blocking errors.

func (*ValidationStatus) ContainsWarnings added in v1.21.1

func (status *ValidationStatus) ContainsWarnings() bool

ContainsWarnings returns true if there are any validation warnings.

Jump to

Keyboard shortcuts

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