diff --git a/src/aks-preview/HISTORY.rst b/src/aks-preview/HISTORY.rst index 7b605c161a7..d60046e8942 100644 --- a/src/aks-preview/HISTORY.rst +++ b/src/aks-preview/HISTORY.rst @@ -12,6 +12,10 @@ To release a new version, please select a new version number (usually plus 1 to Pending +++++++ +19.0.0b25 ++++++++ +* `az aks create/update`: Add `--control-plane-scaling-size` parameter to configure control plane scaling profile with available sizes 'H2', 'H4', and 'H8'. + 19.0.0b24 +++++++ * Vendor new SDK and bump API version to 2026-01-02-preview. diff --git a/src/aks-preview/azext_aks_preview/_help.py b/src/aks-preview/azext_aks_preview/_help.py index 1c4864b09cf..da1675689c9 100644 --- a/src/aks-preview/azext_aks_preview/_help.py +++ b/src/aks-preview/azext_aks_preview/_help.py @@ -702,6 +702,14 @@ - name: --enable-hosted-system type: bool short-summary: Create a cluster with fully hosted system components. This applies only when creating a new automatic cluster. + - name: --control-plane-scaling-size --cp-scaling-size + type: string + short-summary: (PREVIEW) The control plane scaling size for the cluster. + long-summary: | + Provides scaled and performance-guaranteed control plane capacity for AKS clusters. + Enables customers to select a control plane scaling size that delivers higher API server throughput, + increased etcd capacity, and faster pod scheduling rates. Available values are 'H2', 'H4', and 'H8'. + Requires Kubernetes version >= 1.33.0 and Azure CNI Overlay networking. examples: - name: Create a Kubernetes cluster with an existing SSH public key. text: az aks create -g MyResourceGroup -n MyManagedCluster --ssh-key-value /path/to/publickey @@ -793,6 +801,8 @@ text: az aks create -g MyResourceGroup -n MyManagedCluster --enable-managed-system-pool - name: Create a kubernetes cluster with a managed installation of Gateway API CRDs from the standard release channel. text: az aks create -g MyResourceGroup -n MyManagedCluster --enable-gateway-api + - name: Create a kubernetes cluster with control plane scaling size H4. + text: az aks create -g MyResourceGroup -n MyManagedCluster --network-plugin azure --network-plugin-mode overlay --pod-cidr 10.244.0.0/16 --control-plane-scaling-size H4 - name: Create an automatic cluster with hosted system components enabled. text: az aks create -g MyResourceGroup -n MyManagedCluster --sku automatic --enable-hosted-system @@ -1430,6 +1440,14 @@ - name: --disable-application-load-balancer type: bool short-summary: Disable Application Load Balancer (Application Gateway for Containers) addon. + - name: --control-plane-scaling-size --cp-scaling-size + type: string + short-summary: (PREVIEW) The control plane scaling size for the cluster. + long-summary: | + Provides scaled and performance-guaranteed control plane capacity for AKS clusters. + Enables customers to select a control plane scaling size that delivers higher API server throughput, + increased etcd capacity, and faster pod scheduling rates. Available values are 'H2', 'H4', and 'H8'. + Requires Kubernetes version >= 1.33.0 and Azure CNI Overlay networking. examples: - name: Reconcile the cluster back to its current state. text: az aks update -g MyResourceGroup -n MyManagedCluster @@ -1513,6 +1531,8 @@ text: az aks update -g MyResourceGroup -n MyManagedCluster --enable-opentelemetry-logs --opentelemetry-logs-port 4317 - name: Disable OpenTelemetry metrics collection on an existing cluster text: az aks update -g MyResourceGroup -n MyManagedCluster --disable-opentelemetry-metrics + - name: Update a kubernetes cluster's control plane scaling size. + text: az aks update -g MyResourceGroup -n MyManagedCluster --control-plane-scaling-size H8 - name: Disable OpenTelemetry logs collection on an existing cluster text: az aks update -g MyResourceGroup -n MyManagedCluster --disable-opentelemetry-logs """ diff --git a/src/aks-preview/azext_aks_preview/_params.py b/src/aks-preview/azext_aks_preview/_params.py index 31007557c39..0caf4fab61b 100644 --- a/src/aks-preview/azext_aks_preview/_params.py +++ b/src/aks-preview/azext_aks_preview/_params.py @@ -1201,6 +1201,14 @@ def load_arguments(self, _): help="Enable managed installation of Gateway API CRDs from the standard release channel." ) c.argument("enable_hosted_system", action="store_true", is_preview=True) + c.argument( + "control_plane_scaling_size", + options_list=["--control-plane-scaling-size", "--cp-scaling-size"], + arg_type=get_enum_type(["H2", "H4", "H8"]), + is_preview=True, + help="The control plane scaling size. Provides scaled and performance-guaranteed control plane capacity. " + "Available values are 'H2', 'H4', and 'H8'.", + ) with self.argument_context("aks update") as c: # managed cluster paramerters @@ -1779,6 +1787,14 @@ def load_arguments(self, _): is_preview=True, help="Disable Application Load Balancer (Application Gateway for Containers)." ) + c.argument( + "control_plane_scaling_size", + options_list=["--control-plane-scaling-size", "--cp-scaling-size"], + arg_type=get_enum_type(["H2", "H4", "H8"]), + is_preview=True, + help="The control plane scaling size. Provides scaled and performance-guaranteed control plane capacity. " + "Available values are 'H2', 'H4', and 'H8'.", + ) with self.argument_context("aks upgrade") as c: c.argument("kubernetes_version", completer=get_k8s_upgrades_completion_list) diff --git a/src/aks-preview/azext_aks_preview/custom.py b/src/aks-preview/azext_aks_preview/custom.py index 3b4f1ceb1b6..70f2ae1f689 100644 --- a/src/aks-preview/azext_aks_preview/custom.py +++ b/src/aks-preview/azext_aks_preview/custom.py @@ -1160,7 +1160,8 @@ def aks_create( enable_upstream_kubescheduler_user_configuration=False, # managed gateway installation enable_gateway_api=False, - enable_hosted_system=False + enable_hosted_system=False, + control_plane_scaling_size=None, ): # DO NOT MOVE: get all the original parameters and save them as a dictionary raw_parameters = locals() @@ -1404,6 +1405,7 @@ def aks_update( # application load balancer enable_application_load_balancer=False, disable_application_load_balancer=False, + control_plane_scaling_size=None, ): # DO NOT MOVE: get all the original parameters and save them as a dictionary raw_parameters = locals() 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 5674a78ab22..7b0b265c5b9 100644 --- a/src/aks-preview/azext_aks_preview/managed_cluster_decorator.py +++ b/src/aks-preview/azext_aks_preview/managed_cluster_decorator.py @@ -3767,6 +3767,28 @@ def get_enable_hosted_system(self) -> bool: raise RequiredArgumentMissingError('"--enable-hosted-system" requires "--sku automatic".') return enable_hosted_system + def get_control_plane_scaling_size(self) -> Union[str, None]: + """Obtain the value of control_plane_scaling_size. + + :return: str or None + """ + # try to read from raw parameters first + control_plane_scaling_size = self.raw_param.get("control_plane_scaling_size") + + # for update scenarios, read from existing mc if raw parameter not set + if ( + control_plane_scaling_size is None and + self.decorator_mode == DecoratorMode.UPDATE + ): + if ( + self.mc and + self.mc.control_plane_scaling_profile is not None and + self.mc.control_plane_scaling_profile.scaling_size is not None + ): + control_plane_scaling_size = self.mc.control_plane_scaling_profile.scaling_size + + return control_plane_scaling_size + # pylint: disable=too-many-public-methods class AKSPreviewManagedClusterCreateDecorator(AKSManagedClusterCreateDecorator): @@ -4796,6 +4818,23 @@ def set_up_bootstrap_profile(self, mc: ManagedCluster) -> ManagedCluster: return mc + def set_up_control_plane_scaling_profile(self, mc: ManagedCluster) -> ManagedCluster: + """Set up the control plane scaling profile for the ManagedCluster object. + + :return: the ManagedCluster object + """ + self._ensure_mc(mc) + + control_plane_scaling_size = self.context.get_control_plane_scaling_size() + if control_plane_scaling_size is not None: + mc.control_plane_scaling_profile = ( + self.models.ManagedClusterControlPlaneScalingProfile( # pylint: disable=no-member + scaling_size=control_plane_scaling_size, + ) + ) + + return mc + def set_up_static_egress_gateway(self, mc: ManagedCluster) -> ManagedCluster: self._ensure_mc(mc) @@ -4918,6 +4957,8 @@ def construct_mc_profile_preview(self, bypass_restore_defaults: bool = False) -> mc = self.set_up_agentpool_profile_ssh_access(mc) # set up bootstrap profile mc = self.set_up_bootstrap_profile(mc) + # set up control plane scaling profile + mc = self.set_up_control_plane_scaling_profile(mc) # set up static egress gateway profile mc = self.set_up_static_egress_gateway(mc) # set up imds restriction(a property in network profile) @@ -7102,6 +7143,23 @@ def update_bootstrap_profile(self, mc: ManagedCluster) -> ManagedCluster: return mc + def update_control_plane_scaling_profile(self, mc: ManagedCluster) -> ManagedCluster: + """Update the control plane scaling profile for the ManagedCluster object. + + :return: the ManagedCluster object + """ + self._ensure_mc(mc) + + control_plane_scaling_size = self.context.get_control_plane_scaling_size() + if control_plane_scaling_size is not None: + if mc.control_plane_scaling_profile is None: + mc.control_plane_scaling_profile = ( + self.models.ManagedClusterControlPlaneScalingProfile() # pylint: disable=no-member + ) + mc.control_plane_scaling_profile.scaling_size = control_plane_scaling_size + + return mc + def update_static_egress_gateway(self, mc: ManagedCluster) -> ManagedCluster: """Update static egress gateway addon for the ManagedCluster object. @@ -7550,6 +7608,8 @@ def update_mc_profile_preview(self) -> ManagedCluster: mc = self.update_node_provisioning_profile(mc) # update bootstrap profile mc = self.update_bootstrap_profile(mc) + # update control plane scaling profile + mc = self.update_control_plane_scaling_profile(mc) # update static egress gateway mc = self.update_static_egress_gateway(mc) # update imds restriction diff --git a/src/aks-preview/azext_aks_preview/tests/latest/test_aks_commands.py b/src/aks-preview/azext_aks_preview/tests/latest/test_aks_commands.py index d1c3616a247..acffa27ddae 100644 --- a/src/aks-preview/azext_aks_preview/tests/latest/test_aks_commands.py +++ b/src/aks-preview/azext_aks_preview/tests/latest/test_aks_commands.py @@ -9685,6 +9685,53 @@ def test_aks_create_with_windows_gmsa( checks=[self.is_empty()], ) + @AllowLargeResponse() + @AKSCustomResourceGroupPreparer( + random_name_length=17, + name_prefix="clitest", + location="centraluseuap", + ) + def test_aks_create_with_control_plane_scaling_profile( + self, resource_group, resource_group_location + ): + # reset the count so in replay mode the random names will start with 0 + self.test_resources_count = 0 + # kwargs for string formatting + aks_name = self.create_random_name("cliakstest", 16) + self.kwargs.update( + { + "resource_group": resource_group, + "name": aks_name, + "location": resource_group_location, + "resource_type": "Microsoft.ContainerService/ManagedClusters", + "ssh_key_value": self.generate_ssh_keys(), + } + ) + + # create with control plane scaling size H4 + create_cmd = ( + "aks create --resource-group={resource_group} --name={name} --location={location} " + "--network-plugin azure --network-plugin-mode overlay --pod-cidr 10.244.0.0/16 " + "--ssh-key-value={ssh_key_value} --node-count 1 " + "--control-plane-scaling-size H4 " + "--aks-custom-headers AKSHTTPCustomFeatures=Microsoft.ContainerService/ControlPlaneScalingProfilePreview" + ) + self.cmd( + create_cmd, + checks=[ + self.check("provisioningState", "Succeeded"), + self.check("networkProfile.networkPlugin", "azure"), + self.check("networkProfile.networkPluginMode", "overlay"), + self.check("controlPlaneScalingProfile.scalingSize", "H4"), + ], + ) + + # delete + self.cmd( + "aks delete -g {resource_group} -n {name} --yes --no-wait", + checks=[self.is_empty()], + ) + @AllowLargeResponse() @AKSCustomResourceGroupPreparer( random_name_length=17, diff --git a/src/aks-preview/azext_aks_preview/tests/latest/test_managed_cluster_decorator.py b/src/aks-preview/azext_aks_preview/tests/latest/test_managed_cluster_decorator.py index 758c2965032..43c0feacfaa 100644 --- a/src/aks-preview/azext_aks_preview/tests/latest/test_managed_cluster_decorator.py +++ b/src/aks-preview/azext_aks_preview/tests/latest/test_managed_cluster_decorator.py @@ -5002,6 +5002,60 @@ def test_get_disable_default_domain(self): disable_default_domain_3 = ctx_3.get_disable_default_domain() self.assertEqual(disable_default_domain_3, False) + def test_get_control_plane_scaling_size(self): + # default value - None + ctx_1 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({}), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + self.assertIsNone(ctx_1.get_control_plane_scaling_size()) + + # custom value - H4 + ctx_2 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({"control_plane_scaling_size": "H4"}), + self.models, + decorator_mode=DecoratorMode.CREATE, + ) + self.assertEqual(ctx_2.get_control_plane_scaling_size(), "H4") + + # update mode - reads from existing mc when raw param not set + ctx_3 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({}), + self.models, + decorator_mode=DecoratorMode.UPDATE, + ) + from azext_aks_preview.vendored_sdks.azure_mgmt_preview_aks.models import ( + ManagedClusterControlPlaneScalingProfile, + ) + mc_3 = self.models.ManagedCluster( + location="test_location", + control_plane_scaling_profile=ManagedClusterControlPlaneScalingProfile( + scaling_size="H8", + ), + ) + ctx_3.attach_mc(mc_3) + self.assertEqual(ctx_3.get_control_plane_scaling_size(), "H8") + + # update mode - raw param overrides existing mc + ctx_4 = AKSPreviewManagedClusterContext( + self.cmd, + AKSManagedClusterParamDict({"control_plane_scaling_size": "H2"}), + self.models, + decorator_mode=DecoratorMode.UPDATE, + ) + mc_4 = self.models.ManagedCluster( + location="test_location", + control_plane_scaling_profile=ManagedClusterControlPlaneScalingProfile( + scaling_size="H8", + ), + ) + ctx_4.attach_mc(mc_4) + self.assertEqual(ctx_4.get_control_plane_scaling_size(), "H2") + class AKSPreviewManagedClusterCreateDecoratorTestCase(unittest.TestCase): def setUp(self): # manually register CUSTOM_MGMT_AKS_PREVIEW @@ -7462,6 +7516,56 @@ def test_get_enable_azure_monitor_logs_create_mode_succeeds(self): result = ctx_1.get_enable_azure_monitor_logs() self.assertTrue(result) + def test_set_up_control_plane_scaling_profile(self): + # Not specified case - profile should not be set + dec_0 = AKSPreviewManagedClusterCreateDecorator( + self.cmd, + self.client, + {}, + CUSTOM_MGMT_AKS_PREVIEW, + ) + mc_0 = self.models.ManagedCluster(location="test_location") + dec_0.context.attach_mc(mc_0) + dec_mc_0 = dec_0.set_up_control_plane_scaling_profile(mc_0) + self.assertIsNone(dec_mc_0.control_plane_scaling_profile) + + # H4 specified - profile should be set + dec_1 = AKSPreviewManagedClusterCreateDecorator( + self.cmd, + self.client, + { + "control_plane_scaling_size": "H4", + }, + CUSTOM_MGMT_AKS_PREVIEW, + ) + mc_1 = self.models.ManagedCluster(location="test_location") + dec_1.context.attach_mc(mc_1) + dec_mc_1 = dec_1.set_up_control_plane_scaling_profile(mc_1) + from azext_aks_preview.vendored_sdks.azure_mgmt_preview_aks.models import ( + ManagedClusterControlPlaneScalingProfile, + ) + ground_truth_mc_1 = self.models.ManagedCluster( + location="test_location", + control_plane_scaling_profile=ManagedClusterControlPlaneScalingProfile( + scaling_size="H4", + ), + ) + self.assertEqual(dec_mc_1, ground_truth_mc_1) + + # H8 specified - profile should be set + dec_2 = AKSPreviewManagedClusterCreateDecorator( + self.cmd, + self.client, + { + "control_plane_scaling_size": "H8", + }, + CUSTOM_MGMT_AKS_PREVIEW, + ) + mc_2 = self.models.ManagedCluster(location="test_location") + dec_2.context.attach_mc(mc_2) + dec_mc_2 = dec_2.set_up_control_plane_scaling_profile(mc_2) + self.assertEqual(dec_mc_2.control_plane_scaling_profile.scaling_size, "H8") + class AKSPreviewManagedClusterUpdateDecoratorTestCase(unittest.TestCase): def setUp(self): @@ -13803,5 +13907,55 @@ def test_update_agentpool_profile_with_empty_agent_pool_profiles(self): with self.assertRaises(UnknownError): dec_4.update_agentpool_profile(mc_4) + def test_update_control_plane_scaling_profile(self): + from azext_aks_preview.vendored_sdks.azure_mgmt_preview_aks.models import ( + ManagedClusterControlPlaneScalingProfile, + ) + + # Not specified case - profile should remain None + dec_0 = AKSPreviewManagedClusterUpdateDecorator( + self.cmd, + self.client, + {}, + CUSTOM_MGMT_AKS_PREVIEW, + ) + mc_0 = self.models.ManagedCluster(location="test_location") + dec_0.context.attach_mc(mc_0) + dec_mc_0 = dec_0.update_control_plane_scaling_profile(mc_0) + self.assertIsNone(dec_mc_0.control_plane_scaling_profile) + + # Specified with no existing profile - should create profile + dec_1 = AKSPreviewManagedClusterUpdateDecorator( + self.cmd, + self.client, + { + "control_plane_scaling_size": "H4", + }, + CUSTOM_MGMT_AKS_PREVIEW, + ) + mc_1 = self.models.ManagedCluster(location="test_location") + dec_1.context.attach_mc(mc_1) + dec_mc_1 = dec_1.update_control_plane_scaling_profile(mc_1) + self.assertEqual(dec_mc_1.control_plane_scaling_profile.scaling_size, "H4") + + # Specified with existing profile - should update profile + dec_2 = AKSPreviewManagedClusterUpdateDecorator( + self.cmd, + self.client, + { + "control_plane_scaling_size": "H8", + }, + CUSTOM_MGMT_AKS_PREVIEW, + ) + mc_2 = self.models.ManagedCluster( + location="test_location", + control_plane_scaling_profile=ManagedClusterControlPlaneScalingProfile( + scaling_size="H4", + ), + ) + dec_2.context.attach_mc(mc_2) + dec_mc_2 = dec_2.update_control_plane_scaling_profile(mc_2) + self.assertEqual(dec_mc_2.control_plane_scaling_profile.scaling_size, "H8") + if __name__ == "__main__": unittest.main() diff --git a/src/aks-preview/azext_aks_preview/vendored_sdks/azure_mgmt_preview_aks/models/__init__.py b/src/aks-preview/azext_aks_preview/vendored_sdks/azure_mgmt_preview_aks/models/__init__.py index 8e1f5855c7e..1039755df45 100644 --- a/src/aks-preview/azext_aks_preview/vendored_sdks/azure_mgmt_preview_aks/models/__init__.py +++ b/src/aks-preview/azext_aks_preview/vendored_sdks/azure_mgmt_preview_aks/models/__init__.py @@ -132,6 +132,7 @@ ManagedClusterAzureMonitorProfileKubeStateMetrics, ManagedClusterAzureMonitorProfileMetrics, ManagedClusterBootstrapProfile, + ManagedClusterControlPlaneScalingProfile, ManagedClusterCostAnalysis, ManagedClusterHTTPProxyConfig, ManagedClusterHealthMonitorProfile, @@ -495,6 +496,7 @@ "ManagedClusterAzureMonitorProfileKubeStateMetrics", "ManagedClusterAzureMonitorProfileMetrics", "ManagedClusterBootstrapProfile", + "ManagedClusterControlPlaneScalingProfile", "ManagedClusterCostAnalysis", "ManagedClusterHTTPProxyConfig", "ManagedClusterHealthMonitorProfile", diff --git a/src/aks-preview/azext_aks_preview/vendored_sdks/azure_mgmt_preview_aks/models/_models_py3.py b/src/aks-preview/azext_aks_preview/vendored_sdks/azure_mgmt_preview_aks/models/_models_py3.py index e5f651e67e7..a99110e07c9 100644 --- a/src/aks-preview/azext_aks_preview/vendored_sdks/azure_mgmt_preview_aks/models/_models_py3.py +++ b/src/aks-preview/azext_aks_preview/vendored_sdks/azure_mgmt_preview_aks/models/_models_py3.py @@ -5662,6 +5662,9 @@ class ManagedCluster(TrackedResource): :ivar node_provisioning_profile: Node provisioning settings that apply to the whole cluster. :vartype node_provisioning_profile: ~azure.mgmt.containerservice.models.ManagedClusterNodeProvisioningProfile + :ivar control_plane_scaling_profile: Control plane scaling profile for the managed cluster. + :vartype control_plane_scaling_profile: + ~azure.mgmt.containerservice.models.ManagedClusterControlPlaneScalingProfile :ivar bootstrap_profile: Profile of the cluster bootstrap configuration. :vartype bootstrap_profile: ~azure.mgmt.containerservice.models.ManagedClusterBootstrapProfile :ivar ai_toolchain_operator_profile: AI toolchain operator settings that apply to the whole @@ -5772,6 +5775,10 @@ class ManagedCluster(TrackedResource): "key": "properties.nodeProvisioningProfile", "type": "ManagedClusterNodeProvisioningProfile", }, + "control_plane_scaling_profile": { + "key": "properties.controlPlaneScalingProfile", + "type": "ManagedClusterControlPlaneScalingProfile", + }, "bootstrap_profile": {"key": "properties.bootstrapProfile", "type": "ManagedClusterBootstrapProfile"}, "ai_toolchain_operator_profile": { "key": "properties.aiToolchainOperatorProfile", @@ -5831,6 +5838,7 @@ def __init__( # pylint: disable=too-many-locals service_mesh_profile: Optional["_models.ServiceMeshProfile"] = None, metrics_profile: Optional["_models.ManagedClusterMetricsProfile"] = None, node_provisioning_profile: Optional["_models.ManagedClusterNodeProvisioningProfile"] = None, + control_plane_scaling_profile: Optional["_models.ManagedClusterControlPlaneScalingProfile"] = None, bootstrap_profile: Optional["_models.ManagedClusterBootstrapProfile"] = None, ai_toolchain_operator_profile: Optional["_models.ManagedClusterAIToolchainOperatorProfile"] = None, scheduler_profile: Optional["_models.SchedulerProfile"] = None, @@ -5969,6 +5977,10 @@ def __init__( # pylint: disable=too-many-locals :keyword node_provisioning_profile: Node provisioning settings that apply to the whole cluster. :paramtype node_provisioning_profile: ~azure.mgmt.containerservice.models.ManagedClusterNodeProvisioningProfile + :keyword control_plane_scaling_profile: Control plane scaling profile for the managed + cluster. + :paramtype control_plane_scaling_profile: + ~azure.mgmt.containerservice.models.ManagedClusterControlPlaneScalingProfile :keyword bootstrap_profile: Profile of the cluster bootstrap configuration. :paramtype bootstrap_profile: ~azure.mgmt.containerservice.models.ManagedClusterBootstrapProfile @@ -6038,6 +6050,7 @@ def __init__( # pylint: disable=too-many-locals self.resource_uid: Optional[str] = None self.metrics_profile = metrics_profile self.node_provisioning_profile = node_provisioning_profile + self.control_plane_scaling_profile = control_plane_scaling_profile self.bootstrap_profile = bootstrap_profile self.ai_toolchain_operator_profile = ai_toolchain_operator_profile self.scheduler_profile = scheduler_profile @@ -7614,6 +7627,31 @@ def __init__(self, *, enabled: Optional[bool] = None, **kwargs: Any) -> None: self.enabled = enabled +class ManagedClusterControlPlaneScalingProfile(_serialization.Model): + """Control plane scaling profile for a managed cluster. Provides scaled and performance-guaranteed + control plane capacity. + + :ivar scaling_size: The scaling size for the control plane. Determines the level of guaranteed + API server throughput, etcd capacity, and pod scheduling rates. Known values are: "H2", "H4", + and "H8". + :vartype scaling_size: str + """ + + _attribute_map = { + "scaling_size": {"key": "scalingSize", "type": "str"}, + } + + def __init__(self, *, scaling_size: Optional[str] = None, **kwargs: Any) -> None: + """ + :keyword scaling_size: The scaling size for the control plane. Determines the level of + guaranteed API server throughput, etcd capacity, and pod scheduling rates. Known values are: + "H2", "H4", and "H8". + :paramtype scaling_size: str + """ + super().__init__(**kwargs) + self.scaling_size = scaling_size + + class ManagedClusterAPIServerAccessProfile(_serialization.Model): """Access profile for managed cluster API server. diff --git a/src/aks-preview/setup.py b/src/aks-preview/setup.py index 5458ace4319..541174f9afb 100644 --- a/src/aks-preview/setup.py +++ b/src/aks-preview/setup.py @@ -9,7 +9,7 @@ from setuptools import find_packages, setup -VERSION = "19.0.0b24" +VERSION = "19.0.0b25" CLASSIFIERS = [ "Development Status :: 4 - Beta",