@@ -3567,10 +3567,16 @@ def set_up_azure_container_storage(self, mc: ManagedCluster) -> ManagedCluster:
35673567 CONST_DISK_TYPE_EPHEMERAL_VOLUME_ONLY ,
35683568 CONST_EPHEMERAL_NVME_PERF_TIER_STANDARD ,
35693569 )
3570- from azure .cli .command_modules .acs .azurecontainerstorage ._helpers import (
3571- generate_vm_sku_cache_for_region
3570+
3571+ vm_cache_generated = self .context .get_intermediate (
3572+ "vm_cache_generated" ,
3573+ default_value = False ,
35723574 )
3573- generate_vm_sku_cache_for_region (self .cmd .cli_ctx , self .context .get_location ())
3575+
3576+ if not vm_cache_generated :
3577+ from azext_aks_preview .azurecontainerstorage ._helpers import generate_vm_sku_cache_for_region
3578+ generate_vm_sku_cache_for_region (self .cmd .cli_ctx , self .context .get_location ())
3579+ self .context .set_intermediate ("vm_cache_generated" , True , overwrite_exists = True )
35743580
35753581 default_ephemeral_disk_volume_type = CONST_DISK_TYPE_EPHEMERAL_VOLUME_ONLY
35763582 default_ephemeral_disk_nvme_perf_tier = CONST_EPHEMERAL_NVME_PERF_TIER_STANDARD
@@ -4174,20 +4180,20 @@ def postprocessing_after_mc_created(self, cluster: ManagedCluster) -> None:
41744180 is_called_from_extension = True ,
41754181 )
41764182
4177- # Add role assignments for automatic sku
4178- if cluster .sku is not None and cluster .sku .name == "Automatic" :
4179- try :
4180- user = get_graph_client (self .cmd .cli_ctx ).signed_in_user_get ()
4181- except Exception as e : # pylint: disable=broad-except
4182- logger .warning ("Could not get signed in user: %s" , str (e ))
4183- else :
4184- self .context .external_functions ._add_role_assignment_executor_new ( # type: ignore # pylint: disable=protected-access
4185- self .cmd ,
4186- "Azure Kubernetes Service RBAC Cluster Admin" ,
4187- user ["id" ],
4188- scope = cluster .id ,
4189- resolve_assignee = False ,
4190- )
4183+ # Add role assignments for automatic sku
4184+ if cluster .sku is not None and cluster .sku .name == "Automatic" :
4185+ try :
4186+ user = get_graph_client (self .cmd .cli_ctx ).signed_in_user_get ()
4187+ except Exception as e : # pylint: disable=broad-except
4188+ logger .warning ("Could not get signed in user: %s" , str (e ))
4189+ else :
4190+ self .context .external_functions ._add_role_assignment_executor_new ( # type: ignore # pylint: disable=protected-access
4191+ self .cmd ,
4192+ "Azure Kubernetes Service RBAC Cluster Admin" ,
4193+ user ["id" ],
4194+ scope = cluster .id ,
4195+ resolve_assignee = False ,
4196+ )
41914197
41924198
41934199class AKSPreviewManagedClusterUpdateDecorator (AKSManagedClusterUpdateDecorator ):
@@ -4501,26 +4507,38 @@ def update_azure_container_storage(self, mc: ManagedCluster) -> ManagedCluster:
45014507 from azure .cli .command_modules .acs .azurecontainerstorage ._helpers import (
45024508 get_extension_installed_and_cluster_configs
45034509 )
4504- (
4505- is_extension_installed ,
4506- is_azureDisk_enabled ,
4507- is_elasticSan_enabled ,
4508- is_ephemeralDisk_localssd_enabled ,
4509- is_ephemeralDisk_nvme_enabled ,
4510- current_core_value ,
4511- existing_ephemeral_disk_volume_type ,
4512- existing_perf_tier ,
4513- ) = get_extension_installed_and_cluster_configs (
4514- self .cmd ,
4515- self .context .get_resource_group_name (),
4516- self .context .get_name (),
4517- mc .agent_pool_profiles ,
4510+ try :
4511+ (
4512+ is_extension_installed ,
4513+ is_azureDisk_enabled ,
4514+ is_elasticSan_enabled ,
4515+ is_ephemeralDisk_localssd_enabled ,
4516+ is_ephemeralDisk_nvme_enabled ,
4517+ current_core_value ,
4518+ existing_ephemeral_disk_volume_type ,
4519+ existing_perf_tier ,
4520+ ) = get_extension_installed_and_cluster_configs (
4521+ self .cmd ,
4522+ self .context .get_resource_group_name (),
4523+ self .context .get_name (),
4524+ mc .agent_pool_profiles ,
4525+ )
4526+ except UnknownError as e :
4527+ logger .error ("\n Error fetching installed extension and cluster config: %s" , e )
4528+ return mc
4529+ except Exception as ex : # pylint: disable=broad-except
4530+ logger .error ("Exception fetching installed extension and cluster config: %s" , ex )
4531+ return mc
4532+
4533+ vm_cache_generated = self .context .get_intermediate (
4534+ "vm_cache_generated" ,
4535+ default_value = False ,
45184536 )
45194537
4520- from azure . cli . command_modules . acs . azurecontainerstorage . _helpers import (
4521- generate_vm_sku_cache_for_region
4522- )
4523- generate_vm_sku_cache_for_region ( self . cmd . cli_ctx , self .context .get_location () )
4538+ if not vm_cache_generated :
4539+ from azext_aks_preview . azurecontainerstorage . _helpers import generate_vm_sku_cache_for_region
4540+ generate_vm_sku_cache_for_region ( self . cmd . cli_ctx , self . context . get_location () )
4541+ self .context .set_intermediate ( "vm_cache_generated" , True , overwrite_exists = True )
45244542
45254543 if enable_azure_container_storage :
45264544 from azure .cli .command_modules .acs .azurecontainerstorage ._helpers import (
@@ -4602,13 +4620,29 @@ def update_azure_container_storage(self, mc: ManagedCluster) -> ManagedCluster:
46024620 )
46034621
46044622 if is_ephemeralDisk_nvme_enabled and ephemeral_disk_nvme_perf_tier is not None :
4605- msg = (
4606- "Changing ephemeralDisk NVMe performance tier may result in a temporary "
4607- "interruption to the applications using Azure Container Storage. Do you "
4608- "want to continue with this operation?"
4623+ # Adding this intermediate and check to ensure that the below
4624+ # message prompt doesn't appear twice when aks-preview extension
4625+ # is called from both update_mc_profile_preview and update_mc_profile_default.
4626+ is_azure_container_storage_perf_tier_op_set = self .context .get_intermediate (
4627+ "azure_container_storage_perf_tier_op_set" ,
4628+ default_value = "default" ,
46094629 )
4610- if not (self .context .get_yes () or prompt_y_n (msg , default = "n" )):
4611- raise DecoratorEarlyExitException ()
4630+
4631+ if is_azure_container_storage_perf_tier_op_set == "default" :
4632+ msg = (
4633+ "Changing ephemeralDisk NVMe performance tier may result in a temporary "
4634+ "interruption to the applications using Azure Container Storage. Do you "
4635+ "want to continue with this operation?"
4636+ )
4637+ if not (self .context .get_yes () or prompt_y_n (msg , default = "n" )):
4638+ raise DecoratorEarlyExitException ()
4639+
4640+ self .context .set_intermediate (
4641+ "azure_container_storage_perf_tier_op_set" ,
4642+ True ,
4643+ overwrite_exists = True
4644+ )
4645+
46124646 # If the extension is already installed,
46134647 # we expect that the Azure Container Storage
46144648 # nodes are already labelled. Use those label
@@ -4733,7 +4767,6 @@ def update_azure_container_storage(self, mc: ManagedCluster) -> ManagedCluster:
47334767 overwrite_exists = True
47344768 )
47354769 self .context .set_intermediate ("current_core_value" , current_core_value , overwrite_exists = True )
4736-
47374770 else :
47384771 storage_pool_name = self .context .raw_param .get ("storage_pool_name" )
47394772 pool_sku = self .context .raw_param .get ("storage_pool_sku" )
@@ -6068,7 +6101,6 @@ def postprocessing_after_mc_created(self, cluster: ManagedCluster) -> None:
60686101 existing_ephemeral_nvme_perf_tier ,
60696102 is_called_from_extension = True ,
60706103 )
6071-
60726104 else :
60736105 self .context .external_functions .perform_disable_azure_container_storage (
60746106 self .cmd ,
0 commit comments