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