Skip to content

Commit

Permalink
Fixes ONTAP-SAN-Economy storage prefixes to allow restoring and delet…
Browse files Browse the repository at this point in the history
…ing snapshots
  • Loading branch information
reederc42 committed Apr 20, 2021
1 parent 0779ce3 commit f423971
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 22 deletions.
22 changes: 5 additions & 17 deletions storage_drivers/ontap/ontap_san_economy.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,22 +55,10 @@ func NewLUNHelper(config drivers.OntapStorageDriverConfig, context tridentconfig
return &helper
}

// volName is expected not to have the storage prefix included
// parameters: volName=my-Lun snapName=my-Snapshot
// output: storagePrefix_my_Lun_snapshot_my_Snapshot
// parameters: volName=my-Lun snapName=snapshot-123
// output: storagePrefix_my_Lun_snapshot_snapshot_123
func (o *LUNHelper) GetSnapshotName(volName, snapName string) string {
volName = strings.ReplaceAll(volName, "-", "_")
snapName = o.getInternalSnapshotName(snapName)
name := fmt.Sprintf("%v%v%v", *o.Config.StoragePrefix, volName, snapName)
return name
}

// internalVolName is expected to have the storage prefix included
// parameters: internalVolName=storagePrefix_my-Lun snapName=my-Snapshot
// output: storagePrefix_my_Lun_snapshot_my_Snapshot
func (o *LUNHelper) GetInternalSnapshotName(internalVolName, snapName string) string {
func (o *LUNHelper) GetSnapshotName(internalVolName, snapName string) string {
internalVolName = strings.ReplaceAll(internalVolName, "-", "_")
snapName = o.getInternalSnapshotName(snapName)
name := fmt.Sprintf("%v%v", internalVolName, snapName)
Expand Down Expand Up @@ -699,7 +687,7 @@ func (d *SANEconomyStorageDriver) createLUNClone(

// Check if called from CreateClone and is from a snapshot
if isLunCreateFromSnapshot {
source = d.helper.GetInternalSnapshotName(source, snapshot)
source = d.helper.GetSnapshotName(source, snapshot)
}

// If the source doesn't exist, return an error
Expand Down Expand Up @@ -1002,7 +990,7 @@ func (d *SANEconomyStorageDriver) getSnapshotEconomy(
defer Logc(ctx).WithFields(fields).Debug("<<<< getSnapshotEconomy")
}

fullSnapshotName := d.helper.GetInternalSnapshotName(internalVolumeName, internalSnapName)
fullSnapshotName := d.helper.GetSnapshotName(internalVolumeName, internalSnapName)
exists, bucketVol, err := d.LUNExists(ctx, fullSnapshotName, d.FlexvolNamePrefix())
if err != nil {
Logc(ctx).Errorf("Error checking for existing LUN: %v", err)
Expand Down Expand Up @@ -1151,7 +1139,7 @@ func (d *SANEconomyStorageDriver) CreateSnapshot(
size := lunInfo.Size()

// Create the snapshot name/string
lunName := d.helper.GetSnapshotName(snapConfig.VolumeName, internalSnapName)
lunName := d.helper.GetSnapshotName(snapConfig.VolumeInternalName, internalSnapName)

// Create the "snap-LUN" where the snapshot is a LUN clone of the source LUN
err = d.createLUNClone(
Expand Down Expand Up @@ -1212,7 +1200,7 @@ func (d *SANEconomyStorageDriver) DeleteSnapshot(ctx context.Context, snapConfig

internalSnapName := snapConfig.InternalName
// Creating the path string pattern
snapLunName := d.helper.GetSnapshotName(snapConfig.VolumeName, internalSnapName)
snapLunName := d.helper.GetSnapshotName(snapConfig.VolumeInternalName, internalSnapName)

// Check to see if the source LUN exists
exists, bucketVol, err := d.LUNExists(ctx, snapLunName, d.FlexvolNamePrefix())
Expand Down
7 changes: 2 additions & 5 deletions storage_drivers/ontap/ontap_san_economy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,14 +94,11 @@ func TestHelperGetters(t *testing.T) {
snapPath := helper.GetSnapPath("my-Bucket", "storagePrefix_my-Lun", "snap-1")
assert.Equal(t, "/vol/my_Bucket/storagePrefix_my_Lun_snapshot_snap_1", snapPath, "Strings not equal")

snapName1 := helper.GetSnapshotName("my-Lun", "my-Snapshot")
snapName1 := helper.GetSnapshotName("storagePrefix_my-Lun", "my-Snapshot")
assert.Equal(t, "storagePrefix_my_Lun_snapshot_my_Snapshot", snapName1, "Strings not equal")

snapName2 := helper.GetSnapshotName("my-Lun", "snapshot-123")
assert.Equal(t, "storagePrefix_my_Lun_snapshot_snapshot_123", snapName2, "Strings not equal")

internalSnapName := helper.GetInternalSnapshotName("storagePrefix_my-Lun", "my-Snapshot")
assert.Equal(t, "storagePrefix_my_Lun_snapshot_my_Snapshot", internalSnapName, "Strings not equal")
assert.Equal(t, "my_Lun_snapshot_snapshot_123", snapName2, "Strings not equal")

internalVolName := helper.GetInternalVolumeName("my-Lun")
assert.Equal(t, "storagePrefix_my_Lun", internalVolName, "Strings not equal")
Expand Down

0 comments on commit f423971

Please sign in to comment.