From 3ea7cf2dd48c3e21650cda5ac622fe089dc923aa Mon Sep 17 00:00:00 2001 From: jyotsna-lothe Date: Wed, 5 Feb 2025 16:31:08 +0530 Subject: [PATCH] CON-3166 - Removed rolback for NFS resources when creating NFS volume Signed-off-by: jyotsna-lothe --- pkg/driver/controller_server.go | 27 +++-------------------- pkg/flavor/kubernetes/nfs.go | 38 ++++++++++++--------------------- pkg/flavor/types.go | 5 ++--- pkg/flavor/vanilla/flavor.go | 11 +++------- 4 files changed, 22 insertions(+), 59 deletions(-) diff --git a/pkg/driver/controller_server.go b/pkg/driver/controller_server.go index 1a49730b..8fc93edd 100644 --- a/pkg/driver/controller_server.go +++ b/pkg/driver/controller_server.go @@ -1,4 +1,4 @@ -// Copyright 2019 Hewlett Packard Enterprise Development LP +// Copyright 2019, 2025 Hewlett Packard Enterprise Development LP // Copyright 2017 The Kubernetes Authors. package driver @@ -316,33 +316,12 @@ func (driver *Driver) createVolume( return nil, status.Error(codes.InvalidArgument, "NFS volume provisioning is not supported with block access type") } - volume, rollback, err := driver.flavor.CreateNFSVolume(name, size, createParameters, volumeContentSource) + volume, err := driver.flavor.CreateNFSVolume(name, size, createParameters, volumeContentSource) if err == nil { // Return multi-node volume return volume, nil } - - rollbackStatus := "success" - if rollback { - // get nfs namespace for cleanup - nfsNamespace := defaultNFSNamespace - if namespace, ok := createParameters[nfsNamespaceKey]; ok { - if createParameters[nfsNamespaceKey] == nfsSourceNamespaceKey { - nfsNamespace = createParameters[nfsSourceNamespaceKey] - } else { - nfsNamespace = namespace - } - } - - nfsResourceName := fmt.Sprintf("%s-%s", "hpe-nfs", strings.TrimPrefix(name, "pvc-")) - // attempt to teardown all nfs resources - err2 := driver.flavor.RollbackNFSResources(nfsResourceName, nfsNamespace) - if err2 != nil { - log.Errorf("failed to rollback NFS resources for %s, err %s", name, err2.Error()) - rollbackStatus = err2.Error() - } - } - errStr := fmt.Sprintf("Failed to create NFS provisioned volume %s, err %s, rollback status: %s", name, err.Error(), rollbackStatus) + errStr := fmt.Sprintf("Failed to create NFS provisioned volume %s, err %s ", name, err.Error()) log.Errorf(errStr) return nil, status.Error(codes.Internal, errStr) } diff --git a/pkg/flavor/kubernetes/nfs.go b/pkg/flavor/kubernetes/nfs.go index 3e2bf0ab..1d9d160d 100644 --- a/pkg/flavor/kubernetes/nfs.go +++ b/pkg/flavor/kubernetes/nfs.go @@ -1,4 +1,4 @@ -// Copyright 2019 Hewlett Packard Enterprise Development LP +// Copyright 2019, 2025 Hewlett Packard Enterprise Development LP package kubernetes @@ -80,7 +80,7 @@ type NFSSpec struct { } // CreateNFSVolume creates nfs volume abstracting underlying nfs pvc, deployment and service -func (flavor *Flavor) CreateNFSVolume(pvName string, reqVolSize int64, parameters map[string]string, volumeContentSource *csi.VolumeContentSource) (nfsVolume *csi.Volume, rollback bool, err error) { +func (flavor *Flavor) CreateNFSVolume(pvName string, reqVolSize int64, parameters map[string]string, volumeContentSource *csi.VolumeContentSource) (nfsVolume *csi.Volume, err error) { log.Tracef(">>>>> CreateNFSVolume with %s", pvName) defer log.Tracef("<<<<< CreateNFSVolume") @@ -98,33 +98,33 @@ func (flavor *Flavor) CreateNFSVolume(pvName string, reqVolSize int64, parameter if err != nil { _, err = flavor.createNFSNamespace(nfsResourceNamespace) if err != nil { - return nil, false, err + return nil, err } } // obtain NFS resource parameters nfsSpec, err := flavor.getNFSSpec(parameters) if err != nil { - return nil, false, err + return nil, err } // get pvc from request claim, err := flavor.getClaimFromClaimName(pvName) if err != nil { - return nil, false, err + return nil, err } // clone pvc and modify to RWO mode claimClone, err := flavor.cloneClaim(claim, nfsResourceNamespace, parameters) if err != nil { - return nil, false, err + return nil, err } // create pvc newClaim, err := flavor.createNFSPVC(claimClone, nfsResourceNamespace) if err != nil { flavor.eventRecorder.Event(claim, core_v1.EventTypeWarning, "ProvisionStorage", err.Error()) - return nil, true, err + return nil, err } // update newly created nfs claim in nfs spec @@ -134,18 +134,18 @@ func (flavor *Flavor) CreateNFSVolume(pvName string, reqVolSize int64, parameter err = flavor.createServiceAccount(nfsResourceNamespace) if err != nil { flavor.eventRecorder.Event(claim, core_v1.EventTypeWarning, "ProvisionStorage", err.Error()) - return nil, true, err + return nil, err } nfsHostDomain, err := flavor.getNFSHostDomain() if err != nil { - return nil, true, err + return nil, err } // create nfs configmap err = flavor.createNFSConfigMap(nfsResourceNamespace, nfsHostDomain) if err != nil { flavor.eventRecorder.Event(claim, core_v1.EventTypeWarning, "ProvisionStorage", err.Error()) - return nil, true, err + return nil, err } // create deployment with name hpe-nfs- @@ -153,7 +153,7 @@ func (flavor *Flavor) CreateNFSVolume(pvName string, reqVolSize int64, parameter err = flavor.createNFSDeployment(deploymentName, nfsSpec, nfsResourceNamespace) if err != nil { flavor.eventRecorder.Event(claim, core_v1.EventTypeWarning, "ProvisionStorage", err.Error()) - return nil, true, err + return nil, err } // create service with name hpe-nfs-svc- @@ -161,14 +161,14 @@ func (flavor *Flavor) CreateNFSVolume(pvName string, reqVolSize int64, parameter err = flavor.createNFSService(serviceName, nfsResourceNamespace) if err != nil { flavor.eventRecorder.Event(claim, core_v1.EventTypeWarning, "ProvisionStorage", err.Error()) - return nil, true, err + return nil, err } // get underlying NFS volume properties and copy onto original volume volumeContext := make(map[string]string) pv, err := flavor.getPvFromName(fmt.Sprintf("%s%s", pvcPrefix, newClaim.ObjectMeta.UID)) if err != nil { - return nil, true, err + return nil, err } if pv.Spec.PersistentVolumeSource.CSI != nil { @@ -201,7 +201,7 @@ func (flavor *Flavor) CreateNFSVolume(pvName string, reqVolSize int64, parameter CapacityBytes: reqVolSize, VolumeContext: volumeContext, ContentSource: volumeContentSource, - }, false, nil + }, nil } func (flavor *Flavor) createServiceAccount(nfsNamespace string) error { @@ -272,16 +272,6 @@ EXPORT return nil } -func (flavor *Flavor) RollbackNFSResources(nfsResourceName string, nfsNamespace string) error { - log.Tracef(">>>>> RollbackNFSResources with name %s namespace %s", nfsResourceName, nfsNamespace) - defer log.Tracef("<<<<< RollbackNFSResources") - err := flavor.deleteNFSResources(nfsResourceName, nfsNamespace) - if err != nil { - return err - } - return nil -} - // DeleteNFSVolume deletes nfs volume which represents nfs pvc, deployment and service func (flavor *Flavor) DeleteNFSVolume(volumeID string) error { log.Tracef(">>>>> DeleteNFSVolume with %s", volumeID) diff --git a/pkg/flavor/types.go b/pkg/flavor/types.go index 34f956d0..b43be6f3 100644 --- a/pkg/flavor/types.go +++ b/pkg/flavor/types.go @@ -1,4 +1,4 @@ -// Copyright 2019 Hewlett Packard Enterprise Development LP +// Copyright 2019, 2025 Hewlett Packard Enterprise Development LP package flavor @@ -29,9 +29,8 @@ type Flavor interface { GetCredentialsFromVolume(name string) (map[string]string, error) GetCredentialsFromSecret(name string, namespace string) (map[string]string, error) IsPodExists(uid string) (bool, error) - CreateNFSVolume(pvName string, reqVolSize int64, parameters map[string]string, volumeContentSource *csi.VolumeContentSource) (nfsVolume *csi.Volume, rollback bool, err error) + CreateNFSVolume(pvName string, reqVolSize int64, parameters map[string]string, volumeContentSource *csi.VolumeContentSource) (nfsVolume *csi.Volume, err error) DeleteNFSVolume(pvName string) error - RollbackNFSResources(nfsResourceName, nfsNamespace string) error HandleNFSNodePublish(request *csi.NodePublishVolumeRequest) (*csi.NodePublishVolumeResponse, error) IsNFSVolume(volumeID string) bool GetVolumePropertyOfPV(propertyName string, pvName string) (string, error) diff --git a/pkg/flavor/vanilla/flavor.go b/pkg/flavor/vanilla/flavor.go index 767cf7cb..e4d08207 100644 --- a/pkg/flavor/vanilla/flavor.go +++ b/pkg/flavor/vanilla/flavor.go @@ -1,4 +1,4 @@ -// Copyright 2019 Hewlett Packard Enterprise Development LP +// Copyright 2019, 2025 Hewlett Packard Enterprise Development LP package vanilla @@ -88,13 +88,8 @@ func (flavor *Flavor) IsPodExists(uid string) (bool, error) { } //nolint:revive -func (flavor *Flavor) CreateNFSVolume(pvName string, reqVolSize int64, parameters map[string]string, volumeContentSource *csi.VolumeContentSource) (nfsVolume *csi.Volume, rollback bool, err error) { - return nil, false, fmt.Errorf("NFS provisioned volume is not supported for non-k8s environments") -} - -//nolint:revive -func (flavor *Flavor) RollbackNFSResources(nfsResourceName, nfsNamespace string) error { - return nil +func (flavor *Flavor) CreateNFSVolume(pvName string, reqVolSize int64, parameters map[string]string, volumeContentSource *csi.VolumeContentSource) (nfsVolume *csi.Volume, err error) { + return nil, fmt.Errorf("NFS provisioned volume is not supported for non-k8s environments") } //nolint:revive