@@ -3533,10 +3533,16 @@ def set_up_azure_container_storage(self, mc: ManagedCluster) -> ManagedCluster:
35333533 CONST_DISK_TYPE_EPHEMERAL_VOLUME_ONLY ,
35343534 CONST_EPHEMERAL_NVME_PERF_TIER_STANDARD ,
35353535 )
3536- from azure .cli .command_modules .acs .azurecontainerstorage ._helpers import (
3537- generate_vm_sku_cache_for_region
3536+
3537+ vm_cache_generated = self .context .get_intermediate (
3538+ "vm_cache_generated" ,
3539+ default_value = False ,
35383540 )
3539- generate_vm_sku_cache_for_region (self .cmd .cli_ctx , self .context .get_location ())
3541+
3542+ if not vm_cache_generated :
3543+ from azext_aks_preview .azurecontainerstorage ._helpers import generate_vm_sku_cache_for_region
3544+ generate_vm_sku_cache_for_region (self .cmd .cli_ctx , self .context .get_location ())
3545+ self .context .set_intermediate ("vm_cache_generated" , True , overwrite_exists = True )
35403546
35413547 default_ephemeral_disk_volume_type = CONST_DISK_TYPE_EPHEMERAL_VOLUME_ONLY
35423548 default_ephemeral_disk_nvme_perf_tier = CONST_EPHEMERAL_NVME_PERF_TIER_STANDARD
@@ -4138,20 +4144,20 @@ def postprocessing_after_mc_created(self, cluster: ManagedCluster) -> None:
41384144 is_called_from_extension = True ,
41394145 )
41404146
4141- # Add role assignments for automatic sku
4142- if cluster .sku is not None and cluster .sku .name == "Automatic" :
4143- try :
4144- user = get_graph_client (self .cmd .cli_ctx ).signed_in_user_get ()
4145- except Exception as e : # pylint: disable=broad-except
4146- logger .warning ("Could not get signed in user: %s" , str (e ))
4147- else :
4148- self .context .external_functions ._add_role_assignment_executor_new ( # type: ignore # pylint: disable=protected-access
4149- self .cmd ,
4150- "Azure Kubernetes Service RBAC Cluster Admin" ,
4151- user ["id" ],
4152- scope = cluster .id ,
4153- resolve_assignee = False ,
4154- )
4147+ # Add role assignments for automatic sku
4148+ if cluster .sku is not None and cluster .sku .name == "Automatic" :
4149+ try :
4150+ user = get_graph_client (self .cmd .cli_ctx ).signed_in_user_get ()
4151+ except Exception as e : # pylint: disable=broad-except
4152+ logger .warning ("Could not get signed in user: %s" , str (e ))
4153+ else :
4154+ self .context .external_functions ._add_role_assignment_executor_new ( # type: ignore # pylint: disable=protected-access
4155+ self .cmd ,
4156+ "Azure Kubernetes Service RBAC Cluster Admin" ,
4157+ user ["id" ],
4158+ scope = cluster .id ,
4159+ resolve_assignee = False ,
4160+ )
41554161
41564162
41574163class AKSPreviewManagedClusterUpdateDecorator (AKSManagedClusterUpdateDecorator ):
@@ -4465,26 +4471,38 @@ def update_azure_container_storage(self, mc: ManagedCluster) -> ManagedCluster:
44654471 from azure .cli .command_modules .acs .azurecontainerstorage ._helpers import (
44664472 get_extension_installed_and_cluster_configs
44674473 )
4468- (
4469- is_extension_installed ,
4470- is_azureDisk_enabled ,
4471- is_elasticSan_enabled ,
4472- is_ephemeralDisk_localssd_enabled ,
4473- is_ephemeralDisk_nvme_enabled ,
4474- current_core_value ,
4475- existing_ephemeral_disk_volume_type ,
4476- existing_perf_tier ,
4477- ) = get_extension_installed_and_cluster_configs (
4478- self .cmd ,
4479- self .context .get_resource_group_name (),
4480- self .context .get_name (),
4481- mc .agent_pool_profiles ,
4474+ try :
4475+ (
4476+ is_extension_installed ,
4477+ is_azureDisk_enabled ,
4478+ is_elasticSan_enabled ,
4479+ is_ephemeralDisk_localssd_enabled ,
4480+ is_ephemeralDisk_nvme_enabled ,
4481+ current_core_value ,
4482+ existing_ephemeral_disk_volume_type ,
4483+ existing_perf_tier ,
4484+ ) = get_extension_installed_and_cluster_configs (
4485+ self .cmd ,
4486+ self .context .get_resource_group_name (),
4487+ self .context .get_name (),
4488+ mc .agent_pool_profiles ,
4489+ )
4490+ except UnknownError as e :
4491+ logger .error ("\n Error fetching installed extension and cluster config: %s" , e )
4492+ return mc
4493+ except Exception as ex : # pylint: disable=broad-except
4494+ logger .error ("Exception fetching installed extension and cluster config: %s" , ex )
4495+ return mc
4496+
4497+ vm_cache_generated = self .context .get_intermediate (
4498+ "vm_cache_generated" ,
4499+ default_value = False ,
44824500 )
44834501
4484- from azure . cli . command_modules . acs . azurecontainerstorage . _helpers import (
4485- generate_vm_sku_cache_for_region
4486- )
4487- generate_vm_sku_cache_for_region ( self . cmd . cli_ctx , self .context .get_location () )
4502+ if not vm_cache_generated :
4503+ from azext_aks_preview . azurecontainerstorage . _helpers import generate_vm_sku_cache_for_region
4504+ generate_vm_sku_cache_for_region ( self . cmd . cli_ctx , self . context . get_location () )
4505+ self .context .set_intermediate ( "vm_cache_generated" , True , overwrite_exists = True )
44884506
44894507 if enable_azure_container_storage :
44904508 from azure .cli .command_modules .acs .azurecontainerstorage ._helpers import (
@@ -4566,13 +4584,29 @@ def update_azure_container_storage(self, mc: ManagedCluster) -> ManagedCluster:
45664584 )
45674585
45684586 if is_ephemeralDisk_nvme_enabled and ephemeral_disk_nvme_perf_tier is not None :
4569- msg = (
4570- "Changing ephemeralDisk NVMe performance tier may result in a temporary "
4571- "interruption to the applications using Azure Container Storage. Do you "
4572- "want to continue with this operation?"
4587+ # Adding this intermediate and check to ensure that the below
4588+ # message prompt doesn't appear twice when aks-preview extension
4589+ # is called from both update_mc_profile_preview and update_mc_profile_default.
4590+ is_azure_container_storage_perf_tier_op_set = self .context .get_intermediate (
4591+ "azure_container_storage_perf_tier_op_set" ,
4592+ default_value = "default" ,
45734593 )
4574- if not (self .context .get_yes () or prompt_y_n (msg , default = "n" )):
4575- raise DecoratorEarlyExitException ()
4594+
4595+ if is_azure_container_storage_perf_tier_op_set == "default" :
4596+ msg = (
4597+ "Changing ephemeralDisk NVMe performance tier may result in a temporary "
4598+ "interruption to the applications using Azure Container Storage. Do you "
4599+ "want to continue with this operation?"
4600+ )
4601+ if not (self .context .get_yes () or prompt_y_n (msg , default = "n" )):
4602+ raise DecoratorEarlyExitException ()
4603+
4604+ self .context .set_intermediate (
4605+ "azure_container_storage_perf_tier_op_set" ,
4606+ True ,
4607+ overwrite_exists = True
4608+ )
4609+
45764610 # If the extension is already installed,
45774611 # we expect that the Azure Container Storage
45784612 # nodes are already labelled. Use those label
@@ -4697,7 +4731,6 @@ def update_azure_container_storage(self, mc: ManagedCluster) -> ManagedCluster:
46974731 overwrite_exists = True
46984732 )
46994733 self .context .set_intermediate ("current_core_value" , current_core_value , overwrite_exists = True )
4700-
47014734 else :
47024735 storage_pool_name = self .context .raw_param .get ("storage_pool_name" )
47034736 pool_sku = self .context .raw_param .get ("storage_pool_sku" )
@@ -6032,7 +6065,6 @@ def postprocessing_after_mc_created(self, cluster: ManagedCluster) -> None:
60326065 existing_ephemeral_nvme_perf_tier ,
60336066 is_called_from_extension = True ,
60346067 )
6035-
60366068 else :
60376069 self .context .external_functions .perform_disable_azure_container_storage (
60386070 self .cmd ,
0 commit comments