From 6fa89a83e9d2ac3c6369e57eb093dfec6a739bbd Mon Sep 17 00:00:00 2001 From: Abhisheka Date: Wed, 15 May 2024 05:45:50 +0000 Subject: [PATCH] PB-6904:Functions to delete pv pvc with force option --- k8s/core/persistentvolumeclaims.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/k8s/core/persistentvolumeclaims.go b/k8s/core/persistentvolumeclaims.go index d86aab94..ef7edf9b 100644 --- a/k8s/core/persistentvolumeclaims.go +++ b/k8s/core/persistentvolumeclaims.go @@ -22,6 +22,8 @@ type PersistentVolumeClaimOps interface { UpdatePersistentVolumeClaim(*corev1.PersistentVolumeClaim) (*corev1.PersistentVolumeClaim, error) // DeletePersistentVolumeClaim deletes the given persistent volume claim DeletePersistentVolumeClaim(name, namespace string) error + // DeletePersistentVolumeClaimWithForce deletes the given persistent volume claim with force option + DeletePersistentVolumeClaimWithForce(name, namespace string) error // ValidatePersistentVolumeClaim validates the given pvc ValidatePersistentVolumeClaim(vv *corev1.PersistentVolumeClaim, timeout, retryInterval time.Duration) error // ValidatePersistentVolumeClaimSize validates the given pvc size @@ -36,6 +38,8 @@ type PersistentVolumeClaimOps interface { GetPersistentVolume(pvName string) (*corev1.PersistentVolume, error) // DeletePersistentVolume deletes the PV for given name DeletePersistentVolume(pvName string) error + // DeletePersistentVolumeWithForce deletes the PV for given name with force option + DeletePersistentVolumeWithForce(pvName string) error // GetPersistentVolumes returns all PVs in cluster GetPersistentVolumes() (*corev1.PersistentVolumeList, error) //UpdatePersistentVolume updates PV @@ -91,6 +95,18 @@ func (c *Client) DeletePersistentVolumeClaim(name, namespace string) error { return c.kubernetes.CoreV1().PersistentVolumeClaims(namespace).Delete(context.TODO(), name, metav1.DeleteOptions{}) } +// DeletePersistentVolumeClaimWithForce deletes the given persistentvolumeclaim with force option +func (c *Client) DeletePersistentVolumeClaimWithForce(name, namespace string) error { + if err := c.initClient(); err != nil { + return err + } + gracePeriodSec := int64(0) + deleteOptions := metav1.DeleteOptions{ + GracePeriodSeconds: &gracePeriodSec, + } + return c.kubernetes.CoreV1().PersistentVolumeClaims(namespace).Delete(context.TODO(), name, deleteOptions) +} + // ValidatePersistentVolumeClaim validates the given pvc func (c *Client) ValidatePersistentVolumeClaim(pvc *corev1.PersistentVolumeClaim, timeout, retryInterval time.Duration) error { t := func() (interface{}, bool, error) { @@ -211,6 +227,18 @@ func (c *Client) DeletePersistentVolume(pvName string) error { }) } +// DeletePersistentVolumeWithForce deletes the PV for given name with force option +func (c *Client) DeletePersistentVolumeWithForce(pvName string) error { + if err := c.initClient(); err != nil { + return err + } + gracePeriodSec := int64(0) + deleteOptions := metav1.DeleteOptions{ + GracePeriodSeconds: &gracePeriodSec, + } + return c.kubernetes.CoreV1().PersistentVolumes().Delete(context.TODO(), pvName, deleteOptions) +} + // GetPersistentVolumes returns all PVs in cluster func (c *Client) GetPersistentVolumes() (*corev1.PersistentVolumeList, error) { if err := c.initClient(); err != nil {