Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AKS: Add and fix additional validations to ephemeral disk operation #7755

Merged
merged 3 commits into from
Jul 2, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/aks-preview/HISTORY.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ To release a new version, please select a new version number (usually plus 1 to
Pending
+++++++

5.0.0b3
++++++++
* 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.0b2
++++++++
* Add option `--ephemeral-disk-volume-type` to `az aks create` and `az aks update` for Azure Container Storage operations.
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
Original file line number Diff line number Diff line change
Expand Up @@ -969,6 +969,53 @@ 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):
storage_pool_name = "valid-name"
perf_tier = acstor_consts.CONST_EPHEMERAL_NVME_PERF_TIER_PREMIUM
storage_pool_type = acstor_consts.CONST_STORAGE_POOL_TYPE_EPHEMERAL_DISK
storage_pool_option = acstor_consts.CONST_STORAGE_POOL_OPTION_SSD
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, storage_pool_name, None, storage_pool_option, 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):
storage_pool_name = "valid-name"
disk_vol_type = acstor_consts.CONST_DISK_TYPE_PV_WITH_ANNOTATION
storage_pool_type = acstor_consts.CONST_STORAGE_POOL_TYPE_EPHEMERAL_DISK
storage_pool_option = acstor_consts.CONST_STORAGE_POOL_OPTION_SSD
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, storage_pool_name, None, storage_pool_option, 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):
storage_pool_name = "valid-name"
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
storage_pool_option = acstor_consts.CONST_STORAGE_POOL_OPTION_SSD
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, storage_pool_name, None, storage_pool_option, 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
2 changes: 1 addition & 1 deletion src/aks-preview/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

from setuptools import setup, find_packages

VERSION = "5.0.0b2"
VERSION = "5.0.0b3"

CLASSIFIERS = [
"Development Status :: 4 - Beta",
Expand Down
Loading