1# coding=utf-8
2# --------------------------------------------------------------------------
3# Copyright (c) Microsoft Corporation. All rights reserved.
4# Licensed under the MIT License. See License.txt in the project root for license information.
5# Code generated by Microsoft (R) AutoRest Code Generator.
6# Changes may cause incorrect behavior and will be lost if the code is regenerated.
7# --------------------------------------------------------------------------
8
9from typing import Dict, List, Optional, Union
10
11import msrest.serialization
12
13from ._container_service_client_enums import *
14
15
16class SubResource(msrest.serialization.Model):
17    """Reference to another subresource.
18
19    Variables are only populated by the server, and will be ignored when sending a request.
20
21    :ivar id: Resource ID.
22    :vartype id: str
23    :ivar name: The name of the resource that is unique within a resource group. This name can be
24     used to access the resource.
25    :vartype name: str
26    :ivar type: Resource type.
27    :vartype type: str
28    """
29
30    _validation = {
31        'id': {'readonly': True},
32        'name': {'readonly': True},
33        'type': {'readonly': True},
34    }
35
36    _attribute_map = {
37        'id': {'key': 'id', 'type': 'str'},
38        'name': {'key': 'name', 'type': 'str'},
39        'type': {'key': 'type', 'type': 'str'},
40    }
41
42    def __init__(
43        self,
44        **kwargs
45    ):
46        super(SubResource, self).__init__(**kwargs)
47        self.id = None
48        self.name = None
49        self.type = None
50
51
52class AgentPool(SubResource):
53    """Agent Pool.
54
55    Variables are only populated by the server, and will be ignored when sending a request.
56
57    :ivar id: Resource ID.
58    :vartype id: str
59    :ivar name: The name of the resource that is unique within a resource group. This name can be
60     used to access the resource.
61    :vartype name: str
62    :ivar type: Resource type.
63    :vartype type: str
64    :param count: Number of agents (VMs) to host docker containers. Allowed values must be in the
65     range of 0 to 100 (inclusive) for user pools and in the range of 1 to 100 (inclusive) for
66     system pools. The default value is 1.
67    :type count: int
68    :param vm_size: Size of agent VMs. Possible values include: "Standard_A1", "Standard_A10",
69     "Standard_A11", "Standard_A1_v2", "Standard_A2", "Standard_A2_v2", "Standard_A2m_v2",
70     "Standard_A3", "Standard_A4", "Standard_A4_v2", "Standard_A4m_v2", "Standard_A5",
71     "Standard_A6", "Standard_A7", "Standard_A8", "Standard_A8_v2", "Standard_A8m_v2",
72     "Standard_A9", "Standard_B2ms", "Standard_B2s", "Standard_B4ms", "Standard_B8ms",
73     "Standard_D1", "Standard_D11", "Standard_D11_v2", "Standard_D11_v2_Promo", "Standard_D12",
74     "Standard_D12_v2", "Standard_D12_v2_Promo", "Standard_D13", "Standard_D13_v2",
75     "Standard_D13_v2_Promo", "Standard_D14", "Standard_D14_v2", "Standard_D14_v2_Promo",
76     "Standard_D15_v2", "Standard_D16_v3", "Standard_D16s_v3", "Standard_D1_v2", "Standard_D2",
77     "Standard_D2_v2", "Standard_D2_v2_Promo", "Standard_D2_v3", "Standard_D2s_v3", "Standard_D3",
78     "Standard_D32_v3", "Standard_D32s_v3", "Standard_D3_v2", "Standard_D3_v2_Promo", "Standard_D4",
79     "Standard_D4_v2", "Standard_D4_v2_Promo", "Standard_D4_v3", "Standard_D4s_v3",
80     "Standard_D5_v2", "Standard_D5_v2_Promo", "Standard_D64_v3", "Standard_D64s_v3",
81     "Standard_D8_v3", "Standard_D8s_v3", "Standard_DS1", "Standard_DS11", "Standard_DS11_v2",
82     "Standard_DS11_v2_Promo", "Standard_DS12", "Standard_DS12_v2", "Standard_DS12_v2_Promo",
83     "Standard_DS13", "Standard_DS13-2_v2", "Standard_DS13-4_v2", "Standard_DS13_v2",
84     "Standard_DS13_v2_Promo", "Standard_DS14", "Standard_DS14-4_v2", "Standard_DS14-8_v2",
85     "Standard_DS14_v2", "Standard_DS14_v2_Promo", "Standard_DS15_v2", "Standard_DS1_v2",
86     "Standard_DS2", "Standard_DS2_v2", "Standard_DS2_v2_Promo", "Standard_DS3", "Standard_DS3_v2",
87     "Standard_DS3_v2_Promo", "Standard_DS4", "Standard_DS4_v2", "Standard_DS4_v2_Promo",
88     "Standard_DS5_v2", "Standard_DS5_v2_Promo", "Standard_E16_v3", "Standard_E16s_v3",
89     "Standard_E2_v3", "Standard_E2s_v3", "Standard_E32-16s_v3", "Standard_E32-8s_v3",
90     "Standard_E32_v3", "Standard_E32s_v3", "Standard_E4_v3", "Standard_E4s_v3",
91     "Standard_E64-16s_v3", "Standard_E64-32s_v3", "Standard_E64_v3", "Standard_E64s_v3",
92     "Standard_E8_v3", "Standard_E8s_v3", "Standard_F1", "Standard_F16", "Standard_F16s",
93     "Standard_F16s_v2", "Standard_F1s", "Standard_F2", "Standard_F2s", "Standard_F2s_v2",
94     "Standard_F32s_v2", "Standard_F4", "Standard_F4s", "Standard_F4s_v2", "Standard_F64s_v2",
95     "Standard_F72s_v2", "Standard_F8", "Standard_F8s", "Standard_F8s_v2", "Standard_G1",
96     "Standard_G2", "Standard_G3", "Standard_G4", "Standard_G5", "Standard_GS1", "Standard_GS2",
97     "Standard_GS3", "Standard_GS4", "Standard_GS4-4", "Standard_GS4-8", "Standard_GS5",
98     "Standard_GS5-16", "Standard_GS5-8", "Standard_H16", "Standard_H16m", "Standard_H16mr",
99     "Standard_H16r", "Standard_H8", "Standard_H8m", "Standard_L16s", "Standard_L32s",
100     "Standard_L4s", "Standard_L8s", "Standard_M128-32ms", "Standard_M128-64ms", "Standard_M128ms",
101     "Standard_M128s", "Standard_M64-16ms", "Standard_M64-32ms", "Standard_M64ms", "Standard_M64s",
102     "Standard_NC12", "Standard_NC12s_v2", "Standard_NC12s_v3", "Standard_NC24", "Standard_NC24r",
103     "Standard_NC24rs_v2", "Standard_NC24rs_v3", "Standard_NC24s_v2", "Standard_NC24s_v3",
104     "Standard_NC6", "Standard_NC6s_v2", "Standard_NC6s_v3", "Standard_ND12s", "Standard_ND24rs",
105     "Standard_ND24s", "Standard_ND6s", "Standard_NV12", "Standard_NV24", "Standard_NV6".
106    :type vm_size: str or
107     ~azure.mgmt.containerservice.v2020_06_01.models.ContainerServiceVMSizeTypes
108    :param os_disk_size_gb: OS Disk Size in GB to be used to specify the disk size for every
109     machine in this master/agent pool. If you specify 0, it will apply the default osDisk size
110     according to the vmSize specified.
111    :type os_disk_size_gb: int
112    :param vnet_subnet_id: VNet SubnetID specifies the VNet's subnet identifier.
113    :type vnet_subnet_id: str
114    :param max_pods: Maximum number of pods that can run on a node.
115    :type max_pods: int
116    :param os_type: OsType to be used to specify os type. Choose from Linux and Windows. Default to
117     Linux. Possible values include: "Linux", "Windows". Default value: "Linux".
118    :type os_type: str or ~azure.mgmt.containerservice.v2020_06_01.models.OSType
119    :param max_count: Maximum number of nodes for auto-scaling.
120    :type max_count: int
121    :param min_count: Minimum number of nodes for auto-scaling.
122    :type min_count: int
123    :param enable_auto_scaling: Whether to enable auto-scaler.
124    :type enable_auto_scaling: bool
125    :param type_properties_type: AgentPoolType represents types of an agent pool. Possible values
126     include: "VirtualMachineScaleSets", "AvailabilitySet".
127    :type type_properties_type: str or
128     ~azure.mgmt.containerservice.v2020_06_01.models.AgentPoolType
129    :param mode: AgentPoolMode represents mode of an agent pool. Possible values include: "System",
130     "User".
131    :type mode: str or ~azure.mgmt.containerservice.v2020_06_01.models.AgentPoolMode
132    :param orchestrator_version: Version of orchestrator specified when creating the managed
133     cluster.
134    :type orchestrator_version: str
135    :param node_image_version: Version of node image.
136    :type node_image_version: str
137    :param upgrade_settings: Settings for upgrading the agentpool.
138    :type upgrade_settings:
139     ~azure.mgmt.containerservice.v2020_06_01.models.AgentPoolUpgradeSettings
140    :ivar provisioning_state: The current deployment or provisioning state, which only appears in
141     the response.
142    :vartype provisioning_state: str
143    :param availability_zones: Availability zones for nodes. Must use VirtualMachineScaleSets
144     AgentPoolType.
145    :type availability_zones: list[str]
146    :param enable_node_public_ip: Enable public IP for nodes.
147    :type enable_node_public_ip: bool
148    :param scale_set_priority: ScaleSetPriority to be used to specify virtual machine scale set
149     priority. Default to regular. Possible values include: "Spot", "Regular". Default value:
150     "Regular".
151    :type scale_set_priority: str or
152     ~azure.mgmt.containerservice.v2020_06_01.models.ScaleSetPriority
153    :param scale_set_eviction_policy: ScaleSetEvictionPolicy to be used to specify eviction policy
154     for Spot virtual machine scale set. Default to Delete. Possible values include: "Delete",
155     "Deallocate". Default value: "Delete".
156    :type scale_set_eviction_policy: str or
157     ~azure.mgmt.containerservice.v2020_06_01.models.ScaleSetEvictionPolicy
158    :param spot_max_price: SpotMaxPrice to be used to specify the maximum price you are willing to
159     pay in US Dollars. Possible values are any decimal value greater than zero or -1 which
160     indicates default price to be up-to on-demand.
161    :type spot_max_price: float
162    :param tags: A set of tags. Agent pool tags to be persisted on the agent pool virtual machine
163     scale set.
164    :type tags: dict[str, str]
165    :param node_labels: Agent pool node labels to be persisted across all nodes in agent pool.
166    :type node_labels: dict[str, str]
167    :param node_taints: Taints added to new nodes during node pool create and scale. For example,
168     key=value:NoSchedule.
169    :type node_taints: list[str]
170    :param proximity_placement_group_id: The ID for Proximity Placement Group.
171    :type proximity_placement_group_id: str
172    """
173
174    _validation = {
175        'id': {'readonly': True},
176        'name': {'readonly': True},
177        'type': {'readonly': True},
178        'os_disk_size_gb': {'maximum': 1023, 'minimum': 0},
179        'provisioning_state': {'readonly': True},
180    }
181
182    _attribute_map = {
183        'id': {'key': 'id', 'type': 'str'},
184        'name': {'key': 'name', 'type': 'str'},
185        'type': {'key': 'type', 'type': 'str'},
186        'count': {'key': 'properties.count', 'type': 'int'},
187        'vm_size': {'key': 'properties.vmSize', 'type': 'str'},
188        'os_disk_size_gb': {'key': 'properties.osDiskSizeGB', 'type': 'int'},
189        'vnet_subnet_id': {'key': 'properties.vnetSubnetID', 'type': 'str'},
190        'max_pods': {'key': 'properties.maxPods', 'type': 'int'},
191        'os_type': {'key': 'properties.osType', 'type': 'str'},
192        'max_count': {'key': 'properties.maxCount', 'type': 'int'},
193        'min_count': {'key': 'properties.minCount', 'type': 'int'},
194        'enable_auto_scaling': {'key': 'properties.enableAutoScaling', 'type': 'bool'},
195        'type_properties_type': {'key': 'properties.type', 'type': 'str'},
196        'mode': {'key': 'properties.mode', 'type': 'str'},
197        'orchestrator_version': {'key': 'properties.orchestratorVersion', 'type': 'str'},
198        'node_image_version': {'key': 'properties.nodeImageVersion', 'type': 'str'},
199        'upgrade_settings': {'key': 'properties.upgradeSettings', 'type': 'AgentPoolUpgradeSettings'},
200        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
201        'availability_zones': {'key': 'properties.availabilityZones', 'type': '[str]'},
202        'enable_node_public_ip': {'key': 'properties.enableNodePublicIP', 'type': 'bool'},
203        'scale_set_priority': {'key': 'properties.scaleSetPriority', 'type': 'str'},
204        'scale_set_eviction_policy': {'key': 'properties.scaleSetEvictionPolicy', 'type': 'str'},
205        'spot_max_price': {'key': 'properties.spotMaxPrice', 'type': 'float'},
206        'tags': {'key': 'properties.tags', 'type': '{str}'},
207        'node_labels': {'key': 'properties.nodeLabels', 'type': '{str}'},
208        'node_taints': {'key': 'properties.nodeTaints', 'type': '[str]'},
209        'proximity_placement_group_id': {'key': 'properties.proximityPlacementGroupID', 'type': 'str'},
210    }
211
212    def __init__(
213        self,
214        *,
215        count: Optional[int] = None,
216        vm_size: Optional[Union[str, "ContainerServiceVMSizeTypes"]] = None,
217        os_disk_size_gb: Optional[int] = None,
218        vnet_subnet_id: Optional[str] = None,
219        max_pods: Optional[int] = None,
220        os_type: Optional[Union[str, "OSType"]] = "Linux",
221        max_count: Optional[int] = None,
222        min_count: Optional[int] = None,
223        enable_auto_scaling: Optional[bool] = None,
224        type_properties_type: Optional[Union[str, "AgentPoolType"]] = None,
225        mode: Optional[Union[str, "AgentPoolMode"]] = None,
226        orchestrator_version: Optional[str] = None,
227        node_image_version: Optional[str] = None,
228        upgrade_settings: Optional["AgentPoolUpgradeSettings"] = None,
229        availability_zones: Optional[List[str]] = None,
230        enable_node_public_ip: Optional[bool] = None,
231        scale_set_priority: Optional[Union[str, "ScaleSetPriority"]] = "Regular",
232        scale_set_eviction_policy: Optional[Union[str, "ScaleSetEvictionPolicy"]] = "Delete",
233        spot_max_price: Optional[float] = -1,
234        tags: Optional[Dict[str, str]] = None,
235        node_labels: Optional[Dict[str, str]] = None,
236        node_taints: Optional[List[str]] = None,
237        proximity_placement_group_id: Optional[str] = None,
238        **kwargs
239    ):
240        super(AgentPool, self).__init__(**kwargs)
241        self.count = count
242        self.vm_size = vm_size
243        self.os_disk_size_gb = os_disk_size_gb
244        self.vnet_subnet_id = vnet_subnet_id
245        self.max_pods = max_pods
246        self.os_type = os_type
247        self.max_count = max_count
248        self.min_count = min_count
249        self.enable_auto_scaling = enable_auto_scaling
250        self.type_properties_type = type_properties_type
251        self.mode = mode
252        self.orchestrator_version = orchestrator_version
253        self.node_image_version = node_image_version
254        self.upgrade_settings = upgrade_settings
255        self.provisioning_state = None
256        self.availability_zones = availability_zones
257        self.enable_node_public_ip = enable_node_public_ip
258        self.scale_set_priority = scale_set_priority
259        self.scale_set_eviction_policy = scale_set_eviction_policy
260        self.spot_max_price = spot_max_price
261        self.tags = tags
262        self.node_labels = node_labels
263        self.node_taints = node_taints
264        self.proximity_placement_group_id = proximity_placement_group_id
265
266
267class AgentPoolAvailableVersions(msrest.serialization.Model):
268    """The list of available versions for an agent pool.
269
270    Variables are only populated by the server, and will be ignored when sending a request.
271
272    :ivar id: Id of the agent pool available versions.
273    :vartype id: str
274    :ivar name: Name of the agent pool available versions.
275    :vartype name: str
276    :ivar type: Type of the agent pool  available versions.
277    :vartype type: str
278    :param agent_pool_versions: List of versions available for agent pool.
279    :type agent_pool_versions:
280     list[~azure.mgmt.containerservice.v2020_06_01.models.AgentPoolAvailableVersionsPropertiesAgentPoolVersionsItem]
281    """
282
283    _validation = {
284        'id': {'readonly': True},
285        'name': {'readonly': True},
286        'type': {'readonly': True},
287    }
288
289    _attribute_map = {
290        'id': {'key': 'id', 'type': 'str'},
291        'name': {'key': 'name', 'type': 'str'},
292        'type': {'key': 'type', 'type': 'str'},
293        'agent_pool_versions': {'key': 'properties.agentPoolVersions', 'type': '[AgentPoolAvailableVersionsPropertiesAgentPoolVersionsItem]'},
294    }
295
296    def __init__(
297        self,
298        *,
299        agent_pool_versions: Optional[List["AgentPoolAvailableVersionsPropertiesAgentPoolVersionsItem"]] = None,
300        **kwargs
301    ):
302        super(AgentPoolAvailableVersions, self).__init__(**kwargs)
303        self.id = None
304        self.name = None
305        self.type = None
306        self.agent_pool_versions = agent_pool_versions
307
308
309class AgentPoolAvailableVersionsPropertiesAgentPoolVersionsItem(msrest.serialization.Model):
310    """AgentPoolAvailableVersionsPropertiesAgentPoolVersionsItem.
311
312    :param default: Whether this version is the default agent pool version.
313    :type default: bool
314    :param kubernetes_version: Kubernetes version (major, minor, patch).
315    :type kubernetes_version: str
316    :param is_preview: Whether Kubernetes version is currently in preview.
317    :type is_preview: bool
318    """
319
320    _attribute_map = {
321        'default': {'key': 'default', 'type': 'bool'},
322        'kubernetes_version': {'key': 'kubernetesVersion', 'type': 'str'},
323        'is_preview': {'key': 'isPreview', 'type': 'bool'},
324    }
325
326    def __init__(
327        self,
328        *,
329        default: Optional[bool] = None,
330        kubernetes_version: Optional[str] = None,
331        is_preview: Optional[bool] = None,
332        **kwargs
333    ):
334        super(AgentPoolAvailableVersionsPropertiesAgentPoolVersionsItem, self).__init__(**kwargs)
335        self.default = default
336        self.kubernetes_version = kubernetes_version
337        self.is_preview = is_preview
338
339
340class AgentPoolListResult(msrest.serialization.Model):
341    """The response from the List Agent Pools operation.
342
343    Variables are only populated by the server, and will be ignored when sending a request.
344
345    :param value: The list of agent pools.
346    :type value: list[~azure.mgmt.containerservice.v2020_06_01.models.AgentPool]
347    :ivar next_link: The URL to get the next set of agent pool results.
348    :vartype next_link: str
349    """
350
351    _validation = {
352        'next_link': {'readonly': True},
353    }
354
355    _attribute_map = {
356        'value': {'key': 'value', 'type': '[AgentPool]'},
357        'next_link': {'key': 'nextLink', 'type': 'str'},
358    }
359
360    def __init__(
361        self,
362        *,
363        value: Optional[List["AgentPool"]] = None,
364        **kwargs
365    ):
366        super(AgentPoolListResult, self).__init__(**kwargs)
367        self.value = value
368        self.next_link = None
369
370
371class AgentPoolUpgradeProfile(msrest.serialization.Model):
372    """The list of available upgrades for an agent pool.
373
374    Variables are only populated by the server, and will be ignored when sending a request.
375
376    All required parameters must be populated in order to send to Azure.
377
378    :ivar id: Id of the agent pool upgrade profile.
379    :vartype id: str
380    :ivar name: Name of the agent pool upgrade profile.
381    :vartype name: str
382    :ivar type: Type of the agent pool upgrade profile.
383    :vartype type: str
384    :param kubernetes_version: Required. Kubernetes version (major, minor, patch).
385    :type kubernetes_version: str
386    :param os_type: Required. OsType to be used to specify os type. Choose from Linux and Windows.
387     Default to Linux. Possible values include: "Linux", "Windows". Default value: "Linux".
388    :type os_type: str or ~azure.mgmt.containerservice.v2020_06_01.models.OSType
389    :param upgrades: List of orchestrator types and versions available for upgrade.
390    :type upgrades:
391     list[~azure.mgmt.containerservice.v2020_06_01.models.AgentPoolUpgradeProfilePropertiesUpgradesItem]
392    :param latest_node_image_version: LatestNodeImageVersion is the latest AKS supported node image
393     version.
394    :type latest_node_image_version: str
395    """
396
397    _validation = {
398        'id': {'readonly': True},
399        'name': {'readonly': True},
400        'type': {'readonly': True},
401        'kubernetes_version': {'required': True},
402        'os_type': {'required': True},
403    }
404
405    _attribute_map = {
406        'id': {'key': 'id', 'type': 'str'},
407        'name': {'key': 'name', 'type': 'str'},
408        'type': {'key': 'type', 'type': 'str'},
409        'kubernetes_version': {'key': 'properties.kubernetesVersion', 'type': 'str'},
410        'os_type': {'key': 'properties.osType', 'type': 'str'},
411        'upgrades': {'key': 'properties.upgrades', 'type': '[AgentPoolUpgradeProfilePropertiesUpgradesItem]'},
412        'latest_node_image_version': {'key': 'properties.latestNodeImageVersion', 'type': 'str'},
413    }
414
415    def __init__(
416        self,
417        *,
418        kubernetes_version: str,
419        os_type: Union[str, "OSType"] = "Linux",
420        upgrades: Optional[List["AgentPoolUpgradeProfilePropertiesUpgradesItem"]] = None,
421        latest_node_image_version: Optional[str] = None,
422        **kwargs
423    ):
424        super(AgentPoolUpgradeProfile, self).__init__(**kwargs)
425        self.id = None
426        self.name = None
427        self.type = None
428        self.kubernetes_version = kubernetes_version
429        self.os_type = os_type
430        self.upgrades = upgrades
431        self.latest_node_image_version = latest_node_image_version
432
433
434class AgentPoolUpgradeProfilePropertiesUpgradesItem(msrest.serialization.Model):
435    """AgentPoolUpgradeProfilePropertiesUpgradesItem.
436
437    :param kubernetes_version: Kubernetes version (major, minor, patch).
438    :type kubernetes_version: str
439    :param is_preview: Whether Kubernetes version is currently in preview.
440    :type is_preview: bool
441    """
442
443    _attribute_map = {
444        'kubernetes_version': {'key': 'kubernetesVersion', 'type': 'str'},
445        'is_preview': {'key': 'isPreview', 'type': 'bool'},
446    }
447
448    def __init__(
449        self,
450        *,
451        kubernetes_version: Optional[str] = None,
452        is_preview: Optional[bool] = None,
453        **kwargs
454    ):
455        super(AgentPoolUpgradeProfilePropertiesUpgradesItem, self).__init__(**kwargs)
456        self.kubernetes_version = kubernetes_version
457        self.is_preview = is_preview
458
459
460class AgentPoolUpgradeSettings(msrest.serialization.Model):
461    """Settings for upgrading an agentpool.
462
463    :param max_surge: Count or percentage of additional nodes to be added during upgrade. If empty
464     uses AKS default.
465    :type max_surge: str
466    """
467
468    _attribute_map = {
469        'max_surge': {'key': 'maxSurge', 'type': 'str'},
470    }
471
472    def __init__(
473        self,
474        *,
475        max_surge: Optional[str] = None,
476        **kwargs
477    ):
478        super(AgentPoolUpgradeSettings, self).__init__(**kwargs)
479        self.max_surge = max_surge
480
481
482class BaseManagedCluster(msrest.serialization.Model):
483    """BaseManagedCluster.
484
485    Variables are only populated by the server, and will be ignored when sending a request.
486
487    :param identity: The identity of the managed cluster, if configured.
488    :type identity: ~azure.mgmt.containerservice.v2020_06_01.models.ManagedClusterIdentity
489    :ivar provisioning_state: The current deployment or provisioning state, which only appears in
490     the response.
491    :vartype provisioning_state: str
492    :ivar max_agent_pools: The max number of agent pools for the managed cluster.
493    :vartype max_agent_pools: int
494    :param kubernetes_version: Version of Kubernetes specified when creating the managed cluster.
495    :type kubernetes_version: str
496    :param dns_prefix: DNS prefix specified when creating the managed cluster.
497    :type dns_prefix: str
498    :ivar fqdn: FQDN for the master pool.
499    :vartype fqdn: str
500    :ivar private_fqdn: FQDN of private cluster.
501    :vartype private_fqdn: str
502    :param agent_pool_profiles: Properties of the agent pool.
503    :type agent_pool_profiles:
504     list[~azure.mgmt.containerservice.v2020_06_01.models.ManagedClusterAgentPoolProfile]
505    :param linux_profile: Profile for Linux VMs in the container service cluster.
506    :type linux_profile:
507     ~azure.mgmt.containerservice.v2020_06_01.models.ContainerServiceLinuxProfile
508    :param windows_profile: Profile for Windows VMs in the container service cluster.
509    :type windows_profile:
510     ~azure.mgmt.containerservice.v2020_06_01.models.ManagedClusterWindowsProfile
511    :param service_principal_profile: Information about a service principal identity for the
512     cluster to use for manipulating Azure APIs.
513    :type service_principal_profile:
514     ~azure.mgmt.containerservice.v2020_06_01.models.ManagedClusterServicePrincipalProfile
515    :param addon_profiles: Profile of managed cluster add-on.
516    :type addon_profiles: dict[str,
517     ~azure.mgmt.containerservice.v2020_06_01.models.ManagedClusterAddonProfile]
518    :param node_resource_group: Name of the resource group containing agent pool nodes.
519    :type node_resource_group: str
520    :param enable_rbac: Whether to enable Kubernetes Role-Based Access Control.
521    :type enable_rbac: bool
522    :param enable_pod_security_policy: (DEPRECATING) Whether to enable Kubernetes pod security
523     policy (preview). This feature is set for removal on October 15th, 2020. Learn more at
524     aka.ms/aks/azpodpolicy.
525    :type enable_pod_security_policy: bool
526    :param network_profile: Profile of network configuration.
527    :type network_profile:
528     ~azure.mgmt.containerservice.v2020_06_01.models.ContainerServiceNetworkProfile
529    :param aad_profile: Profile of Azure Active Directory configuration.
530    :type aad_profile: ~azure.mgmt.containerservice.v2020_06_01.models.ManagedClusterAADProfile
531    :param auto_scaler_profile: Parameters to be applied to the cluster-autoscaler when enabled.
532    :type auto_scaler_profile:
533     ~azure.mgmt.containerservice.v2020_06_01.models.ManagedClusterPropertiesAutoScalerProfile
534    :param api_server_access_profile: Access profile for managed cluster API server.
535    :type api_server_access_profile:
536     ~azure.mgmt.containerservice.v2020_06_01.models.ManagedClusterAPIServerAccessProfile
537    :param disk_encryption_set_id: ResourceId of the disk encryption set to use for enabling
538     encryption at rest.
539    :type disk_encryption_set_id: str
540    :param identity_profile: Identities associated with the cluster.
541    :type identity_profile: dict[str,
542     ~azure.mgmt.containerservice.v2020_06_01.models.ManagedClusterPropertiesIdentityProfileValue]
543    """
544
545    _validation = {
546        'provisioning_state': {'readonly': True},
547        'max_agent_pools': {'readonly': True},
548        'fqdn': {'readonly': True},
549        'private_fqdn': {'readonly': True},
550    }
551
552    _attribute_map = {
553        'identity': {'key': 'identity', 'type': 'ManagedClusterIdentity'},
554        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
555        'max_agent_pools': {'key': 'properties.maxAgentPools', 'type': 'int'},
556        'kubernetes_version': {'key': 'properties.kubernetesVersion', 'type': 'str'},
557        'dns_prefix': {'key': 'properties.dnsPrefix', 'type': 'str'},
558        'fqdn': {'key': 'properties.fqdn', 'type': 'str'},
559        'private_fqdn': {'key': 'properties.privateFQDN', 'type': 'str'},
560        'agent_pool_profiles': {'key': 'properties.agentPoolProfiles', 'type': '[ManagedClusterAgentPoolProfile]'},
561        'linux_profile': {'key': 'properties.linuxProfile', 'type': 'ContainerServiceLinuxProfile'},
562        'windows_profile': {'key': 'properties.windowsProfile', 'type': 'ManagedClusterWindowsProfile'},
563        'service_principal_profile': {'key': 'properties.servicePrincipalProfile', 'type': 'ManagedClusterServicePrincipalProfile'},
564        'addon_profiles': {'key': 'properties.addonProfiles', 'type': '{ManagedClusterAddonProfile}'},
565        'node_resource_group': {'key': 'properties.nodeResourceGroup', 'type': 'str'},
566        'enable_rbac': {'key': 'properties.enableRBAC', 'type': 'bool'},
567        'enable_pod_security_policy': {'key': 'properties.enablePodSecurityPolicy', 'type': 'bool'},
568        'network_profile': {'key': 'properties.networkProfile', 'type': 'ContainerServiceNetworkProfile'},
569        'aad_profile': {'key': 'properties.aadProfile', 'type': 'ManagedClusterAADProfile'},
570        'auto_scaler_profile': {'key': 'properties.autoScalerProfile', 'type': 'ManagedClusterPropertiesAutoScalerProfile'},
571        'api_server_access_profile': {'key': 'properties.apiServerAccessProfile', 'type': 'ManagedClusterAPIServerAccessProfile'},
572        'disk_encryption_set_id': {'key': 'properties.diskEncryptionSetID', 'type': 'str'},
573        'identity_profile': {'key': 'properties.identityProfile', 'type': '{ManagedClusterPropertiesIdentityProfileValue}'},
574    }
575
576    def __init__(
577        self,
578        *,
579        identity: Optional["ManagedClusterIdentity"] = None,
580        kubernetes_version: Optional[str] = None,
581        dns_prefix: Optional[str] = None,
582        agent_pool_profiles: Optional[List["ManagedClusterAgentPoolProfile"]] = None,
583        linux_profile: Optional["ContainerServiceLinuxProfile"] = None,
584        windows_profile: Optional["ManagedClusterWindowsProfile"] = None,
585        service_principal_profile: Optional["ManagedClusterServicePrincipalProfile"] = None,
586        addon_profiles: Optional[Dict[str, "ManagedClusterAddonProfile"]] = None,
587        node_resource_group: Optional[str] = None,
588        enable_rbac: Optional[bool] = None,
589        enable_pod_security_policy: Optional[bool] = None,
590        network_profile: Optional["ContainerServiceNetworkProfile"] = None,
591        aad_profile: Optional["ManagedClusterAADProfile"] = None,
592        auto_scaler_profile: Optional["ManagedClusterPropertiesAutoScalerProfile"] = None,
593        api_server_access_profile: Optional["ManagedClusterAPIServerAccessProfile"] = None,
594        disk_encryption_set_id: Optional[str] = None,
595        identity_profile: Optional[Dict[str, "ManagedClusterPropertiesIdentityProfileValue"]] = None,
596        **kwargs
597    ):
598        super(BaseManagedCluster, self).__init__(**kwargs)
599        self.identity = identity
600        self.provisioning_state = None
601        self.max_agent_pools = None
602        self.kubernetes_version = kubernetes_version
603        self.dns_prefix = dns_prefix
604        self.fqdn = None
605        self.private_fqdn = None
606        self.agent_pool_profiles = agent_pool_profiles
607        self.linux_profile = linux_profile
608        self.windows_profile = windows_profile
609        self.service_principal_profile = service_principal_profile
610        self.addon_profiles = addon_profiles
611        self.node_resource_group = node_resource_group
612        self.enable_rbac = enable_rbac
613        self.enable_pod_security_policy = enable_pod_security_policy
614        self.network_profile = network_profile
615        self.aad_profile = aad_profile
616        self.auto_scaler_profile = auto_scaler_profile
617        self.api_server_access_profile = api_server_access_profile
618        self.disk_encryption_set_id = disk_encryption_set_id
619        self.identity_profile = identity_profile
620
621
622class CloudErrorBody(msrest.serialization.Model):
623    """An error response from the Container service.
624
625    :param code: An identifier for the error. Codes are invariant and are intended to be consumed
626     programmatically.
627    :type code: str
628    :param message: A message describing the error, intended to be suitable for display in a user
629     interface.
630    :type message: str
631    :param target: The target of the particular error. For example, the name of the property in
632     error.
633    :type target: str
634    :param details: A list of additional details about the error.
635    :type details: list[~azure.mgmt.containerservice.v2020_06_01.models.CloudErrorBody]
636    """
637
638    _attribute_map = {
639        'code': {'key': 'code', 'type': 'str'},
640        'message': {'key': 'message', 'type': 'str'},
641        'target': {'key': 'target', 'type': 'str'},
642        'details': {'key': 'details', 'type': '[CloudErrorBody]'},
643    }
644
645    def __init__(
646        self,
647        *,
648        code: Optional[str] = None,
649        message: Optional[str] = None,
650        target: Optional[str] = None,
651        details: Optional[List["CloudErrorBody"]] = None,
652        **kwargs
653    ):
654        super(CloudErrorBody, self).__init__(**kwargs)
655        self.code = code
656        self.message = message
657        self.target = target
658        self.details = details
659
660
661class ContainerServiceDiagnosticsProfile(msrest.serialization.Model):
662    """Profile for diagnostics on the container service cluster.
663
664    All required parameters must be populated in order to send to Azure.
665
666    :param vm_diagnostics: Required. Profile for diagnostics on the container service VMs.
667    :type vm_diagnostics:
668     ~azure.mgmt.containerservice.v2020_06_01.models.ContainerServiceVMDiagnostics
669    """
670
671    _validation = {
672        'vm_diagnostics': {'required': True},
673    }
674
675    _attribute_map = {
676        'vm_diagnostics': {'key': 'vmDiagnostics', 'type': 'ContainerServiceVMDiagnostics'},
677    }
678
679    def __init__(
680        self,
681        *,
682        vm_diagnostics: "ContainerServiceVMDiagnostics",
683        **kwargs
684    ):
685        super(ContainerServiceDiagnosticsProfile, self).__init__(**kwargs)
686        self.vm_diagnostics = vm_diagnostics
687
688
689class ContainerServiceLinuxProfile(msrest.serialization.Model):
690    """Profile for Linux VMs in the container service cluster.
691
692    All required parameters must be populated in order to send to Azure.
693
694    :param admin_username: Required. The administrator username to use for Linux VMs.
695    :type admin_username: str
696    :param ssh: Required. SSH configuration for Linux-based VMs running on Azure.
697    :type ssh: ~azure.mgmt.containerservice.v2020_06_01.models.ContainerServiceSshConfiguration
698    """
699
700    _validation = {
701        'admin_username': {'required': True, 'pattern': r'^[A-Za-z][-A-Za-z0-9_]*$'},
702        'ssh': {'required': True},
703    }
704
705    _attribute_map = {
706        'admin_username': {'key': 'adminUsername', 'type': 'str'},
707        'ssh': {'key': 'ssh', 'type': 'ContainerServiceSshConfiguration'},
708    }
709
710    def __init__(
711        self,
712        *,
713        admin_username: str,
714        ssh: "ContainerServiceSshConfiguration",
715        **kwargs
716    ):
717        super(ContainerServiceLinuxProfile, self).__init__(**kwargs)
718        self.admin_username = admin_username
719        self.ssh = ssh
720
721
722class ContainerServiceMasterProfile(msrest.serialization.Model):
723    """Profile for the container service master.
724
725    Variables are only populated by the server, and will be ignored when sending a request.
726
727    All required parameters must be populated in order to send to Azure.
728
729    :param count: Number of masters (VMs) in the container service cluster. Allowed values are 1,
730     3, and 5. The default value is 1. Possible values include: 1, 3, 5. Default value: "1".
731    :type count: str or ~azure.mgmt.containerservice.v2020_06_01.models.Count
732    :param dns_prefix: Required. DNS prefix to be used to create the FQDN for the master pool.
733    :type dns_prefix: str
734    :param vm_size: Required. Size of agent VMs. Possible values include: "Standard_A1",
735     "Standard_A10", "Standard_A11", "Standard_A1_v2", "Standard_A2", "Standard_A2_v2",
736     "Standard_A2m_v2", "Standard_A3", "Standard_A4", "Standard_A4_v2", "Standard_A4m_v2",
737     "Standard_A5", "Standard_A6", "Standard_A7", "Standard_A8", "Standard_A8_v2",
738     "Standard_A8m_v2", "Standard_A9", "Standard_B2ms", "Standard_B2s", "Standard_B4ms",
739     "Standard_B8ms", "Standard_D1", "Standard_D11", "Standard_D11_v2", "Standard_D11_v2_Promo",
740     "Standard_D12", "Standard_D12_v2", "Standard_D12_v2_Promo", "Standard_D13", "Standard_D13_v2",
741     "Standard_D13_v2_Promo", "Standard_D14", "Standard_D14_v2", "Standard_D14_v2_Promo",
742     "Standard_D15_v2", "Standard_D16_v3", "Standard_D16s_v3", "Standard_D1_v2", "Standard_D2",
743     "Standard_D2_v2", "Standard_D2_v2_Promo", "Standard_D2_v3", "Standard_D2s_v3", "Standard_D3",
744     "Standard_D32_v3", "Standard_D32s_v3", "Standard_D3_v2", "Standard_D3_v2_Promo", "Standard_D4",
745     "Standard_D4_v2", "Standard_D4_v2_Promo", "Standard_D4_v3", "Standard_D4s_v3",
746     "Standard_D5_v2", "Standard_D5_v2_Promo", "Standard_D64_v3", "Standard_D64s_v3",
747     "Standard_D8_v3", "Standard_D8s_v3", "Standard_DS1", "Standard_DS11", "Standard_DS11_v2",
748     "Standard_DS11_v2_Promo", "Standard_DS12", "Standard_DS12_v2", "Standard_DS12_v2_Promo",
749     "Standard_DS13", "Standard_DS13-2_v2", "Standard_DS13-4_v2", "Standard_DS13_v2",
750     "Standard_DS13_v2_Promo", "Standard_DS14", "Standard_DS14-4_v2", "Standard_DS14-8_v2",
751     "Standard_DS14_v2", "Standard_DS14_v2_Promo", "Standard_DS15_v2", "Standard_DS1_v2",
752     "Standard_DS2", "Standard_DS2_v2", "Standard_DS2_v2_Promo", "Standard_DS3", "Standard_DS3_v2",
753     "Standard_DS3_v2_Promo", "Standard_DS4", "Standard_DS4_v2", "Standard_DS4_v2_Promo",
754     "Standard_DS5_v2", "Standard_DS5_v2_Promo", "Standard_E16_v3", "Standard_E16s_v3",
755     "Standard_E2_v3", "Standard_E2s_v3", "Standard_E32-16s_v3", "Standard_E32-8s_v3",
756     "Standard_E32_v3", "Standard_E32s_v3", "Standard_E4_v3", "Standard_E4s_v3",
757     "Standard_E64-16s_v3", "Standard_E64-32s_v3", "Standard_E64_v3", "Standard_E64s_v3",
758     "Standard_E8_v3", "Standard_E8s_v3", "Standard_F1", "Standard_F16", "Standard_F16s",
759     "Standard_F16s_v2", "Standard_F1s", "Standard_F2", "Standard_F2s", "Standard_F2s_v2",
760     "Standard_F32s_v2", "Standard_F4", "Standard_F4s", "Standard_F4s_v2", "Standard_F64s_v2",
761     "Standard_F72s_v2", "Standard_F8", "Standard_F8s", "Standard_F8s_v2", "Standard_G1",
762     "Standard_G2", "Standard_G3", "Standard_G4", "Standard_G5", "Standard_GS1", "Standard_GS2",
763     "Standard_GS3", "Standard_GS4", "Standard_GS4-4", "Standard_GS4-8", "Standard_GS5",
764     "Standard_GS5-16", "Standard_GS5-8", "Standard_H16", "Standard_H16m", "Standard_H16mr",
765     "Standard_H16r", "Standard_H8", "Standard_H8m", "Standard_L16s", "Standard_L32s",
766     "Standard_L4s", "Standard_L8s", "Standard_M128-32ms", "Standard_M128-64ms", "Standard_M128ms",
767     "Standard_M128s", "Standard_M64-16ms", "Standard_M64-32ms", "Standard_M64ms", "Standard_M64s",
768     "Standard_NC12", "Standard_NC12s_v2", "Standard_NC12s_v3", "Standard_NC24", "Standard_NC24r",
769     "Standard_NC24rs_v2", "Standard_NC24rs_v3", "Standard_NC24s_v2", "Standard_NC24s_v3",
770     "Standard_NC6", "Standard_NC6s_v2", "Standard_NC6s_v3", "Standard_ND12s", "Standard_ND24rs",
771     "Standard_ND24s", "Standard_ND6s", "Standard_NV12", "Standard_NV24", "Standard_NV6".
772    :type vm_size: str or
773     ~azure.mgmt.containerservice.v2020_06_01.models.ContainerServiceVMSizeTypes
774    :param os_disk_size_gb: OS Disk Size in GB to be used to specify the disk size for every
775     machine in this master/agent pool. If you specify 0, it will apply the default osDisk size
776     according to the vmSize specified.
777    :type os_disk_size_gb: int
778    :param vnet_subnet_id: VNet SubnetID specifies the VNet's subnet identifier.
779    :type vnet_subnet_id: str
780    :param first_consecutive_static_ip: FirstConsecutiveStaticIP used to specify the first static
781     ip of masters.
782    :type first_consecutive_static_ip: str
783    :param storage_profile: Storage profile specifies what kind of storage used. Choose from
784     StorageAccount and ManagedDisks. Leave it empty, we will choose for you based on the
785     orchestrator choice. Possible values include: "StorageAccount", "ManagedDisks".
786    :type storage_profile: str or
787     ~azure.mgmt.containerservice.v2020_06_01.models.ContainerServiceStorageProfileTypes
788    :ivar fqdn: FQDN for the master pool.
789    :vartype fqdn: str
790    """
791
792    _validation = {
793        'dns_prefix': {'required': True},
794        'vm_size': {'required': True},
795        'os_disk_size_gb': {'maximum': 1023, 'minimum': 0},
796        'fqdn': {'readonly': True},
797    }
798
799    _attribute_map = {
800        'count': {'key': 'count', 'type': 'int'},
801        'dns_prefix': {'key': 'dnsPrefix', 'type': 'str'},
802        'vm_size': {'key': 'vmSize', 'type': 'str'},
803        'os_disk_size_gb': {'key': 'osDiskSizeGB', 'type': 'int'},
804        'vnet_subnet_id': {'key': 'vnetSubnetID', 'type': 'str'},
805        'first_consecutive_static_ip': {'key': 'firstConsecutiveStaticIP', 'type': 'str'},
806        'storage_profile': {'key': 'storageProfile', 'type': 'str'},
807        'fqdn': {'key': 'fqdn', 'type': 'str'},
808    }
809
810    def __init__(
811        self,
812        *,
813        dns_prefix: str,
814        vm_size: Union[str, "ContainerServiceVMSizeTypes"],
815        count: Optional[Union[int, "Count"]] = "1",
816        os_disk_size_gb: Optional[int] = None,
817        vnet_subnet_id: Optional[str] = None,
818        first_consecutive_static_ip: Optional[str] = "10.240.255.5",
819        storage_profile: Optional[Union[str, "ContainerServiceStorageProfileTypes"]] = None,
820        **kwargs
821    ):
822        super(ContainerServiceMasterProfile, self).__init__(**kwargs)
823        self.count = count
824        self.dns_prefix = dns_prefix
825        self.vm_size = vm_size
826        self.os_disk_size_gb = os_disk_size_gb
827        self.vnet_subnet_id = vnet_subnet_id
828        self.first_consecutive_static_ip = first_consecutive_static_ip
829        self.storage_profile = storage_profile
830        self.fqdn = None
831
832
833class ContainerServiceNetworkProfile(msrest.serialization.Model):
834    """Profile of network configuration.
835
836    :param network_plugin: Network plugin used for building Kubernetes network. Possible values
837     include: "azure", "kubenet". Default value: "kubenet".
838    :type network_plugin: str or ~azure.mgmt.containerservice.v2020_06_01.models.NetworkPlugin
839    :param network_policy: Network policy used for building Kubernetes network. Possible values
840     include: "calico", "azure".
841    :type network_policy: str or ~azure.mgmt.containerservice.v2020_06_01.models.NetworkPolicy
842    :param network_mode: Network mode used for building Kubernetes network. Possible values
843     include: "transparent", "bridge".
844    :type network_mode: str or ~azure.mgmt.containerservice.v2020_06_01.models.NetworkMode
845    :param pod_cidr: A CIDR notation IP range from which to assign pod IPs when kubenet is used.
846    :type pod_cidr: str
847    :param service_cidr: A CIDR notation IP range from which to assign service cluster IPs. It must
848     not overlap with any Subnet IP ranges.
849    :type service_cidr: str
850    :param dns_service_ip: An IP address assigned to the Kubernetes DNS service. It must be within
851     the Kubernetes service address range specified in serviceCidr.
852    :type dns_service_ip: str
853    :param docker_bridge_cidr: A CIDR notation IP range assigned to the Docker bridge network. It
854     must not overlap with any Subnet IP ranges or the Kubernetes service address range.
855    :type docker_bridge_cidr: str
856    :param outbound_type: The outbound (egress) routing method. Possible values include:
857     "loadBalancer", "userDefinedRouting". Default value: "loadBalancer".
858    :type outbound_type: str or ~azure.mgmt.containerservice.v2020_06_01.models.OutboundType
859    :param load_balancer_sku: The load balancer sku for the managed cluster. Possible values
860     include: "standard", "basic".
861    :type load_balancer_sku: str or ~azure.mgmt.containerservice.v2020_06_01.models.LoadBalancerSku
862    :param load_balancer_profile: Profile of the cluster load balancer.
863    :type load_balancer_profile:
864     ~azure.mgmt.containerservice.v2020_06_01.models.ManagedClusterLoadBalancerProfile
865    """
866
867    _validation = {
868        'pod_cidr': {'pattern': r'^([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2]))?$'},
869        'service_cidr': {'pattern': r'^([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2]))?$'},
870        'dns_service_ip': {'pattern': r'^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$'},
871        'docker_bridge_cidr': {'pattern': r'^([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2]))?$'},
872    }
873
874    _attribute_map = {
875        'network_plugin': {'key': 'networkPlugin', 'type': 'str'},
876        'network_policy': {'key': 'networkPolicy', 'type': 'str'},
877        'network_mode': {'key': 'networkMode', 'type': 'str'},
878        'pod_cidr': {'key': 'podCidr', 'type': 'str'},
879        'service_cidr': {'key': 'serviceCidr', 'type': 'str'},
880        'dns_service_ip': {'key': 'dnsServiceIP', 'type': 'str'},
881        'docker_bridge_cidr': {'key': 'dockerBridgeCidr', 'type': 'str'},
882        'outbound_type': {'key': 'outboundType', 'type': 'str'},
883        'load_balancer_sku': {'key': 'loadBalancerSku', 'type': 'str'},
884        'load_balancer_profile': {'key': 'loadBalancerProfile', 'type': 'ManagedClusterLoadBalancerProfile'},
885    }
886
887    def __init__(
888        self,
889        *,
890        network_plugin: Optional[Union[str, "NetworkPlugin"]] = "kubenet",
891        network_policy: Optional[Union[str, "NetworkPolicy"]] = None,
892        network_mode: Optional[Union[str, "NetworkMode"]] = None,
893        pod_cidr: Optional[str] = "10.244.0.0/16",
894        service_cidr: Optional[str] = "10.0.0.0/16",
895        dns_service_ip: Optional[str] = "10.0.0.10",
896        docker_bridge_cidr: Optional[str] = "172.17.0.1/16",
897        outbound_type: Optional[Union[str, "OutboundType"]] = "loadBalancer",
898        load_balancer_sku: Optional[Union[str, "LoadBalancerSku"]] = None,
899        load_balancer_profile: Optional["ManagedClusterLoadBalancerProfile"] = None,
900        **kwargs
901    ):
902        super(ContainerServiceNetworkProfile, self).__init__(**kwargs)
903        self.network_plugin = network_plugin
904        self.network_policy = network_policy
905        self.network_mode = network_mode
906        self.pod_cidr = pod_cidr
907        self.service_cidr = service_cidr
908        self.dns_service_ip = dns_service_ip
909        self.docker_bridge_cidr = docker_bridge_cidr
910        self.outbound_type = outbound_type
911        self.load_balancer_sku = load_balancer_sku
912        self.load_balancer_profile = load_balancer_profile
913
914
915class ContainerServiceSshConfiguration(msrest.serialization.Model):
916    """SSH configuration for Linux-based VMs running on Azure.
917
918    All required parameters must be populated in order to send to Azure.
919
920    :param public_keys: Required. The list of SSH public keys used to authenticate with Linux-based
921     VMs. Only expect one key specified.
922    :type public_keys:
923     list[~azure.mgmt.containerservice.v2020_06_01.models.ContainerServiceSshPublicKey]
924    """
925
926    _validation = {
927        'public_keys': {'required': True},
928    }
929
930    _attribute_map = {
931        'public_keys': {'key': 'publicKeys', 'type': '[ContainerServiceSshPublicKey]'},
932    }
933
934    def __init__(
935        self,
936        *,
937        public_keys: List["ContainerServiceSshPublicKey"],
938        **kwargs
939    ):
940        super(ContainerServiceSshConfiguration, self).__init__(**kwargs)
941        self.public_keys = public_keys
942
943
944class ContainerServiceSshPublicKey(msrest.serialization.Model):
945    """Contains information about SSH certificate public key data.
946
947    All required parameters must be populated in order to send to Azure.
948
949    :param key_data: Required. Certificate public key used to authenticate with VMs through SSH.
950     The certificate must be in PEM format with or without headers.
951    :type key_data: str
952    """
953
954    _validation = {
955        'key_data': {'required': True},
956    }
957
958    _attribute_map = {
959        'key_data': {'key': 'keyData', 'type': 'str'},
960    }
961
962    def __init__(
963        self,
964        *,
965        key_data: str,
966        **kwargs
967    ):
968        super(ContainerServiceSshPublicKey, self).__init__(**kwargs)
969        self.key_data = key_data
970
971
972class ContainerServiceVMDiagnostics(msrest.serialization.Model):
973    """Profile for diagnostics on the container service VMs.
974
975    Variables are only populated by the server, and will be ignored when sending a request.
976
977    All required parameters must be populated in order to send to Azure.
978
979    :param enabled: Required. Whether the VM diagnostic agent is provisioned on the VM.
980    :type enabled: bool
981    :ivar storage_uri: The URI of the storage account where diagnostics are stored.
982    :vartype storage_uri: str
983    """
984
985    _validation = {
986        'enabled': {'required': True},
987        'storage_uri': {'readonly': True},
988    }
989
990    _attribute_map = {
991        'enabled': {'key': 'enabled', 'type': 'bool'},
992        'storage_uri': {'key': 'storageUri', 'type': 'str'},
993    }
994
995    def __init__(
996        self,
997        *,
998        enabled: bool,
999        **kwargs
1000    ):
1001        super(ContainerServiceVMDiagnostics, self).__init__(**kwargs)
1002        self.enabled = enabled
1003        self.storage_uri = None
1004
1005
1006class CredentialResult(msrest.serialization.Model):
1007    """The credential result response.
1008
1009    Variables are only populated by the server, and will be ignored when sending a request.
1010
1011    :ivar name: The name of the credential.
1012    :vartype name: str
1013    :ivar value: Base64-encoded Kubernetes configuration file.
1014    :vartype value: bytearray
1015    """
1016
1017    _validation = {
1018        'name': {'readonly': True},
1019        'value': {'readonly': True},
1020    }
1021
1022    _attribute_map = {
1023        'name': {'key': 'name', 'type': 'str'},
1024        'value': {'key': 'value', 'type': 'bytearray'},
1025    }
1026
1027    def __init__(
1028        self,
1029        **kwargs
1030    ):
1031        super(CredentialResult, self).__init__(**kwargs)
1032        self.name = None
1033        self.value = None
1034
1035
1036class CredentialResults(msrest.serialization.Model):
1037    """The list of credential result response.
1038
1039    Variables are only populated by the server, and will be ignored when sending a request.
1040
1041    :ivar kubeconfigs: Base64-encoded Kubernetes configuration file.
1042    :vartype kubeconfigs: list[~azure.mgmt.containerservice.v2020_06_01.models.CredentialResult]
1043    """
1044
1045    _validation = {
1046        'kubeconfigs': {'readonly': True},
1047    }
1048
1049    _attribute_map = {
1050        'kubeconfigs': {'key': 'kubeconfigs', 'type': '[CredentialResult]'},
1051    }
1052
1053    def __init__(
1054        self,
1055        **kwargs
1056    ):
1057        super(CredentialResults, self).__init__(**kwargs)
1058        self.kubeconfigs = None
1059
1060
1061class Resource(msrest.serialization.Model):
1062    """The Resource model definition.
1063
1064    Variables are only populated by the server, and will be ignored when sending a request.
1065
1066    All required parameters must be populated in order to send to Azure.
1067
1068    :ivar id: Resource Id.
1069    :vartype id: str
1070    :ivar name: Resource name.
1071    :vartype name: str
1072    :ivar type: Resource type.
1073    :vartype type: str
1074    :param location: Required. Resource location.
1075    :type location: str
1076    :param tags: A set of tags. Resource tags.
1077    :type tags: dict[str, str]
1078    """
1079
1080    _validation = {
1081        'id': {'readonly': True},
1082        'name': {'readonly': True},
1083        'type': {'readonly': True},
1084        'location': {'required': True},
1085    }
1086
1087    _attribute_map = {
1088        'id': {'key': 'id', 'type': 'str'},
1089        'name': {'key': 'name', 'type': 'str'},
1090        'type': {'key': 'type', 'type': 'str'},
1091        'location': {'key': 'location', 'type': 'str'},
1092        'tags': {'key': 'tags', 'type': '{str}'},
1093    }
1094
1095    def __init__(
1096        self,
1097        *,
1098        location: str,
1099        tags: Optional[Dict[str, str]] = None,
1100        **kwargs
1101    ):
1102        super(Resource, self).__init__(**kwargs)
1103        self.id = None
1104        self.name = None
1105        self.type = None
1106        self.location = location
1107        self.tags = tags
1108
1109
1110class ManagedCluster(Resource, BaseManagedCluster):
1111    """Managed cluster.
1112
1113    Variables are only populated by the server, and will be ignored when sending a request.
1114
1115    All required parameters must be populated in order to send to Azure.
1116
1117    :param identity: The identity of the managed cluster, if configured.
1118    :type identity: ~azure.mgmt.containerservice.v2020_06_01.models.ManagedClusterIdentity
1119    :ivar provisioning_state: The current deployment or provisioning state, which only appears in
1120     the response.
1121    :vartype provisioning_state: str
1122    :ivar max_agent_pools: The max number of agent pools for the managed cluster.
1123    :vartype max_agent_pools: int
1124    :param kubernetes_version: Version of Kubernetes specified when creating the managed cluster.
1125    :type kubernetes_version: str
1126    :param dns_prefix: DNS prefix specified when creating the managed cluster.
1127    :type dns_prefix: str
1128    :ivar fqdn: FQDN for the master pool.
1129    :vartype fqdn: str
1130    :ivar private_fqdn: FQDN of private cluster.
1131    :vartype private_fqdn: str
1132    :param agent_pool_profiles: Properties of the agent pool.
1133    :type agent_pool_profiles:
1134     list[~azure.mgmt.containerservice.v2020_06_01.models.ManagedClusterAgentPoolProfile]
1135    :param linux_profile: Profile for Linux VMs in the container service cluster.
1136    :type linux_profile:
1137     ~azure.mgmt.containerservice.v2020_06_01.models.ContainerServiceLinuxProfile
1138    :param windows_profile: Profile for Windows VMs in the container service cluster.
1139    :type windows_profile:
1140     ~azure.mgmt.containerservice.v2020_06_01.models.ManagedClusterWindowsProfile
1141    :param service_principal_profile: Information about a service principal identity for the
1142     cluster to use for manipulating Azure APIs.
1143    :type service_principal_profile:
1144     ~azure.mgmt.containerservice.v2020_06_01.models.ManagedClusterServicePrincipalProfile
1145    :param addon_profiles: Profile of managed cluster add-on.
1146    :type addon_profiles: dict[str,
1147     ~azure.mgmt.containerservice.v2020_06_01.models.ManagedClusterAddonProfile]
1148    :param node_resource_group: Name of the resource group containing agent pool nodes.
1149    :type node_resource_group: str
1150    :param enable_rbac: Whether to enable Kubernetes Role-Based Access Control.
1151    :type enable_rbac: bool
1152    :param enable_pod_security_policy: (DEPRECATING) Whether to enable Kubernetes pod security
1153     policy (preview). This feature is set for removal on October 15th, 2020. Learn more at
1154     aka.ms/aks/azpodpolicy.
1155    :type enable_pod_security_policy: bool
1156    :param network_profile: Profile of network configuration.
1157    :type network_profile:
1158     ~azure.mgmt.containerservice.v2020_06_01.models.ContainerServiceNetworkProfile
1159    :param aad_profile: Profile of Azure Active Directory configuration.
1160    :type aad_profile: ~azure.mgmt.containerservice.v2020_06_01.models.ManagedClusterAADProfile
1161    :param auto_scaler_profile: Parameters to be applied to the cluster-autoscaler when enabled.
1162    :type auto_scaler_profile:
1163     ~azure.mgmt.containerservice.v2020_06_01.models.ManagedClusterPropertiesAutoScalerProfile
1164    :param api_server_access_profile: Access profile for managed cluster API server.
1165    :type api_server_access_profile:
1166     ~azure.mgmt.containerservice.v2020_06_01.models.ManagedClusterAPIServerAccessProfile
1167    :param disk_encryption_set_id: ResourceId of the disk encryption set to use for enabling
1168     encryption at rest.
1169    :type disk_encryption_set_id: str
1170    :param identity_profile: Identities associated with the cluster.
1171    :type identity_profile: dict[str,
1172     ~azure.mgmt.containerservice.v2020_06_01.models.ManagedClusterPropertiesIdentityProfileValue]
1173    :ivar id: Resource Id.
1174    :vartype id: str
1175    :ivar name: Resource name.
1176    :vartype name: str
1177    :ivar type: Resource type.
1178    :vartype type: str
1179    :param location: Required. Resource location.
1180    :type location: str
1181    :param tags: A set of tags. Resource tags.
1182    :type tags: dict[str, str]
1183    :param sku: The managed cluster SKU.
1184    :type sku: ~azure.mgmt.containerservice.v2020_06_01.models.ManagedClusterSKU
1185    """
1186
1187    _validation = {
1188        'provisioning_state': {'readonly': True},
1189        'max_agent_pools': {'readonly': True},
1190        'fqdn': {'readonly': True},
1191        'private_fqdn': {'readonly': True},
1192        'id': {'readonly': True},
1193        'name': {'readonly': True},
1194        'type': {'readonly': True},
1195        'location': {'required': True},
1196    }
1197
1198    _attribute_map = {
1199        'identity': {'key': 'identity', 'type': 'ManagedClusterIdentity'},
1200        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1201        'max_agent_pools': {'key': 'properties.maxAgentPools', 'type': 'int'},
1202        'kubernetes_version': {'key': 'properties.kubernetesVersion', 'type': 'str'},
1203        'dns_prefix': {'key': 'properties.dnsPrefix', 'type': 'str'},
1204        'fqdn': {'key': 'properties.fqdn', 'type': 'str'},
1205        'private_fqdn': {'key': 'properties.privateFQDN', 'type': 'str'},
1206        'agent_pool_profiles': {'key': 'properties.agentPoolProfiles', 'type': '[ManagedClusterAgentPoolProfile]'},
1207        'linux_profile': {'key': 'properties.linuxProfile', 'type': 'ContainerServiceLinuxProfile'},
1208        'windows_profile': {'key': 'properties.windowsProfile', 'type': 'ManagedClusterWindowsProfile'},
1209        'service_principal_profile': {'key': 'properties.servicePrincipalProfile', 'type': 'ManagedClusterServicePrincipalProfile'},
1210        'addon_profiles': {'key': 'properties.addonProfiles', 'type': '{ManagedClusterAddonProfile}'},
1211        'node_resource_group': {'key': 'properties.nodeResourceGroup', 'type': 'str'},
1212        'enable_rbac': {'key': 'properties.enableRBAC', 'type': 'bool'},
1213        'enable_pod_security_policy': {'key': 'properties.enablePodSecurityPolicy', 'type': 'bool'},
1214        'network_profile': {'key': 'properties.networkProfile', 'type': 'ContainerServiceNetworkProfile'},
1215        'aad_profile': {'key': 'properties.aadProfile', 'type': 'ManagedClusterAADProfile'},
1216        'auto_scaler_profile': {'key': 'properties.autoScalerProfile', 'type': 'ManagedClusterPropertiesAutoScalerProfile'},
1217        'api_server_access_profile': {'key': 'properties.apiServerAccessProfile', 'type': 'ManagedClusterAPIServerAccessProfile'},
1218        'disk_encryption_set_id': {'key': 'properties.diskEncryptionSetID', 'type': 'str'},
1219        'identity_profile': {'key': 'properties.identityProfile', 'type': '{ManagedClusterPropertiesIdentityProfileValue}'},
1220        'id': {'key': 'id', 'type': 'str'},
1221        'name': {'key': 'name', 'type': 'str'},
1222        'type': {'key': 'type', 'type': 'str'},
1223        'location': {'key': 'location', 'type': 'str'},
1224        'tags': {'key': 'tags', 'type': '{str}'},
1225        'sku': {'key': 'sku', 'type': 'ManagedClusterSKU'},
1226    }
1227
1228    def __init__(
1229        self,
1230        *,
1231        location: str,
1232        identity: Optional["ManagedClusterIdentity"] = None,
1233        kubernetes_version: Optional[str] = None,
1234        dns_prefix: Optional[str] = None,
1235        agent_pool_profiles: Optional[List["ManagedClusterAgentPoolProfile"]] = None,
1236        linux_profile: Optional["ContainerServiceLinuxProfile"] = None,
1237        windows_profile: Optional["ManagedClusterWindowsProfile"] = None,
1238        service_principal_profile: Optional["ManagedClusterServicePrincipalProfile"] = None,
1239        addon_profiles: Optional[Dict[str, "ManagedClusterAddonProfile"]] = None,
1240        node_resource_group: Optional[str] = None,
1241        enable_rbac: Optional[bool] = None,
1242        enable_pod_security_policy: Optional[bool] = None,
1243        network_profile: Optional["ContainerServiceNetworkProfile"] = None,
1244        aad_profile: Optional["ManagedClusterAADProfile"] = None,
1245        auto_scaler_profile: Optional["ManagedClusterPropertiesAutoScalerProfile"] = None,
1246        api_server_access_profile: Optional["ManagedClusterAPIServerAccessProfile"] = None,
1247        disk_encryption_set_id: Optional[str] = None,
1248        identity_profile: Optional[Dict[str, "ManagedClusterPropertiesIdentityProfileValue"]] = None,
1249        tags: Optional[Dict[str, str]] = None,
1250        sku: Optional["ManagedClusterSKU"] = None,
1251        **kwargs
1252    ):
1253        super(ManagedCluster, self).__init__(location=location, tags=tags, identity=identity, kubernetes_version=kubernetes_version, dns_prefix=dns_prefix, agent_pool_profiles=agent_pool_profiles, linux_profile=linux_profile, windows_profile=windows_profile, service_principal_profile=service_principal_profile, addon_profiles=addon_profiles, node_resource_group=node_resource_group, enable_rbac=enable_rbac, enable_pod_security_policy=enable_pod_security_policy, network_profile=network_profile, aad_profile=aad_profile, auto_scaler_profile=auto_scaler_profile, api_server_access_profile=api_server_access_profile, disk_encryption_set_id=disk_encryption_set_id, identity_profile=identity_profile, **kwargs)
1254        self.identity = identity
1255        self.provisioning_state = None
1256        self.max_agent_pools = None
1257        self.kubernetes_version = kubernetes_version
1258        self.dns_prefix = dns_prefix
1259        self.fqdn = None
1260        self.private_fqdn = None
1261        self.agent_pool_profiles = agent_pool_profiles
1262        self.linux_profile = linux_profile
1263        self.windows_profile = windows_profile
1264        self.service_principal_profile = service_principal_profile
1265        self.addon_profiles = addon_profiles
1266        self.node_resource_group = node_resource_group
1267        self.enable_rbac = enable_rbac
1268        self.enable_pod_security_policy = enable_pod_security_policy
1269        self.network_profile = network_profile
1270        self.aad_profile = aad_profile
1271        self.auto_scaler_profile = auto_scaler_profile
1272        self.api_server_access_profile = api_server_access_profile
1273        self.disk_encryption_set_id = disk_encryption_set_id
1274        self.identity_profile = identity_profile
1275        self.sku = sku
1276        self.id = None
1277        self.name = None
1278        self.type = None
1279        self.location = location
1280        self.tags = tags
1281        self.sku = sku
1282
1283
1284class ManagedClusterAADProfile(msrest.serialization.Model):
1285    """AADProfile specifies attributes for Azure Active Directory integration.
1286
1287    :param managed: Whether to enable managed AAD.
1288    :type managed: bool
1289    :param enable_azure_rbac: Whether to enable Azure RBAC for Kubernetes authorization.
1290    :type enable_azure_rbac: bool
1291    :param admin_group_object_i_ds: AAD group object IDs that will have admin role of the cluster.
1292    :type admin_group_object_i_ds: list[str]
1293    :param client_app_id: The client AAD application ID.
1294    :type client_app_id: str
1295    :param server_app_id: The server AAD application ID.
1296    :type server_app_id: str
1297    :param server_app_secret: The server AAD application secret.
1298    :type server_app_secret: str
1299    :param tenant_id: The AAD tenant ID to use for authentication. If not specified, will use the
1300     tenant of the deployment subscription.
1301    :type tenant_id: str
1302    """
1303
1304    _attribute_map = {
1305        'managed': {'key': 'managed', 'type': 'bool'},
1306        'enable_azure_rbac': {'key': 'enableAzureRBAC', 'type': 'bool'},
1307        'admin_group_object_i_ds': {'key': 'adminGroupObjectIDs', 'type': '[str]'},
1308        'client_app_id': {'key': 'clientAppID', 'type': 'str'},
1309        'server_app_id': {'key': 'serverAppID', 'type': 'str'},
1310        'server_app_secret': {'key': 'serverAppSecret', 'type': 'str'},
1311        'tenant_id': {'key': 'tenantID', 'type': 'str'},
1312    }
1313
1314    def __init__(
1315        self,
1316        *,
1317        managed: Optional[bool] = None,
1318        enable_azure_rbac: Optional[bool] = None,
1319        admin_group_object_i_ds: Optional[List[str]] = None,
1320        client_app_id: Optional[str] = None,
1321        server_app_id: Optional[str] = None,
1322        server_app_secret: Optional[str] = None,
1323        tenant_id: Optional[str] = None,
1324        **kwargs
1325    ):
1326        super(ManagedClusterAADProfile, self).__init__(**kwargs)
1327        self.managed = managed
1328        self.enable_azure_rbac = enable_azure_rbac
1329        self.admin_group_object_i_ds = admin_group_object_i_ds
1330        self.client_app_id = client_app_id
1331        self.server_app_id = server_app_id
1332        self.server_app_secret = server_app_secret
1333        self.tenant_id = tenant_id
1334
1335
1336class ManagedClusterAccessProfile(Resource):
1337    """Managed cluster Access Profile.
1338
1339    Variables are only populated by the server, and will be ignored when sending a request.
1340
1341    All required parameters must be populated in order to send to Azure.
1342
1343    :ivar id: Resource Id.
1344    :vartype id: str
1345    :ivar name: Resource name.
1346    :vartype name: str
1347    :ivar type: Resource type.
1348    :vartype type: str
1349    :param location: Required. Resource location.
1350    :type location: str
1351    :param tags: A set of tags. Resource tags.
1352    :type tags: dict[str, str]
1353    :param kube_config: Base64-encoded Kubernetes configuration file.
1354    :type kube_config: bytearray
1355    """
1356
1357    _validation = {
1358        'id': {'readonly': True},
1359        'name': {'readonly': True},
1360        'type': {'readonly': True},
1361        'location': {'required': True},
1362    }
1363
1364    _attribute_map = {
1365        'id': {'key': 'id', 'type': 'str'},
1366        'name': {'key': 'name', 'type': 'str'},
1367        'type': {'key': 'type', 'type': 'str'},
1368        'location': {'key': 'location', 'type': 'str'},
1369        'tags': {'key': 'tags', 'type': '{str}'},
1370        'kube_config': {'key': 'properties.kubeConfig', 'type': 'bytearray'},
1371    }
1372
1373    def __init__(
1374        self,
1375        *,
1376        location: str,
1377        tags: Optional[Dict[str, str]] = None,
1378        kube_config: Optional[bytearray] = None,
1379        **kwargs
1380    ):
1381        super(ManagedClusterAccessProfile, self).__init__(location=location, tags=tags, **kwargs)
1382        self.kube_config = kube_config
1383
1384
1385class ManagedClusterAddonProfile(msrest.serialization.Model):
1386    """A Kubernetes add-on profile for a managed cluster.
1387
1388    Variables are only populated by the server, and will be ignored when sending a request.
1389
1390    All required parameters must be populated in order to send to Azure.
1391
1392    :param enabled: Required. Whether the add-on is enabled or not.
1393    :type enabled: bool
1394    :param config: Key-value pairs for configuring an add-on.
1395    :type config: dict[str, str]
1396    :ivar identity: Information of user assigned identity used by this add-on.
1397    :vartype identity:
1398     ~azure.mgmt.containerservice.v2020_06_01.models.ManagedClusterAddonProfileIdentity
1399    """
1400
1401    _validation = {
1402        'enabled': {'required': True},
1403        'identity': {'readonly': True},
1404    }
1405
1406    _attribute_map = {
1407        'enabled': {'key': 'enabled', 'type': 'bool'},
1408        'config': {'key': 'config', 'type': '{str}'},
1409        'identity': {'key': 'identity', 'type': 'ManagedClusterAddonProfileIdentity'},
1410    }
1411
1412    def __init__(
1413        self,
1414        *,
1415        enabled: bool,
1416        config: Optional[Dict[str, str]] = None,
1417        **kwargs
1418    ):
1419        super(ManagedClusterAddonProfile, self).__init__(**kwargs)
1420        self.enabled = enabled
1421        self.config = config
1422        self.identity = None
1423
1424
1425class UserAssignedIdentity(msrest.serialization.Model):
1426    """UserAssignedIdentity.
1427
1428    :param resource_id: The resource id of the user assigned identity.
1429    :type resource_id: str
1430    :param client_id: The client id of the user assigned identity.
1431    :type client_id: str
1432    :param object_id: The object id of the user assigned identity.
1433    :type object_id: str
1434    """
1435
1436    _attribute_map = {
1437        'resource_id': {'key': 'resourceId', 'type': 'str'},
1438        'client_id': {'key': 'clientId', 'type': 'str'},
1439        'object_id': {'key': 'objectId', 'type': 'str'},
1440    }
1441
1442    def __init__(
1443        self,
1444        *,
1445        resource_id: Optional[str] = None,
1446        client_id: Optional[str] = None,
1447        object_id: Optional[str] = None,
1448        **kwargs
1449    ):
1450        super(UserAssignedIdentity, self).__init__(**kwargs)
1451        self.resource_id = resource_id
1452        self.client_id = client_id
1453        self.object_id = object_id
1454
1455
1456class ManagedClusterAddonProfileIdentity(UserAssignedIdentity):
1457    """Information of user assigned identity used by this add-on.
1458
1459    :param resource_id: The resource id of the user assigned identity.
1460    :type resource_id: str
1461    :param client_id: The client id of the user assigned identity.
1462    :type client_id: str
1463    :param object_id: The object id of the user assigned identity.
1464    :type object_id: str
1465    """
1466
1467    _attribute_map = {
1468        'resource_id': {'key': 'resourceId', 'type': 'str'},
1469        'client_id': {'key': 'clientId', 'type': 'str'},
1470        'object_id': {'key': 'objectId', 'type': 'str'},
1471    }
1472
1473    def __init__(
1474        self,
1475        *,
1476        resource_id: Optional[str] = None,
1477        client_id: Optional[str] = None,
1478        object_id: Optional[str] = None,
1479        **kwargs
1480    ):
1481        super(ManagedClusterAddonProfileIdentity, self).__init__(resource_id=resource_id, client_id=client_id, object_id=object_id, **kwargs)
1482
1483
1484class ManagedClusterAgentPoolProfileProperties(msrest.serialization.Model):
1485    """Properties for the container service agent pool profile.
1486
1487    Variables are only populated by the server, and will be ignored when sending a request.
1488
1489    :param count: Number of agents (VMs) to host docker containers. Allowed values must be in the
1490     range of 0 to 100 (inclusive) for user pools and in the range of 1 to 100 (inclusive) for
1491     system pools. The default value is 1.
1492    :type count: int
1493    :param vm_size: Size of agent VMs. Possible values include: "Standard_A1", "Standard_A10",
1494     "Standard_A11", "Standard_A1_v2", "Standard_A2", "Standard_A2_v2", "Standard_A2m_v2",
1495     "Standard_A3", "Standard_A4", "Standard_A4_v2", "Standard_A4m_v2", "Standard_A5",
1496     "Standard_A6", "Standard_A7", "Standard_A8", "Standard_A8_v2", "Standard_A8m_v2",
1497     "Standard_A9", "Standard_B2ms", "Standard_B2s", "Standard_B4ms", "Standard_B8ms",
1498     "Standard_D1", "Standard_D11", "Standard_D11_v2", "Standard_D11_v2_Promo", "Standard_D12",
1499     "Standard_D12_v2", "Standard_D12_v2_Promo", "Standard_D13", "Standard_D13_v2",
1500     "Standard_D13_v2_Promo", "Standard_D14", "Standard_D14_v2", "Standard_D14_v2_Promo",
1501     "Standard_D15_v2", "Standard_D16_v3", "Standard_D16s_v3", "Standard_D1_v2", "Standard_D2",
1502     "Standard_D2_v2", "Standard_D2_v2_Promo", "Standard_D2_v3", "Standard_D2s_v3", "Standard_D3",
1503     "Standard_D32_v3", "Standard_D32s_v3", "Standard_D3_v2", "Standard_D3_v2_Promo", "Standard_D4",
1504     "Standard_D4_v2", "Standard_D4_v2_Promo", "Standard_D4_v3", "Standard_D4s_v3",
1505     "Standard_D5_v2", "Standard_D5_v2_Promo", "Standard_D64_v3", "Standard_D64s_v3",
1506     "Standard_D8_v3", "Standard_D8s_v3", "Standard_DS1", "Standard_DS11", "Standard_DS11_v2",
1507     "Standard_DS11_v2_Promo", "Standard_DS12", "Standard_DS12_v2", "Standard_DS12_v2_Promo",
1508     "Standard_DS13", "Standard_DS13-2_v2", "Standard_DS13-4_v2", "Standard_DS13_v2",
1509     "Standard_DS13_v2_Promo", "Standard_DS14", "Standard_DS14-4_v2", "Standard_DS14-8_v2",
1510     "Standard_DS14_v2", "Standard_DS14_v2_Promo", "Standard_DS15_v2", "Standard_DS1_v2",
1511     "Standard_DS2", "Standard_DS2_v2", "Standard_DS2_v2_Promo", "Standard_DS3", "Standard_DS3_v2",
1512     "Standard_DS3_v2_Promo", "Standard_DS4", "Standard_DS4_v2", "Standard_DS4_v2_Promo",
1513     "Standard_DS5_v2", "Standard_DS5_v2_Promo", "Standard_E16_v3", "Standard_E16s_v3",
1514     "Standard_E2_v3", "Standard_E2s_v3", "Standard_E32-16s_v3", "Standard_E32-8s_v3",
1515     "Standard_E32_v3", "Standard_E32s_v3", "Standard_E4_v3", "Standard_E4s_v3",
1516     "Standard_E64-16s_v3", "Standard_E64-32s_v3", "Standard_E64_v3", "Standard_E64s_v3",
1517     "Standard_E8_v3", "Standard_E8s_v3", "Standard_F1", "Standard_F16", "Standard_F16s",
1518     "Standard_F16s_v2", "Standard_F1s", "Standard_F2", "Standard_F2s", "Standard_F2s_v2",
1519     "Standard_F32s_v2", "Standard_F4", "Standard_F4s", "Standard_F4s_v2", "Standard_F64s_v2",
1520     "Standard_F72s_v2", "Standard_F8", "Standard_F8s", "Standard_F8s_v2", "Standard_G1",
1521     "Standard_G2", "Standard_G3", "Standard_G4", "Standard_G5", "Standard_GS1", "Standard_GS2",
1522     "Standard_GS3", "Standard_GS4", "Standard_GS4-4", "Standard_GS4-8", "Standard_GS5",
1523     "Standard_GS5-16", "Standard_GS5-8", "Standard_H16", "Standard_H16m", "Standard_H16mr",
1524     "Standard_H16r", "Standard_H8", "Standard_H8m", "Standard_L16s", "Standard_L32s",
1525     "Standard_L4s", "Standard_L8s", "Standard_M128-32ms", "Standard_M128-64ms", "Standard_M128ms",
1526     "Standard_M128s", "Standard_M64-16ms", "Standard_M64-32ms", "Standard_M64ms", "Standard_M64s",
1527     "Standard_NC12", "Standard_NC12s_v2", "Standard_NC12s_v3", "Standard_NC24", "Standard_NC24r",
1528     "Standard_NC24rs_v2", "Standard_NC24rs_v3", "Standard_NC24s_v2", "Standard_NC24s_v3",
1529     "Standard_NC6", "Standard_NC6s_v2", "Standard_NC6s_v3", "Standard_ND12s", "Standard_ND24rs",
1530     "Standard_ND24s", "Standard_ND6s", "Standard_NV12", "Standard_NV24", "Standard_NV6".
1531    :type vm_size: str or
1532     ~azure.mgmt.containerservice.v2020_06_01.models.ContainerServiceVMSizeTypes
1533    :param os_disk_size_gb: OS Disk Size in GB to be used to specify the disk size for every
1534     machine in this master/agent pool. If you specify 0, it will apply the default osDisk size
1535     according to the vmSize specified.
1536    :type os_disk_size_gb: int
1537    :param vnet_subnet_id: VNet SubnetID specifies the VNet's subnet identifier.
1538    :type vnet_subnet_id: str
1539    :param max_pods: Maximum number of pods that can run on a node.
1540    :type max_pods: int
1541    :param os_type: OsType to be used to specify os type. Choose from Linux and Windows. Default to
1542     Linux. Possible values include: "Linux", "Windows". Default value: "Linux".
1543    :type os_type: str or ~azure.mgmt.containerservice.v2020_06_01.models.OSType
1544    :param max_count: Maximum number of nodes for auto-scaling.
1545    :type max_count: int
1546    :param min_count: Minimum number of nodes for auto-scaling.
1547    :type min_count: int
1548    :param enable_auto_scaling: Whether to enable auto-scaler.
1549    :type enable_auto_scaling: bool
1550    :param type: AgentPoolType represents types of an agent pool. Possible values include:
1551     "VirtualMachineScaleSets", "AvailabilitySet".
1552    :type type: str or ~azure.mgmt.containerservice.v2020_06_01.models.AgentPoolType
1553    :param mode: AgentPoolMode represents mode of an agent pool. Possible values include: "System",
1554     "User".
1555    :type mode: str or ~azure.mgmt.containerservice.v2020_06_01.models.AgentPoolMode
1556    :param orchestrator_version: Version of orchestrator specified when creating the managed
1557     cluster.
1558    :type orchestrator_version: str
1559    :param node_image_version: Version of node image.
1560    :type node_image_version: str
1561    :param upgrade_settings: Settings for upgrading the agentpool.
1562    :type upgrade_settings:
1563     ~azure.mgmt.containerservice.v2020_06_01.models.AgentPoolUpgradeSettings
1564    :ivar provisioning_state: The current deployment or provisioning state, which only appears in
1565     the response.
1566    :vartype provisioning_state: str
1567    :param availability_zones: Availability zones for nodes. Must use VirtualMachineScaleSets
1568     AgentPoolType.
1569    :type availability_zones: list[str]
1570    :param enable_node_public_ip: Enable public IP for nodes.
1571    :type enable_node_public_ip: bool
1572    :param scale_set_priority: ScaleSetPriority to be used to specify virtual machine scale set
1573     priority. Default to regular. Possible values include: "Spot", "Regular". Default value:
1574     "Regular".
1575    :type scale_set_priority: str or
1576     ~azure.mgmt.containerservice.v2020_06_01.models.ScaleSetPriority
1577    :param scale_set_eviction_policy: ScaleSetEvictionPolicy to be used to specify eviction policy
1578     for Spot virtual machine scale set. Default to Delete. Possible values include: "Delete",
1579     "Deallocate". Default value: "Delete".
1580    :type scale_set_eviction_policy: str or
1581     ~azure.mgmt.containerservice.v2020_06_01.models.ScaleSetEvictionPolicy
1582    :param spot_max_price: SpotMaxPrice to be used to specify the maximum price you are willing to
1583     pay in US Dollars. Possible values are any decimal value greater than zero or -1 which
1584     indicates default price to be up-to on-demand.
1585    :type spot_max_price: float
1586    :param tags: A set of tags. Agent pool tags to be persisted on the agent pool virtual machine
1587     scale set.
1588    :type tags: dict[str, str]
1589    :param node_labels: Agent pool node labels to be persisted across all nodes in agent pool.
1590    :type node_labels: dict[str, str]
1591    :param node_taints: Taints added to new nodes during node pool create and scale. For example,
1592     key=value:NoSchedule.
1593    :type node_taints: list[str]
1594    :param proximity_placement_group_id: The ID for Proximity Placement Group.
1595    :type proximity_placement_group_id: str
1596    """
1597
1598    _validation = {
1599        'os_disk_size_gb': {'maximum': 1023, 'minimum': 0},
1600        'provisioning_state': {'readonly': True},
1601    }
1602
1603    _attribute_map = {
1604        'count': {'key': 'count', 'type': 'int'},
1605        'vm_size': {'key': 'vmSize', 'type': 'str'},
1606        'os_disk_size_gb': {'key': 'osDiskSizeGB', 'type': 'int'},
1607        'vnet_subnet_id': {'key': 'vnetSubnetID', 'type': 'str'},
1608        'max_pods': {'key': 'maxPods', 'type': 'int'},
1609        'os_type': {'key': 'osType', 'type': 'str'},
1610        'max_count': {'key': 'maxCount', 'type': 'int'},
1611        'min_count': {'key': 'minCount', 'type': 'int'},
1612        'enable_auto_scaling': {'key': 'enableAutoScaling', 'type': 'bool'},
1613        'type': {'key': 'type', 'type': 'str'},
1614        'mode': {'key': 'mode', 'type': 'str'},
1615        'orchestrator_version': {'key': 'orchestratorVersion', 'type': 'str'},
1616        'node_image_version': {'key': 'nodeImageVersion', 'type': 'str'},
1617        'upgrade_settings': {'key': 'upgradeSettings', 'type': 'AgentPoolUpgradeSettings'},
1618        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
1619        'availability_zones': {'key': 'availabilityZones', 'type': '[str]'},
1620        'enable_node_public_ip': {'key': 'enableNodePublicIP', 'type': 'bool'},
1621        'scale_set_priority': {'key': 'scaleSetPriority', 'type': 'str'},
1622        'scale_set_eviction_policy': {'key': 'scaleSetEvictionPolicy', 'type': 'str'},
1623        'spot_max_price': {'key': 'spotMaxPrice', 'type': 'float'},
1624        'tags': {'key': 'tags', 'type': '{str}'},
1625        'node_labels': {'key': 'nodeLabels', 'type': '{str}'},
1626        'node_taints': {'key': 'nodeTaints', 'type': '[str]'},
1627        'proximity_placement_group_id': {'key': 'proximityPlacementGroupID', 'type': 'str'},
1628    }
1629
1630    def __init__(
1631        self,
1632        *,
1633        count: Optional[int] = None,
1634        vm_size: Optional[Union[str, "ContainerServiceVMSizeTypes"]] = None,
1635        os_disk_size_gb: Optional[int] = None,
1636        vnet_subnet_id: Optional[str] = None,
1637        max_pods: Optional[int] = None,
1638        os_type: Optional[Union[str, "OSType"]] = "Linux",
1639        max_count: Optional[int] = None,
1640        min_count: Optional[int] = None,
1641        enable_auto_scaling: Optional[bool] = None,
1642        type: Optional[Union[str, "AgentPoolType"]] = None,
1643        mode: Optional[Union[str, "AgentPoolMode"]] = None,
1644        orchestrator_version: Optional[str] = None,
1645        node_image_version: Optional[str] = None,
1646        upgrade_settings: Optional["AgentPoolUpgradeSettings"] = None,
1647        availability_zones: Optional[List[str]] = None,
1648        enable_node_public_ip: Optional[bool] = None,
1649        scale_set_priority: Optional[Union[str, "ScaleSetPriority"]] = "Regular",
1650        scale_set_eviction_policy: Optional[Union[str, "ScaleSetEvictionPolicy"]] = "Delete",
1651        spot_max_price: Optional[float] = -1,
1652        tags: Optional[Dict[str, str]] = None,
1653        node_labels: Optional[Dict[str, str]] = None,
1654        node_taints: Optional[List[str]] = None,
1655        proximity_placement_group_id: Optional[str] = None,
1656        **kwargs
1657    ):
1658        super(ManagedClusterAgentPoolProfileProperties, self).__init__(**kwargs)
1659        self.count = count
1660        self.vm_size = vm_size
1661        self.os_disk_size_gb = os_disk_size_gb
1662        self.vnet_subnet_id = vnet_subnet_id
1663        self.max_pods = max_pods
1664        self.os_type = os_type
1665        self.max_count = max_count
1666        self.min_count = min_count
1667        self.enable_auto_scaling = enable_auto_scaling
1668        self.type = type
1669        self.mode = mode
1670        self.orchestrator_version = orchestrator_version
1671        self.node_image_version = node_image_version
1672        self.upgrade_settings = upgrade_settings
1673        self.provisioning_state = None
1674        self.availability_zones = availability_zones
1675        self.enable_node_public_ip = enable_node_public_ip
1676        self.scale_set_priority = scale_set_priority
1677        self.scale_set_eviction_policy = scale_set_eviction_policy
1678        self.spot_max_price = spot_max_price
1679        self.tags = tags
1680        self.node_labels = node_labels
1681        self.node_taints = node_taints
1682        self.proximity_placement_group_id = proximity_placement_group_id
1683
1684
1685class ManagedClusterAgentPoolProfile(ManagedClusterAgentPoolProfileProperties):
1686    """Profile for the container service agent pool.
1687
1688    Variables are only populated by the server, and will be ignored when sending a request.
1689
1690    All required parameters must be populated in order to send to Azure.
1691
1692    :param count: Number of agents (VMs) to host docker containers. Allowed values must be in the
1693     range of 0 to 100 (inclusive) for user pools and in the range of 1 to 100 (inclusive) for
1694     system pools. The default value is 1.
1695    :type count: int
1696    :param vm_size: Size of agent VMs. Possible values include: "Standard_A1", "Standard_A10",
1697     "Standard_A11", "Standard_A1_v2", "Standard_A2", "Standard_A2_v2", "Standard_A2m_v2",
1698     "Standard_A3", "Standard_A4", "Standard_A4_v2", "Standard_A4m_v2", "Standard_A5",
1699     "Standard_A6", "Standard_A7", "Standard_A8", "Standard_A8_v2", "Standard_A8m_v2",
1700     "Standard_A9", "Standard_B2ms", "Standard_B2s", "Standard_B4ms", "Standard_B8ms",
1701     "Standard_D1", "Standard_D11", "Standard_D11_v2", "Standard_D11_v2_Promo", "Standard_D12",
1702     "Standard_D12_v2", "Standard_D12_v2_Promo", "Standard_D13", "Standard_D13_v2",
1703     "Standard_D13_v2_Promo", "Standard_D14", "Standard_D14_v2", "Standard_D14_v2_Promo",
1704     "Standard_D15_v2", "Standard_D16_v3", "Standard_D16s_v3", "Standard_D1_v2", "Standard_D2",
1705     "Standard_D2_v2", "Standard_D2_v2_Promo", "Standard_D2_v3", "Standard_D2s_v3", "Standard_D3",
1706     "Standard_D32_v3", "Standard_D32s_v3", "Standard_D3_v2", "Standard_D3_v2_Promo", "Standard_D4",
1707     "Standard_D4_v2", "Standard_D4_v2_Promo", "Standard_D4_v3", "Standard_D4s_v3",
1708     "Standard_D5_v2", "Standard_D5_v2_Promo", "Standard_D64_v3", "Standard_D64s_v3",
1709     "Standard_D8_v3", "Standard_D8s_v3", "Standard_DS1", "Standard_DS11", "Standard_DS11_v2",
1710     "Standard_DS11_v2_Promo", "Standard_DS12", "Standard_DS12_v2", "Standard_DS12_v2_Promo",
1711     "Standard_DS13", "Standard_DS13-2_v2", "Standard_DS13-4_v2", "Standard_DS13_v2",
1712     "Standard_DS13_v2_Promo", "Standard_DS14", "Standard_DS14-4_v2", "Standard_DS14-8_v2",
1713     "Standard_DS14_v2", "Standard_DS14_v2_Promo", "Standard_DS15_v2", "Standard_DS1_v2",
1714     "Standard_DS2", "Standard_DS2_v2", "Standard_DS2_v2_Promo", "Standard_DS3", "Standard_DS3_v2",
1715     "Standard_DS3_v2_Promo", "Standard_DS4", "Standard_DS4_v2", "Standard_DS4_v2_Promo",
1716     "Standard_DS5_v2", "Standard_DS5_v2_Promo", "Standard_E16_v3", "Standard_E16s_v3",
1717     "Standard_E2_v3", "Standard_E2s_v3", "Standard_E32-16s_v3", "Standard_E32-8s_v3",
1718     "Standard_E32_v3", "Standard_E32s_v3", "Standard_E4_v3", "Standard_E4s_v3",
1719     "Standard_E64-16s_v3", "Standard_E64-32s_v3", "Standard_E64_v3", "Standard_E64s_v3",
1720     "Standard_E8_v3", "Standard_E8s_v3", "Standard_F1", "Standard_F16", "Standard_F16s",
1721     "Standard_F16s_v2", "Standard_F1s", "Standard_F2", "Standard_F2s", "Standard_F2s_v2",
1722     "Standard_F32s_v2", "Standard_F4", "Standard_F4s", "Standard_F4s_v2", "Standard_F64s_v2",
1723     "Standard_F72s_v2", "Standard_F8", "Standard_F8s", "Standard_F8s_v2", "Standard_G1",
1724     "Standard_G2", "Standard_G3", "Standard_G4", "Standard_G5", "Standard_GS1", "Standard_GS2",
1725     "Standard_GS3", "Standard_GS4", "Standard_GS4-4", "Standard_GS4-8", "Standard_GS5",
1726     "Standard_GS5-16", "Standard_GS5-8", "Standard_H16", "Standard_H16m", "Standard_H16mr",
1727     "Standard_H16r", "Standard_H8", "Standard_H8m", "Standard_L16s", "Standard_L32s",
1728     "Standard_L4s", "Standard_L8s", "Standard_M128-32ms", "Standard_M128-64ms", "Standard_M128ms",
1729     "Standard_M128s", "Standard_M64-16ms", "Standard_M64-32ms", "Standard_M64ms", "Standard_M64s",
1730     "Standard_NC12", "Standard_NC12s_v2", "Standard_NC12s_v3", "Standard_NC24", "Standard_NC24r",
1731     "Standard_NC24rs_v2", "Standard_NC24rs_v3", "Standard_NC24s_v2", "Standard_NC24s_v3",
1732     "Standard_NC6", "Standard_NC6s_v2", "Standard_NC6s_v3", "Standard_ND12s", "Standard_ND24rs",
1733     "Standard_ND24s", "Standard_ND6s", "Standard_NV12", "Standard_NV24", "Standard_NV6".
1734    :type vm_size: str or
1735     ~azure.mgmt.containerservice.v2020_06_01.models.ContainerServiceVMSizeTypes
1736    :param os_disk_size_gb: OS Disk Size in GB to be used to specify the disk size for every
1737     machine in this master/agent pool. If you specify 0, it will apply the default osDisk size
1738     according to the vmSize specified.
1739    :type os_disk_size_gb: int
1740    :param vnet_subnet_id: VNet SubnetID specifies the VNet's subnet identifier.
1741    :type vnet_subnet_id: str
1742    :param max_pods: Maximum number of pods that can run on a node.
1743    :type max_pods: int
1744    :param os_type: OsType to be used to specify os type. Choose from Linux and Windows. Default to
1745     Linux. Possible values include: "Linux", "Windows". Default value: "Linux".
1746    :type os_type: str or ~azure.mgmt.containerservice.v2020_06_01.models.OSType
1747    :param max_count: Maximum number of nodes for auto-scaling.
1748    :type max_count: int
1749    :param min_count: Minimum number of nodes for auto-scaling.
1750    :type min_count: int
1751    :param enable_auto_scaling: Whether to enable auto-scaler.
1752    :type enable_auto_scaling: bool
1753    :param type: AgentPoolType represents types of an agent pool. Possible values include:
1754     "VirtualMachineScaleSets", "AvailabilitySet".
1755    :type type: str or ~azure.mgmt.containerservice.v2020_06_01.models.AgentPoolType
1756    :param mode: AgentPoolMode represents mode of an agent pool. Possible values include: "System",
1757     "User".
1758    :type mode: str or ~azure.mgmt.containerservice.v2020_06_01.models.AgentPoolMode
1759    :param orchestrator_version: Version of orchestrator specified when creating the managed
1760     cluster.
1761    :type orchestrator_version: str
1762    :param node_image_version: Version of node image.
1763    :type node_image_version: str
1764    :param upgrade_settings: Settings for upgrading the agentpool.
1765    :type upgrade_settings:
1766     ~azure.mgmt.containerservice.v2020_06_01.models.AgentPoolUpgradeSettings
1767    :ivar provisioning_state: The current deployment or provisioning state, which only appears in
1768     the response.
1769    :vartype provisioning_state: str
1770    :param availability_zones: Availability zones for nodes. Must use VirtualMachineScaleSets
1771     AgentPoolType.
1772    :type availability_zones: list[str]
1773    :param enable_node_public_ip: Enable public IP for nodes.
1774    :type enable_node_public_ip: bool
1775    :param scale_set_priority: ScaleSetPriority to be used to specify virtual machine scale set
1776     priority. Default to regular. Possible values include: "Spot", "Regular". Default value:
1777     "Regular".
1778    :type scale_set_priority: str or
1779     ~azure.mgmt.containerservice.v2020_06_01.models.ScaleSetPriority
1780    :param scale_set_eviction_policy: ScaleSetEvictionPolicy to be used to specify eviction policy
1781     for Spot virtual machine scale set. Default to Delete. Possible values include: "Delete",
1782     "Deallocate". Default value: "Delete".
1783    :type scale_set_eviction_policy: str or
1784     ~azure.mgmt.containerservice.v2020_06_01.models.ScaleSetEvictionPolicy
1785    :param spot_max_price: SpotMaxPrice to be used to specify the maximum price you are willing to
1786     pay in US Dollars. Possible values are any decimal value greater than zero or -1 which
1787     indicates default price to be up-to on-demand.
1788    :type spot_max_price: float
1789    :param tags: A set of tags. Agent pool tags to be persisted on the agent pool virtual machine
1790     scale set.
1791    :type tags: dict[str, str]
1792    :param node_labels: Agent pool node labels to be persisted across all nodes in agent pool.
1793    :type node_labels: dict[str, str]
1794    :param node_taints: Taints added to new nodes during node pool create and scale. For example,
1795     key=value:NoSchedule.
1796    :type node_taints: list[str]
1797    :param proximity_placement_group_id: The ID for Proximity Placement Group.
1798    :type proximity_placement_group_id: str
1799    :param name: Required. Unique name of the agent pool profile in the context of the subscription
1800     and resource group.
1801    :type name: str
1802    """
1803
1804    _validation = {
1805        'os_disk_size_gb': {'maximum': 1023, 'minimum': 0},
1806        'provisioning_state': {'readonly': True},
1807        'name': {'required': True, 'pattern': r'^[a-z][a-z0-9]{0,11}$'},
1808    }
1809
1810    _attribute_map = {
1811        'count': {'key': 'count', 'type': 'int'},
1812        'vm_size': {'key': 'vmSize', 'type': 'str'},
1813        'os_disk_size_gb': {'key': 'osDiskSizeGB', 'type': 'int'},
1814        'vnet_subnet_id': {'key': 'vnetSubnetID', 'type': 'str'},
1815        'max_pods': {'key': 'maxPods', 'type': 'int'},
1816        'os_type': {'key': 'osType', 'type': 'str'},
1817        'max_count': {'key': 'maxCount', 'type': 'int'},
1818        'min_count': {'key': 'minCount', 'type': 'int'},
1819        'enable_auto_scaling': {'key': 'enableAutoScaling', 'type': 'bool'},
1820        'type': {'key': 'type', 'type': 'str'},
1821        'mode': {'key': 'mode', 'type': 'str'},
1822        'orchestrator_version': {'key': 'orchestratorVersion', 'type': 'str'},
1823        'node_image_version': {'key': 'nodeImageVersion', 'type': 'str'},
1824        'upgrade_settings': {'key': 'upgradeSettings', 'type': 'AgentPoolUpgradeSettings'},
1825        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
1826        'availability_zones': {'key': 'availabilityZones', 'type': '[str]'},
1827        'enable_node_public_ip': {'key': 'enableNodePublicIP', 'type': 'bool'},
1828        'scale_set_priority': {'key': 'scaleSetPriority', 'type': 'str'},
1829        'scale_set_eviction_policy': {'key': 'scaleSetEvictionPolicy', 'type': 'str'},
1830        'spot_max_price': {'key': 'spotMaxPrice', 'type': 'float'},
1831        'tags': {'key': 'tags', 'type': '{str}'},
1832        'node_labels': {'key': 'nodeLabels', 'type': '{str}'},
1833        'node_taints': {'key': 'nodeTaints', 'type': '[str]'},
1834        'proximity_placement_group_id': {'key': 'proximityPlacementGroupID', 'type': 'str'},
1835        'name': {'key': 'name', 'type': 'str'},
1836    }
1837
1838    def __init__(
1839        self,
1840        *,
1841        name: str,
1842        count: Optional[int] = None,
1843        vm_size: Optional[Union[str, "ContainerServiceVMSizeTypes"]] = None,
1844        os_disk_size_gb: Optional[int] = None,
1845        vnet_subnet_id: Optional[str] = None,
1846        max_pods: Optional[int] = None,
1847        os_type: Optional[Union[str, "OSType"]] = "Linux",
1848        max_count: Optional[int] = None,
1849        min_count: Optional[int] = None,
1850        enable_auto_scaling: Optional[bool] = None,
1851        type: Optional[Union[str, "AgentPoolType"]] = None,
1852        mode: Optional[Union[str, "AgentPoolMode"]] = None,
1853        orchestrator_version: Optional[str] = None,
1854        node_image_version: Optional[str] = None,
1855        upgrade_settings: Optional["AgentPoolUpgradeSettings"] = None,
1856        availability_zones: Optional[List[str]] = None,
1857        enable_node_public_ip: Optional[bool] = None,
1858        scale_set_priority: Optional[Union[str, "ScaleSetPriority"]] = "Regular",
1859        scale_set_eviction_policy: Optional[Union[str, "ScaleSetEvictionPolicy"]] = "Delete",
1860        spot_max_price: Optional[float] = -1,
1861        tags: Optional[Dict[str, str]] = None,
1862        node_labels: Optional[Dict[str, str]] = None,
1863        node_taints: Optional[List[str]] = None,
1864        proximity_placement_group_id: Optional[str] = None,
1865        **kwargs
1866    ):
1867        super(ManagedClusterAgentPoolProfile, self).__init__(count=count, vm_size=vm_size, os_disk_size_gb=os_disk_size_gb, vnet_subnet_id=vnet_subnet_id, max_pods=max_pods, os_type=os_type, max_count=max_count, min_count=min_count, enable_auto_scaling=enable_auto_scaling, type=type, mode=mode, orchestrator_version=orchestrator_version, node_image_version=node_image_version, upgrade_settings=upgrade_settings, availability_zones=availability_zones, enable_node_public_ip=enable_node_public_ip, scale_set_priority=scale_set_priority, scale_set_eviction_policy=scale_set_eviction_policy, spot_max_price=spot_max_price, tags=tags, node_labels=node_labels, node_taints=node_taints, proximity_placement_group_id=proximity_placement_group_id, **kwargs)
1868        self.name = name
1869
1870
1871class ManagedClusterAPIServerAccessProfile(msrest.serialization.Model):
1872    """Access profile for managed cluster API server.
1873
1874    :param authorized_ip_ranges: Authorized IP Ranges to kubernetes API server.
1875    :type authorized_ip_ranges: list[str]
1876    :param enable_private_cluster: Whether to create the cluster as a private cluster or not.
1877    :type enable_private_cluster: bool
1878    """
1879
1880    _attribute_map = {
1881        'authorized_ip_ranges': {'key': 'authorizedIPRanges', 'type': '[str]'},
1882        'enable_private_cluster': {'key': 'enablePrivateCluster', 'type': 'bool'},
1883    }
1884
1885    def __init__(
1886        self,
1887        *,
1888        authorized_ip_ranges: Optional[List[str]] = None,
1889        enable_private_cluster: Optional[bool] = None,
1890        **kwargs
1891    ):
1892        super(ManagedClusterAPIServerAccessProfile, self).__init__(**kwargs)
1893        self.authorized_ip_ranges = authorized_ip_ranges
1894        self.enable_private_cluster = enable_private_cluster
1895
1896
1897class ManagedClusterIdentity(msrest.serialization.Model):
1898    """Identity for the managed cluster.
1899
1900    Variables are only populated by the server, and will be ignored when sending a request.
1901
1902    :ivar principal_id: The principal id of the system assigned identity which is used by master
1903     components.
1904    :vartype principal_id: str
1905    :ivar tenant_id: The tenant id of the system assigned identity which is used by master
1906     components.
1907    :vartype tenant_id: str
1908    :param type: The type of identity used for the managed cluster. Type 'SystemAssigned' will use
1909     an implicitly created identity in master components and an auto-created user assigned identity
1910     in MC_ resource group in agent nodes. Type 'None' will not use MSI for the managed cluster,
1911     service principal will be used instead. Possible values include: "SystemAssigned",
1912     "UserAssigned", "None".
1913    :type type: str or ~azure.mgmt.containerservice.v2020_06_01.models.ResourceIdentityType
1914    :param user_assigned_identities: The user identity associated with the managed cluster. This
1915     identity will be used in control plane and only one user assigned identity is allowed. The user
1916     identity dictionary key references will be ARM resource ids in the form:
1917     '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.
1918    :type user_assigned_identities: dict[str,
1919     ~azure.mgmt.containerservice.v2020_06_01.models.ManagedClusterIdentityUserAssignedIdentitiesValue]
1920    """
1921
1922    _validation = {
1923        'principal_id': {'readonly': True},
1924        'tenant_id': {'readonly': True},
1925    }
1926
1927    _attribute_map = {
1928        'principal_id': {'key': 'principalId', 'type': 'str'},
1929        'tenant_id': {'key': 'tenantId', 'type': 'str'},
1930        'type': {'key': 'type', 'type': 'str'},
1931        'user_assigned_identities': {'key': 'userAssignedIdentities', 'type': '{ManagedClusterIdentityUserAssignedIdentitiesValue}'},
1932    }
1933
1934    def __init__(
1935        self,
1936        *,
1937        type: Optional[Union[str, "ResourceIdentityType"]] = None,
1938        user_assigned_identities: Optional[Dict[str, "ManagedClusterIdentityUserAssignedIdentitiesValue"]] = None,
1939        **kwargs
1940    ):
1941        super(ManagedClusterIdentity, self).__init__(**kwargs)
1942        self.principal_id = None
1943        self.tenant_id = None
1944        self.type = type
1945        self.user_assigned_identities = user_assigned_identities
1946
1947
1948class ManagedClusterIdentityUserAssignedIdentitiesValue(msrest.serialization.Model):
1949    """ManagedClusterIdentityUserAssignedIdentitiesValue.
1950
1951    Variables are only populated by the server, and will be ignored when sending a request.
1952
1953    :ivar principal_id: The principal id of user assigned identity.
1954    :vartype principal_id: str
1955    :ivar client_id: The client id of user assigned identity.
1956    :vartype client_id: str
1957    """
1958
1959    _validation = {
1960        'principal_id': {'readonly': True},
1961        'client_id': {'readonly': True},
1962    }
1963
1964    _attribute_map = {
1965        'principal_id': {'key': 'principalId', 'type': 'str'},
1966        'client_id': {'key': 'clientId', 'type': 'str'},
1967    }
1968
1969    def __init__(
1970        self,
1971        **kwargs
1972    ):
1973        super(ManagedClusterIdentityUserAssignedIdentitiesValue, self).__init__(**kwargs)
1974        self.principal_id = None
1975        self.client_id = None
1976
1977
1978class ManagedClusterListResult(msrest.serialization.Model):
1979    """The response from the List Managed Clusters operation.
1980
1981    Variables are only populated by the server, and will be ignored when sending a request.
1982
1983    :param value: The list of managed clusters.
1984    :type value: list[~azure.mgmt.containerservice.v2020_06_01.models.ManagedCluster]
1985    :ivar next_link: The URL to get the next set of managed cluster results.
1986    :vartype next_link: str
1987    """
1988
1989    _validation = {
1990        'next_link': {'readonly': True},
1991    }
1992
1993    _attribute_map = {
1994        'value': {'key': 'value', 'type': '[ManagedCluster]'},
1995        'next_link': {'key': 'nextLink', 'type': 'str'},
1996    }
1997
1998    def __init__(
1999        self,
2000        *,
2001        value: Optional[List["ManagedCluster"]] = None,
2002        **kwargs
2003    ):
2004        super(ManagedClusterListResult, self).__init__(**kwargs)
2005        self.value = value
2006        self.next_link = None
2007
2008
2009class ManagedClusterLoadBalancerProfile(msrest.serialization.Model):
2010    """Profile of the managed cluster load balancer.
2011
2012    :param managed_outbound_i_ps: Desired managed outbound IPs for the cluster load balancer.
2013    :type managed_outbound_i_ps:
2014     ~azure.mgmt.containerservice.v2020_06_01.models.ManagedClusterLoadBalancerProfileManagedOutboundIPs
2015    :param outbound_ip_prefixes: Desired outbound IP Prefix resources for the cluster load
2016     balancer.
2017    :type outbound_ip_prefixes:
2018     ~azure.mgmt.containerservice.v2020_06_01.models.ManagedClusterLoadBalancerProfileOutboundIPPrefixes
2019    :param outbound_i_ps: Desired outbound IP resources for the cluster load balancer.
2020    :type outbound_i_ps:
2021     ~azure.mgmt.containerservice.v2020_06_01.models.ManagedClusterLoadBalancerProfileOutboundIPs
2022    :param effective_outbound_i_ps: The effective outbound IP resources of the cluster load
2023     balancer.
2024    :type effective_outbound_i_ps:
2025     list[~azure.mgmt.containerservice.v2020_06_01.models.ResourceReference]
2026    :param allocated_outbound_ports: Desired number of allocated SNAT ports per VM. Allowed values
2027     must be in the range of 0 to 64000 (inclusive). The default value is 0 which results in Azure
2028     dynamically allocating ports.
2029    :type allocated_outbound_ports: int
2030    :param idle_timeout_in_minutes: Desired outbound flow idle timeout in minutes. Allowed values
2031     must be in the range of 4 to 120 (inclusive). The default value is 30 minutes.
2032    :type idle_timeout_in_minutes: int
2033    """
2034
2035    _validation = {
2036        'allocated_outbound_ports': {'maximum': 64000, 'minimum': 0},
2037        'idle_timeout_in_minutes': {'maximum': 120, 'minimum': 4},
2038    }
2039
2040    _attribute_map = {
2041        'managed_outbound_i_ps': {'key': 'managedOutboundIPs', 'type': 'ManagedClusterLoadBalancerProfileManagedOutboundIPs'},
2042        'outbound_ip_prefixes': {'key': 'outboundIPPrefixes', 'type': 'ManagedClusterLoadBalancerProfileOutboundIPPrefixes'},
2043        'outbound_i_ps': {'key': 'outboundIPs', 'type': 'ManagedClusterLoadBalancerProfileOutboundIPs'},
2044        'effective_outbound_i_ps': {'key': 'effectiveOutboundIPs', 'type': '[ResourceReference]'},
2045        'allocated_outbound_ports': {'key': 'allocatedOutboundPorts', 'type': 'int'},
2046        'idle_timeout_in_minutes': {'key': 'idleTimeoutInMinutes', 'type': 'int'},
2047    }
2048
2049    def __init__(
2050        self,
2051        *,
2052        managed_outbound_i_ps: Optional["ManagedClusterLoadBalancerProfileManagedOutboundIPs"] = None,
2053        outbound_ip_prefixes: Optional["ManagedClusterLoadBalancerProfileOutboundIPPrefixes"] = None,
2054        outbound_i_ps: Optional["ManagedClusterLoadBalancerProfileOutboundIPs"] = None,
2055        effective_outbound_i_ps: Optional[List["ResourceReference"]] = None,
2056        allocated_outbound_ports: Optional[int] = 0,
2057        idle_timeout_in_minutes: Optional[int] = 30,
2058        **kwargs
2059    ):
2060        super(ManagedClusterLoadBalancerProfile, self).__init__(**kwargs)
2061        self.managed_outbound_i_ps = managed_outbound_i_ps
2062        self.outbound_ip_prefixes = outbound_ip_prefixes
2063        self.outbound_i_ps = outbound_i_ps
2064        self.effective_outbound_i_ps = effective_outbound_i_ps
2065        self.allocated_outbound_ports = allocated_outbound_ports
2066        self.idle_timeout_in_minutes = idle_timeout_in_minutes
2067
2068
2069class ManagedClusterLoadBalancerProfileManagedOutboundIPs(msrest.serialization.Model):
2070    """Desired managed outbound IPs for the cluster load balancer.
2071
2072    :param count: Desired number of outbound IP created/managed by Azure for the cluster load
2073     balancer. Allowed values must be in the range of 1 to 100 (inclusive). The default value is 1.
2074    :type count: int
2075    """
2076
2077    _validation = {
2078        'count': {'maximum': 100, 'minimum': 1},
2079    }
2080
2081    _attribute_map = {
2082        'count': {'key': 'count', 'type': 'int'},
2083    }
2084
2085    def __init__(
2086        self,
2087        *,
2088        count: Optional[int] = 1,
2089        **kwargs
2090    ):
2091        super(ManagedClusterLoadBalancerProfileManagedOutboundIPs, self).__init__(**kwargs)
2092        self.count = count
2093
2094
2095class ManagedClusterLoadBalancerProfileOutboundIPPrefixes(msrest.serialization.Model):
2096    """Desired outbound IP Prefix resources for the cluster load balancer.
2097
2098    :param public_ip_prefixes: A list of public IP prefix resources.
2099    :type public_ip_prefixes:
2100     list[~azure.mgmt.containerservice.v2020_06_01.models.ResourceReference]
2101    """
2102
2103    _attribute_map = {
2104        'public_ip_prefixes': {'key': 'publicIPPrefixes', 'type': '[ResourceReference]'},
2105    }
2106
2107    def __init__(
2108        self,
2109        *,
2110        public_ip_prefixes: Optional[List["ResourceReference"]] = None,
2111        **kwargs
2112    ):
2113        super(ManagedClusterLoadBalancerProfileOutboundIPPrefixes, self).__init__(**kwargs)
2114        self.public_ip_prefixes = public_ip_prefixes
2115
2116
2117class ManagedClusterLoadBalancerProfileOutboundIPs(msrest.serialization.Model):
2118    """Desired outbound IP resources for the cluster load balancer.
2119
2120    :param public_i_ps: A list of public IP resources.
2121    :type public_i_ps: list[~azure.mgmt.containerservice.v2020_06_01.models.ResourceReference]
2122    """
2123
2124    _attribute_map = {
2125        'public_i_ps': {'key': 'publicIPs', 'type': '[ResourceReference]'},
2126    }
2127
2128    def __init__(
2129        self,
2130        *,
2131        public_i_ps: Optional[List["ResourceReference"]] = None,
2132        **kwargs
2133    ):
2134        super(ManagedClusterLoadBalancerProfileOutboundIPs, self).__init__(**kwargs)
2135        self.public_i_ps = public_i_ps
2136
2137
2138class ManagedClusterPoolUpgradeProfile(msrest.serialization.Model):
2139    """The list of available upgrade versions.
2140
2141    All required parameters must be populated in order to send to Azure.
2142
2143    :param kubernetes_version: Required. Kubernetes version (major, minor, patch).
2144    :type kubernetes_version: str
2145    :param name: Pool name.
2146    :type name: str
2147    :param os_type: Required. OsType to be used to specify os type. Choose from Linux and Windows.
2148     Default to Linux. Possible values include: "Linux", "Windows". Default value: "Linux".
2149    :type os_type: str or ~azure.mgmt.containerservice.v2020_06_01.models.OSType
2150    :param upgrades: List of orchestrator types and versions available for upgrade.
2151    :type upgrades:
2152     list[~azure.mgmt.containerservice.v2020_06_01.models.ManagedClusterPoolUpgradeProfileUpgradesItem]
2153    """
2154
2155    _validation = {
2156        'kubernetes_version': {'required': True},
2157        'os_type': {'required': True},
2158    }
2159
2160    _attribute_map = {
2161        'kubernetes_version': {'key': 'kubernetesVersion', 'type': 'str'},
2162        'name': {'key': 'name', 'type': 'str'},
2163        'os_type': {'key': 'osType', 'type': 'str'},
2164        'upgrades': {'key': 'upgrades', 'type': '[ManagedClusterPoolUpgradeProfileUpgradesItem]'},
2165    }
2166
2167    def __init__(
2168        self,
2169        *,
2170        kubernetes_version: str,
2171        os_type: Union[str, "OSType"] = "Linux",
2172        name: Optional[str] = None,
2173        upgrades: Optional[List["ManagedClusterPoolUpgradeProfileUpgradesItem"]] = None,
2174        **kwargs
2175    ):
2176        super(ManagedClusterPoolUpgradeProfile, self).__init__(**kwargs)
2177        self.kubernetes_version = kubernetes_version
2178        self.name = name
2179        self.os_type = os_type
2180        self.upgrades = upgrades
2181
2182
2183class ManagedClusterPoolUpgradeProfileUpgradesItem(msrest.serialization.Model):
2184    """ManagedClusterPoolUpgradeProfileUpgradesItem.
2185
2186    :param kubernetes_version: Kubernetes version (major, minor, patch).
2187    :type kubernetes_version: str
2188    :param is_preview: Whether Kubernetes version is currently in preview.
2189    :type is_preview: bool
2190    """
2191
2192    _attribute_map = {
2193        'kubernetes_version': {'key': 'kubernetesVersion', 'type': 'str'},
2194        'is_preview': {'key': 'isPreview', 'type': 'bool'},
2195    }
2196
2197    def __init__(
2198        self,
2199        *,
2200        kubernetes_version: Optional[str] = None,
2201        is_preview: Optional[bool] = None,
2202        **kwargs
2203    ):
2204        super(ManagedClusterPoolUpgradeProfileUpgradesItem, self).__init__(**kwargs)
2205        self.kubernetes_version = kubernetes_version
2206        self.is_preview = is_preview
2207
2208
2209class ManagedClusterPropertiesAutoScalerProfile(msrest.serialization.Model):
2210    """Parameters to be applied to the cluster-autoscaler when enabled.
2211
2212    :param balance_similar_node_groups:
2213    :type balance_similar_node_groups: str
2214    :param scan_interval:
2215    :type scan_interval: str
2216    :param scale_down_delay_after_add:
2217    :type scale_down_delay_after_add: str
2218    :param scale_down_delay_after_delete:
2219    :type scale_down_delay_after_delete: str
2220    :param scale_down_delay_after_failure:
2221    :type scale_down_delay_after_failure: str
2222    :param scale_down_unneeded_time:
2223    :type scale_down_unneeded_time: str
2224    :param scale_down_unready_time:
2225    :type scale_down_unready_time: str
2226    :param scale_down_utilization_threshold:
2227    :type scale_down_utilization_threshold: str
2228    :param max_graceful_termination_sec:
2229    :type max_graceful_termination_sec: str
2230    """
2231
2232    _attribute_map = {
2233        'balance_similar_node_groups': {'key': 'balance-similar-node-groups', 'type': 'str'},
2234        'scan_interval': {'key': 'scan-interval', 'type': 'str'},
2235        'scale_down_delay_after_add': {'key': 'scale-down-delay-after-add', 'type': 'str'},
2236        'scale_down_delay_after_delete': {'key': 'scale-down-delay-after-delete', 'type': 'str'},
2237        'scale_down_delay_after_failure': {'key': 'scale-down-delay-after-failure', 'type': 'str'},
2238        'scale_down_unneeded_time': {'key': 'scale-down-unneeded-time', 'type': 'str'},
2239        'scale_down_unready_time': {'key': 'scale-down-unready-time', 'type': 'str'},
2240        'scale_down_utilization_threshold': {'key': 'scale-down-utilization-threshold', 'type': 'str'},
2241        'max_graceful_termination_sec': {'key': 'max-graceful-termination-sec', 'type': 'str'},
2242    }
2243
2244    def __init__(
2245        self,
2246        *,
2247        balance_similar_node_groups: Optional[str] = None,
2248        scan_interval: Optional[str] = None,
2249        scale_down_delay_after_add: Optional[str] = None,
2250        scale_down_delay_after_delete: Optional[str] = None,
2251        scale_down_delay_after_failure: Optional[str] = None,
2252        scale_down_unneeded_time: Optional[str] = None,
2253        scale_down_unready_time: Optional[str] = None,
2254        scale_down_utilization_threshold: Optional[str] = None,
2255        max_graceful_termination_sec: Optional[str] = None,
2256        **kwargs
2257    ):
2258        super(ManagedClusterPropertiesAutoScalerProfile, self).__init__(**kwargs)
2259        self.balance_similar_node_groups = balance_similar_node_groups
2260        self.scan_interval = scan_interval
2261        self.scale_down_delay_after_add = scale_down_delay_after_add
2262        self.scale_down_delay_after_delete = scale_down_delay_after_delete
2263        self.scale_down_delay_after_failure = scale_down_delay_after_failure
2264        self.scale_down_unneeded_time = scale_down_unneeded_time
2265        self.scale_down_unready_time = scale_down_unready_time
2266        self.scale_down_utilization_threshold = scale_down_utilization_threshold
2267        self.max_graceful_termination_sec = max_graceful_termination_sec
2268
2269
2270class ManagedClusterPropertiesIdentityProfileValue(UserAssignedIdentity):
2271    """ManagedClusterPropertiesIdentityProfileValue.
2272
2273    :param resource_id: The resource id of the user assigned identity.
2274    :type resource_id: str
2275    :param client_id: The client id of the user assigned identity.
2276    :type client_id: str
2277    :param object_id: The object id of the user assigned identity.
2278    :type object_id: str
2279    """
2280
2281    _attribute_map = {
2282        'resource_id': {'key': 'resourceId', 'type': 'str'},
2283        'client_id': {'key': 'clientId', 'type': 'str'},
2284        'object_id': {'key': 'objectId', 'type': 'str'},
2285    }
2286
2287    def __init__(
2288        self,
2289        *,
2290        resource_id: Optional[str] = None,
2291        client_id: Optional[str] = None,
2292        object_id: Optional[str] = None,
2293        **kwargs
2294    ):
2295        super(ManagedClusterPropertiesIdentityProfileValue, self).__init__(resource_id=resource_id, client_id=client_id, object_id=object_id, **kwargs)
2296
2297
2298class ManagedClusterServicePrincipalProfile(msrest.serialization.Model):
2299    """Information about a service principal identity for the cluster to use for manipulating Azure APIs.
2300
2301    All required parameters must be populated in order to send to Azure.
2302
2303    :param client_id: Required. The ID for the service principal.
2304    :type client_id: str
2305    :param secret: The secret password associated with the service principal in plain text.
2306    :type secret: str
2307    """
2308
2309    _validation = {
2310        'client_id': {'required': True},
2311    }
2312
2313    _attribute_map = {
2314        'client_id': {'key': 'clientId', 'type': 'str'},
2315        'secret': {'key': 'secret', 'type': 'str'},
2316    }
2317
2318    def __init__(
2319        self,
2320        *,
2321        client_id: str,
2322        secret: Optional[str] = None,
2323        **kwargs
2324    ):
2325        super(ManagedClusterServicePrincipalProfile, self).__init__(**kwargs)
2326        self.client_id = client_id
2327        self.secret = secret
2328
2329
2330class ManagedClusterSKU(msrest.serialization.Model):
2331    """ManagedClusterSKU.
2332
2333    :param name: Name of a managed cluster SKU. Possible values include: "Basic".
2334    :type name: str or ~azure.mgmt.containerservice.v2020_06_01.models.ManagedClusterSKUName
2335    :param tier: Tier of a managed cluster SKU. Possible values include: "Paid", "Free".
2336    :type tier: str or ~azure.mgmt.containerservice.v2020_06_01.models.ManagedClusterSKUTier
2337    """
2338
2339    _attribute_map = {
2340        'name': {'key': 'name', 'type': 'str'},
2341        'tier': {'key': 'tier', 'type': 'str'},
2342    }
2343
2344    def __init__(
2345        self,
2346        *,
2347        name: Optional[Union[str, "ManagedClusterSKUName"]] = None,
2348        tier: Optional[Union[str, "ManagedClusterSKUTier"]] = None,
2349        **kwargs
2350    ):
2351        super(ManagedClusterSKU, self).__init__(**kwargs)
2352        self.name = name
2353        self.tier = tier
2354
2355
2356class ManagedClusterUpgradeProfile(msrest.serialization.Model):
2357    """The list of available upgrades for compute pools.
2358
2359    Variables are only populated by the server, and will be ignored when sending a request.
2360
2361    All required parameters must be populated in order to send to Azure.
2362
2363    :ivar id: Id of upgrade profile.
2364    :vartype id: str
2365    :ivar name: Name of upgrade profile.
2366    :vartype name: str
2367    :ivar type: Type of upgrade profile.
2368    :vartype type: str
2369    :param control_plane_profile: Required. The list of available upgrade versions for the control
2370     plane.
2371    :type control_plane_profile:
2372     ~azure.mgmt.containerservice.v2020_06_01.models.ManagedClusterPoolUpgradeProfile
2373    :param agent_pool_profiles: Required. The list of available upgrade versions for agent pools.
2374    :type agent_pool_profiles:
2375     list[~azure.mgmt.containerservice.v2020_06_01.models.ManagedClusterPoolUpgradeProfile]
2376    """
2377
2378    _validation = {
2379        'id': {'readonly': True},
2380        'name': {'readonly': True},
2381        'type': {'readonly': True},
2382        'control_plane_profile': {'required': True},
2383        'agent_pool_profiles': {'required': True},
2384    }
2385
2386    _attribute_map = {
2387        'id': {'key': 'id', 'type': 'str'},
2388        'name': {'key': 'name', 'type': 'str'},
2389        'type': {'key': 'type', 'type': 'str'},
2390        'control_plane_profile': {'key': 'properties.controlPlaneProfile', 'type': 'ManagedClusterPoolUpgradeProfile'},
2391        'agent_pool_profiles': {'key': 'properties.agentPoolProfiles', 'type': '[ManagedClusterPoolUpgradeProfile]'},
2392    }
2393
2394    def __init__(
2395        self,
2396        *,
2397        control_plane_profile: "ManagedClusterPoolUpgradeProfile",
2398        agent_pool_profiles: List["ManagedClusterPoolUpgradeProfile"],
2399        **kwargs
2400    ):
2401        super(ManagedClusterUpgradeProfile, self).__init__(**kwargs)
2402        self.id = None
2403        self.name = None
2404        self.type = None
2405        self.control_plane_profile = control_plane_profile
2406        self.agent_pool_profiles = agent_pool_profiles
2407
2408
2409class ManagedClusterWindowsProfile(msrest.serialization.Model):
2410    """Profile for Windows VMs in the container service cluster.
2411
2412    All required parameters must be populated in order to send to Azure.
2413
2414    :param admin_username: Required. Specifies the name of the administrator account.
2415     :code:`<br>`:code:`<br>` **restriction:** Cannot end in "." :code:`<br>`:code:`<br>`
2416     **Disallowed values:** "administrator", "admin", "user", "user1", "test", "user2", "test1",
2417     "user3", "admin1", "1", "123", "a", "actuser", "adm", "admin2", "aspnet", "backup", "console",
2418     "david", "guest", "john", "owner", "root", "server", "sql", "support", "support_388945a0",
2419     "sys", "test2", "test3", "user4", "user5". :code:`<br>`:code:`<br>` **Minimum-length:** 1
2420     character :code:`<br>`:code:`<br>` **Max-length:** 20 characters.
2421    :type admin_username: str
2422    :param admin_password: Specifies the password of the administrator account.
2423     :code:`<br>`:code:`<br>` **Minimum-length:** 8 characters :code:`<br>`:code:`<br>`
2424     **Max-length:** 123 characters :code:`<br>`:code:`<br>` **Complexity requirements:** 3 out of 4
2425     conditions below need to be fulfilled :code:`<br>` Has lower characters :code:`<br>`Has upper
2426     characters :code:`<br>` Has a digit :code:`<br>` Has a special character (Regex match [\W_])
2427     :code:`<br>`:code:`<br>` **Disallowed values:** "abc@123", "P@$$w0rd", "P@ssw0rd",
2428     "P@ssword123", "Pa$$word", "pass@word1", "Password!", "Password1", "Password22", "iloveyou!".
2429    :type admin_password: str
2430    """
2431
2432    _validation = {
2433        'admin_username': {'required': True},
2434    }
2435
2436    _attribute_map = {
2437        'admin_username': {'key': 'adminUsername', 'type': 'str'},
2438        'admin_password': {'key': 'adminPassword', 'type': 'str'},
2439    }
2440
2441    def __init__(
2442        self,
2443        *,
2444        admin_username: str,
2445        admin_password: Optional[str] = None,
2446        **kwargs
2447    ):
2448        super(ManagedClusterWindowsProfile, self).__init__(**kwargs)
2449        self.admin_username = admin_username
2450        self.admin_password = admin_password
2451
2452
2453class OperationListResult(msrest.serialization.Model):
2454    """The List Compute Operation operation response.
2455
2456    Variables are only populated by the server, and will be ignored when sending a request.
2457
2458    :ivar value: The list of compute operations.
2459    :vartype value: list[~azure.mgmt.containerservice.v2020_06_01.models.OperationValue]
2460    """
2461
2462    _validation = {
2463        'value': {'readonly': True},
2464    }
2465
2466    _attribute_map = {
2467        'value': {'key': 'value', 'type': '[OperationValue]'},
2468    }
2469
2470    def __init__(
2471        self,
2472        **kwargs
2473    ):
2474        super(OperationListResult, self).__init__(**kwargs)
2475        self.value = None
2476
2477
2478class OperationValue(msrest.serialization.Model):
2479    """Describes the properties of a Compute Operation value.
2480
2481    Variables are only populated by the server, and will be ignored when sending a request.
2482
2483    :ivar origin: The origin of the compute operation.
2484    :vartype origin: str
2485    :ivar name: The name of the compute operation.
2486    :vartype name: str
2487    :ivar operation: The display name of the compute operation.
2488    :vartype operation: str
2489    :ivar resource: The display name of the resource the operation applies to.
2490    :vartype resource: str
2491    :ivar description: The description of the operation.
2492    :vartype description: str
2493    :ivar provider: The resource provider for the operation.
2494    :vartype provider: str
2495    """
2496
2497    _validation = {
2498        'origin': {'readonly': True},
2499        'name': {'readonly': True},
2500        'operation': {'readonly': True},
2501        'resource': {'readonly': True},
2502        'description': {'readonly': True},
2503        'provider': {'readonly': True},
2504    }
2505
2506    _attribute_map = {
2507        'origin': {'key': 'origin', 'type': 'str'},
2508        'name': {'key': 'name', 'type': 'str'},
2509        'operation': {'key': 'display.operation', 'type': 'str'},
2510        'resource': {'key': 'display.resource', 'type': 'str'},
2511        'description': {'key': 'display.description', 'type': 'str'},
2512        'provider': {'key': 'display.provider', 'type': 'str'},
2513    }
2514
2515    def __init__(
2516        self,
2517        **kwargs
2518    ):
2519        super(OperationValue, self).__init__(**kwargs)
2520        self.origin = None
2521        self.name = None
2522        self.operation = None
2523        self.resource = None
2524        self.description = None
2525        self.provider = None
2526
2527
2528class PrivateEndpoint(msrest.serialization.Model):
2529    """Private endpoint which a connection belongs to.
2530
2531    :param id: The resource Id for private endpoint.
2532    :type id: str
2533    """
2534
2535    _attribute_map = {
2536        'id': {'key': 'id', 'type': 'str'},
2537    }
2538
2539    def __init__(
2540        self,
2541        *,
2542        id: Optional[str] = None,
2543        **kwargs
2544    ):
2545        super(PrivateEndpoint, self).__init__(**kwargs)
2546        self.id = id
2547
2548
2549class PrivateEndpointConnection(msrest.serialization.Model):
2550    """A private endpoint connection.
2551
2552    Variables are only populated by the server, and will be ignored when sending a request.
2553
2554    :ivar id: The ID of the private endpoint connection.
2555    :vartype id: str
2556    :ivar name: The name of the private endpoint connection.
2557    :vartype name: str
2558    :ivar type: The resource type.
2559    :vartype type: str
2560    :ivar provisioning_state: The current provisioning state. Possible values include: "Succeeded",
2561     "Creating", "Deleting", "Failed".
2562    :vartype provisioning_state: str or
2563     ~azure.mgmt.containerservice.v2020_06_01.models.PrivateEndpointConnectionProvisioningState
2564    :param private_endpoint: The resource of private endpoint.
2565    :type private_endpoint: ~azure.mgmt.containerservice.v2020_06_01.models.PrivateEndpoint
2566    :param private_link_service_connection_state: A collection of information about the state of
2567     the connection between service consumer and provider.
2568    :type private_link_service_connection_state:
2569     ~azure.mgmt.containerservice.v2020_06_01.models.PrivateLinkServiceConnectionState
2570    """
2571
2572    _validation = {
2573        'id': {'readonly': True},
2574        'name': {'readonly': True},
2575        'type': {'readonly': True},
2576        'provisioning_state': {'readonly': True},
2577    }
2578
2579    _attribute_map = {
2580        'id': {'key': 'id', 'type': 'str'},
2581        'name': {'key': 'name', 'type': 'str'},
2582        'type': {'key': 'type', 'type': 'str'},
2583        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2584        'private_endpoint': {'key': 'properties.privateEndpoint', 'type': 'PrivateEndpoint'},
2585        'private_link_service_connection_state': {'key': 'properties.privateLinkServiceConnectionState', 'type': 'PrivateLinkServiceConnectionState'},
2586    }
2587
2588    def __init__(
2589        self,
2590        *,
2591        private_endpoint: Optional["PrivateEndpoint"] = None,
2592        private_link_service_connection_state: Optional["PrivateLinkServiceConnectionState"] = None,
2593        **kwargs
2594    ):
2595        super(PrivateEndpointConnection, self).__init__(**kwargs)
2596        self.id = None
2597        self.name = None
2598        self.type = None
2599        self.provisioning_state = None
2600        self.private_endpoint = private_endpoint
2601        self.private_link_service_connection_state = private_link_service_connection_state
2602
2603
2604class PrivateEndpointConnectionListResult(msrest.serialization.Model):
2605    """A list of private endpoint connections.
2606
2607    :param value: The collection value.
2608    :type value: list[~azure.mgmt.containerservice.v2020_06_01.models.PrivateEndpointConnection]
2609    """
2610
2611    _attribute_map = {
2612        'value': {'key': 'value', 'type': '[PrivateEndpointConnection]'},
2613    }
2614
2615    def __init__(
2616        self,
2617        *,
2618        value: Optional[List["PrivateEndpointConnection"]] = None,
2619        **kwargs
2620    ):
2621        super(PrivateEndpointConnectionListResult, self).__init__(**kwargs)
2622        self.value = value
2623
2624
2625class PrivateLinkServiceConnectionState(msrest.serialization.Model):
2626    """The state of a private link service connection.
2627
2628    :param status: The private link service connection status. Possible values include: "Pending",
2629     "Approved", "Rejected", "Disconnected".
2630    :type status: str or ~azure.mgmt.containerservice.v2020_06_01.models.ConnectionStatus
2631    :param description: The private link service connection description.
2632    :type description: str
2633    """
2634
2635    _attribute_map = {
2636        'status': {'key': 'status', 'type': 'str'},
2637        'description': {'key': 'description', 'type': 'str'},
2638    }
2639
2640    def __init__(
2641        self,
2642        *,
2643        status: Optional[Union[str, "ConnectionStatus"]] = None,
2644        description: Optional[str] = None,
2645        **kwargs
2646    ):
2647        super(PrivateLinkServiceConnectionState, self).__init__(**kwargs)
2648        self.status = status
2649        self.description = description
2650
2651
2652class ResourceReference(msrest.serialization.Model):
2653    """A reference to an Azure resource.
2654
2655    :param id: The fully qualified Azure resource id.
2656    :type id: str
2657    """
2658
2659    _attribute_map = {
2660        'id': {'key': 'id', 'type': 'str'},
2661    }
2662
2663    def __init__(
2664        self,
2665        *,
2666        id: Optional[str] = None,
2667        **kwargs
2668    ):
2669        super(ResourceReference, self).__init__(**kwargs)
2670        self.id = id
2671
2672
2673class TagsObject(msrest.serialization.Model):
2674    """Tags object for patch operations.
2675
2676    :param tags: A set of tags. Resource tags.
2677    :type tags: dict[str, str]
2678    """
2679
2680    _attribute_map = {
2681        'tags': {'key': 'tags', 'type': '{str}'},
2682    }
2683
2684    def __init__(
2685        self,
2686        *,
2687        tags: Optional[Dict[str, str]] = None,
2688        **kwargs
2689    ):
2690        super(TagsObject, self).__init__(**kwargs)
2691        self.tags = tags
2692