@@ -3660,7 +3660,7 @@ func TestImport_Managed(t *testing.T) {
3660
3660
expectedUnixPermissions := "0770"
3661
3661
3662
3662
mockAPI .EXPECT ().RefreshGCNVResources (ctx ).Return (nil ).Times (1 )
3663
- mockAPI .EXPECT ().VolumeByName (ctx , originalName ).Return (originalVolume , nil ).Times (1 )
3663
+ mockAPI .EXPECT ().VolumeByNameOrID (ctx , originalName ).Return (originalVolume , nil ).Times (1 )
3664
3664
mockAPI .EXPECT ().EnsureVolumeInValidCapacityPool (ctx , originalVolume ).Return (nil ).Times (1 )
3665
3665
3666
3666
mockAPI .EXPECT ().ModifyVolume (ctx , originalVolume , expectedLabels , & expectedUnixPermissions , & snapshotDirAccess , nil ).Return (nil ).Times (1 )
@@ -3675,6 +3675,43 @@ func TestImport_Managed(t *testing.T) {
3675
3675
assert .Equal (t , originalVolume .FullName , volConfig .InternalID , "internal ID not set on volConfig" )
3676
3676
}
3677
3677
3678
+ func TestImport_ManagedVolumeFullName (t * testing.T ) {
3679
+ mockAPI , driver := newMockGCNVDriver (t )
3680
+
3681
+ driver .Config .BackendName = "gcnv"
3682
+ driver .Config .ServiceLevel = gcnvapi .ServiceLevelPremium
3683
+ driver .Config .NASType = "nfs"
3684
+ driver .Config .UnixPermissions = "0770"
3685
+
3686
+ err := driver .populateConfigurationDefaults (ctx , & driver .Config )
3687
+ assert .NoError (t , err , "error occurred" )
3688
+
3689
+ driver .initializeStoragePools (ctx )
3690
+ driver .initializeTelemetry (ctx , gcnvapi .BackendUUID )
3691
+
3692
+ volConfig , originalVolume := getStructsForNFSImport (ctx , driver )
3693
+
3694
+ expectedLabels := driver .updateTelemetryLabels (ctx , originalVolume )
3695
+ var snapshotDirAccess bool
3696
+ originalFullName := "projects/123456789/locations/fake-location/volumes/testvol1"
3697
+ expectedUnixPermissions := "0770"
3698
+
3699
+ mockAPI .EXPECT ().RefreshGCNVResources (ctx ).Return (nil ).Times (1 )
3700
+ mockAPI .EXPECT ().VolumeByNameOrID (ctx , originalFullName ).Return (originalVolume , nil ).Times (1 )
3701
+ mockAPI .EXPECT ().EnsureVolumeInValidCapacityPool (ctx , originalVolume ).Return (nil ).Times (1 )
3702
+
3703
+ mockAPI .EXPECT ().ModifyVolume (ctx , originalVolume , expectedLabels , & expectedUnixPermissions , & snapshotDirAccess , nil ).Return (nil ).Times (1 )
3704
+
3705
+ mockAPI .EXPECT ().WaitForVolumeState (ctx , originalVolume , gcnvapi .VolumeStateReady , []string {gcnvapi .VolumeStateError },
3706
+ driver .defaultTimeout ()).Return (gcnvapi .VolumeStateReady , nil ).Times (1 )
3707
+
3708
+ result := driver .Import (ctx , volConfig , originalFullName )
3709
+
3710
+ assert .NoError (t , result , "import failed" )
3711
+ assert .Equal (t , originalVolume .Name , volConfig .Name , "internal name mismatch" )
3712
+ assert .Equal (t , originalFullName , volConfig .InternalID , "internal ID not set on volConfig" )
3713
+ }
3714
+
3678
3715
func TestImport_ManagedWithSnapshotDir (t * testing.T ) {
3679
3716
mockAPI , driver := newMockGCNVDriver (t )
3680
3717
@@ -3699,7 +3736,7 @@ func TestImport_ManagedWithSnapshotDir(t *testing.T) {
3699
3736
snapshotDirAccess := true
3700
3737
3701
3738
mockAPI .EXPECT ().RefreshGCNVResources (ctx ).Return (nil ).Times (1 )
3702
- mockAPI .EXPECT ().VolumeByName (ctx , originalName ).Return (originalVolume , nil ).Times (1 )
3739
+ mockAPI .EXPECT ().VolumeByNameOrID (ctx , originalName ).Return (originalVolume , nil ).Times (1 )
3703
3740
mockAPI .EXPECT ().EnsureVolumeInValidCapacityPool (ctx , originalVolume ).Return (nil ).Times (1 )
3704
3741
3705
3742
mockAPI .EXPECT ().ModifyVolume (ctx , originalVolume , expectedLabels , & expectedUnixPermissions , & snapshotDirAccess , nil ).Return (nil ).Times (1 )
@@ -3738,7 +3775,7 @@ func TestImport_ManagedWithSnapshotDirFalse(t *testing.T) {
3738
3775
snapshotDirAccess := false
3739
3776
3740
3777
mockAPI .EXPECT ().RefreshGCNVResources (ctx ).Return (nil ).Times (1 )
3741
- mockAPI .EXPECT ().VolumeByName (ctx , originalName ).Return (originalVolume , nil ).Times (1 )
3778
+ mockAPI .EXPECT ().VolumeByNameOrID (ctx , originalName ).Return (originalVolume , nil ).Times (1 )
3742
3779
mockAPI .EXPECT ().EnsureVolumeInValidCapacityPool (ctx , originalVolume ).Return (nil ).Times (1 )
3743
3780
3744
3781
mockAPI .EXPECT ().ModifyVolume (ctx , originalVolume , expectedLabels , & expectedUnixPermissions , & snapshotDirAccess , nil ).Return (nil ).Times (1 )
@@ -3773,7 +3810,7 @@ func TestImport_ManagedWithInvalidSnapshotDirValue(t *testing.T) {
3773
3810
originalName := "importMe"
3774
3811
3775
3812
mockAPI .EXPECT ().RefreshGCNVResources (ctx ).Return (nil ).Times (1 )
3776
- mockAPI .EXPECT ().VolumeByName (ctx , originalName ).Return (originalVolume , nil ).Times (1 )
3813
+ mockAPI .EXPECT ().VolumeByNameOrID (ctx , originalName ).Return (originalVolume , nil ).Times (1 )
3777
3814
mockAPI .EXPECT ().EnsureVolumeInValidCapacityPool (ctx , originalVolume ).Return (nil ).Times (1 )
3778
3815
3779
3816
result := driver .Import (ctx , volConfig , originalName )
@@ -3802,7 +3839,7 @@ func TestImport_SMB_Managed(t *testing.T) {
3802
3839
originalName := "importMe"
3803
3840
3804
3841
mockAPI .EXPECT ().RefreshGCNVResources (ctx ).Return (nil ).Times (1 )
3805
- mockAPI .EXPECT ().VolumeByName (ctx , originalName ).Return (originalVolume , nil ).Times (1 )
3842
+ mockAPI .EXPECT ().VolumeByNameOrID (ctx , originalName ).Return (originalVolume , nil ).Times (1 )
3806
3843
mockAPI .EXPECT ().EnsureVolumeInValidCapacityPool (ctx , originalVolume ).Return (nil ).Times (1 )
3807
3844
3808
3845
mockAPI .EXPECT ().ModifyVolume (ctx , originalVolume , expectedLabels , nil , & snapshotDirAccess , nil ).Return (nil ).Times (1 )
@@ -3837,7 +3874,7 @@ func TestImport_SMB_Failed(t *testing.T) {
3837
3874
originalName := "importMe"
3838
3875
3839
3876
mockAPI .EXPECT ().RefreshGCNVResources (ctx ).Return (nil ).Times (1 )
3840
- mockAPI .EXPECT ().VolumeByName (ctx , originalName ).Return (originalVolume , nil ).Times (1 )
3877
+ mockAPI .EXPECT ().VolumeByNameOrID (ctx , originalName ).Return (originalVolume , nil ).Times (1 )
3841
3878
mockAPI .EXPECT ().EnsureVolumeInValidCapacityPool (ctx , originalVolume ).Return (nil ).Times (1 )
3842
3879
3843
3880
mockAPI .EXPECT ().ModifyVolume (ctx , originalVolume , expectedLabels , nil , & snapshotDirAccess , nil ).Return (errFailed ).Times (1 )
@@ -3868,7 +3905,7 @@ func TestImport_DualProtocolVolume(t *testing.T) {
3868
3905
originalName := "importMe"
3869
3906
3870
3907
mockAPI .EXPECT ().RefreshGCNVResources (ctx ).Return (nil ).Times (1 )
3871
- mockAPI .EXPECT ().VolumeByName (ctx , originalName ).Return (originalVolume , nil ).Times (1 )
3908
+ mockAPI .EXPECT ().VolumeByNameOrID (ctx , originalName ).Return (originalVolume , nil ).Times (1 )
3872
3909
3873
3910
result := driver .Import (ctx , volConfig , originalName )
3874
3911
@@ -3895,7 +3932,7 @@ func TestImport_CapacityPoolError(t *testing.T) {
3895
3932
originalName := "importMe"
3896
3933
3897
3934
mockAPI .EXPECT ().RefreshGCNVResources (ctx ).Return (nil ).Times (1 )
3898
- mockAPI .EXPECT ().VolumeByName (ctx , originalName ).Return (originalVolume , nil ).Times (1 )
3935
+ mockAPI .EXPECT ().VolumeByNameOrID (ctx , originalName ).Return (originalVolume , nil ).Times (1 )
3899
3936
mockAPI .EXPECT ().EnsureVolumeInValidCapacityPool (ctx , originalVolume ).Return (errFailed ).Times (1 )
3900
3937
3901
3938
result := driver .Import (ctx , volConfig , originalName )
@@ -3924,7 +3961,7 @@ func TestImport_NotManaged(t *testing.T) {
3924
3961
originalName := "importMe"
3925
3962
3926
3963
mockAPI .EXPECT ().RefreshGCNVResources (ctx ).Return (nil ).Times (1 )
3927
- mockAPI .EXPECT ().VolumeByName (ctx , originalName ).Return (originalVolume , nil ).Times (1 )
3964
+ mockAPI .EXPECT ().VolumeByNameOrID (ctx , originalName ).Return (originalVolume , nil ).Times (1 )
3928
3965
mockAPI .EXPECT ().EnsureVolumeInValidCapacityPool (ctx , originalVolume ).Return (nil ).Times (1 )
3929
3966
3930
3967
result := driver .Import (ctx , volConfig , originalName )
@@ -3934,6 +3971,36 @@ func TestImport_NotManaged(t *testing.T) {
3934
3971
assert .Equal (t , originalVolume .FullName , volConfig .InternalID , "internal ID not set on volConfig" )
3935
3972
}
3936
3973
3974
+ func TestImport_NotManagedVolumeFullName (t * testing.T ) {
3975
+ mockAPI , driver := newMockGCNVDriver (t )
3976
+
3977
+ driver .Config .BackendName = "gcnv"
3978
+ driver .Config .ServiceLevel = gcnvapi .ServiceLevelPremium
3979
+ driver .Config .NASType = "nfs"
3980
+ driver .Config .UnixPermissions = "0770"
3981
+
3982
+ err := driver .populateConfigurationDefaults (ctx , & driver .Config )
3983
+ assert .NoError (t , err , "error occurred" )
3984
+
3985
+ driver .initializeStoragePools (ctx )
3986
+ driver .initializeTelemetry (ctx , gcnvapi .BackendUUID )
3987
+
3988
+ volConfig , originalVolume := getStructsForNFSImport (ctx , driver )
3989
+
3990
+ volConfig .ImportNotManaged = true
3991
+ originalFullName := "projects/123456789/locations/fake-location/volumes/testvol1"
3992
+
3993
+ mockAPI .EXPECT ().RefreshGCNVResources (ctx ).Return (nil ).Times (1 )
3994
+ mockAPI .EXPECT ().VolumeByNameOrID (ctx , originalFullName ).Return (originalVolume , nil ).Times (1 )
3995
+ mockAPI .EXPECT ().EnsureVolumeInValidCapacityPool (ctx , originalVolume ).Return (nil ).Times (1 )
3996
+
3997
+ result := driver .Import (ctx , volConfig , originalFullName )
3998
+
3999
+ assert .NoError (t , result , "import failed" )
4000
+ assert .Equal (t , originalVolume .Name , volConfig .Name , "internal name mismatch" )
4001
+ assert .Equal (t , originalFullName , volConfig .InternalID , "internal ID not set on volConfig" )
4002
+ }
4003
+
3937
4004
func TestImport_DiscoveryFailed (t * testing.T ) {
3938
4005
mockAPI , driver := newMockGCNVDriver (t )
3939
4006
@@ -3981,7 +4048,7 @@ func TestImport_NotFound(t *testing.T) {
3981
4048
originalName := "importMe"
3982
4049
3983
4050
mockAPI .EXPECT ().RefreshGCNVResources (ctx ).Return (nil ).Times (1 )
3984
- mockAPI .EXPECT ().VolumeByName (ctx , originalName ).Return (nil , errFailed ).Times (1 )
4051
+ mockAPI .EXPECT ().VolumeByNameOrID (ctx , originalName ).Return (nil , errFailed ).Times (1 )
3985
4052
3986
4053
result := driver .Import (ctx , volConfig , originalName )
3987
4054
@@ -3990,6 +4057,34 @@ func TestImport_NotFound(t *testing.T) {
3990
4057
assert .Equal (t , "" , volConfig .InternalID , "internal ID set on volConfig" )
3991
4058
}
3992
4059
4060
+ func TestImport_DuplicateVolumes (t * testing.T ) {
4061
+ mockAPI , driver := newMockGCNVDriver (t )
4062
+
4063
+ driver .Config .BackendName = "gcnv"
4064
+ driver .Config .ServiceLevel = gcnvapi .ServiceLevelPremium
4065
+ driver .Config .NASType = "nfs"
4066
+ driver .Config .UnixPermissions = "0770"
4067
+
4068
+ err := driver .populateConfigurationDefaults (ctx , & driver .Config )
4069
+ assert .NoError (t , err , "error occurred" )
4070
+
4071
+ driver .initializeStoragePools (ctx )
4072
+ driver .initializeTelemetry (ctx , gcnvapi .BackendUUID )
4073
+
4074
+ volConfig , _ := getStructsForNFSImport (ctx , driver )
4075
+
4076
+ originalName := "importMe"
4077
+
4078
+ // Mock API to return an error indicating duplicate volumes
4079
+ mockAPI .EXPECT ().RefreshGCNVResources (ctx ).Return (nil ).Times (1 )
4080
+ mockAPI .EXPECT ().VolumeByNameOrID (ctx , originalName ).Return (nil , errors .New ("found multiple volumes with the same name in the given location" )).Times (1 )
4081
+
4082
+ result := driver .Import (ctx , volConfig , originalName )
4083
+
4084
+ assert .Error (t , result , "expected error" )
4085
+ assert .Contains (t , result .Error (), "found multiple volumes with the same name in the given location" , "unexpected error message" )
4086
+ }
4087
+
3993
4088
func TestImport_InvalidUnixPermissions (t * testing.T ) {
3994
4089
mockAPI , driver := newMockGCNVDriver (t )
3995
4090
@@ -4009,7 +4104,7 @@ func TestImport_InvalidUnixPermissions(t *testing.T) {
4009
4104
originalName := "importMe"
4010
4105
4011
4106
mockAPI .EXPECT ().RefreshGCNVResources (ctx ).Return (nil ).Times (1 )
4012
- mockAPI .EXPECT ().VolumeByName (ctx , originalName ).Return (originalVolume , nil ).Times (1 )
4107
+ mockAPI .EXPECT ().VolumeByNameOrID (ctx , originalName ).Return (originalVolume , nil ).Times (1 )
4013
4108
mockAPI .EXPECT ().EnsureVolumeInValidCapacityPool (ctx , originalVolume ).Return (nil ).Times (1 )
4014
4109
4015
4110
result := driver .Import (ctx , volConfig , originalName )
@@ -4041,7 +4136,7 @@ func TestImport_ModifyVolumeFailed(t *testing.T) {
4041
4136
snapshotDirAccess := false
4042
4137
4043
4138
mockAPI .EXPECT ().RefreshGCNVResources (ctx ).Return (nil ).Times (1 )
4044
- mockAPI .EXPECT ().VolumeByName (ctx , originalName ).Return (originalVolume , nil ).Times (1 )
4139
+ mockAPI .EXPECT ().VolumeByNameOrID (ctx , originalName ).Return (originalVolume , nil ).Times (1 )
4045
4140
mockAPI .EXPECT ().EnsureVolumeInValidCapacityPool (ctx , originalVolume ).Return (nil ).Times (1 )
4046
4141
4047
4142
mockAPI .EXPECT ().ModifyVolume (ctx , originalVolume , expectedLabels , & expectedUnixPermissions , & snapshotDirAccess , nil ).Return (errFailed ).Times (1 )
@@ -4075,7 +4170,7 @@ func TestImport_VolumeWaitFailed(t *testing.T) {
4075
4170
snapshotDirAccess := false
4076
4171
4077
4172
mockAPI .EXPECT ().RefreshGCNVResources (ctx ).Return (nil ).Times (1 )
4078
- mockAPI .EXPECT ().VolumeByName (ctx , originalName ).Return (originalVolume , nil ).Times (1 )
4173
+ mockAPI .EXPECT ().VolumeByNameOrID (ctx , originalName ).Return (originalVolume , nil ).Times (1 )
4079
4174
mockAPI .EXPECT ().EnsureVolumeInValidCapacityPool (ctx , originalVolume ).Return (nil ).Times (1 )
4080
4175
4081
4176
mockAPI .EXPECT ().ModifyVolume (ctx , originalVolume , expectedLabels , & expectedUnixPermissions , & snapshotDirAccess , nil ).Return (nil ).Times (1 )
@@ -4109,7 +4204,7 @@ func TestImport_BackendVolumeMismatch(t *testing.T) {
4109
4204
originalName := "importMe"
4110
4205
4111
4206
mockAPI .EXPECT ().RefreshGCNVResources (ctx ).Return (nil ).Times (1 )
4112
- mockAPI .EXPECT ().VolumeByName (ctx , originalName ).Return (originalVolume , nil ).Times (1 )
4207
+ mockAPI .EXPECT ().VolumeByNameOrID (ctx , originalName ).Return (originalVolume , nil ).Times (1 )
4113
4208
mockAPI .EXPECT ().EnsureVolumeInValidCapacityPool (ctx , originalVolume ).Return (nil ).Times (1 )
4114
4209
4115
4210
result := driver .Import (ctx , volConfig , originalName )
@@ -6658,7 +6753,7 @@ func TestGCNVGetVolumeForImport(t *testing.T) {
6658
6753
}
6659
6754
6660
6755
mockAPI .EXPECT ().RefreshGCNVResources (ctx ).Return (nil ).Times (1 )
6661
- mockAPI .EXPECT ().VolumeByName (ctx , "testvol1" ).Return (volume , nil ).Times (1 )
6756
+ mockAPI .EXPECT ().VolumeByNameOrID (ctx , "testvol1" ).Return (volume , nil ).Times (1 )
6662
6757
6663
6758
result , resultErr := driver .GetVolumeForImport (ctx , "testvol1" )
6664
6759
@@ -6683,7 +6778,7 @@ func TestGCNVGetVolumeForImport_VolumeNameWithPrefix(t *testing.T) {
6683
6778
}
6684
6779
6685
6780
mockAPI .EXPECT ().RefreshGCNVResources (ctx ).Return (nil ).Times (1 )
6686
- mockAPI .EXPECT ().VolumeByName (ctx , "testvol1" ).Return (volume , nil ).Times (1 )
6781
+ mockAPI .EXPECT ().VolumeByNameOrID (ctx , "testvol1" ).Return (volume , nil ).Times (1 )
6687
6782
6688
6783
result , resultErr := driver .GetVolumeForImport (ctx , "testvol1" )
6689
6784
@@ -6715,7 +6810,7 @@ func TestGetVolumeForImport_GetFailed(t *testing.T) {
6715
6810
driver .Config .StoragePrefix = & storagePrefix
6716
6811
6717
6812
mockAPI .EXPECT ().RefreshGCNVResources (ctx ).Return (nil ).Times (1 )
6718
- mockAPI .EXPECT ().VolumeByName (ctx , "testvol1" ).Return (nil , errFailed ).Times (1 )
6813
+ mockAPI .EXPECT ().VolumeByNameOrID (ctx , "testvol1" ).Return (nil , errFailed ).Times (1 )
6719
6814
6720
6815
result , resultErr := driver .GetVolumeForImport (ctx , "testvol1" )
6721
6816
0 commit comments