Documentation
¶
Overview ¶
Package persistentvolumeclaim contains all the logic to reconcile and build PVCS
Index ¶
- Variables
- func BelongToInstance(cluster *apiv1.Cluster, instanceName, pvcName string) bool
- func Build(cluster *apiv1.Cluster, configuration *CreateConfiguration) (*corev1.PersistentVolumeClaim, error)
- func CreateInstancePVCs(ctx context.Context, c client.Client, cluster *apiv1.Cluster, ...) error
- func EnrichStatus(ctx context.Context, cluster *apiv1.Cluster, runningInstances []corev1.Pod, ...)
- func EnsureInstancePVCGroupIsDeleted(ctx context.Context, c client.Client, cluster *apiv1.Cluster, name string, ...) error
- func FilterByPodSpec(pvcs []corev1.PersistentVolumeClaim, instanceSpec corev1.PodSpec) []corev1.PersistentVolumeClaim
- func GetInstancePVCs(ctx context.Context, cli client.Client, instanceName string, namespace string) ([]corev1.PersistentVolumeClaim, error)
- func GetName(instanceName string, role utils.PVCRole) string
- func InstanceHasMissingMounts(cluster *apiv1.Cluster, instance *corev1.Pod) bool
- func IsUsedByPodSpec(podSpec corev1.PodSpec, pvcNames ...string) bool
- func Reconcile(ctx context.Context, c client.Client, cluster *apiv1.Cluster, ...) (ctrl.Result, error)
- type CreateConfiguration
- type PVCStatus
- type StorageSource
- type ValidationMessage
- type ValidationStatus
Constants ¶
This section is empty.
Variables ¶
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
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 InstanceHasMissingMounts ¶ added in v1.18.4
InstanceHasMissingMounts returns true if the instance has expected PVCs that are not mounted
func IsUsedByPodSpec ¶
IsUsedByPodSpec checks if the given pod spec is using 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
func (source *StorageSource) ForRole(role utils.PVCRole) (*corev1.TypedLocalObjectReference, error)
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.