Skip to content

Commit 6069850

Browse files
authored
cherry pick the unlink fset changes (#1268)
Signed-off-by: badri-pathak <[email protected]>
1 parent 324f757 commit 6069850

File tree

3 files changed

+25
-6
lines changed

3 files changed

+25
-6
lines changed

driver/csiplugin/connectors/connectors.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ type SpectrumScaleConnector interface {
4343
DeleteFileset(ctx context.Context, filesystemName string, filesetName string) error
4444
//LinkFileset(filesystemName string, filesetName string) error
4545
LinkFileset(ctx context.Context, filesystemName string, filesetName string, linkpath string) error
46-
UnlinkFileset(ctx context.Context, filesystemName string, filesetName string) error
46+
UnlinkFileset(ctx context.Context, filesystemName string, filesetName string, force bool) error
4747
//ListFilesets(filesystemName string) ([]resources.Volume, error)
4848
ListFileset(ctx context.Context, filesystemName string, filesetName string) (Fileset_v2, error)
4949
ListCSIIndependentFilesets(ctx context.Context, filesystemName string) ([]Fileset_v2, error)

driver/csiplugin/connectors/rest_v2.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ import (
3535

3636
const errConnectionRefused string = "connection refused"
3737
const errNoSuchHost string = "no such host"
38-
const errContextDeadlineExceeded string = "context deadline exceeded"
38+
const errContextDeadlineExceeded string = "context deadline exceeded"
3939

4040
var GetLoggerId = utils.GetLoggerId
4141

@@ -657,10 +657,15 @@ func (s *SpectrumRestV2) LinkFileset(ctx context.Context, filesystemName string,
657657
return nil
658658
}
659659

660-
func (s *SpectrumRestV2) UnlinkFileset(ctx context.Context, filesystemName string, filesetName string) error {
660+
func (s *SpectrumRestV2) UnlinkFileset(ctx context.Context, filesystemName string, filesetName string, force bool) error {
661661
klog.V(4).Infof("[%s] rest_v2 UnlinkFileset. filesystem: %s, fileset: %s", utils.GetLoggerId(ctx), filesystemName, filesetName)
662662

663-
unlinkFilesetURL := fmt.Sprintf("scalemgmt/v2/filesystems/%s/filesets/%s/link?force=True", filesystemName, filesetName)
663+
var unlinkFilesetURL string
664+
if force {
665+
unlinkFilesetURL = fmt.Sprintf("scalemgmt/v2/filesystems/%s/filesets/%s/link?force=True", filesystemName, filesetName)
666+
} else {
667+
unlinkFilesetURL = fmt.Sprintf("scalemgmt/v2/filesystems/%s/filesets/%s/link", filesystemName, filesetName)
668+
}
664669
unlinkFilesetResponse := GenericResponse{}
665670

666671
err := s.doHTTP(ctx, unlinkFilesetURL, "DELETE", &unlinkFilesetResponse, nil)
@@ -1039,7 +1044,7 @@ func (s *SpectrumRestV2) doHTTP(ctx context.Context, urlSuffix string, method st
10391044

10401045
activeEndpointFound := false
10411046
if err != nil {
1042-
if strings.Contains(err.Error(), errConnectionRefused) || strings.Contains(err.Error(), errNoSuchHost) || strings.Contains(err.Error(), errContextDeadlineExceeded){
1047+
if strings.Contains(err.Error(), errConnectionRefused) || strings.Contains(err.Error(), errNoSuchHost) || strings.Contains(err.Error(), errContextDeadlineExceeded) {
10431048
klog.Errorf("[%s] rest_v2 doHTTP: Error in connecting to GUI endpoint %s: %v, checking next endpoint", utils.GetLoggerId(ctx), endpoint, err)
10441049
// Out of n endpoints, one has failed already, so loop over the
10451050
// remaining n-1 endpoints till we get an active GUI endpoint.

driver/csiplugin/controllerserver.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ const (
5050

5151
discoverCGFileset = "DISCOVER_CG_FILESET"
5252
discoverCGFilesetDisabled = "DISABLED"
53+
54+
fsetLinkNotFoundErrCode = "EFSSG0449C"
55+
fsetLinkNotFoundErrMsg = "is not linked"
5356
)
5457

5558
type ScaleControllerServer struct {
@@ -1648,7 +1651,18 @@ func (cs *ScaleControllerServer) DeleteFilesetVol(ctx context.Context, Filesyste
16481651
klog.Infof("[%s] there is no snapshot present in the fileset [%v], continue DeleteFilesetVol", loggerId, FilesetName)
16491652
}
16501653

1651-
err := conn.DeleteFileset(ctx, FilesystemName, FilesetName)
1654+
err := conn.UnlinkFileset(ctx, FilesystemName, FilesetName, false)
1655+
if err != nil {
1656+
if strings.Contains(err.Error(), fsetLinkNotFoundErrCode) ||
1657+
strings.Contains(err.Error(), fsetLinkNotFoundErrMsg) { // fileset seems to be already unlinked
1658+
klog.V(4).Infof("[%s] fileset seems to be already unlinked - %v", loggerId, err)
1659+
//return true, nil
1660+
} else {
1661+
return false, status.Error(codes.Internal, fmt.Sprintf("unable to unlink Fileset [%v] for FS [%v] and clusterId [%v].Error : [%v]", FilesetName, FilesystemName, volumeIdMembers.ClusterId, err))
1662+
}
1663+
}
1664+
1665+
err = conn.DeleteFileset(ctx, FilesystemName, FilesetName)
16521666
if err != nil {
16531667
if strings.Contains(err.Error(), "EFSSG0072C") ||
16541668
strings.Contains(err.Error(), "400 Invalid value in 'filesetName'") { // fileset is already deleted

0 commit comments

Comments
 (0)