|
20 | 20 | CONST_AZURE_SERVICE_MESH_UPGRADE_COMMAND_START, |
21 | 21 | CONST_AZURE_SERVICE_MESH_DEFAULT_EGRESS_NAMESPACE, |
22 | 22 | CONST_LOAD_BALANCER_SKU_BASIC, |
23 | | - CONST_LOAD_BALANCER_SKU_STANDARD, |
24 | 23 | CONST_MANAGED_CLUSTER_SKU_NAME_BASE, |
25 | 24 | CONST_MANAGED_CLUSTER_SKU_NAME_AUTOMATIC, |
26 | 25 | CONST_MANAGED_CLUSTER_SKU_TIER_FREE, |
|
86 | 85 | CONST_OUTBOUND_TYPE_MANAGED_NAT_GATEWAY, |
87 | 86 | CONST_OUTBOUND_TYPE_USER_ASSIGNED_NAT_GATEWAY, |
88 | 87 | CONST_OUTBOUND_TYPE_USER_DEFINED_ROUTING, |
| 88 | + CONST_LOAD_BALANCER_SKU_STANDARD, |
89 | 89 | DecoratorEarlyExitException, |
90 | 90 | DecoratorMode, |
91 | 91 | ) |
@@ -347,6 +347,48 @@ def get_enable_msi_auth_for_monitoring(self) -> Union[bool, None]: |
347 | 347 | return True |
348 | 348 | return enable_msi_auth_for_monitoring |
349 | 349 |
|
| 350 | + def _get_load_balancer_sku(self, enable_validation: bool = False) -> Union[str, None]: |
| 351 | + """Internal function to obtain the value of load_balancer_sku, default value is |
| 352 | + CONST_LOAD_BALANCER_SKU_STANDARD. |
| 353 | +
|
| 354 | + Note: When returning a string, it will always be lowercase. |
| 355 | +
|
| 356 | + This function supports the option of enable_validation. When enabled, it will check if load_balancer_sku equals |
| 357 | + to CONST_LOAD_BALANCER_SKU_BASIC, if so, when api_server_authorized_ip_ranges is assigned or |
| 358 | + enable_private_cluster is specified, raise an InvalidArgumentValueError. |
| 359 | +
|
| 360 | + :return: string or None |
| 361 | + """ |
| 362 | + # read the original value passed by the command |
| 363 | + load_balancer_sku = safe_lower(self.raw_param.get("load_balancer_sku")) |
| 364 | + # try to read the property value corresponding to the parameter from the `mc` object |
| 365 | + if ( |
| 366 | + load_balancer_sku is None and |
| 367 | + self.mc and |
| 368 | + self.mc.network_profile and |
| 369 | + self.mc.network_profile.load_balancer_sku is not None |
| 370 | + ): |
| 371 | + load_balancer_sku = safe_lower( |
| 372 | + self.mc.network_profile.load_balancer_sku |
| 373 | + ) |
| 374 | + if self.decorator_mode == DecoratorMode.CREATE and load_balancer_sku is None: |
| 375 | + # default value |
| 376 | + load_balancer_sku = CONST_LOAD_BALANCER_SKU_STANDARD |
| 377 | + |
| 378 | + # validation |
| 379 | + if enable_validation: |
| 380 | + if load_balancer_sku == CONST_LOAD_BALANCER_SKU_BASIC: |
| 381 | + if self._get_api_server_authorized_ip_ranges(enable_validation=False): |
| 382 | + raise InvalidArgumentValueError( |
| 383 | + "--api-server-authorized-ip-ranges can only be used with standard load balancer" |
| 384 | + ) |
| 385 | + if self._get_enable_private_cluster(enable_validation=False): |
| 386 | + raise InvalidArgumentValueError( |
| 387 | + "Please use standard load balancer for private cluster" |
| 388 | + ) |
| 389 | + |
| 390 | + return load_balancer_sku |
| 391 | + |
350 | 392 | def _get_disable_local_accounts(self, enable_validation: bool = False) -> bool: |
351 | 393 | """Internal function to obtain the value of disable_local_accounts. |
352 | 394 |
|
@@ -3972,6 +4014,9 @@ def update_network_profile(self, mc: ManagedCluster) -> ManagedCluster: |
3972 | 4014 |
|
3973 | 4015 | self.update_network_plugin_settings(mc) |
3974 | 4016 |
|
| 4017 | + loadbalancer_sku = self.context.get_load_balancer_sku() |
| 4018 | + if loadbalancer_sku: |
| 4019 | + mc.network_profile.load_balancer_sku = loadbalancer_sku |
3975 | 4020 | return mc |
3976 | 4021 |
|
3977 | 4022 | def update_network_plugin_settings(self, mc: ManagedCluster) -> ManagedCluster: |
|
0 commit comments