Skip to content

Commit

Permalink
AKS: Add and fix additional validations to ephemeral disk operation (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
mukhoakash committed Jul 2, 2024
1 parent 827e173 commit 95138e4
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 2 deletions.
1 change: 1 addition & 0 deletions src/aks-preview/HISTORY.rst
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ To release a new version, please select a new version number (usually plus 1 to

Pending
+++++++
* Add validation to `az aks create` and `az aks update` while modifying the `--ephemeral-disk-volume-type` and `--ephemeral-disk-nvme-perf-tier` values.

5.0.0b3
++++++++
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -303,20 +303,37 @@ def validate_enable_azure_container_storage_params( # pylint: disable=too-many-
f'already enabled for storage pool option {enabled_options}.'
)
else:
if ephemeral_disk_volume_type is not None and ephemeral_disk_nvme_perf_tier is None and \
if required_type_installed_for_disk_vol_type and \
ephemeral_disk_volume_type is not None and \
ephemeral_disk_nvme_perf_tier is None and \
existing_ephemeral_disk_volume_type.lower() == ephemeral_disk_volume_type.lower():
raise InvalidArgumentValueError(
'Azure Container Storage is already configured with --ephemeral-disk-volume-type '
f'value set to {existing_ephemeral_disk_volume_type}.'
)

if ephemeral_disk_nvme_perf_tier is not None and ephemeral_disk_volume_type is None and \
if required_type_installed_for_nvme_perf_tier and \
ephemeral_disk_nvme_perf_tier is not None and \
ephemeral_disk_volume_type is None and \
existing_ephemeral_disk_nvme_perf_tier.lower() == ephemeral_disk_nvme_perf_tier.lower():
raise InvalidArgumentValueError(
'Azure Container Storage is already configured with --ephemeral-disk-nvme-perf-tier '
f'value set to {existing_ephemeral_disk_nvme_perf_tier}.'
)

# pylint: disable=too-many-boolean-expressions
if required_type_installed_for_disk_vol_type and \
ephemeral_disk_volume_type is not None and \
existing_ephemeral_disk_volume_type.lower() == ephemeral_disk_volume_type.lower() and \
required_type_installed_for_nvme_perf_tier and \
ephemeral_disk_nvme_perf_tier is not None and \
existing_ephemeral_disk_nvme_perf_tier.lower() == ephemeral_disk_nvme_perf_tier.lower():
raise InvalidArgumentValueError(
'Azure Container Storage is already configured with --ephemeral-disk-volume-type '
f'value set to {existing_ephemeral_disk_volume_type} and --ephemeral-disk-nvme-perf-tier '
f'value set to {existing_ephemeral_disk_nvme_perf_tier}.'
)

if storage_pool_option == CONST_ACSTOR_ALL:
raise InvalidArgumentValueError(
f'Cannot set --storage-pool-option value as {CONST_ACSTOR_ALL} '
Expand Down
41 changes: 41 additions & 0 deletions src/aks-preview/azext_aks_preview/tests/latest/test_validators.py
Original file line number Diff line number Diff line change
Expand Up @@ -969,6 +969,47 @@ def test_enable_with_ephemeral_disk_nvme_perf_tier_and_ephemeral_temp_disk_pool(
)
self.assertEqual(str(cm.exception), err)

def test_enable_with_same_ephemeral_disk_nvme_perf_tier_already_set(self):
perf_tier = acstor_consts.CONST_EPHEMERAL_NVME_PERF_TIER_PREMIUM
storage_pool_type = acstor_consts.CONST_STORAGE_POOL_TYPE_EPHEMERAL_DISK
err = (
"Azure Container Storage is already configured with --ephemeral-disk-nvme-perf-tier "
f"value set to {perf_tier}."
)
with self.assertRaises(InvalidArgumentValueError) as cm:
acstor_validator.validate_enable_azure_container_storage_params(
storage_pool_type, None, None, None, None, None, None, True, False, False, False, True, None, perf_tier, acstor_consts.CONST_DISK_TYPE_PV_WITH_ANNOTATION, acstor_consts.CONST_EPHEMERAL_NVME_PERF_TIER_PREMIUM
)
self.assertEqual(str(cm.exception), err)

def test_enable_with_same_ephemeral_disk_volume_type_already_set(self):
disk_vol_type = acstor_consts.CONST_DISK_TYPE_PV_WITH_ANNOTATION
storage_pool_type = acstor_consts.CONST_STORAGE_POOL_TYPE_EPHEMERAL_DISK
err = (
"Azure Container Storage is already configured with --ephemeral-disk-volume-type "
f"value set to {disk_vol_type}."
)
with self.assertRaises(InvalidArgumentValueError) as cm:
acstor_validator.validate_enable_azure_container_storage_params(
storage_pool_type, None, None, None, None, None, None, True, False, False, False, True, disk_vol_type, None, acstor_consts.CONST_DISK_TYPE_PV_WITH_ANNOTATION, acstor_consts.CONST_EPHEMERAL_NVME_PERF_TIER_PREMIUM
)
self.assertEqual(str(cm.exception), err)

def test_enable_with_same_ephemeral_disk_nvme_perf_tier_and_ephemeral_temp_disk_pool_already_set(self):
perf_tier = acstor_consts.CONST_EPHEMERAL_NVME_PERF_TIER_STANDARD
disk_vol_type = acstor_consts.CONST_DISK_TYPE_PV_WITH_ANNOTATION
storage_pool_type = acstor_consts.CONST_STORAGE_POOL_TYPE_EPHEMERAL_DISK
err = (
"Azure Container Storage is already configured with --ephemeral-disk-volume-type "
f"value set to {disk_vol_type} and --ephemeral-disk-nvme-perf-tier "
f"value set to {perf_tier}."
)
with self.assertRaises(InvalidArgumentValueError) as cm:
acstor_validator.validate_enable_azure_container_storage_params(
storage_pool_type, None, None, None, None, None, None, True, False, False, False, True, disk_vol_type, perf_tier, acstor_consts.CONST_DISK_TYPE_PV_WITH_ANNOTATION, acstor_consts.CONST_EPHEMERAL_NVME_PERF_TIER_STANDARD
)
self.assertEqual(str(cm.exception), err)

def test_enable_with_option_all_and_ephemeral_disk_pool(self):
storage_pool_name = "valid-name"
storage_pool_option = acstor_consts.CONST_ACSTOR_ALL
Expand Down

0 comments on commit 95138e4

Please sign in to comment.