diff --git a/pkg/azureutils/azure_disk_utils.go b/pkg/azureutils/azure_disk_utils.go index c07ff481ba..1ac00abc37 100644 --- a/pkg/azureutils/azure_disk_utils.go +++ b/pkg/azureutils/azure_disk_utils.go @@ -649,6 +649,13 @@ func ParseDiskParameters(parameters map[string]string) (ManagedDiskParameters, e } } } + + if strings.EqualFold(diskParams.AccountType, string(azureconstants.PremiumV2LRS)) { + if diskParams.CachingMode != "" && !strings.EqualFold(string(diskParams.CachingMode), string(v1.AzureDataDiskCachingNone)) { + return diskParams, fmt.Errorf("cachingMode %s is not supported for %s", diskParams.CachingMode, azureconstants.PremiumV2LRS) + } + } + return diskParams, nil } diff --git a/pkg/azureutils/azure_disk_utils_test.go b/pkg/azureutils/azure_disk_utils_test.go index de22722dea..fc63b412d4 100644 --- a/pkg/azureutils/azure_disk_utils_test.go +++ b/pkg/azureutils/azure_disk_utils_test.go @@ -1420,6 +1420,56 @@ func TestParseDiskParameters(t *testing.T) { }, expectedError: fmt.Errorf("parse invalidValue failed with error: strconv.Atoi: parsing \"invalidValue\": invalid syntax"), }, + { + name: "disk parameters with PremiumV2_LRS", + inputParams: map[string]string{consts.SkuNameField: "PremiumV2_LRS"}, + expectedOutput: ManagedDiskParameters{ + AccountType: "PremiumV2_LRS", + Incremental: true, + Tags: make(map[string]string), + VolumeContext: map[string]string{consts.SkuNameField: "PremiumV2_LRS"}, + DeviceSettings: make(map[string]string), + }, + expectedError: nil, + }, + { + name: "disk parameters with PremiumV2_LRS (valid cachingMode)", + inputParams: map[string]string{ + consts.SkuNameField: "PremiumV2_LRS", + consts.CachingModeField: "none", + }, + expectedOutput: ManagedDiskParameters{ + AccountType: "PremiumV2_LRS", + CachingMode: "none", + Incremental: true, + Tags: make(map[string]string), + VolumeContext: map[string]string{ + consts.SkuNameField: "PremiumV2_LRS", + consts.CachingModeField: "none", + }, + DeviceSettings: make(map[string]string), + }, + expectedError: nil, + }, + { + name: "disk parameters with PremiumV2_LRS (invalid cachingMode)", + inputParams: map[string]string{ + consts.SkuNameField: "PremiumV2_LRS", + consts.CachingModeField: "ReadOnly", + }, + expectedOutput: ManagedDiskParameters{ + AccountType: "PremiumV2_LRS", + CachingMode: "ReadOnly", + Incremental: true, + Tags: make(map[string]string), + VolumeContext: map[string]string{ + consts.SkuNameField: "PremiumV2_LRS", + consts.CachingModeField: "ReadOnly", + }, + DeviceSettings: make(map[string]string), + }, + expectedError: fmt.Errorf("cachingMode ReadOnly is not supported for PremiumV2_LRS"), + }, { name: "valid parameters input", inputParams: map[string]string{