From e87380cd9cb4214fe79097daf4ec76e7c9844b7e Mon Sep 17 00:00:00 2001 From: Prankul Mahajan Date: Tue, 3 Aug 2021 14:45:22 +0530 Subject: [PATCH] Add condition for empty profile --- block/provider/create_volume.go | 3 +++ block/provider/create_volume_test.go | 14 ++++++++++++++ common/messages/messages_en.go | 7 +++++++ 3 files changed, 24 insertions(+) diff --git a/block/provider/create_volume.go b/block/provider/create_volume.go index 90ac4c3..d1358a9 100644 --- a/block/provider/create_volume.go +++ b/block/provider/create_volume.go @@ -121,6 +121,9 @@ func validateVolumeRequest(volumeRequest provider.Volume) (models.ResourceGroup, if volumeRequest.Iops != nil { iops = ToInt64(*volumeRequest.Iops) } + if volumeRequest.VPCVolume.Profile == nil { + return resourceGroup, iops, userError.GetUserError("VolumeProfileEmpty", nil) + } if volumeRequest.VPCVolume.Profile.Name != customProfile && iops > 0 { return resourceGroup, iops, userError.GetUserError("VolumeProfileIopsInvalid", nil) } diff --git a/block/provider/create_volume_test.go b/block/provider/create_volume_test.go index b7ee4bb..1195a7d 100644 --- a/block/provider/create_volume_test.go +++ b/block/provider/create_volume_test.go @@ -99,6 +99,20 @@ func TestCreateVolume(t *testing.T) { assert.Nil(t, volumeResponse) assert.NotNil(t, err) }, + }, { + testCaseName: "Volume with empty profile", + profileName: "", + providerVolume: provider.Volume{ + VolumeID: "16f293bf-test-4bff-816f-e199c0c65db5", + Name: String("test-volume-name"), + Capacity: Int(10), + Iops: String("1000"), + VPCVolume: provider.VPCVolume{}, + }, + verify: func(t *testing.T, volumeResponse *provider.Volume, err error) { + assert.Nil(t, volumeResponse) + assert.NotNil(t, err) + }, }, { testCaseName: "Volume with no validation issues", profileName: "general-purpose", diff --git a/common/messages/messages_en.go b/common/messages/messages_en.go index 2221030..5e0e71d 100644 --- a/common/messages/messages_en.go +++ b/common/messages/messages_en.go @@ -163,6 +163,13 @@ var messagesEn = map[string]util.Message{ RC: 400, Action: "Review available volume profiles and IOPS in the IBM Cloud Block Storage for VPC documentation https://cloud.ibm.com/docs/vpc-on-classic-block-storage?topic=vpc-on-classic-block-storage-block-storage-profiles.", }, + "VolumeProfileEmpty": { + Code: "VolumeProfileEmpty", + Description: "Volume profile is empty, you need to pass valid profile name.", + Type: util.InvalidRequest, + RC: 400, + Action: "Review storage class used to create volume and add valid profile parameter.", + }, "EmptyResourceGroup": { Code: "EmptyResourceGroup", Description: "Resource group information could not be found.",