From b20fcf2907dfb9915e218c51a8cdc6a9d13ccc73 Mon Sep 17 00:00:00 2001 From: Akash Mukhopadhyay Date: Sat, 28 Oct 2023 21:29:14 -0700 Subject: [PATCH] Adding validation and test if extension is already installed or not --- .../azurecontainerstorage/_validators.py | 23 ++++++- .../azurecontainerstorage/acstor_ops.py | 31 ++------- .../managed_cluster_decorator.py | 18 ++++- .../tests/latest/test_validators.py | 68 ++++++++++++------- 4 files changed, 88 insertions(+), 52 deletions(-) diff --git a/src/aks-preview/azext_aks_preview/azurecontainerstorage/_validators.py b/src/aks-preview/azext_aks_preview/azurecontainerstorage/_validators.py index 62e74a0505a..7a1f4a5b98f 100644 --- a/src/aks-preview/azext_aks_preview/azurecontainerstorage/_validators.py +++ b/src/aks-preview/azext_aks_preview/azurecontainerstorage/_validators.py @@ -39,6 +39,7 @@ def validate_azure_container_storage_params( storage_pool_size, nodepool_list, agentpool_names, + is_extension_installed, ): if enable_azure_container_storage and disable_azure_container_storage: raise MutuallyExclusiveArgumentError( @@ -53,6 +54,7 @@ def validate_azure_container_storage_params( storage_pool_option, storage_pool_size, nodepool_list, + is_extension_installed, ) elif enable_azure_container_storage: @@ -62,6 +64,7 @@ def validate_azure_container_storage_params( storage_pool_sku, storage_pool_option, storage_pool_size, + is_extension_installed ) _validate_nodepool_names(nodepool_list, agentpool_names) @@ -73,7 +76,15 @@ def _validate_disable_azure_container_storage_params( storage_pool_option, storage_pool_size, nodepool_list, + is_extension_installed, ): + if not is_extension_installed: + raise InvalidArgumentValueError( + 'Invalid usage of --disable-azure-container-storage. ' + 'Azure Container Storage is not enabled on the cluster. ' + 'Aborting disabling of Azure Container Storage.' + ) + if storage_pool_name is not None: raise MutuallyExclusiveArgumentError( 'Conflicting flags. Cannot define --storage-pool-name value ' @@ -111,7 +122,15 @@ def _validate_enable_azure_container_storage_params( storage_pool_sku, storage_pool_option, storage_pool_size, + is_extension_installed, ): + if is_extension_installed: + raise InvalidArgumentValueError( + 'Invalid usage of --enable-azure-container-storage. ' + 'Azure Container Storage is already enabled on the cluster. ' + 'Aborting installation of Azure Container Storage.' + ) + if storage_pool_name is not None: pattern = r'[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*' is_pool_name_valid = re.fullmatch(pattern, storage_pool_name) @@ -180,9 +199,9 @@ def _validate_nodepool_names(nodepool_names, agentpool_details): pattern = r'^[a-z][a-z0-9]*(?:,[a-z][a-z0-9]*)*$' if re.fullmatch(pattern, nodepool_names) is None: raise InvalidArgumentValueError( - "Invalid --azure-container-storage-nodepools value." + "Invalid --azure-container-storage-nodepools value. " "Accepted value is a comma separated string of valid nodepool " - "names without any spaces. A valid nodepool name may only contain lowercase " + "names without any spaces.\nA valid nodepool name may only contain lowercase " "alphanumeric characters and must begin with a lowercase letter." ) diff --git a/src/aks-preview/azext_aks_preview/azurecontainerstorage/acstor_ops.py b/src/aks-preview/azext_aks_preview/azurecontainerstorage/acstor_ops.py index 36dc0ddd4ee..f80237b72c4 100644 --- a/src/aks-preview/azext_aks_preview/azurecontainerstorage/acstor_ops.py +++ b/src/aks-preview/azext_aks_preview/azurecontainerstorage/acstor_ops.py @@ -53,15 +53,6 @@ def perform_enable_azure_container_storage( if not register_dependent_rps(cmd, subscription_id): return - # Step 2: Check if extension already installed incase of an update call - if not is_cluster_create and check_if_extension_is_installed(cmd, resource_group, cluster_name): - logger.error( - "Extension type {0} already installed on cluster." - "\nAborting installation of Azure Container Storage." - .format(CONST_ACSTOR_K8S_EXTENSION_NAME) - ) - return - if nodepool_names is None: nodepool_names = "nodepool1" if storage_pool_type == CONST_STORAGE_POOL_TYPE_EPHEMERAL_DISK: @@ -70,9 +61,9 @@ def perform_enable_azure_container_storage( if storage_pool_option == CONST_STORAGE_POOL_OPTION_SSD: storage_pool_option = "temp" - # Step 3: Validate if storagepool should be created. + # Step 2: Validate if storagepool should be created. # Depends on the following: - # 3a: Grant AKS cluster's node identity the following + # 2a: Grant AKS cluster's node identity the following # roles on the AKS managed resource group: # 1. Reader # 2. Network Contributor @@ -80,7 +71,7 @@ def perform_enable_azure_container_storage( # 4. Elastic SAN Volume Group Owner # Ensure grant was successful if creation of # Elastic SAN storagepool is requested. - # 3b: Ensure Ls series nodepool is present if creation + # 2b: Ensure Ls series nodepool is present if creation # of Ephemeral NVMe Disk storagepool is requested. create_storage_pool = should_create_storagepool( cmd, @@ -93,7 +84,7 @@ def perform_enable_azure_container_storage( nodepool_names, ) - # Step 4: Configure the storagepool parameters + # Step 3: Configure the storagepool parameters config_settings = [] if create_storage_pool: if storage_pool_name is None: @@ -169,19 +160,11 @@ def perform_disable_azure_container_storage( kubelet_identity_object_id, perform_validation, ): - # Step 1: Check if show_k8s_extension returns an extension already installed - if not check_if_extension_is_installed(cmd, resource_group, cluster_name): - raise UnknownError( - "Extension type {0} not installed on cluster." - "\nAborting disabling of Azure Container Storage." - .format(CONST_ACSTOR_K8S_EXTENSION_NAME) - ) - client_factory = get_k8s_extension_module(CONST_K8S_EXTENSION_CLIENT_FACTORY_MOD_NAME) client = client_factory.cf_k8s_extension_operation(cmd.cli_ctx) k8s_extension_custom_mod = get_k8s_extension_module(CONST_K8S_EXTENSION_CUSTOM_MOD_NAME) no_wait_delete_op = False - # Step 2: Perform validation if accepted by user + # Step 1: Perform validation if accepted by user if perform_validation: config_settings = [{"cli.storagePool.uninstallValidation": True}] try: @@ -229,7 +212,7 @@ def perform_disable_azure_container_storage( else: raise UnknownError("Validation failed. Unable to disable Azure Container Storage. Reseting cluster state.") - # Step 3: If the extension is installed and validation succeeded or skipped, call delete_k8s_extension + # Step 2: If the extension is installed and validation succeeded or skipped, call delete_k8s_extension try: delete_op_result = k8s_extension_custom_mod.delete_k8s_extension( cmd, @@ -249,7 +232,7 @@ def perform_disable_azure_container_storage( logger.warning("Azure Container Storage has been disabled.") - # Step 4: Revoke AKS cluster's node identity the following + # Step 3: Revoke AKS cluster's node identity the following # roles on the AKS managed resource group: # 1. Reader # 2. Network Contributor diff --git a/src/aks-preview/azext_aks_preview/managed_cluster_decorator.py b/src/aks-preview/azext_aks_preview/managed_cluster_decorator.py index 1eebca6d579..af27f356f8f 100644 --- a/src/aks-preview/azext_aks_preview/managed_cluster_decorator.py +++ b/src/aks-preview/azext_aks_preview/managed_cluster_decorator.py @@ -2780,6 +2780,12 @@ def set_up_azure_container_storage(self, mc: ManagedCluster) -> ManagedCluster: # installing Azure Container Storage during `az aks create` nodepool_list = agentpool.name + from azext_aks_preview.azurecontainerstorage._helpers import check_if_extension_is_installed + is_extension_already_installed = check_if_extension_is_installed( + self.cmd, + self.context.get_resource_group_name(), + self.context.get_name(), + ) from azext_aks_preview.azurecontainerstorage._validators import validate_azure_container_storage_params validate_azure_container_storage_params( True, @@ -2791,6 +2797,7 @@ def set_up_azure_container_storage(self, mc: ManagedCluster) -> ManagedCluster: pool_size, nodepool_list, agentpool_name_list, + is_extension_already_installed, ) # Setup Azure Container Storage labels on the nodepool @@ -3333,6 +3340,12 @@ def update_azure_container_storage(self, mc: ManagedCluster) -> ManagedCluster: nodepool_list = "nodepool1" if len(agentpool_names) == 1: nodepool_list = agentpool_names[0] + from azext_aks_preview.azurecontainerstorage._helpers import check_if_extension_is_installed + is_extension_already_installed = check_if_extension_is_installed( + self.cmd, + self.context.get_resource_group_name(), + self.context.get_name(), + ) from azext_aks_preview.azurecontainerstorage._validators import validate_azure_container_storage_params validate_azure_container_storage_params( enable_azure_container_storage, @@ -3344,6 +3357,7 @@ def update_azure_container_storage(self, mc: ManagedCluster) -> ManagedCluster: pool_size, nodepool_list, agentpool_names, + is_extension_already_installed, ) if enable_azure_container_storage: @@ -3356,14 +3370,14 @@ def update_azure_container_storage(self, mc: ManagedCluster) -> ManagedCluster: for agentpool in mc.agent_pool_profiles: labels = agentpool.node_labels if agentpool.name in azure_container_storage_nodepools_list: - nodepool_match_found = True if labels is None: labels = {} labels[CONST_ACSTOR_IO_ENGINE_LABEL_KEY] = CONST_ACSTOR_IO_ENGINE_LABEL_VAL else: # Remove residual Azure Container Storage labels # from any other nodepools where its not intended - labels.pop(CONST_ACSTOR_IO_ENGINE_LABEL_KEY, None) + if labels is not None: + labels.pop(CONST_ACSTOR_IO_ENGINE_LABEL_KEY, None) agentpool.node_labels = labels # set intermediates diff --git a/src/aks-preview/azext_aks_preview/tests/latest/test_validators.py b/src/aks-preview/azext_aks_preview/tests/latest/test_validators.py index 24640a0e351..b7156d30378 100644 --- a/src/aks-preview/azext_aks_preview/tests/latest/test_validators.py +++ b/src/aks-preview/azext_aks_preview/tests/latest/test_validators.py @@ -626,7 +626,16 @@ def test_conflicting_flags_for_enable_disable(self): err = 'Conflicting flags. Cannot set --enable-azure-container-storage '\ 'and --disable-azure-container-storage together.' with self.assertRaises(MutuallyExclusiveArgumentError) as cm: - acstor_validator.validate_azure_container_storage_params(True, True, None, None, None, None, None, None, None) + acstor_validator.validate_azure_container_storage_params(True, True, None, None, None, None, None, None, None, False) + self.assertEqual(str(cm.exception), err) + + def test_disable_when_extension_not_installed(self): + is_extension_installed = False + err = 'Invalid usage of --disable-azure-container-storage. '\ + 'Azure Container Storage is not enabled on the cluster. ' \ + 'Aborting disabling of Azure Container Storage.' + with self.assertRaises(InvalidArgumentValueError) as cm: + acstor_validator.validate_azure_container_storage_params(None, True, None, None, None, None, None, None, None, is_extension_installed) self.assertEqual(str(cm.exception), err) def test_disable_flag_with_storage_pool_name(self): @@ -634,7 +643,7 @@ def test_disable_flag_with_storage_pool_name(self): err = 'Conflicting flags. Cannot define --storage-pool-name value '\ 'when --disable-azure-container-storage is set.' with self.assertRaises(MutuallyExclusiveArgumentError) as cm: - acstor_validator.validate_azure_container_storage_params(None, True, storage_pool_name, None, None, None, None, None, None) + acstor_validator.validate_azure_container_storage_params(None, True, storage_pool_name, None, None, None, None, None, None, True) self.assertEqual(str(cm.exception), err) def test_disable_flag_with_storage_pool_sku(self): @@ -642,7 +651,7 @@ def test_disable_flag_with_storage_pool_sku(self): err = 'Conflicting flags. Cannot define --storage-pool-sku value ' \ 'when --disable-azure-container-storage is set.' with self.assertRaises(MutuallyExclusiveArgumentError) as cm: - acstor_validator.validate_azure_container_storage_params(None, True, None, None, storage_pool_sku, None, None, None, None) + acstor_validator.validate_azure_container_storage_params(None, True, None, None, storage_pool_sku, None, None, None, None, True) self.assertEqual(str(cm.exception), err) def test_disable_flag_with_storage_pool_size(self): @@ -650,7 +659,7 @@ def test_disable_flag_with_storage_pool_size(self): err = 'Conflicting flags. Cannot define --storage-pool-size value ' \ 'when --disable-azure-container-storage is set.' with self.assertRaises(MutuallyExclusiveArgumentError) as cm: - acstor_validator.validate_azure_container_storage_params(None, True, None, None, None, None, storage_pool_size, None, None) + acstor_validator.validate_azure_container_storage_params(None, True, None, None, None, None, storage_pool_size, None, None, True) self.assertEqual(str(cm.exception), err) def test_disable_flag_with_storage_pool_option(self): @@ -658,7 +667,7 @@ def test_disable_flag_with_storage_pool_option(self): err = 'Conflicting flags. Cannot define --storage-pool-option value ' \ 'when --disable-azure-container-storage is set.' with self.assertRaises(MutuallyExclusiveArgumentError) as cm: - acstor_validator.validate_azure_container_storage_params(None, True, None, None, None, storage_pool_option, None, None, None) + acstor_validator.validate_azure_container_storage_params(None, True, None, None, None, storage_pool_option, None, None, None, True) self.assertEqual(str(cm.exception), err) def test_disable_flag_with_nodepool_list(self): @@ -666,11 +675,20 @@ def test_disable_flag_with_nodepool_list(self): err = 'Conflicting flags. Cannot define --azure-container-storage-nodepools value ' \ 'when --disable-azure-container-storage is set.' with self.assertRaises(MutuallyExclusiveArgumentError) as cm: - acstor_validator.validate_azure_container_storage_params(None, True, None, None, None, None, None, nodepool_list, None) + acstor_validator.validate_azure_container_storage_params(None, True, None, None, None, None, None, nodepool_list, None, True) self.assertEqual(str(cm.exception), err) def test_valid_disable(self): - acstor_validator.validate_azure_container_storage_params(None, True, None, None, None, None, None, None, None) + acstor_validator.validate_azure_container_storage_params(None, True, None, None, None, None, None, None, None, True) + + def test_enable_when_extension_installed(self): + is_extension_installed = True + err = 'Invalid usage of --enable-azure-container-storage. '\ + 'Azure Container Storage is already enabled on the cluster. ' \ + 'Aborting installation of Azure Container Storage.' + with self.assertRaises(InvalidArgumentValueError) as cm: + acstor_validator.validate_azure_container_storage_params(True, None, None, None, None, None, None, None, None, is_extension_installed) + self.assertEqual(str(cm.exception), err) def test_enable_with_invalid_storage_pool_name(self): storage_pool_name = "my_test_pool" @@ -678,7 +696,7 @@ def test_enable_with_invalid_storage_pool_name(self): "Accepted values are lowercase alphanumeric characters, " \ "'-' or '.', and must start and end with an alphanumeric character." with self.assertRaises(InvalidArgumentValueError) as cm: - acstor_validator.validate_azure_container_storage_params(True, None, storage_pool_name, None, None, None, None, None, None) + acstor_validator.validate_azure_container_storage_params(True, None, storage_pool_name, None, None, None, None, None, None, False) self.assertEqual(str(cm.exception), err) def test_enable_with_sku_and_ephemeral_disk_pool(self): @@ -687,7 +705,7 @@ def test_enable_with_sku_and_ephemeral_disk_pool(self): storage_pool_type = acstor_consts.CONST_STORAGE_POOL_TYPE_EPHEMERAL_DISK err = 'Cannot set --storage-pool-sku when --enable-azure-container-storage is ephemeralDisk.' with self.assertRaises(ArgumentUsageError) as cm: - acstor_validator.validate_azure_container_storage_params(True, None, storage_pool_name, storage_pool_type, storage_pool_sku, None, None, None, None) + acstor_validator.validate_azure_container_storage_params(True, None, storage_pool_name, storage_pool_type, storage_pool_sku, None, None, None, None, False) self.assertEqual(str(cm.exception), err) def test_enable_with_sku_and_elastic_san_pool(self): @@ -701,7 +719,7 @@ def test_enable_with_sku_and_elastic_san_pool(self): 'when --enable-azure-container-storage is set to elasticSan.' \ .format(supported_skus) with self.assertRaises(ArgumentUsageError) as cm: - acstor_validator.validate_azure_container_storage_params(True, None, storage_pool_name, storage_pool_type, storage_pool_sku, None, None, None, None) + acstor_validator.validate_azure_container_storage_params(True, None, storage_pool_name, storage_pool_type, storage_pool_sku, None, None, None, None, False) self.assertEqual(str(cm.exception), err) def test_enable_with_option_and_non_ephemeral_disk_pool(self): @@ -710,7 +728,7 @@ def test_enable_with_option_and_non_ephemeral_disk_pool(self): storage_pool_type = acstor_consts.CONST_STORAGE_POOL_TYPE_AZURE_DISK err = 'Cannot set --storage-pool-option when --enable-azure-container-storage is not ephemeralDisk.' with self.assertRaises(ArgumentUsageError) as cm: - acstor_validator.validate_azure_container_storage_params(True, None, storage_pool_name, storage_pool_type, None, storage_pool_option, None, None, None) + acstor_validator.validate_azure_container_storage_params(True, None, storage_pool_name, storage_pool_type, None, storage_pool_option, None, None, None, False) self.assertEqual(str(cm.exception), err) def test_enable_with_ssd_option_and_ephemeral_disk_pool(self): @@ -719,7 +737,7 @@ def test_enable_with_ssd_option_and_ephemeral_disk_pool(self): storage_pool_type = acstor_consts.CONST_STORAGE_POOL_TYPE_EPHEMERAL_DISK err = '--storage-pool-option Temp storage (SSD) currently not supported.' with self.assertRaises(ArgumentUsageError) as cm: - acstor_validator.validate_azure_container_storage_params(True, None, storage_pool_name, storage_pool_type, None, storage_pool_option, None, None, None) + acstor_validator.validate_azure_container_storage_params(True, None, storage_pool_name, storage_pool_type, None, storage_pool_option, None, None, None, False) self.assertEqual(str(cm.exception), err) def test_enable_with_invalid_storage_pool_size(self): @@ -727,7 +745,7 @@ def test_enable_with_invalid_storage_pool_size(self): storage_pool_size = "5" err = 'Value for --storage-pool-size should be defined with size followed by Gi or Ti e.g. 512Gi or 2Ti.' with self.assertRaises(ArgumentUsageError) as cm: - acstor_validator.validate_azure_container_storage_params(True, None, storage_pool_name, None, None, None, storage_pool_size, None, None) + acstor_validator.validate_azure_container_storage_params(True, None, storage_pool_name, None, None, None, storage_pool_size, None, None, False) self.assertEqual(str(cm.exception), err) def test_enable_with_invalid_size_for_esan_storage_pool(self): @@ -736,7 +754,7 @@ def test_enable_with_invalid_size_for_esan_storage_pool(self): storage_pool_type = acstor_consts.CONST_STORAGE_POOL_TYPE_ELASTIC_SAN err = 'Value for --storage-pool-size must be at least 1Ti when --enable-azure-container-storage is elasticSan.' with self.assertRaises(ArgumentUsageError) as cm: - acstor_validator.validate_azure_container_storage_params(True, None, storage_pool_name, storage_pool_type, None, None, storage_pool_size, None, None) + acstor_validator.validate_azure_container_storage_params(True, None, storage_pool_name, storage_pool_type, None, None, storage_pool_size, None, None, False) self.assertEqual(str(cm.exception), err) def test_invalid_comma_separated_nodepool_list(self): @@ -745,12 +763,12 @@ def test_invalid_comma_separated_nodepool_list(self): storage_pool_size = "5Ti" storage_pool_type = acstor_consts.CONST_STORAGE_POOL_TYPE_EPHEMERAL_DISK storage_pool_option = acstor_consts.CONST_STORAGE_POOL_OPTION_NVME - err = "Invalid --azure-container-storage-nodepools value." \ + err = "Invalid --azure-container-storage-nodepools value. " \ "Accepted value is a comma separated string of valid nodepool " \ - "names without any spaces. A valid nodepool name may only contain lowercase " \ + "names without any spaces.\nA valid nodepool name may only contain lowercase " \ "alphanumeric characters and must begin with a lowercase letter." - with self.assertRaises(ArgumentUsageError) as cm: - acstor_validator.validate_azure_container_storage_params(True, None, storage_pool_name, storage_pool_type, None, None, storage_pool_size, nodepool_list, None) + with self.assertRaises(InvalidArgumentValueError) as cm: + acstor_validator.validate_azure_container_storage_params(True, None, storage_pool_name, storage_pool_type, None, None, storage_pool_size, nodepool_list, None, False) self.assertEqual(str(cm.exception), err) def test_missing_nodepool_from_cluster_nodepool_list_single(self): @@ -760,11 +778,12 @@ def test_missing_nodepool_from_cluster_nodepool_list_single(self): storage_pool_option = acstor_consts.CONST_STORAGE_POOL_OPTION_NVME nodepool_list = "pool1" agentpools = ["nodepool1"] - err = 'Nodepool: pool1 not found. Please provide existing nodepool names in --azure-container-storage-nodepools.' \ + err = 'Nodepool: pool1 not found. Please provide a comma separated ' \ + 'string of existing nodepool names in --azure-container-storage-nodepools.' \ '\nNodepool available in the cluster is: nodepool1.' \ '\nAborting installation of Azure Container Storage.' with self.assertRaises(InvalidArgumentValueError) as cm: - acstor_validator.validate_azure_container_storage_params(True, None, storage_pool_name, storage_pool_type, None, None, storage_pool_size, nodepool_list, agentpools) + acstor_validator.validate_azure_container_storage_params(True, None, storage_pool_name, storage_pool_type, None, None, storage_pool_size, nodepool_list, agentpools, False) self.assertEqual(str(cm.exception), err) def test_missing_nodepool_from_cluster_nodepool_list_multiple(self): @@ -774,11 +793,12 @@ def test_missing_nodepool_from_cluster_nodepool_list_multiple(self): storage_pool_option = acstor_consts.CONST_STORAGE_POOL_OPTION_NVME nodepool_list = "pool1,pool2" agentpools = ["nodepool1", "nodepool2"] - err = 'Nodepool: pool1 not found. Please provide existing nodepool names in --azure-container-storage-nodepools.' \ + err = 'Nodepool: pool1 not found. Please provide a comma separated ' \ + 'string of existing nodepool names in --azure-container-storage-nodepools.' \ '\nNodepools available in the cluster are: nodepool1, nodepool2.' \ '\nAborting installation of Azure Container Storage.' with self.assertRaises(InvalidArgumentValueError) as cm: - acstor_validator.validate_azure_container_storage_params(True, None, storage_pool_name, storage_pool_type, None, None, storage_pool_size, nodepool_list, agentpools) + acstor_validator.validate_azure_container_storage_params(True, None, storage_pool_name, storage_pool_type, None, None, storage_pool_size, nodepool_list, agentpools, False) self.assertEqual(str(cm.exception), err) def test_valid_enable_for_azure_disk_pool(self): @@ -788,7 +808,7 @@ def test_valid_enable_for_azure_disk_pool(self): storage_pool_sku = acstor_consts.CONST_STORAGE_POOL_SKU_PREMIUM_LRS nodepool_list = "nodepool1,nodepool2" agentpools = ["nodepool1", "nodepool2"] - acstor_validator.validate_azure_container_storage_params(True, None, storage_pool_name, storage_pool_type, storage_pool_sku, None, storage_pool_size, nodepool_list, agentpools) + acstor_validator.validate_azure_container_storage_params(True, None, storage_pool_name, storage_pool_type, storage_pool_sku, None, storage_pool_size, nodepool_list, agentpools, False) def test_valid_enable_for_ephemeral_disk_pool(self): storage_pool_name = "valid-name" @@ -797,7 +817,7 @@ def test_valid_enable_for_ephemeral_disk_pool(self): storage_pool_option = acstor_consts.CONST_STORAGE_POOL_OPTION_NVME nodepool_list = "nodepool1" agentpools = ["nodepool1", "nodepool2"] - acstor_validator.validate_azure_container_storage_params(True, None, storage_pool_name, storage_pool_type, None, storage_pool_option, storage_pool_size, nodepool_list, agentpools) + acstor_validator.validate_azure_container_storage_params(True, None, storage_pool_name, storage_pool_type, None, storage_pool_option, storage_pool_size, nodepool_list, agentpools, False) if __name__ == "__main__":