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
9import datetime
10from typing import Dict, List, Optional, Union
11
12import msrest.serialization
13
14from ._container_service_client_enums import *
15
16
17class SubResource(msrest.serialization.Model):
18    """Reference to another subresource.
19
20    Variables are only populated by the server, and will be ignored when sending a request.
21
22    :ivar id: Resource ID.
23    :vartype id: str
24    :ivar name: The name of the resource that is unique within a resource group. This name can be
25     used to access the resource.
26    :vartype name: str
27    :ivar type: Resource type.
28    :vartype type: str
29    """
30
31    _validation = {
32        'id': {'readonly': True},
33        'name': {'readonly': True},
34        'type': {'readonly': True},
35    }
36
37    _attribute_map = {
38        'id': {'key': 'id', 'type': 'str'},
39        'name': {'key': 'name', 'type': 'str'},
40        'type': {'key': 'type', 'type': 'str'},
41    }
42
43    def __init__(
44        self,
45        **kwargs
46    ):
47        super(SubResource, self).__init__(**kwargs)
48        self.id = None
49        self.name = None
50        self.type = None
51
52
53class AgentPool(SubResource):
54    """Agent Pool.
55
56    Variables are only populated by the server, and will be ignored when sending a request.
57
58    :ivar id: Resource ID.
59    :vartype id: str
60    :ivar name: The name of the resource that is unique within a resource group. This name can be
61     used to access the resource.
62    :vartype name: str
63    :ivar type: Resource type.
64    :vartype type: str
65    :param count: Number of agents (VMs) to host docker containers. Allowed values must be in the
66     range of 0 to 100 (inclusive) for user pools and in the range of 1 to 100 (inclusive) for
67     system pools. The default value is 1.
68    :type count: int
69    :param vm_size: Size of agent VMs. Possible values include: "Standard_A1", "Standard_A10",
70     "Standard_A11", "Standard_A1_v2", "Standard_A2", "Standard_A2_v2", "Standard_A2m_v2",
71     "Standard_A3", "Standard_A4", "Standard_A4_v2", "Standard_A4m_v2", "Standard_A5",
72     "Standard_A6", "Standard_A7", "Standard_A8", "Standard_A8_v2", "Standard_A8m_v2",
73     "Standard_A9", "Standard_B2ms", "Standard_B2s", "Standard_B4ms", "Standard_B8ms",
74     "Standard_D1", "Standard_D11", "Standard_D11_v2", "Standard_D11_v2_Promo", "Standard_D12",
75     "Standard_D12_v2", "Standard_D12_v2_Promo", "Standard_D13", "Standard_D13_v2",
76     "Standard_D13_v2_Promo", "Standard_D14", "Standard_D14_v2", "Standard_D14_v2_Promo",
77     "Standard_D15_v2", "Standard_D16_v3", "Standard_D16s_v3", "Standard_D1_v2", "Standard_D2",
78     "Standard_D2_v2", "Standard_D2_v2_Promo", "Standard_D2_v3", "Standard_D2s_v3", "Standard_D3",
79     "Standard_D32_v3", "Standard_D32s_v3", "Standard_D3_v2", "Standard_D3_v2_Promo", "Standard_D4",
80     "Standard_D4_v2", "Standard_D4_v2_Promo", "Standard_D4_v3", "Standard_D4s_v3",
81     "Standard_D5_v2", "Standard_D5_v2_Promo", "Standard_D64_v3", "Standard_D64s_v3",
82     "Standard_D8_v3", "Standard_D8s_v3", "Standard_DS1", "Standard_DS11", "Standard_DS11_v2",
83     "Standard_DS11_v2_Promo", "Standard_DS12", "Standard_DS12_v2", "Standard_DS12_v2_Promo",
84     "Standard_DS13", "Standard_DS13-2_v2", "Standard_DS13-4_v2", "Standard_DS13_v2",
85     "Standard_DS13_v2_Promo", "Standard_DS14", "Standard_DS14-4_v2", "Standard_DS14-8_v2",
86     "Standard_DS14_v2", "Standard_DS14_v2_Promo", "Standard_DS15_v2", "Standard_DS1_v2",
87     "Standard_DS2", "Standard_DS2_v2", "Standard_DS2_v2_Promo", "Standard_DS3", "Standard_DS3_v2",
88     "Standard_DS3_v2_Promo", "Standard_DS4", "Standard_DS4_v2", "Standard_DS4_v2_Promo",
89     "Standard_DS5_v2", "Standard_DS5_v2_Promo", "Standard_E16_v3", "Standard_E16s_v3",
90     "Standard_E2_v3", "Standard_E2s_v3", "Standard_E32-16s_v3", "Standard_E32-8s_v3",
91     "Standard_E32_v3", "Standard_E32s_v3", "Standard_E4_v3", "Standard_E4s_v3",
92     "Standard_E64-16s_v3", "Standard_E64-32s_v3", "Standard_E64_v3", "Standard_E64s_v3",
93     "Standard_E8_v3", "Standard_E8s_v3", "Standard_F1", "Standard_F16", "Standard_F16s",
94     "Standard_F16s_v2", "Standard_F1s", "Standard_F2", "Standard_F2s", "Standard_F2s_v2",
95     "Standard_F32s_v2", "Standard_F4", "Standard_F4s", "Standard_F4s_v2", "Standard_F64s_v2",
96     "Standard_F72s_v2", "Standard_F8", "Standard_F8s", "Standard_F8s_v2", "Standard_G1",
97     "Standard_G2", "Standard_G3", "Standard_G4", "Standard_G5", "Standard_GS1", "Standard_GS2",
98     "Standard_GS3", "Standard_GS4", "Standard_GS4-4", "Standard_GS4-8", "Standard_GS5",
99     "Standard_GS5-16", "Standard_GS5-8", "Standard_H16", "Standard_H16m", "Standard_H16mr",
100     "Standard_H16r", "Standard_H8", "Standard_H8m", "Standard_L16s", "Standard_L32s",
101     "Standard_L4s", "Standard_L8s", "Standard_M128-32ms", "Standard_M128-64ms", "Standard_M128ms",
102     "Standard_M128s", "Standard_M64-16ms", "Standard_M64-32ms", "Standard_M64ms", "Standard_M64s",
103     "Standard_NC12", "Standard_NC12s_v2", "Standard_NC12s_v3", "Standard_NC24", "Standard_NC24r",
104     "Standard_NC24rs_v2", "Standard_NC24rs_v3", "Standard_NC24s_v2", "Standard_NC24s_v3",
105     "Standard_NC6", "Standard_NC6s_v2", "Standard_NC6s_v3", "Standard_ND12s", "Standard_ND24rs",
106     "Standard_ND24s", "Standard_ND6s", "Standard_NV12", "Standard_NV24", "Standard_NV6".
107    :type vm_size: str or
108     ~azure.mgmt.containerservice.v2020_12_01.models.ContainerServiceVMSizeTypes
109    :param os_disk_size_gb: OS Disk Size in GB to be used to specify the disk size for every
110     machine in this master/agent pool. If you specify 0, it will apply the default osDisk size
111     according to the vmSize specified.
112    :type os_disk_size_gb: int
113    :param os_disk_type: OS disk type to be used for machines in a given agent pool. Allowed values
114     are 'Ephemeral' and 'Managed'. If unspecified, defaults to 'Ephemeral' when the VM supports
115     ephemeral OS and has a cache disk larger than the requested OSDiskSizeGB. Otherwise, defaults
116     to 'Managed'. May not be changed after creation. Possible values include: "Managed",
117     "Ephemeral".
118    :type os_disk_type: str or ~azure.mgmt.containerservice.v2020_12_01.models.OSDiskType
119    :param kubelet_disk_type: KubeletDiskType determines the placement of emptyDir volumes,
120     container runtime data root, and Kubelet ephemeral storage. Currently allows one value, OS,
121     resulting in Kubelet using the OS disk for data. Possible values include: "OS".
122    :type kubelet_disk_type: str or ~azure.mgmt.containerservice.v2020_12_01.models.KubeletDiskType
123    :param vnet_subnet_id: VNet SubnetID specifies the VNet's subnet identifier for nodes and maybe
124     pods.
125    :type vnet_subnet_id: str
126    :param pod_subnet_id: Pod SubnetID specifies the VNet's subnet identifier for pods.
127    :type pod_subnet_id: str
128    :param max_pods: Maximum number of pods that can run on a node.
129    :type max_pods: int
130    :param os_type: OsType to be used to specify os type. Choose from Linux and Windows. Default to
131     Linux. Possible values include: "Linux", "Windows". Default value: "Linux".
132    :type os_type: str or ~azure.mgmt.containerservice.v2020_12_01.models.OSType
133    :param max_count: Maximum number of nodes for auto-scaling.
134    :type max_count: int
135    :param min_count: Minimum number of nodes for auto-scaling.
136    :type min_count: int
137    :param enable_auto_scaling: Whether to enable auto-scaler.
138    :type enable_auto_scaling: bool
139    :param type_properties_type: AgentPoolType represents types of an agent pool. Possible values
140     include: "VirtualMachineScaleSets", "AvailabilitySet".
141    :type type_properties_type: str or
142     ~azure.mgmt.containerservice.v2020_12_01.models.AgentPoolType
143    :param mode: AgentPoolMode represents mode of an agent pool. Possible values include: "System",
144     "User".
145    :type mode: str or ~azure.mgmt.containerservice.v2020_12_01.models.AgentPoolMode
146    :param orchestrator_version: Version of orchestrator specified when creating the managed
147     cluster.
148    :type orchestrator_version: str
149    :ivar node_image_version: Version of node image.
150    :vartype node_image_version: str
151    :param upgrade_settings: Settings for upgrading the agentpool.
152    :type upgrade_settings:
153     ~azure.mgmt.containerservice.v2020_12_01.models.AgentPoolUpgradeSettings
154    :ivar provisioning_state: The current deployment or provisioning state, which only appears in
155     the response.
156    :vartype provisioning_state: str
157    :ivar power_state: Describes whether the Agent Pool is Running or Stopped.
158    :vartype power_state: ~azure.mgmt.containerservice.v2020_12_01.models.PowerState
159    :param availability_zones: Availability zones for nodes. Must use VirtualMachineScaleSets
160     AgentPoolType.
161    :type availability_zones: list[str]
162    :param enable_node_public_ip: Enable public IP for nodes.
163    :type enable_node_public_ip: bool
164    :param scale_set_priority: ScaleSetPriority to be used to specify virtual machine scale set
165     priority. Default to regular. Possible values include: "Spot", "Regular". Default value:
166     "Regular".
167    :type scale_set_priority: str or
168     ~azure.mgmt.containerservice.v2020_12_01.models.ScaleSetPriority
169    :param scale_set_eviction_policy: ScaleSetEvictionPolicy to be used to specify eviction policy
170     for Spot virtual machine scale set. Default to Delete. Possible values include: "Delete",
171     "Deallocate". Default value: "Delete".
172    :type scale_set_eviction_policy: str or
173     ~azure.mgmt.containerservice.v2020_12_01.models.ScaleSetEvictionPolicy
174    :param spot_max_price: SpotMaxPrice to be used to specify the maximum price you are willing to
175     pay in US Dollars. Possible values are any decimal value greater than zero or -1 which
176     indicates default price to be up-to on-demand.
177    :type spot_max_price: float
178    :param tags: A set of tags. Agent pool tags to be persisted on the agent pool virtual machine
179     scale set.
180    :type tags: dict[str, str]
181    :param node_labels: Agent pool node labels to be persisted across all nodes in agent pool.
182    :type node_labels: dict[str, str]
183    :param node_taints: Taints added to new nodes during node pool create and scale. For example,
184     key=value:NoSchedule.
185    :type node_taints: list[str]
186    :param proximity_placement_group_id: The ID for Proximity Placement Group.
187    :type proximity_placement_group_id: str
188    :param kubelet_config: KubeletConfig specifies the configuration of kubelet on agent nodes.
189    :type kubelet_config: ~azure.mgmt.containerservice.v2020_12_01.models.KubeletConfig
190    :param linux_os_config: LinuxOSConfig specifies the OS configuration of linux agent nodes.
191    :type linux_os_config: ~azure.mgmt.containerservice.v2020_12_01.models.LinuxOSConfig
192    :param enable_encryption_at_host: Whether to enable EncryptionAtHost.
193    :type enable_encryption_at_host: bool
194    """
195
196    _validation = {
197        'id': {'readonly': True},
198        'name': {'readonly': True},
199        'type': {'readonly': True},
200        'os_disk_size_gb': {'maximum': 1023, 'minimum': 0},
201        'node_image_version': {'readonly': True},
202        'provisioning_state': {'readonly': True},
203        'power_state': {'readonly': True},
204    }
205
206    _attribute_map = {
207        'id': {'key': 'id', 'type': 'str'},
208        'name': {'key': 'name', 'type': 'str'},
209        'type': {'key': 'type', 'type': 'str'},
210        'count': {'key': 'properties.count', 'type': 'int'},
211        'vm_size': {'key': 'properties.vmSize', 'type': 'str'},
212        'os_disk_size_gb': {'key': 'properties.osDiskSizeGB', 'type': 'int'},
213        'os_disk_type': {'key': 'properties.osDiskType', 'type': 'str'},
214        'kubelet_disk_type': {'key': 'properties.kubeletDiskType', 'type': 'str'},
215        'vnet_subnet_id': {'key': 'properties.vnetSubnetID', 'type': 'str'},
216        'pod_subnet_id': {'key': 'properties.podSubnetID', 'type': 'str'},
217        'max_pods': {'key': 'properties.maxPods', 'type': 'int'},
218        'os_type': {'key': 'properties.osType', 'type': 'str'},
219        'max_count': {'key': 'properties.maxCount', 'type': 'int'},
220        'min_count': {'key': 'properties.minCount', 'type': 'int'},
221        'enable_auto_scaling': {'key': 'properties.enableAutoScaling', 'type': 'bool'},
222        'type_properties_type': {'key': 'properties.type', 'type': 'str'},
223        'mode': {'key': 'properties.mode', 'type': 'str'},
224        'orchestrator_version': {'key': 'properties.orchestratorVersion', 'type': 'str'},
225        'node_image_version': {'key': 'properties.nodeImageVersion', 'type': 'str'},
226        'upgrade_settings': {'key': 'properties.upgradeSettings', 'type': 'AgentPoolUpgradeSettings'},
227        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
228        'power_state': {'key': 'properties.powerState', 'type': 'PowerState'},
229        'availability_zones': {'key': 'properties.availabilityZones', 'type': '[str]'},
230        'enable_node_public_ip': {'key': 'properties.enableNodePublicIP', 'type': 'bool'},
231        'scale_set_priority': {'key': 'properties.scaleSetPriority', 'type': 'str'},
232        'scale_set_eviction_policy': {'key': 'properties.scaleSetEvictionPolicy', 'type': 'str'},
233        'spot_max_price': {'key': 'properties.spotMaxPrice', 'type': 'float'},
234        'tags': {'key': 'properties.tags', 'type': '{str}'},
235        'node_labels': {'key': 'properties.nodeLabels', 'type': '{str}'},
236        'node_taints': {'key': 'properties.nodeTaints', 'type': '[str]'},
237        'proximity_placement_group_id': {'key': 'properties.proximityPlacementGroupID', 'type': 'str'},
238        'kubelet_config': {'key': 'properties.kubeletConfig', 'type': 'KubeletConfig'},
239        'linux_os_config': {'key': 'properties.linuxOSConfig', 'type': 'LinuxOSConfig'},
240        'enable_encryption_at_host': {'key': 'properties.enableEncryptionAtHost', 'type': 'bool'},
241    }
242
243    def __init__(
244        self,
245        *,
246        count: Optional[int] = None,
247        vm_size: Optional[Union[str, "ContainerServiceVMSizeTypes"]] = None,
248        os_disk_size_gb: Optional[int] = None,
249        os_disk_type: Optional[Union[str, "OSDiskType"]] = None,
250        kubelet_disk_type: Optional[Union[str, "KubeletDiskType"]] = None,
251        vnet_subnet_id: Optional[str] = None,
252        pod_subnet_id: Optional[str] = None,
253        max_pods: Optional[int] = None,
254        os_type: Optional[Union[str, "OSType"]] = "Linux",
255        max_count: Optional[int] = None,
256        min_count: Optional[int] = None,
257        enable_auto_scaling: Optional[bool] = None,
258        type_properties_type: Optional[Union[str, "AgentPoolType"]] = None,
259        mode: Optional[Union[str, "AgentPoolMode"]] = None,
260        orchestrator_version: Optional[str] = None,
261        upgrade_settings: Optional["AgentPoolUpgradeSettings"] = None,
262        availability_zones: Optional[List[str]] = None,
263        enable_node_public_ip: Optional[bool] = None,
264        scale_set_priority: Optional[Union[str, "ScaleSetPriority"]] = "Regular",
265        scale_set_eviction_policy: Optional[Union[str, "ScaleSetEvictionPolicy"]] = "Delete",
266        spot_max_price: Optional[float] = -1,
267        tags: Optional[Dict[str, str]] = None,
268        node_labels: Optional[Dict[str, str]] = None,
269        node_taints: Optional[List[str]] = None,
270        proximity_placement_group_id: Optional[str] = None,
271        kubelet_config: Optional["KubeletConfig"] = None,
272        linux_os_config: Optional["LinuxOSConfig"] = None,
273        enable_encryption_at_host: Optional[bool] = None,
274        **kwargs
275    ):
276        super(AgentPool, self).__init__(**kwargs)
277        self.count = count
278        self.vm_size = vm_size
279        self.os_disk_size_gb = os_disk_size_gb
280        self.os_disk_type = os_disk_type
281        self.kubelet_disk_type = kubelet_disk_type
282        self.vnet_subnet_id = vnet_subnet_id
283        self.pod_subnet_id = pod_subnet_id
284        self.max_pods = max_pods
285        self.os_type = os_type
286        self.max_count = max_count
287        self.min_count = min_count
288        self.enable_auto_scaling = enable_auto_scaling
289        self.type_properties_type = type_properties_type
290        self.mode = mode
291        self.orchestrator_version = orchestrator_version
292        self.node_image_version = None
293        self.upgrade_settings = upgrade_settings
294        self.provisioning_state = None
295        self.power_state = None
296        self.availability_zones = availability_zones
297        self.enable_node_public_ip = enable_node_public_ip
298        self.scale_set_priority = scale_set_priority
299        self.scale_set_eviction_policy = scale_set_eviction_policy
300        self.spot_max_price = spot_max_price
301        self.tags = tags
302        self.node_labels = node_labels
303        self.node_taints = node_taints
304        self.proximity_placement_group_id = proximity_placement_group_id
305        self.kubelet_config = kubelet_config
306        self.linux_os_config = linux_os_config
307        self.enable_encryption_at_host = enable_encryption_at_host
308
309
310class AgentPoolAvailableVersions(msrest.serialization.Model):
311    """The list of available versions for an agent pool.
312
313    Variables are only populated by the server, and will be ignored when sending a request.
314
315    :ivar id: Id of the agent pool available versions.
316    :vartype id: str
317    :ivar name: Name of the agent pool available versions.
318    :vartype name: str
319    :ivar type: Type of the agent pool  available versions.
320    :vartype type: str
321    :param agent_pool_versions: List of versions available for agent pool.
322    :type agent_pool_versions:
323     list[~azure.mgmt.containerservice.v2020_12_01.models.AgentPoolAvailableVersionsPropertiesAgentPoolVersionsItem]
324    """
325
326    _validation = {
327        'id': {'readonly': True},
328        'name': {'readonly': True},
329        'type': {'readonly': True},
330    }
331
332    _attribute_map = {
333        'id': {'key': 'id', 'type': 'str'},
334        'name': {'key': 'name', 'type': 'str'},
335        'type': {'key': 'type', 'type': 'str'},
336        'agent_pool_versions': {'key': 'properties.agentPoolVersions', 'type': '[AgentPoolAvailableVersionsPropertiesAgentPoolVersionsItem]'},
337    }
338
339    def __init__(
340        self,
341        *,
342        agent_pool_versions: Optional[List["AgentPoolAvailableVersionsPropertiesAgentPoolVersionsItem"]] = None,
343        **kwargs
344    ):
345        super(AgentPoolAvailableVersions, self).__init__(**kwargs)
346        self.id = None
347        self.name = None
348        self.type = None
349        self.agent_pool_versions = agent_pool_versions
350
351
352class AgentPoolAvailableVersionsPropertiesAgentPoolVersionsItem(msrest.serialization.Model):
353    """AgentPoolAvailableVersionsPropertiesAgentPoolVersionsItem.
354
355    :param default: Whether this version is the default agent pool version.
356    :type default: bool
357    :param kubernetes_version: Kubernetes version (major, minor, patch).
358    :type kubernetes_version: str
359    :param is_preview: Whether Kubernetes version is currently in preview.
360    :type is_preview: bool
361    """
362
363    _attribute_map = {
364        'default': {'key': 'default', 'type': 'bool'},
365        'kubernetes_version': {'key': 'kubernetesVersion', 'type': 'str'},
366        'is_preview': {'key': 'isPreview', 'type': 'bool'},
367    }
368
369    def __init__(
370        self,
371        *,
372        default: Optional[bool] = None,
373        kubernetes_version: Optional[str] = None,
374        is_preview: Optional[bool] = None,
375        **kwargs
376    ):
377        super(AgentPoolAvailableVersionsPropertiesAgentPoolVersionsItem, self).__init__(**kwargs)
378        self.default = default
379        self.kubernetes_version = kubernetes_version
380        self.is_preview = is_preview
381
382
383class AgentPoolListResult(msrest.serialization.Model):
384    """The response from the List Agent Pools operation.
385
386    Variables are only populated by the server, and will be ignored when sending a request.
387
388    :param value: The list of agent pools.
389    :type value: list[~azure.mgmt.containerservice.v2020_12_01.models.AgentPool]
390    :ivar next_link: The URL to get the next set of agent pool results.
391    :vartype next_link: str
392    """
393
394    _validation = {
395        'next_link': {'readonly': True},
396    }
397
398    _attribute_map = {
399        'value': {'key': 'value', 'type': '[AgentPool]'},
400        'next_link': {'key': 'nextLink', 'type': 'str'},
401    }
402
403    def __init__(
404        self,
405        *,
406        value: Optional[List["AgentPool"]] = None,
407        **kwargs
408    ):
409        super(AgentPoolListResult, self).__init__(**kwargs)
410        self.value = value
411        self.next_link = None
412
413
414class AgentPoolUpgradeProfile(msrest.serialization.Model):
415    """The list of available upgrades for an agent pool.
416
417    Variables are only populated by the server, and will be ignored when sending a request.
418
419    All required parameters must be populated in order to send to Azure.
420
421    :ivar id: Id of the agent pool upgrade profile.
422    :vartype id: str
423    :ivar name: Name of the agent pool upgrade profile.
424    :vartype name: str
425    :ivar type: Type of the agent pool upgrade profile.
426    :vartype type: str
427    :param kubernetes_version: Required. Kubernetes version (major, minor, patch).
428    :type kubernetes_version: str
429    :param os_type: Required. OsType to be used to specify os type. Choose from Linux and Windows.
430     Default to Linux. Possible values include: "Linux", "Windows". Default value: "Linux".
431    :type os_type: str or ~azure.mgmt.containerservice.v2020_12_01.models.OSType
432    :param upgrades: List of orchestrator types and versions available for upgrade.
433    :type upgrades:
434     list[~azure.mgmt.containerservice.v2020_12_01.models.AgentPoolUpgradeProfilePropertiesUpgradesItem]
435    :param latest_node_image_version: LatestNodeImageVersion is the latest AKS supported node image
436     version.
437    :type latest_node_image_version: str
438    """
439
440    _validation = {
441        'id': {'readonly': True},
442        'name': {'readonly': True},
443        'type': {'readonly': True},
444        'kubernetes_version': {'required': True},
445        'os_type': {'required': True},
446    }
447
448    _attribute_map = {
449        'id': {'key': 'id', 'type': 'str'},
450        'name': {'key': 'name', 'type': 'str'},
451        'type': {'key': 'type', 'type': 'str'},
452        'kubernetes_version': {'key': 'properties.kubernetesVersion', 'type': 'str'},
453        'os_type': {'key': 'properties.osType', 'type': 'str'},
454        'upgrades': {'key': 'properties.upgrades', 'type': '[AgentPoolUpgradeProfilePropertiesUpgradesItem]'},
455        'latest_node_image_version': {'key': 'properties.latestNodeImageVersion', 'type': 'str'},
456    }
457
458    def __init__(
459        self,
460        *,
461        kubernetes_version: str,
462        os_type: Union[str, "OSType"] = "Linux",
463        upgrades: Optional[List["AgentPoolUpgradeProfilePropertiesUpgradesItem"]] = None,
464        latest_node_image_version: Optional[str] = None,
465        **kwargs
466    ):
467        super(AgentPoolUpgradeProfile, self).__init__(**kwargs)
468        self.id = None
469        self.name = None
470        self.type = None
471        self.kubernetes_version = kubernetes_version
472        self.os_type = os_type
473        self.upgrades = upgrades
474        self.latest_node_image_version = latest_node_image_version
475
476
477class AgentPoolUpgradeProfilePropertiesUpgradesItem(msrest.serialization.Model):
478    """AgentPoolUpgradeProfilePropertiesUpgradesItem.
479
480    :param kubernetes_version: Kubernetes version (major, minor, patch).
481    :type kubernetes_version: str
482    :param is_preview: Whether Kubernetes version is currently in preview.
483    :type is_preview: bool
484    """
485
486    _attribute_map = {
487        'kubernetes_version': {'key': 'kubernetesVersion', 'type': 'str'},
488        'is_preview': {'key': 'isPreview', 'type': 'bool'},
489    }
490
491    def __init__(
492        self,
493        *,
494        kubernetes_version: Optional[str] = None,
495        is_preview: Optional[bool] = None,
496        **kwargs
497    ):
498        super(AgentPoolUpgradeProfilePropertiesUpgradesItem, self).__init__(**kwargs)
499        self.kubernetes_version = kubernetes_version
500        self.is_preview = is_preview
501
502
503class AgentPoolUpgradeSettings(msrest.serialization.Model):
504    """Settings for upgrading an agentpool.
505
506    :param max_surge: Count or percentage of additional nodes to be added during upgrade. If empty
507     uses AKS default.
508    :type max_surge: str
509    """
510
511    _attribute_map = {
512        'max_surge': {'key': 'maxSurge', 'type': 'str'},
513    }
514
515    def __init__(
516        self,
517        *,
518        max_surge: Optional[str] = None,
519        **kwargs
520    ):
521        super(AgentPoolUpgradeSettings, self).__init__(**kwargs)
522        self.max_surge = max_surge
523
524
525class CloudError(msrest.serialization.Model):
526    """An error response from the Container service.
527
528    :param error: Details about the error.
529    :type error: ~azure.mgmt.containerservice.v2020_12_01.models.CloudErrorBody
530    """
531
532    _attribute_map = {
533        'error': {'key': 'error', 'type': 'CloudErrorBody'},
534    }
535
536    def __init__(
537        self,
538        *,
539        error: Optional["CloudErrorBody"] = None,
540        **kwargs
541    ):
542        super(CloudError, self).__init__(**kwargs)
543        self.error = error
544
545
546class CloudErrorBody(msrest.serialization.Model):
547    """An error response from the Container service.
548
549    :param code: An identifier for the error. Codes are invariant and are intended to be consumed
550     programmatically.
551    :type code: str
552    :param message: A message describing the error, intended to be suitable for display in a user
553     interface.
554    :type message: str
555    :param target: The target of the particular error. For example, the name of the property in
556     error.
557    :type target: str
558    :param details: A list of additional details about the error.
559    :type details: list[~azure.mgmt.containerservice.v2020_12_01.models.CloudErrorBody]
560    """
561
562    _attribute_map = {
563        'code': {'key': 'code', 'type': 'str'},
564        'message': {'key': 'message', 'type': 'str'},
565        'target': {'key': 'target', 'type': 'str'},
566        'details': {'key': 'details', 'type': '[CloudErrorBody]'},
567    }
568
569    def __init__(
570        self,
571        *,
572        code: Optional[str] = None,
573        message: Optional[str] = None,
574        target: Optional[str] = None,
575        details: Optional[List["CloudErrorBody"]] = None,
576        **kwargs
577    ):
578        super(CloudErrorBody, self).__init__(**kwargs)
579        self.code = code
580        self.message = message
581        self.target = target
582        self.details = details
583
584
585class Components1Q1Og48SchemasManagedclusterAllof1(msrest.serialization.Model):
586    """Components1Q1Og48SchemasManagedclusterAllof1.
587
588    Variables are only populated by the server, and will be ignored when sending a request.
589
590    :param identity: The identity of the managed cluster, if configured.
591    :type identity: ~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterIdentity
592    :ivar provisioning_state: The current deployment or provisioning state, which only appears in
593     the response.
594    :vartype provisioning_state: str
595    :ivar power_state: Represents the Power State of the cluster.
596    :vartype power_state: ~azure.mgmt.containerservice.v2020_12_01.models.PowerState
597    :ivar max_agent_pools: The max number of agent pools for the managed cluster.
598    :vartype max_agent_pools: int
599    :param kubernetes_version: Version of Kubernetes specified when creating the managed cluster.
600    :type kubernetes_version: str
601    :param dns_prefix: DNS prefix specified when creating the managed cluster.
602    :type dns_prefix: str
603    :ivar fqdn: FQDN for the master pool.
604    :vartype fqdn: str
605    :ivar private_fqdn: FQDN of private cluster.
606    :vartype private_fqdn: str
607    :param agent_pool_profiles: Properties of the agent pool.
608    :type agent_pool_profiles:
609     list[~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterAgentPoolProfile]
610    :param linux_profile: Profile for Linux VMs in the container service cluster.
611    :type linux_profile:
612     ~azure.mgmt.containerservice.v2020_12_01.models.ContainerServiceLinuxProfile
613    :param windows_profile: Profile for Windows VMs in the container service cluster.
614    :type windows_profile:
615     ~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterWindowsProfile
616    :param service_principal_profile: Information about a service principal identity for the
617     cluster to use for manipulating Azure APIs.
618    :type service_principal_profile:
619     ~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterServicePrincipalProfile
620    :param addon_profiles: Profile of managed cluster add-on.
621    :type addon_profiles: dict[str,
622     ~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterAddonProfile]
623    :param pod_identity_profile: Profile of managed cluster pod identity.
624    :type pod_identity_profile:
625     ~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterPodIdentityProfile
626    :param node_resource_group: Name of the resource group containing agent pool nodes.
627    :type node_resource_group: str
628    :param enable_rbac: Whether to enable Kubernetes Role-Based Access Control.
629    :type enable_rbac: bool
630    :param enable_pod_security_policy: (DEPRECATING) Whether to enable Kubernetes pod security
631     policy (preview). This feature is set for removal on October 15th, 2020. Learn more at
632     aka.ms/aks/azpodpolicy.
633    :type enable_pod_security_policy: bool
634    :param network_profile: Profile of network configuration.
635    :type network_profile:
636     ~azure.mgmt.containerservice.v2020_12_01.models.ContainerServiceNetworkProfile
637    :param aad_profile: Profile of Azure Active Directory configuration.
638    :type aad_profile: ~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterAADProfile
639    :param auto_upgrade_profile: Profile of auto upgrade configuration.
640    :type auto_upgrade_profile:
641     ~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterAutoUpgradeProfile
642    :param auto_scaler_profile: Parameters to be applied to the cluster-autoscaler when enabled.
643    :type auto_scaler_profile:
644     ~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterPropertiesAutoScalerProfile
645    :param api_server_access_profile: Access profile for managed cluster API server.
646    :type api_server_access_profile:
647     ~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterAPIServerAccessProfile
648    :param disk_encryption_set_id: ResourceId of the disk encryption set to use for enabling
649     encryption at rest.
650    :type disk_encryption_set_id: str
651    :param identity_profile: Identities associated with the cluster.
652    :type identity_profile: dict[str,
653     ~azure.mgmt.containerservice.v2020_12_01.models.ComponentsQit0EtSchemasManagedclusterpropertiesPropertiesIdentityprofileAdditionalproperties]
654    """
655
656    _validation = {
657        'provisioning_state': {'readonly': True},
658        'power_state': {'readonly': True},
659        'max_agent_pools': {'readonly': True},
660        'fqdn': {'readonly': True},
661        'private_fqdn': {'readonly': True},
662    }
663
664    _attribute_map = {
665        'identity': {'key': 'identity', 'type': 'ManagedClusterIdentity'},
666        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
667        'power_state': {'key': 'properties.powerState', 'type': 'PowerState'},
668        'max_agent_pools': {'key': 'properties.maxAgentPools', 'type': 'int'},
669        'kubernetes_version': {'key': 'properties.kubernetesVersion', 'type': 'str'},
670        'dns_prefix': {'key': 'properties.dnsPrefix', 'type': 'str'},
671        'fqdn': {'key': 'properties.fqdn', 'type': 'str'},
672        'private_fqdn': {'key': 'properties.privateFQDN', 'type': 'str'},
673        'agent_pool_profiles': {'key': 'properties.agentPoolProfiles', 'type': '[ManagedClusterAgentPoolProfile]'},
674        'linux_profile': {'key': 'properties.linuxProfile', 'type': 'ContainerServiceLinuxProfile'},
675        'windows_profile': {'key': 'properties.windowsProfile', 'type': 'ManagedClusterWindowsProfile'},
676        'service_principal_profile': {'key': 'properties.servicePrincipalProfile', 'type': 'ManagedClusterServicePrincipalProfile'},
677        'addon_profiles': {'key': 'properties.addonProfiles', 'type': '{ManagedClusterAddonProfile}'},
678        'pod_identity_profile': {'key': 'properties.podIdentityProfile', 'type': 'ManagedClusterPodIdentityProfile'},
679        'node_resource_group': {'key': 'properties.nodeResourceGroup', 'type': 'str'},
680        'enable_rbac': {'key': 'properties.enableRBAC', 'type': 'bool'},
681        'enable_pod_security_policy': {'key': 'properties.enablePodSecurityPolicy', 'type': 'bool'},
682        'network_profile': {'key': 'properties.networkProfile', 'type': 'ContainerServiceNetworkProfile'},
683        'aad_profile': {'key': 'properties.aadProfile', 'type': 'ManagedClusterAADProfile'},
684        'auto_upgrade_profile': {'key': 'properties.autoUpgradeProfile', 'type': 'ManagedClusterAutoUpgradeProfile'},
685        'auto_scaler_profile': {'key': 'properties.autoScalerProfile', 'type': 'ManagedClusterPropertiesAutoScalerProfile'},
686        'api_server_access_profile': {'key': 'properties.apiServerAccessProfile', 'type': 'ManagedClusterAPIServerAccessProfile'},
687        'disk_encryption_set_id': {'key': 'properties.diskEncryptionSetID', 'type': 'str'},
688        'identity_profile': {'key': 'properties.identityProfile', 'type': '{ComponentsQit0EtSchemasManagedclusterpropertiesPropertiesIdentityprofileAdditionalproperties}'},
689    }
690
691    def __init__(
692        self,
693        *,
694        identity: Optional["ManagedClusterIdentity"] = None,
695        kubernetes_version: Optional[str] = None,
696        dns_prefix: Optional[str] = None,
697        agent_pool_profiles: Optional[List["ManagedClusterAgentPoolProfile"]] = None,
698        linux_profile: Optional["ContainerServiceLinuxProfile"] = None,
699        windows_profile: Optional["ManagedClusterWindowsProfile"] = None,
700        service_principal_profile: Optional["ManagedClusterServicePrincipalProfile"] = None,
701        addon_profiles: Optional[Dict[str, "ManagedClusterAddonProfile"]] = None,
702        pod_identity_profile: Optional["ManagedClusterPodIdentityProfile"] = None,
703        node_resource_group: Optional[str] = None,
704        enable_rbac: Optional[bool] = None,
705        enable_pod_security_policy: Optional[bool] = None,
706        network_profile: Optional["ContainerServiceNetworkProfile"] = None,
707        aad_profile: Optional["ManagedClusterAADProfile"] = None,
708        auto_upgrade_profile: Optional["ManagedClusterAutoUpgradeProfile"] = None,
709        auto_scaler_profile: Optional["ManagedClusterPropertiesAutoScalerProfile"] = None,
710        api_server_access_profile: Optional["ManagedClusterAPIServerAccessProfile"] = None,
711        disk_encryption_set_id: Optional[str] = None,
712        identity_profile: Optional[Dict[str, "ComponentsQit0EtSchemasManagedclusterpropertiesPropertiesIdentityprofileAdditionalproperties"]] = None,
713        **kwargs
714    ):
715        super(Components1Q1Og48SchemasManagedclusterAllof1, self).__init__(**kwargs)
716        self.identity = identity
717        self.provisioning_state = None
718        self.power_state = None
719        self.max_agent_pools = None
720        self.kubernetes_version = kubernetes_version
721        self.dns_prefix = dns_prefix
722        self.fqdn = None
723        self.private_fqdn = None
724        self.agent_pool_profiles = agent_pool_profiles
725        self.linux_profile = linux_profile
726        self.windows_profile = windows_profile
727        self.service_principal_profile = service_principal_profile
728        self.addon_profiles = addon_profiles
729        self.pod_identity_profile = pod_identity_profile
730        self.node_resource_group = node_resource_group
731        self.enable_rbac = enable_rbac
732        self.enable_pod_security_policy = enable_pod_security_policy
733        self.network_profile = network_profile
734        self.aad_profile = aad_profile
735        self.auto_upgrade_profile = auto_upgrade_profile
736        self.auto_scaler_profile = auto_scaler_profile
737        self.api_server_access_profile = api_server_access_profile
738        self.disk_encryption_set_id = disk_encryption_set_id
739        self.identity_profile = identity_profile
740
741
742class Components1Umhcm8SchemasManagedclusteridentityPropertiesUserassignedidentitiesAdditionalproperties(msrest.serialization.Model):
743    """Components1Umhcm8SchemasManagedclusteridentityPropertiesUserassignedidentitiesAdditionalproperties.
744
745    Variables are only populated by the server, and will be ignored when sending a request.
746
747    :ivar principal_id: The principal id of user assigned identity.
748    :vartype principal_id: str
749    :ivar client_id: The client id of user assigned identity.
750    :vartype client_id: str
751    """
752
753    _validation = {
754        'principal_id': {'readonly': True},
755        'client_id': {'readonly': True},
756    }
757
758    _attribute_map = {
759        'principal_id': {'key': 'principalId', 'type': 'str'},
760        'client_id': {'key': 'clientId', 'type': 'str'},
761    }
762
763    def __init__(
764        self,
765        **kwargs
766    ):
767        super(Components1Umhcm8SchemasManagedclusteridentityPropertiesUserassignedidentitiesAdditionalproperties, self).__init__(**kwargs)
768        self.principal_id = None
769        self.client_id = None
770
771
772class UserAssignedIdentity(msrest.serialization.Model):
773    """UserAssignedIdentity.
774
775    :param resource_id: The resource id of the user assigned identity.
776    :type resource_id: str
777    :param client_id: The client id of the user assigned identity.
778    :type client_id: str
779    :param object_id: The object id of the user assigned identity.
780    :type object_id: str
781    """
782
783    _attribute_map = {
784        'resource_id': {'key': 'resourceId', 'type': 'str'},
785        'client_id': {'key': 'clientId', 'type': 'str'},
786        'object_id': {'key': 'objectId', 'type': 'str'},
787    }
788
789    def __init__(
790        self,
791        *,
792        resource_id: Optional[str] = None,
793        client_id: Optional[str] = None,
794        object_id: Optional[str] = None,
795        **kwargs
796    ):
797        super(UserAssignedIdentity, self).__init__(**kwargs)
798        self.resource_id = resource_id
799        self.client_id = client_id
800        self.object_id = object_id
801
802
803class ComponentsQit0EtSchemasManagedclusterpropertiesPropertiesIdentityprofileAdditionalproperties(UserAssignedIdentity):
804    """ComponentsQit0EtSchemasManagedclusterpropertiesPropertiesIdentityprofileAdditionalproperties.
805
806    :param resource_id: The resource id of the user assigned identity.
807    :type resource_id: str
808    :param client_id: The client id of the user assigned identity.
809    :type client_id: str
810    :param object_id: The object id of the user assigned identity.
811    :type object_id: str
812    """
813
814    _attribute_map = {
815        'resource_id': {'key': 'resourceId', 'type': 'str'},
816        'client_id': {'key': 'clientId', 'type': 'str'},
817        'object_id': {'key': 'objectId', 'type': 'str'},
818    }
819
820    def __init__(
821        self,
822        *,
823        resource_id: Optional[str] = None,
824        client_id: Optional[str] = None,
825        object_id: Optional[str] = None,
826        **kwargs
827    ):
828        super(ComponentsQit0EtSchemasManagedclusterpropertiesPropertiesIdentityprofileAdditionalproperties, self).__init__(resource_id=resource_id, client_id=client_id, object_id=object_id, **kwargs)
829
830
831class ContainerServiceDiagnosticsProfile(msrest.serialization.Model):
832    """Profile for diagnostics on the container service cluster.
833
834    All required parameters must be populated in order to send to Azure.
835
836    :param vm_diagnostics: Required. Profile for diagnostics on the container service VMs.
837    :type vm_diagnostics:
838     ~azure.mgmt.containerservice.v2020_12_01.models.ContainerServiceVMDiagnostics
839    """
840
841    _validation = {
842        'vm_diagnostics': {'required': True},
843    }
844
845    _attribute_map = {
846        'vm_diagnostics': {'key': 'vmDiagnostics', 'type': 'ContainerServiceVMDiagnostics'},
847    }
848
849    def __init__(
850        self,
851        *,
852        vm_diagnostics: "ContainerServiceVMDiagnostics",
853        **kwargs
854    ):
855        super(ContainerServiceDiagnosticsProfile, self).__init__(**kwargs)
856        self.vm_diagnostics = vm_diagnostics
857
858
859class ContainerServiceLinuxProfile(msrest.serialization.Model):
860    """Profile for Linux VMs in the container service cluster.
861
862    All required parameters must be populated in order to send to Azure.
863
864    :param admin_username: Required. The administrator username to use for Linux VMs.
865    :type admin_username: str
866    :param ssh: Required. SSH configuration for Linux-based VMs running on Azure.
867    :type ssh: ~azure.mgmt.containerservice.v2020_12_01.models.ContainerServiceSshConfiguration
868    """
869
870    _validation = {
871        'admin_username': {'required': True, 'pattern': r'^[A-Za-z][-A-Za-z0-9_]*$'},
872        'ssh': {'required': True},
873    }
874
875    _attribute_map = {
876        'admin_username': {'key': 'adminUsername', 'type': 'str'},
877        'ssh': {'key': 'ssh', 'type': 'ContainerServiceSshConfiguration'},
878    }
879
880    def __init__(
881        self,
882        *,
883        admin_username: str,
884        ssh: "ContainerServiceSshConfiguration",
885        **kwargs
886    ):
887        super(ContainerServiceLinuxProfile, self).__init__(**kwargs)
888        self.admin_username = admin_username
889        self.ssh = ssh
890
891
892class ContainerServiceMasterProfile(msrest.serialization.Model):
893    """Profile for the container service master.
894
895    Variables are only populated by the server, and will be ignored when sending a request.
896
897    All required parameters must be populated in order to send to Azure.
898
899    :param count: Number of masters (VMs) in the container service cluster. Allowed values are 1,
900     3, and 5. The default value is 1. Possible values include: 1, 3, 5. Default value: "1".
901    :type count: str or ~azure.mgmt.containerservice.v2020_12_01.models.Count
902    :param dns_prefix: Required. DNS prefix to be used to create the FQDN for the master pool.
903    :type dns_prefix: str
904    :param vm_size: Required. Size of agent VMs. Possible values include: "Standard_A1",
905     "Standard_A10", "Standard_A11", "Standard_A1_v2", "Standard_A2", "Standard_A2_v2",
906     "Standard_A2m_v2", "Standard_A3", "Standard_A4", "Standard_A4_v2", "Standard_A4m_v2",
907     "Standard_A5", "Standard_A6", "Standard_A7", "Standard_A8", "Standard_A8_v2",
908     "Standard_A8m_v2", "Standard_A9", "Standard_B2ms", "Standard_B2s", "Standard_B4ms",
909     "Standard_B8ms", "Standard_D1", "Standard_D11", "Standard_D11_v2", "Standard_D11_v2_Promo",
910     "Standard_D12", "Standard_D12_v2", "Standard_D12_v2_Promo", "Standard_D13", "Standard_D13_v2",
911     "Standard_D13_v2_Promo", "Standard_D14", "Standard_D14_v2", "Standard_D14_v2_Promo",
912     "Standard_D15_v2", "Standard_D16_v3", "Standard_D16s_v3", "Standard_D1_v2", "Standard_D2",
913     "Standard_D2_v2", "Standard_D2_v2_Promo", "Standard_D2_v3", "Standard_D2s_v3", "Standard_D3",
914     "Standard_D32_v3", "Standard_D32s_v3", "Standard_D3_v2", "Standard_D3_v2_Promo", "Standard_D4",
915     "Standard_D4_v2", "Standard_D4_v2_Promo", "Standard_D4_v3", "Standard_D4s_v3",
916     "Standard_D5_v2", "Standard_D5_v2_Promo", "Standard_D64_v3", "Standard_D64s_v3",
917     "Standard_D8_v3", "Standard_D8s_v3", "Standard_DS1", "Standard_DS11", "Standard_DS11_v2",
918     "Standard_DS11_v2_Promo", "Standard_DS12", "Standard_DS12_v2", "Standard_DS12_v2_Promo",
919     "Standard_DS13", "Standard_DS13-2_v2", "Standard_DS13-4_v2", "Standard_DS13_v2",
920     "Standard_DS13_v2_Promo", "Standard_DS14", "Standard_DS14-4_v2", "Standard_DS14-8_v2",
921     "Standard_DS14_v2", "Standard_DS14_v2_Promo", "Standard_DS15_v2", "Standard_DS1_v2",
922     "Standard_DS2", "Standard_DS2_v2", "Standard_DS2_v2_Promo", "Standard_DS3", "Standard_DS3_v2",
923     "Standard_DS3_v2_Promo", "Standard_DS4", "Standard_DS4_v2", "Standard_DS4_v2_Promo",
924     "Standard_DS5_v2", "Standard_DS5_v2_Promo", "Standard_E16_v3", "Standard_E16s_v3",
925     "Standard_E2_v3", "Standard_E2s_v3", "Standard_E32-16s_v3", "Standard_E32-8s_v3",
926     "Standard_E32_v3", "Standard_E32s_v3", "Standard_E4_v3", "Standard_E4s_v3",
927     "Standard_E64-16s_v3", "Standard_E64-32s_v3", "Standard_E64_v3", "Standard_E64s_v3",
928     "Standard_E8_v3", "Standard_E8s_v3", "Standard_F1", "Standard_F16", "Standard_F16s",
929     "Standard_F16s_v2", "Standard_F1s", "Standard_F2", "Standard_F2s", "Standard_F2s_v2",
930     "Standard_F32s_v2", "Standard_F4", "Standard_F4s", "Standard_F4s_v2", "Standard_F64s_v2",
931     "Standard_F72s_v2", "Standard_F8", "Standard_F8s", "Standard_F8s_v2", "Standard_G1",
932     "Standard_G2", "Standard_G3", "Standard_G4", "Standard_G5", "Standard_GS1", "Standard_GS2",
933     "Standard_GS3", "Standard_GS4", "Standard_GS4-4", "Standard_GS4-8", "Standard_GS5",
934     "Standard_GS5-16", "Standard_GS5-8", "Standard_H16", "Standard_H16m", "Standard_H16mr",
935     "Standard_H16r", "Standard_H8", "Standard_H8m", "Standard_L16s", "Standard_L32s",
936     "Standard_L4s", "Standard_L8s", "Standard_M128-32ms", "Standard_M128-64ms", "Standard_M128ms",
937     "Standard_M128s", "Standard_M64-16ms", "Standard_M64-32ms", "Standard_M64ms", "Standard_M64s",
938     "Standard_NC12", "Standard_NC12s_v2", "Standard_NC12s_v3", "Standard_NC24", "Standard_NC24r",
939     "Standard_NC24rs_v2", "Standard_NC24rs_v3", "Standard_NC24s_v2", "Standard_NC24s_v3",
940     "Standard_NC6", "Standard_NC6s_v2", "Standard_NC6s_v3", "Standard_ND12s", "Standard_ND24rs",
941     "Standard_ND24s", "Standard_ND6s", "Standard_NV12", "Standard_NV24", "Standard_NV6".
942    :type vm_size: str or
943     ~azure.mgmt.containerservice.v2020_12_01.models.ContainerServiceVMSizeTypes
944    :param os_disk_size_gb: OS Disk Size in GB to be used to specify the disk size for every
945     machine in this master/agent pool. If you specify 0, it will apply the default osDisk size
946     according to the vmSize specified.
947    :type os_disk_size_gb: int
948    :param vnet_subnet_id: VNet SubnetID specifies the VNet's subnet identifier.
949    :type vnet_subnet_id: str
950    :param first_consecutive_static_ip: FirstConsecutiveStaticIP used to specify the first static
951     ip of masters.
952    :type first_consecutive_static_ip: str
953    :param storage_profile: Storage profile specifies what kind of storage used. Choose from
954     StorageAccount and ManagedDisks. Leave it empty, we will choose for you based on the
955     orchestrator choice. Possible values include: "StorageAccount", "ManagedDisks".
956    :type storage_profile: str or
957     ~azure.mgmt.containerservice.v2020_12_01.models.ContainerServiceStorageProfileTypes
958    :ivar fqdn: FQDN for the master pool.
959    :vartype fqdn: str
960    """
961
962    _validation = {
963        'dns_prefix': {'required': True},
964        'vm_size': {'required': True},
965        'os_disk_size_gb': {'maximum': 1023, 'minimum': 0},
966        'fqdn': {'readonly': True},
967    }
968
969    _attribute_map = {
970        'count': {'key': 'count', 'type': 'int'},
971        'dns_prefix': {'key': 'dnsPrefix', 'type': 'str'},
972        'vm_size': {'key': 'vmSize', 'type': 'str'},
973        'os_disk_size_gb': {'key': 'osDiskSizeGB', 'type': 'int'},
974        'vnet_subnet_id': {'key': 'vnetSubnetID', 'type': 'str'},
975        'first_consecutive_static_ip': {'key': 'firstConsecutiveStaticIP', 'type': 'str'},
976        'storage_profile': {'key': 'storageProfile', 'type': 'str'},
977        'fqdn': {'key': 'fqdn', 'type': 'str'},
978    }
979
980    def __init__(
981        self,
982        *,
983        dns_prefix: str,
984        vm_size: Union[str, "ContainerServiceVMSizeTypes"],
985        count: Optional[Union[int, "Count"]] = "1",
986        os_disk_size_gb: Optional[int] = None,
987        vnet_subnet_id: Optional[str] = None,
988        first_consecutive_static_ip: Optional[str] = "10.240.255.5",
989        storage_profile: Optional[Union[str, "ContainerServiceStorageProfileTypes"]] = None,
990        **kwargs
991    ):
992        super(ContainerServiceMasterProfile, self).__init__(**kwargs)
993        self.count = count
994        self.dns_prefix = dns_prefix
995        self.vm_size = vm_size
996        self.os_disk_size_gb = os_disk_size_gb
997        self.vnet_subnet_id = vnet_subnet_id
998        self.first_consecutive_static_ip = first_consecutive_static_ip
999        self.storage_profile = storage_profile
1000        self.fqdn = None
1001
1002
1003class ContainerServiceNetworkProfile(msrest.serialization.Model):
1004    """Profile of network configuration.
1005
1006    :param network_plugin: Network plugin used for building Kubernetes network. Possible values
1007     include: "azure", "kubenet". Default value: "kubenet".
1008    :type network_plugin: str or ~azure.mgmt.containerservice.v2020_12_01.models.NetworkPlugin
1009    :param network_policy: Network policy used for building Kubernetes network. Possible values
1010     include: "calico", "azure".
1011    :type network_policy: str or ~azure.mgmt.containerservice.v2020_12_01.models.NetworkPolicy
1012    :param network_mode: Network mode used for building Kubernetes network. Possible values
1013     include: "transparent", "bridge".
1014    :type network_mode: str or ~azure.mgmt.containerservice.v2020_12_01.models.NetworkMode
1015    :param pod_cidr: A CIDR notation IP range from which to assign pod IPs when kubenet is used.
1016    :type pod_cidr: str
1017    :param service_cidr: A CIDR notation IP range from which to assign service cluster IPs. It must
1018     not overlap with any Subnet IP ranges.
1019    :type service_cidr: str
1020    :param dns_service_ip: An IP address assigned to the Kubernetes DNS service. It must be within
1021     the Kubernetes service address range specified in serviceCidr.
1022    :type dns_service_ip: str
1023    :param docker_bridge_cidr: A CIDR notation IP range assigned to the Docker bridge network. It
1024     must not overlap with any Subnet IP ranges or the Kubernetes service address range.
1025    :type docker_bridge_cidr: str
1026    :param outbound_type: The outbound (egress) routing method. Possible values include:
1027     "loadBalancer", "userDefinedRouting". Default value: "loadBalancer".
1028    :type outbound_type: str or ~azure.mgmt.containerservice.v2020_12_01.models.OutboundType
1029    :param load_balancer_sku: The load balancer sku for the managed cluster. Possible values
1030     include: "standard", "basic".
1031    :type load_balancer_sku: str or ~azure.mgmt.containerservice.v2020_12_01.models.LoadBalancerSku
1032    :param load_balancer_profile: Profile of the cluster load balancer.
1033    :type load_balancer_profile:
1034     ~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterLoadBalancerProfile
1035    """
1036
1037    _validation = {
1038        'pod_cidr': {'pattern': r'^([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2]))?$'},
1039        'service_cidr': {'pattern': r'^([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2]))?$'},
1040        '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]?)$'},
1041        'docker_bridge_cidr': {'pattern': r'^([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2]))?$'},
1042    }
1043
1044    _attribute_map = {
1045        'network_plugin': {'key': 'networkPlugin', 'type': 'str'},
1046        'network_policy': {'key': 'networkPolicy', 'type': 'str'},
1047        'network_mode': {'key': 'networkMode', 'type': 'str'},
1048        'pod_cidr': {'key': 'podCidr', 'type': 'str'},
1049        'service_cidr': {'key': 'serviceCidr', 'type': 'str'},
1050        'dns_service_ip': {'key': 'dnsServiceIP', 'type': 'str'},
1051        'docker_bridge_cidr': {'key': 'dockerBridgeCidr', 'type': 'str'},
1052        'outbound_type': {'key': 'outboundType', 'type': 'str'},
1053        'load_balancer_sku': {'key': 'loadBalancerSku', 'type': 'str'},
1054        'load_balancer_profile': {'key': 'loadBalancerProfile', 'type': 'ManagedClusterLoadBalancerProfile'},
1055    }
1056
1057    def __init__(
1058        self,
1059        *,
1060        network_plugin: Optional[Union[str, "NetworkPlugin"]] = "kubenet",
1061        network_policy: Optional[Union[str, "NetworkPolicy"]] = None,
1062        network_mode: Optional[Union[str, "NetworkMode"]] = None,
1063        pod_cidr: Optional[str] = "10.244.0.0/16",
1064        service_cidr: Optional[str] = "10.0.0.0/16",
1065        dns_service_ip: Optional[str] = "10.0.0.10",
1066        docker_bridge_cidr: Optional[str] = "172.17.0.1/16",
1067        outbound_type: Optional[Union[str, "OutboundType"]] = "loadBalancer",
1068        load_balancer_sku: Optional[Union[str, "LoadBalancerSku"]] = None,
1069        load_balancer_profile: Optional["ManagedClusterLoadBalancerProfile"] = None,
1070        **kwargs
1071    ):
1072        super(ContainerServiceNetworkProfile, self).__init__(**kwargs)
1073        self.network_plugin = network_plugin
1074        self.network_policy = network_policy
1075        self.network_mode = network_mode
1076        self.pod_cidr = pod_cidr
1077        self.service_cidr = service_cidr
1078        self.dns_service_ip = dns_service_ip
1079        self.docker_bridge_cidr = docker_bridge_cidr
1080        self.outbound_type = outbound_type
1081        self.load_balancer_sku = load_balancer_sku
1082        self.load_balancer_profile = load_balancer_profile
1083
1084
1085class ContainerServiceSshConfiguration(msrest.serialization.Model):
1086    """SSH configuration for Linux-based VMs running on Azure.
1087
1088    All required parameters must be populated in order to send to Azure.
1089
1090    :param public_keys: Required. The list of SSH public keys used to authenticate with Linux-based
1091     VMs. Only expect one key specified.
1092    :type public_keys:
1093     list[~azure.mgmt.containerservice.v2020_12_01.models.ContainerServiceSshPublicKey]
1094    """
1095
1096    _validation = {
1097        'public_keys': {'required': True},
1098    }
1099
1100    _attribute_map = {
1101        'public_keys': {'key': 'publicKeys', 'type': '[ContainerServiceSshPublicKey]'},
1102    }
1103
1104    def __init__(
1105        self,
1106        *,
1107        public_keys: List["ContainerServiceSshPublicKey"],
1108        **kwargs
1109    ):
1110        super(ContainerServiceSshConfiguration, self).__init__(**kwargs)
1111        self.public_keys = public_keys
1112
1113
1114class ContainerServiceSshPublicKey(msrest.serialization.Model):
1115    """Contains information about SSH certificate public key data.
1116
1117    All required parameters must be populated in order to send to Azure.
1118
1119    :param key_data: Required. Certificate public key used to authenticate with VMs through SSH.
1120     The certificate must be in PEM format with or without headers.
1121    :type key_data: str
1122    """
1123
1124    _validation = {
1125        'key_data': {'required': True},
1126    }
1127
1128    _attribute_map = {
1129        'key_data': {'key': 'keyData', 'type': 'str'},
1130    }
1131
1132    def __init__(
1133        self,
1134        *,
1135        key_data: str,
1136        **kwargs
1137    ):
1138        super(ContainerServiceSshPublicKey, self).__init__(**kwargs)
1139        self.key_data = key_data
1140
1141
1142class ContainerServiceVMDiagnostics(msrest.serialization.Model):
1143    """Profile for diagnostics on the container service VMs.
1144
1145    Variables are only populated by the server, and will be ignored when sending a request.
1146
1147    All required parameters must be populated in order to send to Azure.
1148
1149    :param enabled: Required. Whether the VM diagnostic agent is provisioned on the VM.
1150    :type enabled: bool
1151    :ivar storage_uri: The URI of the storage account where diagnostics are stored.
1152    :vartype storage_uri: str
1153    """
1154
1155    _validation = {
1156        'enabled': {'required': True},
1157        'storage_uri': {'readonly': True},
1158    }
1159
1160    _attribute_map = {
1161        'enabled': {'key': 'enabled', 'type': 'bool'},
1162        'storage_uri': {'key': 'storageUri', 'type': 'str'},
1163    }
1164
1165    def __init__(
1166        self,
1167        *,
1168        enabled: bool,
1169        **kwargs
1170    ):
1171        super(ContainerServiceVMDiagnostics, self).__init__(**kwargs)
1172        self.enabled = enabled
1173        self.storage_uri = None
1174
1175
1176class CredentialResult(msrest.serialization.Model):
1177    """The credential result response.
1178
1179    Variables are only populated by the server, and will be ignored when sending a request.
1180
1181    :ivar name: The name of the credential.
1182    :vartype name: str
1183    :ivar value: Base64-encoded Kubernetes configuration file.
1184    :vartype value: bytearray
1185    """
1186
1187    _validation = {
1188        'name': {'readonly': True},
1189        'value': {'readonly': True},
1190    }
1191
1192    _attribute_map = {
1193        'name': {'key': 'name', 'type': 'str'},
1194        'value': {'key': 'value', 'type': 'bytearray'},
1195    }
1196
1197    def __init__(
1198        self,
1199        **kwargs
1200    ):
1201        super(CredentialResult, self).__init__(**kwargs)
1202        self.name = None
1203        self.value = None
1204
1205
1206class CredentialResults(msrest.serialization.Model):
1207    """The list of credential result response.
1208
1209    Variables are only populated by the server, and will be ignored when sending a request.
1210
1211    :ivar kubeconfigs: Base64-encoded Kubernetes configuration file.
1212    :vartype kubeconfigs: list[~azure.mgmt.containerservice.v2020_12_01.models.CredentialResult]
1213    """
1214
1215    _validation = {
1216        'kubeconfigs': {'readonly': True},
1217    }
1218
1219    _attribute_map = {
1220        'kubeconfigs': {'key': 'kubeconfigs', 'type': '[CredentialResult]'},
1221    }
1222
1223    def __init__(
1224        self,
1225        **kwargs
1226    ):
1227        super(CredentialResults, self).__init__(**kwargs)
1228        self.kubeconfigs = None
1229
1230
1231class KubeletConfig(msrest.serialization.Model):
1232    """Kubelet configurations of agent nodes.
1233
1234    :param cpu_manager_policy: CPU Manager policy to use.
1235    :type cpu_manager_policy: str
1236    :param cpu_cfs_quota: Enable CPU CFS quota enforcement for containers that specify CPU limits.
1237    :type cpu_cfs_quota: bool
1238    :param cpu_cfs_quota_period: Sets CPU CFS quota period value.
1239    :type cpu_cfs_quota_period: str
1240    :param image_gc_high_threshold: The percent of disk usage after which image garbage collection
1241     is always run.
1242    :type image_gc_high_threshold: int
1243    :param image_gc_low_threshold: The percent of disk usage before which image garbage collection
1244     is never run.
1245    :type image_gc_low_threshold: int
1246    :param topology_manager_policy: Topology Manager policy to use.
1247    :type topology_manager_policy: str
1248    :param allowed_unsafe_sysctls: Allowlist of unsafe sysctls or unsafe sysctl patterns (ending in
1249     ``*``\ ).
1250    :type allowed_unsafe_sysctls: list[str]
1251    :param fail_swap_on: If set to true it will make the Kubelet fail to start if swap is enabled
1252     on the node.
1253    :type fail_swap_on: bool
1254    :param container_log_max_size_mb: The maximum size (e.g. 10Mi) of container log file before it
1255     is rotated.
1256    :type container_log_max_size_mb: int
1257    :param container_log_max_files: The maximum number of container log files that can be present
1258     for a container. The number must be ≥ 2.
1259    :type container_log_max_files: int
1260    :param pod_max_pids: The maximum number of processes per pod.
1261    :type pod_max_pids: int
1262    """
1263
1264    _validation = {
1265        'container_log_max_files': {'minimum': 2},
1266    }
1267
1268    _attribute_map = {
1269        'cpu_manager_policy': {'key': 'cpuManagerPolicy', 'type': 'str'},
1270        'cpu_cfs_quota': {'key': 'cpuCfsQuota', 'type': 'bool'},
1271        'cpu_cfs_quota_period': {'key': 'cpuCfsQuotaPeriod', 'type': 'str'},
1272        'image_gc_high_threshold': {'key': 'imageGcHighThreshold', 'type': 'int'},
1273        'image_gc_low_threshold': {'key': 'imageGcLowThreshold', 'type': 'int'},
1274        'topology_manager_policy': {'key': 'topologyManagerPolicy', 'type': 'str'},
1275        'allowed_unsafe_sysctls': {'key': 'allowedUnsafeSysctls', 'type': '[str]'},
1276        'fail_swap_on': {'key': 'failSwapOn', 'type': 'bool'},
1277        'container_log_max_size_mb': {'key': 'containerLogMaxSizeMB', 'type': 'int'},
1278        'container_log_max_files': {'key': 'containerLogMaxFiles', 'type': 'int'},
1279        'pod_max_pids': {'key': 'podMaxPids', 'type': 'int'},
1280    }
1281
1282    def __init__(
1283        self,
1284        *,
1285        cpu_manager_policy: Optional[str] = None,
1286        cpu_cfs_quota: Optional[bool] = None,
1287        cpu_cfs_quota_period: Optional[str] = None,
1288        image_gc_high_threshold: Optional[int] = None,
1289        image_gc_low_threshold: Optional[int] = None,
1290        topology_manager_policy: Optional[str] = None,
1291        allowed_unsafe_sysctls: Optional[List[str]] = None,
1292        fail_swap_on: Optional[bool] = None,
1293        container_log_max_size_mb: Optional[int] = None,
1294        container_log_max_files: Optional[int] = None,
1295        pod_max_pids: Optional[int] = None,
1296        **kwargs
1297    ):
1298        super(KubeletConfig, self).__init__(**kwargs)
1299        self.cpu_manager_policy = cpu_manager_policy
1300        self.cpu_cfs_quota = cpu_cfs_quota
1301        self.cpu_cfs_quota_period = cpu_cfs_quota_period
1302        self.image_gc_high_threshold = image_gc_high_threshold
1303        self.image_gc_low_threshold = image_gc_low_threshold
1304        self.topology_manager_policy = topology_manager_policy
1305        self.allowed_unsafe_sysctls = allowed_unsafe_sysctls
1306        self.fail_swap_on = fail_swap_on
1307        self.container_log_max_size_mb = container_log_max_size_mb
1308        self.container_log_max_files = container_log_max_files
1309        self.pod_max_pids = pod_max_pids
1310
1311
1312class LinuxOSConfig(msrest.serialization.Model):
1313    """OS configurations of Linux agent nodes.
1314
1315    :param sysctls: Sysctl settings for Linux agent nodes.
1316    :type sysctls: ~azure.mgmt.containerservice.v2020_12_01.models.SysctlConfig
1317    :param transparent_huge_page_enabled: Transparent Huge Page enabled configuration.
1318    :type transparent_huge_page_enabled: str
1319    :param transparent_huge_page_defrag: Transparent Huge Page defrag configuration.
1320    :type transparent_huge_page_defrag: str
1321    :param swap_file_size_mb: SwapFileSizeMB specifies size in MB of a swap file will be created on
1322     each node.
1323    :type swap_file_size_mb: int
1324    """
1325
1326    _attribute_map = {
1327        'sysctls': {'key': 'sysctls', 'type': 'SysctlConfig'},
1328        'transparent_huge_page_enabled': {'key': 'transparentHugePageEnabled', 'type': 'str'},
1329        'transparent_huge_page_defrag': {'key': 'transparentHugePageDefrag', 'type': 'str'},
1330        'swap_file_size_mb': {'key': 'swapFileSizeMB', 'type': 'int'},
1331    }
1332
1333    def __init__(
1334        self,
1335        *,
1336        sysctls: Optional["SysctlConfig"] = None,
1337        transparent_huge_page_enabled: Optional[str] = None,
1338        transparent_huge_page_defrag: Optional[str] = None,
1339        swap_file_size_mb: Optional[int] = None,
1340        **kwargs
1341    ):
1342        super(LinuxOSConfig, self).__init__(**kwargs)
1343        self.sysctls = sysctls
1344        self.transparent_huge_page_enabled = transparent_huge_page_enabled
1345        self.transparent_huge_page_defrag = transparent_huge_page_defrag
1346        self.swap_file_size_mb = swap_file_size_mb
1347
1348
1349class MaintenanceConfiguration(SubResource):
1350    """maintenance configuration.
1351
1352    Variables are only populated by the server, and will be ignored when sending a request.
1353
1354    :ivar id: Resource ID.
1355    :vartype id: str
1356    :ivar name: The name of the resource that is unique within a resource group. This name can be
1357     used to access the resource.
1358    :vartype name: str
1359    :ivar type: Resource type.
1360    :vartype type: str
1361    :ivar system_data: The system meta data relating to this resource.
1362    :vartype system_data: ~azure.mgmt.containerservice.v2020_12_01.models.SystemData
1363    :param time_in_week: Weekday time slots allowed to upgrade.
1364    :type time_in_week: list[~azure.mgmt.containerservice.v2020_12_01.models.TimeInWeek]
1365    :param not_allowed_time: Time slots on which upgrade is not allowed.
1366    :type not_allowed_time: list[~azure.mgmt.containerservice.v2020_12_01.models.TimeSpan]
1367    """
1368
1369    _validation = {
1370        'id': {'readonly': True},
1371        'name': {'readonly': True},
1372        'type': {'readonly': True},
1373        'system_data': {'readonly': True},
1374    }
1375
1376    _attribute_map = {
1377        'id': {'key': 'id', 'type': 'str'},
1378        'name': {'key': 'name', 'type': 'str'},
1379        'type': {'key': 'type', 'type': 'str'},
1380        'system_data': {'key': 'systemData', 'type': 'SystemData'},
1381        'time_in_week': {'key': 'properties.timeInWeek', 'type': '[TimeInWeek]'},
1382        'not_allowed_time': {'key': 'properties.notAllowedTime', 'type': '[TimeSpan]'},
1383    }
1384
1385    def __init__(
1386        self,
1387        *,
1388        time_in_week: Optional[List["TimeInWeek"]] = None,
1389        not_allowed_time: Optional[List["TimeSpan"]] = None,
1390        **kwargs
1391    ):
1392        super(MaintenanceConfiguration, self).__init__(**kwargs)
1393        self.system_data = None
1394        self.time_in_week = time_in_week
1395        self.not_allowed_time = not_allowed_time
1396
1397
1398class MaintenanceConfigurationListResult(msrest.serialization.Model):
1399    """The response from the List maintenance configurations operation.
1400
1401    Variables are only populated by the server, and will be ignored when sending a request.
1402
1403    :param value: The list of maintenance configurations.
1404    :type value: list[~azure.mgmt.containerservice.v2020_12_01.models.MaintenanceConfiguration]
1405    :ivar next_link: The URL to get the next set of maintenance configuration results.
1406    :vartype next_link: str
1407    """
1408
1409    _validation = {
1410        'next_link': {'readonly': True},
1411    }
1412
1413    _attribute_map = {
1414        'value': {'key': 'value', 'type': '[MaintenanceConfiguration]'},
1415        'next_link': {'key': 'nextLink', 'type': 'str'},
1416    }
1417
1418    def __init__(
1419        self,
1420        *,
1421        value: Optional[List["MaintenanceConfiguration"]] = None,
1422        **kwargs
1423    ):
1424        super(MaintenanceConfigurationListResult, self).__init__(**kwargs)
1425        self.value = value
1426        self.next_link = None
1427
1428
1429class Resource(msrest.serialization.Model):
1430    """The Resource model definition.
1431
1432    Variables are only populated by the server, and will be ignored when sending a request.
1433
1434    All required parameters must be populated in order to send to Azure.
1435
1436    :ivar id: Resource Id.
1437    :vartype id: str
1438    :ivar name: Resource name.
1439    :vartype name: str
1440    :ivar type: Resource type.
1441    :vartype type: str
1442    :param location: Required. Resource location.
1443    :type location: str
1444    :param tags: A set of tags. Resource tags.
1445    :type tags: dict[str, str]
1446    """
1447
1448    _validation = {
1449        'id': {'readonly': True},
1450        'name': {'readonly': True},
1451        'type': {'readonly': True},
1452        'location': {'required': True},
1453    }
1454
1455    _attribute_map = {
1456        'id': {'key': 'id', 'type': 'str'},
1457        'name': {'key': 'name', 'type': 'str'},
1458        'type': {'key': 'type', 'type': 'str'},
1459        'location': {'key': 'location', 'type': 'str'},
1460        'tags': {'key': 'tags', 'type': '{str}'},
1461    }
1462
1463    def __init__(
1464        self,
1465        *,
1466        location: str,
1467        tags: Optional[Dict[str, str]] = None,
1468        **kwargs
1469    ):
1470        super(Resource, self).__init__(**kwargs)
1471        self.id = None
1472        self.name = None
1473        self.type = None
1474        self.location = location
1475        self.tags = tags
1476
1477
1478class ManagedCluster(Resource, Components1Q1Og48SchemasManagedclusterAllof1):
1479    """Managed cluster.
1480
1481    Variables are only populated by the server, and will be ignored when sending a request.
1482
1483    All required parameters must be populated in order to send to Azure.
1484
1485    :param identity: The identity of the managed cluster, if configured.
1486    :type identity: ~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterIdentity
1487    :ivar provisioning_state: The current deployment or provisioning state, which only appears in
1488     the response.
1489    :vartype provisioning_state: str
1490    :ivar power_state: Represents the Power State of the cluster.
1491    :vartype power_state: ~azure.mgmt.containerservice.v2020_12_01.models.PowerState
1492    :ivar max_agent_pools: The max number of agent pools for the managed cluster.
1493    :vartype max_agent_pools: int
1494    :param kubernetes_version: Version of Kubernetes specified when creating the managed cluster.
1495    :type kubernetes_version: str
1496    :param dns_prefix: DNS prefix specified when creating the managed cluster.
1497    :type dns_prefix: str
1498    :ivar fqdn: FQDN for the master pool.
1499    :vartype fqdn: str
1500    :ivar private_fqdn: FQDN of private cluster.
1501    :vartype private_fqdn: str
1502    :param agent_pool_profiles: Properties of the agent pool.
1503    :type agent_pool_profiles:
1504     list[~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterAgentPoolProfile]
1505    :param linux_profile: Profile for Linux VMs in the container service cluster.
1506    :type linux_profile:
1507     ~azure.mgmt.containerservice.v2020_12_01.models.ContainerServiceLinuxProfile
1508    :param windows_profile: Profile for Windows VMs in the container service cluster.
1509    :type windows_profile:
1510     ~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterWindowsProfile
1511    :param service_principal_profile: Information about a service principal identity for the
1512     cluster to use for manipulating Azure APIs.
1513    :type service_principal_profile:
1514     ~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterServicePrincipalProfile
1515    :param addon_profiles: Profile of managed cluster add-on.
1516    :type addon_profiles: dict[str,
1517     ~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterAddonProfile]
1518    :param pod_identity_profile: Profile of managed cluster pod identity.
1519    :type pod_identity_profile:
1520     ~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterPodIdentityProfile
1521    :param node_resource_group: Name of the resource group containing agent pool nodes.
1522    :type node_resource_group: str
1523    :param enable_rbac: Whether to enable Kubernetes Role-Based Access Control.
1524    :type enable_rbac: bool
1525    :param enable_pod_security_policy: (DEPRECATING) Whether to enable Kubernetes pod security
1526     policy (preview). This feature is set for removal on October 15th, 2020. Learn more at
1527     aka.ms/aks/azpodpolicy.
1528    :type enable_pod_security_policy: bool
1529    :param network_profile: Profile of network configuration.
1530    :type network_profile:
1531     ~azure.mgmt.containerservice.v2020_12_01.models.ContainerServiceNetworkProfile
1532    :param aad_profile: Profile of Azure Active Directory configuration.
1533    :type aad_profile: ~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterAADProfile
1534    :param auto_upgrade_profile: Profile of auto upgrade configuration.
1535    :type auto_upgrade_profile:
1536     ~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterAutoUpgradeProfile
1537    :param auto_scaler_profile: Parameters to be applied to the cluster-autoscaler when enabled.
1538    :type auto_scaler_profile:
1539     ~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterPropertiesAutoScalerProfile
1540    :param api_server_access_profile: Access profile for managed cluster API server.
1541    :type api_server_access_profile:
1542     ~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterAPIServerAccessProfile
1543    :param disk_encryption_set_id: ResourceId of the disk encryption set to use for enabling
1544     encryption at rest.
1545    :type disk_encryption_set_id: str
1546    :param identity_profile: Identities associated with the cluster.
1547    :type identity_profile: dict[str,
1548     ~azure.mgmt.containerservice.v2020_12_01.models.ComponentsQit0EtSchemasManagedclusterpropertiesPropertiesIdentityprofileAdditionalproperties]
1549    :ivar id: Resource Id.
1550    :vartype id: str
1551    :ivar name: Resource name.
1552    :vartype name: str
1553    :ivar type: Resource type.
1554    :vartype type: str
1555    :param location: Required. Resource location.
1556    :type location: str
1557    :param tags: A set of tags. Resource tags.
1558    :type tags: dict[str, str]
1559    :param sku: The managed cluster SKU.
1560    :type sku: ~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterSKU
1561    """
1562
1563    _validation = {
1564        'provisioning_state': {'readonly': True},
1565        'power_state': {'readonly': True},
1566        'max_agent_pools': {'readonly': True},
1567        'fqdn': {'readonly': True},
1568        'private_fqdn': {'readonly': True},
1569        'id': {'readonly': True},
1570        'name': {'readonly': True},
1571        'type': {'readonly': True},
1572        'location': {'required': True},
1573    }
1574
1575    _attribute_map = {
1576        'identity': {'key': 'identity', 'type': 'ManagedClusterIdentity'},
1577        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1578        'power_state': {'key': 'properties.powerState', 'type': 'PowerState'},
1579        'max_agent_pools': {'key': 'properties.maxAgentPools', 'type': 'int'},
1580        'kubernetes_version': {'key': 'properties.kubernetesVersion', 'type': 'str'},
1581        'dns_prefix': {'key': 'properties.dnsPrefix', 'type': 'str'},
1582        'fqdn': {'key': 'properties.fqdn', 'type': 'str'},
1583        'private_fqdn': {'key': 'properties.privateFQDN', 'type': 'str'},
1584        'agent_pool_profiles': {'key': 'properties.agentPoolProfiles', 'type': '[ManagedClusterAgentPoolProfile]'},
1585        'linux_profile': {'key': 'properties.linuxProfile', 'type': 'ContainerServiceLinuxProfile'},
1586        'windows_profile': {'key': 'properties.windowsProfile', 'type': 'ManagedClusterWindowsProfile'},
1587        'service_principal_profile': {'key': 'properties.servicePrincipalProfile', 'type': 'ManagedClusterServicePrincipalProfile'},
1588        'addon_profiles': {'key': 'properties.addonProfiles', 'type': '{ManagedClusterAddonProfile}'},
1589        'pod_identity_profile': {'key': 'properties.podIdentityProfile', 'type': 'ManagedClusterPodIdentityProfile'},
1590        'node_resource_group': {'key': 'properties.nodeResourceGroup', 'type': 'str'},
1591        'enable_rbac': {'key': 'properties.enableRBAC', 'type': 'bool'},
1592        'enable_pod_security_policy': {'key': 'properties.enablePodSecurityPolicy', 'type': 'bool'},
1593        'network_profile': {'key': 'properties.networkProfile', 'type': 'ContainerServiceNetworkProfile'},
1594        'aad_profile': {'key': 'properties.aadProfile', 'type': 'ManagedClusterAADProfile'},
1595        'auto_upgrade_profile': {'key': 'properties.autoUpgradeProfile', 'type': 'ManagedClusterAutoUpgradeProfile'},
1596        'auto_scaler_profile': {'key': 'properties.autoScalerProfile', 'type': 'ManagedClusterPropertiesAutoScalerProfile'},
1597        'api_server_access_profile': {'key': 'properties.apiServerAccessProfile', 'type': 'ManagedClusterAPIServerAccessProfile'},
1598        'disk_encryption_set_id': {'key': 'properties.diskEncryptionSetID', 'type': 'str'},
1599        'identity_profile': {'key': 'properties.identityProfile', 'type': '{ComponentsQit0EtSchemasManagedclusterpropertiesPropertiesIdentityprofileAdditionalproperties}'},
1600        'id': {'key': 'id', 'type': 'str'},
1601        'name': {'key': 'name', 'type': 'str'},
1602        'type': {'key': 'type', 'type': 'str'},
1603        'location': {'key': 'location', 'type': 'str'},
1604        'tags': {'key': 'tags', 'type': '{str}'},
1605        'sku': {'key': 'sku', 'type': 'ManagedClusterSKU'},
1606    }
1607
1608    def __init__(
1609        self,
1610        *,
1611        location: str,
1612        identity: Optional["ManagedClusterIdentity"] = None,
1613        kubernetes_version: Optional[str] = None,
1614        dns_prefix: Optional[str] = None,
1615        agent_pool_profiles: Optional[List["ManagedClusterAgentPoolProfile"]] = None,
1616        linux_profile: Optional["ContainerServiceLinuxProfile"] = None,
1617        windows_profile: Optional["ManagedClusterWindowsProfile"] = None,
1618        service_principal_profile: Optional["ManagedClusterServicePrincipalProfile"] = None,
1619        addon_profiles: Optional[Dict[str, "ManagedClusterAddonProfile"]] = None,
1620        pod_identity_profile: Optional["ManagedClusterPodIdentityProfile"] = None,
1621        node_resource_group: Optional[str] = None,
1622        enable_rbac: Optional[bool] = None,
1623        enable_pod_security_policy: Optional[bool] = None,
1624        network_profile: Optional["ContainerServiceNetworkProfile"] = None,
1625        aad_profile: Optional["ManagedClusterAADProfile"] = None,
1626        auto_upgrade_profile: Optional["ManagedClusterAutoUpgradeProfile"] = None,
1627        auto_scaler_profile: Optional["ManagedClusterPropertiesAutoScalerProfile"] = None,
1628        api_server_access_profile: Optional["ManagedClusterAPIServerAccessProfile"] = None,
1629        disk_encryption_set_id: Optional[str] = None,
1630        identity_profile: Optional[Dict[str, "ComponentsQit0EtSchemasManagedclusterpropertiesPropertiesIdentityprofileAdditionalproperties"]] = None,
1631        tags: Optional[Dict[str, str]] = None,
1632        sku: Optional["ManagedClusterSKU"] = None,
1633        **kwargs
1634    ):
1635        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, pod_identity_profile=pod_identity_profile, 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_upgrade_profile=auto_upgrade_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)
1636        self.identity = identity
1637        self.provisioning_state = None
1638        self.power_state = None
1639        self.max_agent_pools = None
1640        self.kubernetes_version = kubernetes_version
1641        self.dns_prefix = dns_prefix
1642        self.fqdn = None
1643        self.private_fqdn = None
1644        self.agent_pool_profiles = agent_pool_profiles
1645        self.linux_profile = linux_profile
1646        self.windows_profile = windows_profile
1647        self.service_principal_profile = service_principal_profile
1648        self.addon_profiles = addon_profiles
1649        self.pod_identity_profile = pod_identity_profile
1650        self.node_resource_group = node_resource_group
1651        self.enable_rbac = enable_rbac
1652        self.enable_pod_security_policy = enable_pod_security_policy
1653        self.network_profile = network_profile
1654        self.aad_profile = aad_profile
1655        self.auto_upgrade_profile = auto_upgrade_profile
1656        self.auto_scaler_profile = auto_scaler_profile
1657        self.api_server_access_profile = api_server_access_profile
1658        self.disk_encryption_set_id = disk_encryption_set_id
1659        self.identity_profile = identity_profile
1660        self.sku = sku
1661        self.id = None
1662        self.name = None
1663        self.type = None
1664        self.location = location
1665        self.tags = tags
1666        self.sku = sku
1667
1668
1669class ManagedClusterAADProfile(msrest.serialization.Model):
1670    """AADProfile specifies attributes for Azure Active Directory integration.
1671
1672    :param managed: Whether to enable managed AAD.
1673    :type managed: bool
1674    :param enable_azure_rbac: Whether to enable Azure RBAC for Kubernetes authorization.
1675    :type enable_azure_rbac: bool
1676    :param admin_group_object_i_ds: AAD group object IDs that will have admin role of the cluster.
1677    :type admin_group_object_i_ds: list[str]
1678    :param client_app_id: The client AAD application ID.
1679    :type client_app_id: str
1680    :param server_app_id: The server AAD application ID.
1681    :type server_app_id: str
1682    :param server_app_secret: The server AAD application secret.
1683    :type server_app_secret: str
1684    :param tenant_id: The AAD tenant ID to use for authentication. If not specified, will use the
1685     tenant of the deployment subscription.
1686    :type tenant_id: str
1687    """
1688
1689    _attribute_map = {
1690        'managed': {'key': 'managed', 'type': 'bool'},
1691        'enable_azure_rbac': {'key': 'enableAzureRBAC', 'type': 'bool'},
1692        'admin_group_object_i_ds': {'key': 'adminGroupObjectIDs', 'type': '[str]'},
1693        'client_app_id': {'key': 'clientAppID', 'type': 'str'},
1694        'server_app_id': {'key': 'serverAppID', 'type': 'str'},
1695        'server_app_secret': {'key': 'serverAppSecret', 'type': 'str'},
1696        'tenant_id': {'key': 'tenantID', 'type': 'str'},
1697    }
1698
1699    def __init__(
1700        self,
1701        *,
1702        managed: Optional[bool] = None,
1703        enable_azure_rbac: Optional[bool] = None,
1704        admin_group_object_i_ds: Optional[List[str]] = None,
1705        client_app_id: Optional[str] = None,
1706        server_app_id: Optional[str] = None,
1707        server_app_secret: Optional[str] = None,
1708        tenant_id: Optional[str] = None,
1709        **kwargs
1710    ):
1711        super(ManagedClusterAADProfile, self).__init__(**kwargs)
1712        self.managed = managed
1713        self.enable_azure_rbac = enable_azure_rbac
1714        self.admin_group_object_i_ds = admin_group_object_i_ds
1715        self.client_app_id = client_app_id
1716        self.server_app_id = server_app_id
1717        self.server_app_secret = server_app_secret
1718        self.tenant_id = tenant_id
1719
1720
1721class ManagedClusterAccessProfile(Resource):
1722    """Managed cluster Access Profile.
1723
1724    Variables are only populated by the server, and will be ignored when sending a request.
1725
1726    All required parameters must be populated in order to send to Azure.
1727
1728    :ivar id: Resource Id.
1729    :vartype id: str
1730    :ivar name: Resource name.
1731    :vartype name: str
1732    :ivar type: Resource type.
1733    :vartype type: str
1734    :param location: Required. Resource location.
1735    :type location: str
1736    :param tags: A set of tags. Resource tags.
1737    :type tags: dict[str, str]
1738    :param kube_config: Base64-encoded Kubernetes configuration file.
1739    :type kube_config: bytearray
1740    """
1741
1742    _validation = {
1743        'id': {'readonly': True},
1744        'name': {'readonly': True},
1745        'type': {'readonly': True},
1746        'location': {'required': True},
1747    }
1748
1749    _attribute_map = {
1750        'id': {'key': 'id', 'type': 'str'},
1751        'name': {'key': 'name', 'type': 'str'},
1752        'type': {'key': 'type', 'type': 'str'},
1753        'location': {'key': 'location', 'type': 'str'},
1754        'tags': {'key': 'tags', 'type': '{str}'},
1755        'kube_config': {'key': 'properties.kubeConfig', 'type': 'bytearray'},
1756    }
1757
1758    def __init__(
1759        self,
1760        *,
1761        location: str,
1762        tags: Optional[Dict[str, str]] = None,
1763        kube_config: Optional[bytearray] = None,
1764        **kwargs
1765    ):
1766        super(ManagedClusterAccessProfile, self).__init__(location=location, tags=tags, **kwargs)
1767        self.kube_config = kube_config
1768
1769
1770class ManagedClusterAddonProfile(msrest.serialization.Model):
1771    """A Kubernetes add-on profile for a managed cluster.
1772
1773    Variables are only populated by the server, and will be ignored when sending a request.
1774
1775    All required parameters must be populated in order to send to Azure.
1776
1777    :param enabled: Required. Whether the add-on is enabled or not.
1778    :type enabled: bool
1779    :param config: Key-value pairs for configuring an add-on.
1780    :type config: dict[str, str]
1781    :ivar identity: Information of user assigned identity used by this add-on.
1782    :vartype identity:
1783     ~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterAddonProfileIdentity
1784    """
1785
1786    _validation = {
1787        'enabled': {'required': True},
1788        'identity': {'readonly': True},
1789    }
1790
1791    _attribute_map = {
1792        'enabled': {'key': 'enabled', 'type': 'bool'},
1793        'config': {'key': 'config', 'type': '{str}'},
1794        'identity': {'key': 'identity', 'type': 'ManagedClusterAddonProfileIdentity'},
1795    }
1796
1797    def __init__(
1798        self,
1799        *,
1800        enabled: bool,
1801        config: Optional[Dict[str, str]] = None,
1802        **kwargs
1803    ):
1804        super(ManagedClusterAddonProfile, self).__init__(**kwargs)
1805        self.enabled = enabled
1806        self.config = config
1807        self.identity = None
1808
1809
1810class ManagedClusterAddonProfileIdentity(UserAssignedIdentity):
1811    """Information of user assigned identity used by this add-on.
1812
1813    :param resource_id: The resource id of the user assigned identity.
1814    :type resource_id: str
1815    :param client_id: The client id of the user assigned identity.
1816    :type client_id: str
1817    :param object_id: The object id of the user assigned identity.
1818    :type object_id: str
1819    """
1820
1821    _attribute_map = {
1822        'resource_id': {'key': 'resourceId', 'type': 'str'},
1823        'client_id': {'key': 'clientId', 'type': 'str'},
1824        'object_id': {'key': 'objectId', 'type': 'str'},
1825    }
1826
1827    def __init__(
1828        self,
1829        *,
1830        resource_id: Optional[str] = None,
1831        client_id: Optional[str] = None,
1832        object_id: Optional[str] = None,
1833        **kwargs
1834    ):
1835        super(ManagedClusterAddonProfileIdentity, self).__init__(resource_id=resource_id, client_id=client_id, object_id=object_id, **kwargs)
1836
1837
1838class ManagedClusterAgentPoolProfileProperties(msrest.serialization.Model):
1839    """Properties for the container service agent pool profile.
1840
1841    Variables are only populated by the server, and will be ignored when sending a request.
1842
1843    :param count: Number of agents (VMs) to host docker containers. Allowed values must be in the
1844     range of 0 to 100 (inclusive) for user pools and in the range of 1 to 100 (inclusive) for
1845     system pools. The default value is 1.
1846    :type count: int
1847    :param vm_size: Size of agent VMs. Possible values include: "Standard_A1", "Standard_A10",
1848     "Standard_A11", "Standard_A1_v2", "Standard_A2", "Standard_A2_v2", "Standard_A2m_v2",
1849     "Standard_A3", "Standard_A4", "Standard_A4_v2", "Standard_A4m_v2", "Standard_A5",
1850     "Standard_A6", "Standard_A7", "Standard_A8", "Standard_A8_v2", "Standard_A8m_v2",
1851     "Standard_A9", "Standard_B2ms", "Standard_B2s", "Standard_B4ms", "Standard_B8ms",
1852     "Standard_D1", "Standard_D11", "Standard_D11_v2", "Standard_D11_v2_Promo", "Standard_D12",
1853     "Standard_D12_v2", "Standard_D12_v2_Promo", "Standard_D13", "Standard_D13_v2",
1854     "Standard_D13_v2_Promo", "Standard_D14", "Standard_D14_v2", "Standard_D14_v2_Promo",
1855     "Standard_D15_v2", "Standard_D16_v3", "Standard_D16s_v3", "Standard_D1_v2", "Standard_D2",
1856     "Standard_D2_v2", "Standard_D2_v2_Promo", "Standard_D2_v3", "Standard_D2s_v3", "Standard_D3",
1857     "Standard_D32_v3", "Standard_D32s_v3", "Standard_D3_v2", "Standard_D3_v2_Promo", "Standard_D4",
1858     "Standard_D4_v2", "Standard_D4_v2_Promo", "Standard_D4_v3", "Standard_D4s_v3",
1859     "Standard_D5_v2", "Standard_D5_v2_Promo", "Standard_D64_v3", "Standard_D64s_v3",
1860     "Standard_D8_v3", "Standard_D8s_v3", "Standard_DS1", "Standard_DS11", "Standard_DS11_v2",
1861     "Standard_DS11_v2_Promo", "Standard_DS12", "Standard_DS12_v2", "Standard_DS12_v2_Promo",
1862     "Standard_DS13", "Standard_DS13-2_v2", "Standard_DS13-4_v2", "Standard_DS13_v2",
1863     "Standard_DS13_v2_Promo", "Standard_DS14", "Standard_DS14-4_v2", "Standard_DS14-8_v2",
1864     "Standard_DS14_v2", "Standard_DS14_v2_Promo", "Standard_DS15_v2", "Standard_DS1_v2",
1865     "Standard_DS2", "Standard_DS2_v2", "Standard_DS2_v2_Promo", "Standard_DS3", "Standard_DS3_v2",
1866     "Standard_DS3_v2_Promo", "Standard_DS4", "Standard_DS4_v2", "Standard_DS4_v2_Promo",
1867     "Standard_DS5_v2", "Standard_DS5_v2_Promo", "Standard_E16_v3", "Standard_E16s_v3",
1868     "Standard_E2_v3", "Standard_E2s_v3", "Standard_E32-16s_v3", "Standard_E32-8s_v3",
1869     "Standard_E32_v3", "Standard_E32s_v3", "Standard_E4_v3", "Standard_E4s_v3",
1870     "Standard_E64-16s_v3", "Standard_E64-32s_v3", "Standard_E64_v3", "Standard_E64s_v3",
1871     "Standard_E8_v3", "Standard_E8s_v3", "Standard_F1", "Standard_F16", "Standard_F16s",
1872     "Standard_F16s_v2", "Standard_F1s", "Standard_F2", "Standard_F2s", "Standard_F2s_v2",
1873     "Standard_F32s_v2", "Standard_F4", "Standard_F4s", "Standard_F4s_v2", "Standard_F64s_v2",
1874     "Standard_F72s_v2", "Standard_F8", "Standard_F8s", "Standard_F8s_v2", "Standard_G1",
1875     "Standard_G2", "Standard_G3", "Standard_G4", "Standard_G5", "Standard_GS1", "Standard_GS2",
1876     "Standard_GS3", "Standard_GS4", "Standard_GS4-4", "Standard_GS4-8", "Standard_GS5",
1877     "Standard_GS5-16", "Standard_GS5-8", "Standard_H16", "Standard_H16m", "Standard_H16mr",
1878     "Standard_H16r", "Standard_H8", "Standard_H8m", "Standard_L16s", "Standard_L32s",
1879     "Standard_L4s", "Standard_L8s", "Standard_M128-32ms", "Standard_M128-64ms", "Standard_M128ms",
1880     "Standard_M128s", "Standard_M64-16ms", "Standard_M64-32ms", "Standard_M64ms", "Standard_M64s",
1881     "Standard_NC12", "Standard_NC12s_v2", "Standard_NC12s_v3", "Standard_NC24", "Standard_NC24r",
1882     "Standard_NC24rs_v2", "Standard_NC24rs_v3", "Standard_NC24s_v2", "Standard_NC24s_v3",
1883     "Standard_NC6", "Standard_NC6s_v2", "Standard_NC6s_v3", "Standard_ND12s", "Standard_ND24rs",
1884     "Standard_ND24s", "Standard_ND6s", "Standard_NV12", "Standard_NV24", "Standard_NV6".
1885    :type vm_size: str or
1886     ~azure.mgmt.containerservice.v2020_12_01.models.ContainerServiceVMSizeTypes
1887    :param os_disk_size_gb: OS Disk Size in GB to be used to specify the disk size for every
1888     machine in this master/agent pool. If you specify 0, it will apply the default osDisk size
1889     according to the vmSize specified.
1890    :type os_disk_size_gb: int
1891    :param os_disk_type: OS disk type to be used for machines in a given agent pool. Allowed values
1892     are 'Ephemeral' and 'Managed'. If unspecified, defaults to 'Ephemeral' when the VM supports
1893     ephemeral OS and has a cache disk larger than the requested OSDiskSizeGB. Otherwise, defaults
1894     to 'Managed'. May not be changed after creation. Possible values include: "Managed",
1895     "Ephemeral".
1896    :type os_disk_type: str or ~azure.mgmt.containerservice.v2020_12_01.models.OSDiskType
1897    :param kubelet_disk_type: KubeletDiskType determines the placement of emptyDir volumes,
1898     container runtime data root, and Kubelet ephemeral storage. Currently allows one value, OS,
1899     resulting in Kubelet using the OS disk for data. Possible values include: "OS".
1900    :type kubelet_disk_type: str or ~azure.mgmt.containerservice.v2020_12_01.models.KubeletDiskType
1901    :param vnet_subnet_id: VNet SubnetID specifies the VNet's subnet identifier for nodes and maybe
1902     pods.
1903    :type vnet_subnet_id: str
1904    :param pod_subnet_id: Pod SubnetID specifies the VNet's subnet identifier for pods.
1905    :type pod_subnet_id: str
1906    :param max_pods: Maximum number of pods that can run on a node.
1907    :type max_pods: int
1908    :param os_type: OsType to be used to specify os type. Choose from Linux and Windows. Default to
1909     Linux. Possible values include: "Linux", "Windows". Default value: "Linux".
1910    :type os_type: str or ~azure.mgmt.containerservice.v2020_12_01.models.OSType
1911    :param max_count: Maximum number of nodes for auto-scaling.
1912    :type max_count: int
1913    :param min_count: Minimum number of nodes for auto-scaling.
1914    :type min_count: int
1915    :param enable_auto_scaling: Whether to enable auto-scaler.
1916    :type enable_auto_scaling: bool
1917    :param type: AgentPoolType represents types of an agent pool. Possible values include:
1918     "VirtualMachineScaleSets", "AvailabilitySet".
1919    :type type: str or ~azure.mgmt.containerservice.v2020_12_01.models.AgentPoolType
1920    :param mode: AgentPoolMode represents mode of an agent pool. Possible values include: "System",
1921     "User".
1922    :type mode: str or ~azure.mgmt.containerservice.v2020_12_01.models.AgentPoolMode
1923    :param orchestrator_version: Version of orchestrator specified when creating the managed
1924     cluster.
1925    :type orchestrator_version: str
1926    :ivar node_image_version: Version of node image.
1927    :vartype node_image_version: str
1928    :param upgrade_settings: Settings for upgrading the agentpool.
1929    :type upgrade_settings:
1930     ~azure.mgmt.containerservice.v2020_12_01.models.AgentPoolUpgradeSettings
1931    :ivar provisioning_state: The current deployment or provisioning state, which only appears in
1932     the response.
1933    :vartype provisioning_state: str
1934    :ivar power_state: Describes whether the Agent Pool is Running or Stopped.
1935    :vartype power_state: ~azure.mgmt.containerservice.v2020_12_01.models.PowerState
1936    :param availability_zones: Availability zones for nodes. Must use VirtualMachineScaleSets
1937     AgentPoolType.
1938    :type availability_zones: list[str]
1939    :param enable_node_public_ip: Enable public IP for nodes.
1940    :type enable_node_public_ip: bool
1941    :param scale_set_priority: ScaleSetPriority to be used to specify virtual machine scale set
1942     priority. Default to regular. Possible values include: "Spot", "Regular". Default value:
1943     "Regular".
1944    :type scale_set_priority: str or
1945     ~azure.mgmt.containerservice.v2020_12_01.models.ScaleSetPriority
1946    :param scale_set_eviction_policy: ScaleSetEvictionPolicy to be used to specify eviction policy
1947     for Spot virtual machine scale set. Default to Delete. Possible values include: "Delete",
1948     "Deallocate". Default value: "Delete".
1949    :type scale_set_eviction_policy: str or
1950     ~azure.mgmt.containerservice.v2020_12_01.models.ScaleSetEvictionPolicy
1951    :param spot_max_price: SpotMaxPrice to be used to specify the maximum price you are willing to
1952     pay in US Dollars. Possible values are any decimal value greater than zero or -1 which
1953     indicates default price to be up-to on-demand.
1954    :type spot_max_price: float
1955    :param tags: A set of tags. Agent pool tags to be persisted on the agent pool virtual machine
1956     scale set.
1957    :type tags: dict[str, str]
1958    :param node_labels: Agent pool node labels to be persisted across all nodes in agent pool.
1959    :type node_labels: dict[str, str]
1960    :param node_taints: Taints added to new nodes during node pool create and scale. For example,
1961     key=value:NoSchedule.
1962    :type node_taints: list[str]
1963    :param proximity_placement_group_id: The ID for Proximity Placement Group.
1964    :type proximity_placement_group_id: str
1965    :param kubelet_config: KubeletConfig specifies the configuration of kubelet on agent nodes.
1966    :type kubelet_config: ~azure.mgmt.containerservice.v2020_12_01.models.KubeletConfig
1967    :param linux_os_config: LinuxOSConfig specifies the OS configuration of linux agent nodes.
1968    :type linux_os_config: ~azure.mgmt.containerservice.v2020_12_01.models.LinuxOSConfig
1969    :param enable_encryption_at_host: Whether to enable EncryptionAtHost.
1970    :type enable_encryption_at_host: bool
1971    """
1972
1973    _validation = {
1974        'os_disk_size_gb': {'maximum': 1023, 'minimum': 0},
1975        'node_image_version': {'readonly': True},
1976        'provisioning_state': {'readonly': True},
1977        'power_state': {'readonly': True},
1978    }
1979
1980    _attribute_map = {
1981        'count': {'key': 'count', 'type': 'int'},
1982        'vm_size': {'key': 'vmSize', 'type': 'str'},
1983        'os_disk_size_gb': {'key': 'osDiskSizeGB', 'type': 'int'},
1984        'os_disk_type': {'key': 'osDiskType', 'type': 'str'},
1985        'kubelet_disk_type': {'key': 'kubeletDiskType', 'type': 'str'},
1986        'vnet_subnet_id': {'key': 'vnetSubnetID', 'type': 'str'},
1987        'pod_subnet_id': {'key': 'podSubnetID', 'type': 'str'},
1988        'max_pods': {'key': 'maxPods', 'type': 'int'},
1989        'os_type': {'key': 'osType', 'type': 'str'},
1990        'max_count': {'key': 'maxCount', 'type': 'int'},
1991        'min_count': {'key': 'minCount', 'type': 'int'},
1992        'enable_auto_scaling': {'key': 'enableAutoScaling', 'type': 'bool'},
1993        'type': {'key': 'type', 'type': 'str'},
1994        'mode': {'key': 'mode', 'type': 'str'},
1995        'orchestrator_version': {'key': 'orchestratorVersion', 'type': 'str'},
1996        'node_image_version': {'key': 'nodeImageVersion', 'type': 'str'},
1997        'upgrade_settings': {'key': 'upgradeSettings', 'type': 'AgentPoolUpgradeSettings'},
1998        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
1999        'power_state': {'key': 'powerState', 'type': 'PowerState'},
2000        'availability_zones': {'key': 'availabilityZones', 'type': '[str]'},
2001        'enable_node_public_ip': {'key': 'enableNodePublicIP', 'type': 'bool'},
2002        'scale_set_priority': {'key': 'scaleSetPriority', 'type': 'str'},
2003        'scale_set_eviction_policy': {'key': 'scaleSetEvictionPolicy', 'type': 'str'},
2004        'spot_max_price': {'key': 'spotMaxPrice', 'type': 'float'},
2005        'tags': {'key': 'tags', 'type': '{str}'},
2006        'node_labels': {'key': 'nodeLabels', 'type': '{str}'},
2007        'node_taints': {'key': 'nodeTaints', 'type': '[str]'},
2008        'proximity_placement_group_id': {'key': 'proximityPlacementGroupID', 'type': 'str'},
2009        'kubelet_config': {'key': 'kubeletConfig', 'type': 'KubeletConfig'},
2010        'linux_os_config': {'key': 'linuxOSConfig', 'type': 'LinuxOSConfig'},
2011        'enable_encryption_at_host': {'key': 'enableEncryptionAtHost', 'type': 'bool'},
2012    }
2013
2014    def __init__(
2015        self,
2016        *,
2017        count: Optional[int] = None,
2018        vm_size: Optional[Union[str, "ContainerServiceVMSizeTypes"]] = None,
2019        os_disk_size_gb: Optional[int] = None,
2020        os_disk_type: Optional[Union[str, "OSDiskType"]] = None,
2021        kubelet_disk_type: Optional[Union[str, "KubeletDiskType"]] = None,
2022        vnet_subnet_id: Optional[str] = None,
2023        pod_subnet_id: Optional[str] = None,
2024        max_pods: Optional[int] = None,
2025        os_type: Optional[Union[str, "OSType"]] = "Linux",
2026        max_count: Optional[int] = None,
2027        min_count: Optional[int] = None,
2028        enable_auto_scaling: Optional[bool] = None,
2029        type: Optional[Union[str, "AgentPoolType"]] = None,
2030        mode: Optional[Union[str, "AgentPoolMode"]] = None,
2031        orchestrator_version: Optional[str] = None,
2032        upgrade_settings: Optional["AgentPoolUpgradeSettings"] = None,
2033        availability_zones: Optional[List[str]] = None,
2034        enable_node_public_ip: Optional[bool] = None,
2035        scale_set_priority: Optional[Union[str, "ScaleSetPriority"]] = "Regular",
2036        scale_set_eviction_policy: Optional[Union[str, "ScaleSetEvictionPolicy"]] = "Delete",
2037        spot_max_price: Optional[float] = -1,
2038        tags: Optional[Dict[str, str]] = None,
2039        node_labels: Optional[Dict[str, str]] = None,
2040        node_taints: Optional[List[str]] = None,
2041        proximity_placement_group_id: Optional[str] = None,
2042        kubelet_config: Optional["KubeletConfig"] = None,
2043        linux_os_config: Optional["LinuxOSConfig"] = None,
2044        enable_encryption_at_host: Optional[bool] = None,
2045        **kwargs
2046    ):
2047        super(ManagedClusterAgentPoolProfileProperties, self).__init__(**kwargs)
2048        self.count = count
2049        self.vm_size = vm_size
2050        self.os_disk_size_gb = os_disk_size_gb
2051        self.os_disk_type = os_disk_type
2052        self.kubelet_disk_type = kubelet_disk_type
2053        self.vnet_subnet_id = vnet_subnet_id
2054        self.pod_subnet_id = pod_subnet_id
2055        self.max_pods = max_pods
2056        self.os_type = os_type
2057        self.max_count = max_count
2058        self.min_count = min_count
2059        self.enable_auto_scaling = enable_auto_scaling
2060        self.type = type
2061        self.mode = mode
2062        self.orchestrator_version = orchestrator_version
2063        self.node_image_version = None
2064        self.upgrade_settings = upgrade_settings
2065        self.provisioning_state = None
2066        self.power_state = None
2067        self.availability_zones = availability_zones
2068        self.enable_node_public_ip = enable_node_public_ip
2069        self.scale_set_priority = scale_set_priority
2070        self.scale_set_eviction_policy = scale_set_eviction_policy
2071        self.spot_max_price = spot_max_price
2072        self.tags = tags
2073        self.node_labels = node_labels
2074        self.node_taints = node_taints
2075        self.proximity_placement_group_id = proximity_placement_group_id
2076        self.kubelet_config = kubelet_config
2077        self.linux_os_config = linux_os_config
2078        self.enable_encryption_at_host = enable_encryption_at_host
2079
2080
2081class ManagedClusterAgentPoolProfile(ManagedClusterAgentPoolProfileProperties):
2082    """Profile for the container service agent pool.
2083
2084    Variables are only populated by the server, and will be ignored when sending a request.
2085
2086    All required parameters must be populated in order to send to Azure.
2087
2088    :param count: Number of agents (VMs) to host docker containers. Allowed values must be in the
2089     range of 0 to 100 (inclusive) for user pools and in the range of 1 to 100 (inclusive) for
2090     system pools. The default value is 1.
2091    :type count: int
2092    :param vm_size: Size of agent VMs. Possible values include: "Standard_A1", "Standard_A10",
2093     "Standard_A11", "Standard_A1_v2", "Standard_A2", "Standard_A2_v2", "Standard_A2m_v2",
2094     "Standard_A3", "Standard_A4", "Standard_A4_v2", "Standard_A4m_v2", "Standard_A5",
2095     "Standard_A6", "Standard_A7", "Standard_A8", "Standard_A8_v2", "Standard_A8m_v2",
2096     "Standard_A9", "Standard_B2ms", "Standard_B2s", "Standard_B4ms", "Standard_B8ms",
2097     "Standard_D1", "Standard_D11", "Standard_D11_v2", "Standard_D11_v2_Promo", "Standard_D12",
2098     "Standard_D12_v2", "Standard_D12_v2_Promo", "Standard_D13", "Standard_D13_v2",
2099     "Standard_D13_v2_Promo", "Standard_D14", "Standard_D14_v2", "Standard_D14_v2_Promo",
2100     "Standard_D15_v2", "Standard_D16_v3", "Standard_D16s_v3", "Standard_D1_v2", "Standard_D2",
2101     "Standard_D2_v2", "Standard_D2_v2_Promo", "Standard_D2_v3", "Standard_D2s_v3", "Standard_D3",
2102     "Standard_D32_v3", "Standard_D32s_v3", "Standard_D3_v2", "Standard_D3_v2_Promo", "Standard_D4",
2103     "Standard_D4_v2", "Standard_D4_v2_Promo", "Standard_D4_v3", "Standard_D4s_v3",
2104     "Standard_D5_v2", "Standard_D5_v2_Promo", "Standard_D64_v3", "Standard_D64s_v3",
2105     "Standard_D8_v3", "Standard_D8s_v3", "Standard_DS1", "Standard_DS11", "Standard_DS11_v2",
2106     "Standard_DS11_v2_Promo", "Standard_DS12", "Standard_DS12_v2", "Standard_DS12_v2_Promo",
2107     "Standard_DS13", "Standard_DS13-2_v2", "Standard_DS13-4_v2", "Standard_DS13_v2",
2108     "Standard_DS13_v2_Promo", "Standard_DS14", "Standard_DS14-4_v2", "Standard_DS14-8_v2",
2109     "Standard_DS14_v2", "Standard_DS14_v2_Promo", "Standard_DS15_v2", "Standard_DS1_v2",
2110     "Standard_DS2", "Standard_DS2_v2", "Standard_DS2_v2_Promo", "Standard_DS3", "Standard_DS3_v2",
2111     "Standard_DS3_v2_Promo", "Standard_DS4", "Standard_DS4_v2", "Standard_DS4_v2_Promo",
2112     "Standard_DS5_v2", "Standard_DS5_v2_Promo", "Standard_E16_v3", "Standard_E16s_v3",
2113     "Standard_E2_v3", "Standard_E2s_v3", "Standard_E32-16s_v3", "Standard_E32-8s_v3",
2114     "Standard_E32_v3", "Standard_E32s_v3", "Standard_E4_v3", "Standard_E4s_v3",
2115     "Standard_E64-16s_v3", "Standard_E64-32s_v3", "Standard_E64_v3", "Standard_E64s_v3",
2116     "Standard_E8_v3", "Standard_E8s_v3", "Standard_F1", "Standard_F16", "Standard_F16s",
2117     "Standard_F16s_v2", "Standard_F1s", "Standard_F2", "Standard_F2s", "Standard_F2s_v2",
2118     "Standard_F32s_v2", "Standard_F4", "Standard_F4s", "Standard_F4s_v2", "Standard_F64s_v2",
2119     "Standard_F72s_v2", "Standard_F8", "Standard_F8s", "Standard_F8s_v2", "Standard_G1",
2120     "Standard_G2", "Standard_G3", "Standard_G4", "Standard_G5", "Standard_GS1", "Standard_GS2",
2121     "Standard_GS3", "Standard_GS4", "Standard_GS4-4", "Standard_GS4-8", "Standard_GS5",
2122     "Standard_GS5-16", "Standard_GS5-8", "Standard_H16", "Standard_H16m", "Standard_H16mr",
2123     "Standard_H16r", "Standard_H8", "Standard_H8m", "Standard_L16s", "Standard_L32s",
2124     "Standard_L4s", "Standard_L8s", "Standard_M128-32ms", "Standard_M128-64ms", "Standard_M128ms",
2125     "Standard_M128s", "Standard_M64-16ms", "Standard_M64-32ms", "Standard_M64ms", "Standard_M64s",
2126     "Standard_NC12", "Standard_NC12s_v2", "Standard_NC12s_v3", "Standard_NC24", "Standard_NC24r",
2127     "Standard_NC24rs_v2", "Standard_NC24rs_v3", "Standard_NC24s_v2", "Standard_NC24s_v3",
2128     "Standard_NC6", "Standard_NC6s_v2", "Standard_NC6s_v3", "Standard_ND12s", "Standard_ND24rs",
2129     "Standard_ND24s", "Standard_ND6s", "Standard_NV12", "Standard_NV24", "Standard_NV6".
2130    :type vm_size: str or
2131     ~azure.mgmt.containerservice.v2020_12_01.models.ContainerServiceVMSizeTypes
2132    :param os_disk_size_gb: OS Disk Size in GB to be used to specify the disk size for every
2133     machine in this master/agent pool. If you specify 0, it will apply the default osDisk size
2134     according to the vmSize specified.
2135    :type os_disk_size_gb: int
2136    :param os_disk_type: OS disk type to be used for machines in a given agent pool. Allowed values
2137     are 'Ephemeral' and 'Managed'. If unspecified, defaults to 'Ephemeral' when the VM supports
2138     ephemeral OS and has a cache disk larger than the requested OSDiskSizeGB. Otherwise, defaults
2139     to 'Managed'. May not be changed after creation. Possible values include: "Managed",
2140     "Ephemeral".
2141    :type os_disk_type: str or ~azure.mgmt.containerservice.v2020_12_01.models.OSDiskType
2142    :param kubelet_disk_type: KubeletDiskType determines the placement of emptyDir volumes,
2143     container runtime data root, and Kubelet ephemeral storage. Currently allows one value, OS,
2144     resulting in Kubelet using the OS disk for data. Possible values include: "OS".
2145    :type kubelet_disk_type: str or ~azure.mgmt.containerservice.v2020_12_01.models.KubeletDiskType
2146    :param vnet_subnet_id: VNet SubnetID specifies the VNet's subnet identifier for nodes and maybe
2147     pods.
2148    :type vnet_subnet_id: str
2149    :param pod_subnet_id: Pod SubnetID specifies the VNet's subnet identifier for pods.
2150    :type pod_subnet_id: str
2151    :param max_pods: Maximum number of pods that can run on a node.
2152    :type max_pods: int
2153    :param os_type: OsType to be used to specify os type. Choose from Linux and Windows. Default to
2154     Linux. Possible values include: "Linux", "Windows". Default value: "Linux".
2155    :type os_type: str or ~azure.mgmt.containerservice.v2020_12_01.models.OSType
2156    :param max_count: Maximum number of nodes for auto-scaling.
2157    :type max_count: int
2158    :param min_count: Minimum number of nodes for auto-scaling.
2159    :type min_count: int
2160    :param enable_auto_scaling: Whether to enable auto-scaler.
2161    :type enable_auto_scaling: bool
2162    :param type: AgentPoolType represents types of an agent pool. Possible values include:
2163     "VirtualMachineScaleSets", "AvailabilitySet".
2164    :type type: str or ~azure.mgmt.containerservice.v2020_12_01.models.AgentPoolType
2165    :param mode: AgentPoolMode represents mode of an agent pool. Possible values include: "System",
2166     "User".
2167    :type mode: str or ~azure.mgmt.containerservice.v2020_12_01.models.AgentPoolMode
2168    :param orchestrator_version: Version of orchestrator specified when creating the managed
2169     cluster.
2170    :type orchestrator_version: str
2171    :ivar node_image_version: Version of node image.
2172    :vartype node_image_version: str
2173    :param upgrade_settings: Settings for upgrading the agentpool.
2174    :type upgrade_settings:
2175     ~azure.mgmt.containerservice.v2020_12_01.models.AgentPoolUpgradeSettings
2176    :ivar provisioning_state: The current deployment or provisioning state, which only appears in
2177     the response.
2178    :vartype provisioning_state: str
2179    :ivar power_state: Describes whether the Agent Pool is Running or Stopped.
2180    :vartype power_state: ~azure.mgmt.containerservice.v2020_12_01.models.PowerState
2181    :param availability_zones: Availability zones for nodes. Must use VirtualMachineScaleSets
2182     AgentPoolType.
2183    :type availability_zones: list[str]
2184    :param enable_node_public_ip: Enable public IP for nodes.
2185    :type enable_node_public_ip: bool
2186    :param scale_set_priority: ScaleSetPriority to be used to specify virtual machine scale set
2187     priority. Default to regular. Possible values include: "Spot", "Regular". Default value:
2188     "Regular".
2189    :type scale_set_priority: str or
2190     ~azure.mgmt.containerservice.v2020_12_01.models.ScaleSetPriority
2191    :param scale_set_eviction_policy: ScaleSetEvictionPolicy to be used to specify eviction policy
2192     for Spot virtual machine scale set. Default to Delete. Possible values include: "Delete",
2193     "Deallocate". Default value: "Delete".
2194    :type scale_set_eviction_policy: str or
2195     ~azure.mgmt.containerservice.v2020_12_01.models.ScaleSetEvictionPolicy
2196    :param spot_max_price: SpotMaxPrice to be used to specify the maximum price you are willing to
2197     pay in US Dollars. Possible values are any decimal value greater than zero or -1 which
2198     indicates default price to be up-to on-demand.
2199    :type spot_max_price: float
2200    :param tags: A set of tags. Agent pool tags to be persisted on the agent pool virtual machine
2201     scale set.
2202    :type tags: dict[str, str]
2203    :param node_labels: Agent pool node labels to be persisted across all nodes in agent pool.
2204    :type node_labels: dict[str, str]
2205    :param node_taints: Taints added to new nodes during node pool create and scale. For example,
2206     key=value:NoSchedule.
2207    :type node_taints: list[str]
2208    :param proximity_placement_group_id: The ID for Proximity Placement Group.
2209    :type proximity_placement_group_id: str
2210    :param kubelet_config: KubeletConfig specifies the configuration of kubelet on agent nodes.
2211    :type kubelet_config: ~azure.mgmt.containerservice.v2020_12_01.models.KubeletConfig
2212    :param linux_os_config: LinuxOSConfig specifies the OS configuration of linux agent nodes.
2213    :type linux_os_config: ~azure.mgmt.containerservice.v2020_12_01.models.LinuxOSConfig
2214    :param enable_encryption_at_host: Whether to enable EncryptionAtHost.
2215    :type enable_encryption_at_host: bool
2216    :param name: Required. Unique name of the agent pool profile in the context of the subscription
2217     and resource group.
2218    :type name: str
2219    """
2220
2221    _validation = {
2222        'os_disk_size_gb': {'maximum': 1023, 'minimum': 0},
2223        'node_image_version': {'readonly': True},
2224        'provisioning_state': {'readonly': True},
2225        'power_state': {'readonly': True},
2226        'name': {'required': True, 'pattern': r'^[a-z][a-z0-9]{0,11}$'},
2227    }
2228
2229    _attribute_map = {
2230        'count': {'key': 'count', 'type': 'int'},
2231        'vm_size': {'key': 'vmSize', 'type': 'str'},
2232        'os_disk_size_gb': {'key': 'osDiskSizeGB', 'type': 'int'},
2233        'os_disk_type': {'key': 'osDiskType', 'type': 'str'},
2234        'kubelet_disk_type': {'key': 'kubeletDiskType', 'type': 'str'},
2235        'vnet_subnet_id': {'key': 'vnetSubnetID', 'type': 'str'},
2236        'pod_subnet_id': {'key': 'podSubnetID', 'type': 'str'},
2237        'max_pods': {'key': 'maxPods', 'type': 'int'},
2238        'os_type': {'key': 'osType', 'type': 'str'},
2239        'max_count': {'key': 'maxCount', 'type': 'int'},
2240        'min_count': {'key': 'minCount', 'type': 'int'},
2241        'enable_auto_scaling': {'key': 'enableAutoScaling', 'type': 'bool'},
2242        'type': {'key': 'type', 'type': 'str'},
2243        'mode': {'key': 'mode', 'type': 'str'},
2244        'orchestrator_version': {'key': 'orchestratorVersion', 'type': 'str'},
2245        'node_image_version': {'key': 'nodeImageVersion', 'type': 'str'},
2246        'upgrade_settings': {'key': 'upgradeSettings', 'type': 'AgentPoolUpgradeSettings'},
2247        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
2248        'power_state': {'key': 'powerState', 'type': 'PowerState'},
2249        'availability_zones': {'key': 'availabilityZones', 'type': '[str]'},
2250        'enable_node_public_ip': {'key': 'enableNodePublicIP', 'type': 'bool'},
2251        'scale_set_priority': {'key': 'scaleSetPriority', 'type': 'str'},
2252        'scale_set_eviction_policy': {'key': 'scaleSetEvictionPolicy', 'type': 'str'},
2253        'spot_max_price': {'key': 'spotMaxPrice', 'type': 'float'},
2254        'tags': {'key': 'tags', 'type': '{str}'},
2255        'node_labels': {'key': 'nodeLabels', 'type': '{str}'},
2256        'node_taints': {'key': 'nodeTaints', 'type': '[str]'},
2257        'proximity_placement_group_id': {'key': 'proximityPlacementGroupID', 'type': 'str'},
2258        'kubelet_config': {'key': 'kubeletConfig', 'type': 'KubeletConfig'},
2259        'linux_os_config': {'key': 'linuxOSConfig', 'type': 'LinuxOSConfig'},
2260        'enable_encryption_at_host': {'key': 'enableEncryptionAtHost', 'type': 'bool'},
2261        'name': {'key': 'name', 'type': 'str'},
2262    }
2263
2264    def __init__(
2265        self,
2266        *,
2267        name: str,
2268        count: Optional[int] = None,
2269        vm_size: Optional[Union[str, "ContainerServiceVMSizeTypes"]] = None,
2270        os_disk_size_gb: Optional[int] = None,
2271        os_disk_type: Optional[Union[str, "OSDiskType"]] = None,
2272        kubelet_disk_type: Optional[Union[str, "KubeletDiskType"]] = None,
2273        vnet_subnet_id: Optional[str] = None,
2274        pod_subnet_id: Optional[str] = None,
2275        max_pods: Optional[int] = None,
2276        os_type: Optional[Union[str, "OSType"]] = "Linux",
2277        max_count: Optional[int] = None,
2278        min_count: Optional[int] = None,
2279        enable_auto_scaling: Optional[bool] = None,
2280        type: Optional[Union[str, "AgentPoolType"]] = None,
2281        mode: Optional[Union[str, "AgentPoolMode"]] = None,
2282        orchestrator_version: Optional[str] = None,
2283        upgrade_settings: Optional["AgentPoolUpgradeSettings"] = None,
2284        availability_zones: Optional[List[str]] = None,
2285        enable_node_public_ip: Optional[bool] = None,
2286        scale_set_priority: Optional[Union[str, "ScaleSetPriority"]] = "Regular",
2287        scale_set_eviction_policy: Optional[Union[str, "ScaleSetEvictionPolicy"]] = "Delete",
2288        spot_max_price: Optional[float] = -1,
2289        tags: Optional[Dict[str, str]] = None,
2290        node_labels: Optional[Dict[str, str]] = None,
2291        node_taints: Optional[List[str]] = None,
2292        proximity_placement_group_id: Optional[str] = None,
2293        kubelet_config: Optional["KubeletConfig"] = None,
2294        linux_os_config: Optional["LinuxOSConfig"] = None,
2295        enable_encryption_at_host: Optional[bool] = None,
2296        **kwargs
2297    ):
2298        super(ManagedClusterAgentPoolProfile, self).__init__(count=count, vm_size=vm_size, os_disk_size_gb=os_disk_size_gb, os_disk_type=os_disk_type, kubelet_disk_type=kubelet_disk_type, vnet_subnet_id=vnet_subnet_id, pod_subnet_id=pod_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, kubelet_config=kubelet_config, linux_os_config=linux_os_config, enable_encryption_at_host=enable_encryption_at_host, **kwargs)
2299        self.name = name
2300
2301
2302class ManagedClusterAPIServerAccessProfile(msrest.serialization.Model):
2303    """Access profile for managed cluster API server.
2304
2305    :param authorized_ip_ranges: Authorized IP Ranges to kubernetes API server.
2306    :type authorized_ip_ranges: list[str]
2307    :param enable_private_cluster: Whether to create the cluster as a private cluster or not.
2308    :type enable_private_cluster: bool
2309    :param private_dns_zone: Private dns zone mode for private cluster.
2310    :type private_dns_zone: str
2311    """
2312
2313    _attribute_map = {
2314        'authorized_ip_ranges': {'key': 'authorizedIPRanges', 'type': '[str]'},
2315        'enable_private_cluster': {'key': 'enablePrivateCluster', 'type': 'bool'},
2316        'private_dns_zone': {'key': 'privateDNSZone', 'type': 'str'},
2317    }
2318
2319    def __init__(
2320        self,
2321        *,
2322        authorized_ip_ranges: Optional[List[str]] = None,
2323        enable_private_cluster: Optional[bool] = None,
2324        private_dns_zone: Optional[str] = None,
2325        **kwargs
2326    ):
2327        super(ManagedClusterAPIServerAccessProfile, self).__init__(**kwargs)
2328        self.authorized_ip_ranges = authorized_ip_ranges
2329        self.enable_private_cluster = enable_private_cluster
2330        self.private_dns_zone = private_dns_zone
2331
2332
2333class ManagedClusterAutoUpgradeProfile(msrest.serialization.Model):
2334    """Auto upgrade profile for a managed cluster.
2335
2336    :param upgrade_channel: upgrade channel for auto upgrade. Possible values include: "rapid",
2337     "stable", "patch", "none".
2338    :type upgrade_channel: str or ~azure.mgmt.containerservice.v2020_12_01.models.UpgradeChannel
2339    """
2340
2341    _attribute_map = {
2342        'upgrade_channel': {'key': 'upgradeChannel', 'type': 'str'},
2343    }
2344
2345    def __init__(
2346        self,
2347        *,
2348        upgrade_channel: Optional[Union[str, "UpgradeChannel"]] = None,
2349        **kwargs
2350    ):
2351        super(ManagedClusterAutoUpgradeProfile, self).__init__(**kwargs)
2352        self.upgrade_channel = upgrade_channel
2353
2354
2355class ManagedClusterIdentity(msrest.serialization.Model):
2356    """Identity for the managed cluster.
2357
2358    Variables are only populated by the server, and will be ignored when sending a request.
2359
2360    :ivar principal_id: The principal id of the system assigned identity which is used by master
2361     components.
2362    :vartype principal_id: str
2363    :ivar tenant_id: The tenant id of the system assigned identity which is used by master
2364     components.
2365    :vartype tenant_id: str
2366    :param type: The type of identity used for the managed cluster. Type 'SystemAssigned' will use
2367     an implicitly created identity in master components and an auto-created user assigned identity
2368     in MC_ resource group in agent nodes. Type 'None' will not use MSI for the managed cluster,
2369     service principal will be used instead. Possible values include: "SystemAssigned",
2370     "UserAssigned", "None".
2371    :type type: str or ~azure.mgmt.containerservice.v2020_12_01.models.ResourceIdentityType
2372    :param user_assigned_identities: The user identity associated with the managed cluster. This
2373     identity will be used in control plane and only one user assigned identity is allowed. The user
2374     identity dictionary key references will be ARM resource ids in the form:
2375     '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.
2376    :type user_assigned_identities: dict[str,
2377     ~azure.mgmt.containerservice.v2020_12_01.models.Components1Umhcm8SchemasManagedclusteridentityPropertiesUserassignedidentitiesAdditionalproperties]
2378    """
2379
2380    _validation = {
2381        'principal_id': {'readonly': True},
2382        'tenant_id': {'readonly': True},
2383    }
2384
2385    _attribute_map = {
2386        'principal_id': {'key': 'principalId', 'type': 'str'},
2387        'tenant_id': {'key': 'tenantId', 'type': 'str'},
2388        'type': {'key': 'type', 'type': 'str'},
2389        'user_assigned_identities': {'key': 'userAssignedIdentities', 'type': '{Components1Umhcm8SchemasManagedclusteridentityPropertiesUserassignedidentitiesAdditionalproperties}'},
2390    }
2391
2392    def __init__(
2393        self,
2394        *,
2395        type: Optional[Union[str, "ResourceIdentityType"]] = None,
2396        user_assigned_identities: Optional[Dict[str, "Components1Umhcm8SchemasManagedclusteridentityPropertiesUserassignedidentitiesAdditionalproperties"]] = None,
2397        **kwargs
2398    ):
2399        super(ManagedClusterIdentity, self).__init__(**kwargs)
2400        self.principal_id = None
2401        self.tenant_id = None
2402        self.type = type
2403        self.user_assigned_identities = user_assigned_identities
2404
2405
2406class ManagedClusterListResult(msrest.serialization.Model):
2407    """The response from the List Managed Clusters operation.
2408
2409    Variables are only populated by the server, and will be ignored when sending a request.
2410
2411    :param value: The list of managed clusters.
2412    :type value: list[~azure.mgmt.containerservice.v2020_12_01.models.ManagedCluster]
2413    :ivar next_link: The URL to get the next set of managed cluster results.
2414    :vartype next_link: str
2415    """
2416
2417    _validation = {
2418        'next_link': {'readonly': True},
2419    }
2420
2421    _attribute_map = {
2422        'value': {'key': 'value', 'type': '[ManagedCluster]'},
2423        'next_link': {'key': 'nextLink', 'type': 'str'},
2424    }
2425
2426    def __init__(
2427        self,
2428        *,
2429        value: Optional[List["ManagedCluster"]] = None,
2430        **kwargs
2431    ):
2432        super(ManagedClusterListResult, self).__init__(**kwargs)
2433        self.value = value
2434        self.next_link = None
2435
2436
2437class ManagedClusterLoadBalancerProfile(msrest.serialization.Model):
2438    """Profile of the managed cluster load balancer.
2439
2440    :param managed_outbound_i_ps: Desired managed outbound IPs for the cluster load balancer.
2441    :type managed_outbound_i_ps:
2442     ~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterLoadBalancerProfileManagedOutboundIPs
2443    :param outbound_ip_prefixes: Desired outbound IP Prefix resources for the cluster load
2444     balancer.
2445    :type outbound_ip_prefixes:
2446     ~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterLoadBalancerProfileOutboundIPPrefixes
2447    :param outbound_i_ps: Desired outbound IP resources for the cluster load balancer.
2448    :type outbound_i_ps:
2449     ~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterLoadBalancerProfileOutboundIPs
2450    :param effective_outbound_i_ps: The effective outbound IP resources of the cluster load
2451     balancer.
2452    :type effective_outbound_i_ps:
2453     list[~azure.mgmt.containerservice.v2020_12_01.models.ResourceReference]
2454    :param allocated_outbound_ports: Desired number of allocated SNAT ports per VM. Allowed values
2455     must be in the range of 0 to 64000 (inclusive). The default value is 0 which results in Azure
2456     dynamically allocating ports.
2457    :type allocated_outbound_ports: int
2458    :param idle_timeout_in_minutes: Desired outbound flow idle timeout in minutes. Allowed values
2459     must be in the range of 4 to 120 (inclusive). The default value is 30 minutes.
2460    :type idle_timeout_in_minutes: int
2461    """
2462
2463    _validation = {
2464        'allocated_outbound_ports': {'maximum': 64000, 'minimum': 0},
2465        'idle_timeout_in_minutes': {'maximum': 120, 'minimum': 4},
2466    }
2467
2468    _attribute_map = {
2469        'managed_outbound_i_ps': {'key': 'managedOutboundIPs', 'type': 'ManagedClusterLoadBalancerProfileManagedOutboundIPs'},
2470        'outbound_ip_prefixes': {'key': 'outboundIPPrefixes', 'type': 'ManagedClusterLoadBalancerProfileOutboundIPPrefixes'},
2471        'outbound_i_ps': {'key': 'outboundIPs', 'type': 'ManagedClusterLoadBalancerProfileOutboundIPs'},
2472        'effective_outbound_i_ps': {'key': 'effectiveOutboundIPs', 'type': '[ResourceReference]'},
2473        'allocated_outbound_ports': {'key': 'allocatedOutboundPorts', 'type': 'int'},
2474        'idle_timeout_in_minutes': {'key': 'idleTimeoutInMinutes', 'type': 'int'},
2475    }
2476
2477    def __init__(
2478        self,
2479        *,
2480        managed_outbound_i_ps: Optional["ManagedClusterLoadBalancerProfileManagedOutboundIPs"] = None,
2481        outbound_ip_prefixes: Optional["ManagedClusterLoadBalancerProfileOutboundIPPrefixes"] = None,
2482        outbound_i_ps: Optional["ManagedClusterLoadBalancerProfileOutboundIPs"] = None,
2483        effective_outbound_i_ps: Optional[List["ResourceReference"]] = None,
2484        allocated_outbound_ports: Optional[int] = 0,
2485        idle_timeout_in_minutes: Optional[int] = 30,
2486        **kwargs
2487    ):
2488        super(ManagedClusterLoadBalancerProfile, self).__init__(**kwargs)
2489        self.managed_outbound_i_ps = managed_outbound_i_ps
2490        self.outbound_ip_prefixes = outbound_ip_prefixes
2491        self.outbound_i_ps = outbound_i_ps
2492        self.effective_outbound_i_ps = effective_outbound_i_ps
2493        self.allocated_outbound_ports = allocated_outbound_ports
2494        self.idle_timeout_in_minutes = idle_timeout_in_minutes
2495
2496
2497class ManagedClusterLoadBalancerProfileManagedOutboundIPs(msrest.serialization.Model):
2498    """Desired managed outbound IPs for the cluster load balancer.
2499
2500    :param count: Desired number of outbound IP created/managed by Azure for the cluster load
2501     balancer. Allowed values must be in the range of 1 to 100 (inclusive). The default value is 1.
2502    :type count: int
2503    """
2504
2505    _validation = {
2506        'count': {'maximum': 100, 'minimum': 1},
2507    }
2508
2509    _attribute_map = {
2510        'count': {'key': 'count', 'type': 'int'},
2511    }
2512
2513    def __init__(
2514        self,
2515        *,
2516        count: Optional[int] = 1,
2517        **kwargs
2518    ):
2519        super(ManagedClusterLoadBalancerProfileManagedOutboundIPs, self).__init__(**kwargs)
2520        self.count = count
2521
2522
2523class ManagedClusterLoadBalancerProfileOutboundIPPrefixes(msrest.serialization.Model):
2524    """Desired outbound IP Prefix resources for the cluster load balancer.
2525
2526    :param public_ip_prefixes: A list of public IP prefix resources.
2527    :type public_ip_prefixes:
2528     list[~azure.mgmt.containerservice.v2020_12_01.models.ResourceReference]
2529    """
2530
2531    _attribute_map = {
2532        'public_ip_prefixes': {'key': 'publicIPPrefixes', 'type': '[ResourceReference]'},
2533    }
2534
2535    def __init__(
2536        self,
2537        *,
2538        public_ip_prefixes: Optional[List["ResourceReference"]] = None,
2539        **kwargs
2540    ):
2541        super(ManagedClusterLoadBalancerProfileOutboundIPPrefixes, self).__init__(**kwargs)
2542        self.public_ip_prefixes = public_ip_prefixes
2543
2544
2545class ManagedClusterLoadBalancerProfileOutboundIPs(msrest.serialization.Model):
2546    """Desired outbound IP resources for the cluster load balancer.
2547
2548    :param public_i_ps: A list of public IP resources.
2549    :type public_i_ps: list[~azure.mgmt.containerservice.v2020_12_01.models.ResourceReference]
2550    """
2551
2552    _attribute_map = {
2553        'public_i_ps': {'key': 'publicIPs', 'type': '[ResourceReference]'},
2554    }
2555
2556    def __init__(
2557        self,
2558        *,
2559        public_i_ps: Optional[List["ResourceReference"]] = None,
2560        **kwargs
2561    ):
2562        super(ManagedClusterLoadBalancerProfileOutboundIPs, self).__init__(**kwargs)
2563        self.public_i_ps = public_i_ps
2564
2565
2566class ManagedClusterPodIdentity(msrest.serialization.Model):
2567    """ManagedClusterPodIdentity.
2568
2569    Variables are only populated by the server, and will be ignored when sending a request.
2570
2571    All required parameters must be populated in order to send to Azure.
2572
2573    :param name: Required. Name of the pod identity.
2574    :type name: str
2575    :param namespace: Required. Namespace of the pod identity.
2576    :type namespace: str
2577    :param identity: Required. Information of the user assigned identity.
2578    :type identity: ~azure.mgmt.containerservice.v2020_12_01.models.UserAssignedIdentity
2579    :ivar provisioning_state: The current provisioning state of the pod identity. Possible values
2580     include: "Assigned", "Updating", "Deleting", "Failed".
2581    :vartype provisioning_state: str or
2582     ~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterPodIdentityProvisioningState
2583    :ivar provisioning_info:
2584    :vartype provisioning_info:
2585     ~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterPodIdentityProvisioningInfo
2586    """
2587
2588    _validation = {
2589        'name': {'required': True},
2590        'namespace': {'required': True},
2591        'identity': {'required': True},
2592        'provisioning_state': {'readonly': True},
2593        'provisioning_info': {'readonly': True},
2594    }
2595
2596    _attribute_map = {
2597        'name': {'key': 'name', 'type': 'str'},
2598        'namespace': {'key': 'namespace', 'type': 'str'},
2599        'identity': {'key': 'identity', 'type': 'UserAssignedIdentity'},
2600        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
2601        'provisioning_info': {'key': 'provisioningInfo', 'type': 'ManagedClusterPodIdentityProvisioningInfo'},
2602    }
2603
2604    def __init__(
2605        self,
2606        *,
2607        name: str,
2608        namespace: str,
2609        identity: "UserAssignedIdentity",
2610        **kwargs
2611    ):
2612        super(ManagedClusterPodIdentity, self).__init__(**kwargs)
2613        self.name = name
2614        self.namespace = namespace
2615        self.identity = identity
2616        self.provisioning_state = None
2617        self.provisioning_info = None
2618
2619
2620class ManagedClusterPodIdentityException(msrest.serialization.Model):
2621    """ManagedClusterPodIdentityException.
2622
2623    All required parameters must be populated in order to send to Azure.
2624
2625    :param name: Required. Name of the pod identity exception.
2626    :type name: str
2627    :param namespace: Required. Namespace of the pod identity exception.
2628    :type namespace: str
2629    :param pod_labels: Required. Pod labels to match.
2630    :type pod_labels: dict[str, str]
2631    """
2632
2633    _validation = {
2634        'name': {'required': True},
2635        'namespace': {'required': True},
2636        'pod_labels': {'required': True},
2637    }
2638
2639    _attribute_map = {
2640        'name': {'key': 'name', 'type': 'str'},
2641        'namespace': {'key': 'namespace', 'type': 'str'},
2642        'pod_labels': {'key': 'podLabels', 'type': '{str}'},
2643    }
2644
2645    def __init__(
2646        self,
2647        *,
2648        name: str,
2649        namespace: str,
2650        pod_labels: Dict[str, str],
2651        **kwargs
2652    ):
2653        super(ManagedClusterPodIdentityException, self).__init__(**kwargs)
2654        self.name = name
2655        self.namespace = namespace
2656        self.pod_labels = pod_labels
2657
2658
2659class ManagedClusterPodIdentityProfile(msrest.serialization.Model):
2660    """ManagedClusterPodIdentityProfile.
2661
2662    :param enabled: Whether the pod identity addon is enabled.
2663    :type enabled: bool
2664    :param user_assigned_identities: User assigned pod identity settings.
2665    :type user_assigned_identities:
2666     list[~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterPodIdentity]
2667    :param user_assigned_identity_exceptions: User assigned pod identity exception settings.
2668    :type user_assigned_identity_exceptions:
2669     list[~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterPodIdentityException]
2670    """
2671
2672    _attribute_map = {
2673        'enabled': {'key': 'enabled', 'type': 'bool'},
2674        'user_assigned_identities': {'key': 'userAssignedIdentities', 'type': '[ManagedClusterPodIdentity]'},
2675        'user_assigned_identity_exceptions': {'key': 'userAssignedIdentityExceptions', 'type': '[ManagedClusterPodIdentityException]'},
2676    }
2677
2678    def __init__(
2679        self,
2680        *,
2681        enabled: Optional[bool] = None,
2682        user_assigned_identities: Optional[List["ManagedClusterPodIdentity"]] = None,
2683        user_assigned_identity_exceptions: Optional[List["ManagedClusterPodIdentityException"]] = None,
2684        **kwargs
2685    ):
2686        super(ManagedClusterPodIdentityProfile, self).__init__(**kwargs)
2687        self.enabled = enabled
2688        self.user_assigned_identities = user_assigned_identities
2689        self.user_assigned_identity_exceptions = user_assigned_identity_exceptions
2690
2691
2692class ManagedClusterPodIdentityProvisioningInfo(msrest.serialization.Model):
2693    """ManagedClusterPodIdentityProvisioningInfo.
2694
2695    :param error: Pod identity assignment error (if any).
2696    :type error: ~azure.mgmt.containerservice.v2020_12_01.models.CloudError
2697    """
2698
2699    _attribute_map = {
2700        'error': {'key': 'error', 'type': 'CloudError'},
2701    }
2702
2703    def __init__(
2704        self,
2705        *,
2706        error: Optional["CloudError"] = None,
2707        **kwargs
2708    ):
2709        super(ManagedClusterPodIdentityProvisioningInfo, self).__init__(**kwargs)
2710        self.error = error
2711
2712
2713class ManagedClusterPoolUpgradeProfile(msrest.serialization.Model):
2714    """The list of available upgrade versions.
2715
2716    All required parameters must be populated in order to send to Azure.
2717
2718    :param kubernetes_version: Required. Kubernetes version (major, minor, patch).
2719    :type kubernetes_version: str
2720    :param name: Pool name.
2721    :type name: str
2722    :param os_type: Required. OsType to be used to specify os type. Choose from Linux and Windows.
2723     Default to Linux. Possible values include: "Linux", "Windows". Default value: "Linux".
2724    :type os_type: str or ~azure.mgmt.containerservice.v2020_12_01.models.OSType
2725    :param upgrades: List of orchestrator types and versions available for upgrade.
2726    :type upgrades:
2727     list[~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterPoolUpgradeProfileUpgradesItem]
2728    """
2729
2730    _validation = {
2731        'kubernetes_version': {'required': True},
2732        'os_type': {'required': True},
2733    }
2734
2735    _attribute_map = {
2736        'kubernetes_version': {'key': 'kubernetesVersion', 'type': 'str'},
2737        'name': {'key': 'name', 'type': 'str'},
2738        'os_type': {'key': 'osType', 'type': 'str'},
2739        'upgrades': {'key': 'upgrades', 'type': '[ManagedClusterPoolUpgradeProfileUpgradesItem]'},
2740    }
2741
2742    def __init__(
2743        self,
2744        *,
2745        kubernetes_version: str,
2746        os_type: Union[str, "OSType"] = "Linux",
2747        name: Optional[str] = None,
2748        upgrades: Optional[List["ManagedClusterPoolUpgradeProfileUpgradesItem"]] = None,
2749        **kwargs
2750    ):
2751        super(ManagedClusterPoolUpgradeProfile, self).__init__(**kwargs)
2752        self.kubernetes_version = kubernetes_version
2753        self.name = name
2754        self.os_type = os_type
2755        self.upgrades = upgrades
2756
2757
2758class ManagedClusterPoolUpgradeProfileUpgradesItem(msrest.serialization.Model):
2759    """ManagedClusterPoolUpgradeProfileUpgradesItem.
2760
2761    :param kubernetes_version: Kubernetes version (major, minor, patch).
2762    :type kubernetes_version: str
2763    :param is_preview: Whether Kubernetes version is currently in preview.
2764    :type is_preview: bool
2765    """
2766
2767    _attribute_map = {
2768        'kubernetes_version': {'key': 'kubernetesVersion', 'type': 'str'},
2769        'is_preview': {'key': 'isPreview', 'type': 'bool'},
2770    }
2771
2772    def __init__(
2773        self,
2774        *,
2775        kubernetes_version: Optional[str] = None,
2776        is_preview: Optional[bool] = None,
2777        **kwargs
2778    ):
2779        super(ManagedClusterPoolUpgradeProfileUpgradesItem, self).__init__(**kwargs)
2780        self.kubernetes_version = kubernetes_version
2781        self.is_preview = is_preview
2782
2783
2784class ManagedClusterPropertiesAutoScalerProfile(msrest.serialization.Model):
2785    """Parameters to be applied to the cluster-autoscaler when enabled.
2786
2787    :param balance_similar_node_groups:
2788    :type balance_similar_node_groups: str
2789    :param expander:  Possible values include: "least-waste", "most-pods", "priority", "random".
2790    :type expander: str or ~azure.mgmt.containerservice.v2020_12_01.models.Expander
2791    :param max_empty_bulk_delete:
2792    :type max_empty_bulk_delete: str
2793    :param max_graceful_termination_sec:
2794    :type max_graceful_termination_sec: str
2795    :param max_node_provision_time:
2796    :type max_node_provision_time: str
2797    :param max_total_unready_percentage:
2798    :type max_total_unready_percentage: str
2799    :param new_pod_scale_up_delay:
2800    :type new_pod_scale_up_delay: str
2801    :param ok_total_unready_count:
2802    :type ok_total_unready_count: str
2803    :param scan_interval:
2804    :type scan_interval: str
2805    :param scale_down_delay_after_add:
2806    :type scale_down_delay_after_add: str
2807    :param scale_down_delay_after_delete:
2808    :type scale_down_delay_after_delete: str
2809    :param scale_down_delay_after_failure:
2810    :type scale_down_delay_after_failure: str
2811    :param scale_down_unneeded_time:
2812    :type scale_down_unneeded_time: str
2813    :param scale_down_unready_time:
2814    :type scale_down_unready_time: str
2815    :param scale_down_utilization_threshold:
2816    :type scale_down_utilization_threshold: str
2817    :param skip_nodes_with_local_storage:
2818    :type skip_nodes_with_local_storage: str
2819    :param skip_nodes_with_system_pods:
2820    :type skip_nodes_with_system_pods: str
2821    """
2822
2823    _attribute_map = {
2824        'balance_similar_node_groups': {'key': 'balance-similar-node-groups', 'type': 'str'},
2825        'expander': {'key': 'expander', 'type': 'str'},
2826        'max_empty_bulk_delete': {'key': 'max-empty-bulk-delete', 'type': 'str'},
2827        'max_graceful_termination_sec': {'key': 'max-graceful-termination-sec', 'type': 'str'},
2828        'max_node_provision_time': {'key': 'max-node-provision-time', 'type': 'str'},
2829        'max_total_unready_percentage': {'key': 'max-total-unready-percentage', 'type': 'str'},
2830        'new_pod_scale_up_delay': {'key': 'new-pod-scale-up-delay', 'type': 'str'},
2831        'ok_total_unready_count': {'key': 'ok-total-unready-count', 'type': 'str'},
2832        'scan_interval': {'key': 'scan-interval', 'type': 'str'},
2833        'scale_down_delay_after_add': {'key': 'scale-down-delay-after-add', 'type': 'str'},
2834        'scale_down_delay_after_delete': {'key': 'scale-down-delay-after-delete', 'type': 'str'},
2835        'scale_down_delay_after_failure': {'key': 'scale-down-delay-after-failure', 'type': 'str'},
2836        'scale_down_unneeded_time': {'key': 'scale-down-unneeded-time', 'type': 'str'},
2837        'scale_down_unready_time': {'key': 'scale-down-unready-time', 'type': 'str'},
2838        'scale_down_utilization_threshold': {'key': 'scale-down-utilization-threshold', 'type': 'str'},
2839        'skip_nodes_with_local_storage': {'key': 'skip-nodes-with-local-storage', 'type': 'str'},
2840        'skip_nodes_with_system_pods': {'key': 'skip-nodes-with-system-pods', 'type': 'str'},
2841    }
2842
2843    def __init__(
2844        self,
2845        *,
2846        balance_similar_node_groups: Optional[str] = None,
2847        expander: Optional[Union[str, "Expander"]] = None,
2848        max_empty_bulk_delete: Optional[str] = None,
2849        max_graceful_termination_sec: Optional[str] = None,
2850        max_node_provision_time: Optional[str] = None,
2851        max_total_unready_percentage: Optional[str] = None,
2852        new_pod_scale_up_delay: Optional[str] = None,
2853        ok_total_unready_count: Optional[str] = None,
2854        scan_interval: Optional[str] = None,
2855        scale_down_delay_after_add: Optional[str] = None,
2856        scale_down_delay_after_delete: Optional[str] = None,
2857        scale_down_delay_after_failure: Optional[str] = None,
2858        scale_down_unneeded_time: Optional[str] = None,
2859        scale_down_unready_time: Optional[str] = None,
2860        scale_down_utilization_threshold: Optional[str] = None,
2861        skip_nodes_with_local_storage: Optional[str] = None,
2862        skip_nodes_with_system_pods: Optional[str] = None,
2863        **kwargs
2864    ):
2865        super(ManagedClusterPropertiesAutoScalerProfile, self).__init__(**kwargs)
2866        self.balance_similar_node_groups = balance_similar_node_groups
2867        self.expander = expander
2868        self.max_empty_bulk_delete = max_empty_bulk_delete
2869        self.max_graceful_termination_sec = max_graceful_termination_sec
2870        self.max_node_provision_time = max_node_provision_time
2871        self.max_total_unready_percentage = max_total_unready_percentage
2872        self.new_pod_scale_up_delay = new_pod_scale_up_delay
2873        self.ok_total_unready_count = ok_total_unready_count
2874        self.scan_interval = scan_interval
2875        self.scale_down_delay_after_add = scale_down_delay_after_add
2876        self.scale_down_delay_after_delete = scale_down_delay_after_delete
2877        self.scale_down_delay_after_failure = scale_down_delay_after_failure
2878        self.scale_down_unneeded_time = scale_down_unneeded_time
2879        self.scale_down_unready_time = scale_down_unready_time
2880        self.scale_down_utilization_threshold = scale_down_utilization_threshold
2881        self.skip_nodes_with_local_storage = skip_nodes_with_local_storage
2882        self.skip_nodes_with_system_pods = skip_nodes_with_system_pods
2883
2884
2885class ManagedClusterServicePrincipalProfile(msrest.serialization.Model):
2886    """Information about a service principal identity for the cluster to use for manipulating Azure APIs.
2887
2888    All required parameters must be populated in order to send to Azure.
2889
2890    :param client_id: Required. The ID for the service principal.
2891    :type client_id: str
2892    :param secret: The secret password associated with the service principal in plain text.
2893    :type secret: str
2894    """
2895
2896    _validation = {
2897        'client_id': {'required': True},
2898    }
2899
2900    _attribute_map = {
2901        'client_id': {'key': 'clientId', 'type': 'str'},
2902        'secret': {'key': 'secret', 'type': 'str'},
2903    }
2904
2905    def __init__(
2906        self,
2907        *,
2908        client_id: str,
2909        secret: Optional[str] = None,
2910        **kwargs
2911    ):
2912        super(ManagedClusterServicePrincipalProfile, self).__init__(**kwargs)
2913        self.client_id = client_id
2914        self.secret = secret
2915
2916
2917class ManagedClusterSKU(msrest.serialization.Model):
2918    """ManagedClusterSKU.
2919
2920    :param name: Name of a managed cluster SKU. Possible values include: "Basic".
2921    :type name: str or ~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterSKUName
2922    :param tier: Tier of a managed cluster SKU. Possible values include: "Paid", "Free".
2923    :type tier: str or ~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterSKUTier
2924    """
2925
2926    _attribute_map = {
2927        'name': {'key': 'name', 'type': 'str'},
2928        'tier': {'key': 'tier', 'type': 'str'},
2929    }
2930
2931    def __init__(
2932        self,
2933        *,
2934        name: Optional[Union[str, "ManagedClusterSKUName"]] = None,
2935        tier: Optional[Union[str, "ManagedClusterSKUTier"]] = None,
2936        **kwargs
2937    ):
2938        super(ManagedClusterSKU, self).__init__(**kwargs)
2939        self.name = name
2940        self.tier = tier
2941
2942
2943class ManagedClusterUpgradeProfile(msrest.serialization.Model):
2944    """The list of available upgrades for compute pools.
2945
2946    Variables are only populated by the server, and will be ignored when sending a request.
2947
2948    All required parameters must be populated in order to send to Azure.
2949
2950    :ivar id: Id of upgrade profile.
2951    :vartype id: str
2952    :ivar name: Name of upgrade profile.
2953    :vartype name: str
2954    :ivar type: Type of upgrade profile.
2955    :vartype type: str
2956    :param control_plane_profile: Required. The list of available upgrade versions for the control
2957     plane.
2958    :type control_plane_profile:
2959     ~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterPoolUpgradeProfile
2960    :param agent_pool_profiles: Required. The list of available upgrade versions for agent pools.
2961    :type agent_pool_profiles:
2962     list[~azure.mgmt.containerservice.v2020_12_01.models.ManagedClusterPoolUpgradeProfile]
2963    """
2964
2965    _validation = {
2966        'id': {'readonly': True},
2967        'name': {'readonly': True},
2968        'type': {'readonly': True},
2969        'control_plane_profile': {'required': True},
2970        'agent_pool_profiles': {'required': True},
2971    }
2972
2973    _attribute_map = {
2974        'id': {'key': 'id', 'type': 'str'},
2975        'name': {'key': 'name', 'type': 'str'},
2976        'type': {'key': 'type', 'type': 'str'},
2977        'control_plane_profile': {'key': 'properties.controlPlaneProfile', 'type': 'ManagedClusterPoolUpgradeProfile'},
2978        'agent_pool_profiles': {'key': 'properties.agentPoolProfiles', 'type': '[ManagedClusterPoolUpgradeProfile]'},
2979    }
2980
2981    def __init__(
2982        self,
2983        *,
2984        control_plane_profile: "ManagedClusterPoolUpgradeProfile",
2985        agent_pool_profiles: List["ManagedClusterPoolUpgradeProfile"],
2986        **kwargs
2987    ):
2988        super(ManagedClusterUpgradeProfile, self).__init__(**kwargs)
2989        self.id = None
2990        self.name = None
2991        self.type = None
2992        self.control_plane_profile = control_plane_profile
2993        self.agent_pool_profiles = agent_pool_profiles
2994
2995
2996class ManagedClusterWindowsProfile(msrest.serialization.Model):
2997    """Profile for Windows VMs in the container service cluster.
2998
2999    All required parameters must be populated in order to send to Azure.
3000
3001    :param admin_username: Required. Specifies the name of the administrator account.
3002     :code:`<br>`:code:`<br>` **restriction:** Cannot end in "." :code:`<br>`:code:`<br>`
3003     **Disallowed values:** "administrator", "admin", "user", "user1", "test", "user2", "test1",
3004     "user3", "admin1", "1", "123", "a", "actuser", "adm", "admin2", "aspnet", "backup", "console",
3005     "david", "guest", "john", "owner", "root", "server", "sql", "support", "support_388945a0",
3006     "sys", "test2", "test3", "user4", "user5". :code:`<br>`:code:`<br>` **Minimum-length:** 1
3007     character :code:`<br>`:code:`<br>` **Max-length:** 20 characters.
3008    :type admin_username: str
3009    :param admin_password: Specifies the password of the administrator account.
3010     :code:`<br>`:code:`<br>` **Minimum-length:** 8 characters :code:`<br>`:code:`<br>`
3011     **Max-length:** 123 characters :code:`<br>`:code:`<br>` **Complexity requirements:** 3 out of 4
3012     conditions below need to be fulfilled :code:`<br>` Has lower characters :code:`<br>`Has upper
3013     characters :code:`<br>` Has a digit :code:`<br>` Has a special character (Regex match [\W_])
3014     :code:`<br>`:code:`<br>` **Disallowed values:** "abc@123", "P@$$w0rd", "P@ssw0rd",
3015     "P@ssword123", "Pa$$word", "pass@word1", "Password!", "Password1", "Password22", "iloveyou!".
3016    :type admin_password: str
3017    :param license_type: The licenseType to use for Windows VMs. Windows_Server is used to enable
3018     Azure Hybrid User Benefits for Windows VMs. Possible values include: "None", "Windows_Server".
3019    :type license_type: str or ~azure.mgmt.containerservice.v2020_12_01.models.LicenseType
3020    """
3021
3022    _validation = {
3023        'admin_username': {'required': True},
3024    }
3025
3026    _attribute_map = {
3027        'admin_username': {'key': 'adminUsername', 'type': 'str'},
3028        'admin_password': {'key': 'adminPassword', 'type': 'str'},
3029        'license_type': {'key': 'licenseType', 'type': 'str'},
3030    }
3031
3032    def __init__(
3033        self,
3034        *,
3035        admin_username: str,
3036        admin_password: Optional[str] = None,
3037        license_type: Optional[Union[str, "LicenseType"]] = None,
3038        **kwargs
3039    ):
3040        super(ManagedClusterWindowsProfile, self).__init__(**kwargs)
3041        self.admin_username = admin_username
3042        self.admin_password = admin_password
3043        self.license_type = license_type
3044
3045
3046class OperationListResult(msrest.serialization.Model):
3047    """The List Compute Operation operation response.
3048
3049    Variables are only populated by the server, and will be ignored when sending a request.
3050
3051    :ivar value: The list of compute operations.
3052    :vartype value: list[~azure.mgmt.containerservice.v2020_12_01.models.OperationValue]
3053    """
3054
3055    _validation = {
3056        'value': {'readonly': True},
3057    }
3058
3059    _attribute_map = {
3060        'value': {'key': 'value', 'type': '[OperationValue]'},
3061    }
3062
3063    def __init__(
3064        self,
3065        **kwargs
3066    ):
3067        super(OperationListResult, self).__init__(**kwargs)
3068        self.value = None
3069
3070
3071class OperationValue(msrest.serialization.Model):
3072    """Describes the properties of a Compute Operation value.
3073
3074    Variables are only populated by the server, and will be ignored when sending a request.
3075
3076    :ivar origin: The origin of the compute operation.
3077    :vartype origin: str
3078    :ivar name: The name of the compute operation.
3079    :vartype name: str
3080    :ivar operation: The display name of the compute operation.
3081    :vartype operation: str
3082    :ivar resource: The display name of the resource the operation applies to.
3083    :vartype resource: str
3084    :ivar description: The description of the operation.
3085    :vartype description: str
3086    :ivar provider: The resource provider for the operation.
3087    :vartype provider: str
3088    """
3089
3090    _validation = {
3091        'origin': {'readonly': True},
3092        'name': {'readonly': True},
3093        'operation': {'readonly': True},
3094        'resource': {'readonly': True},
3095        'description': {'readonly': True},
3096        'provider': {'readonly': True},
3097    }
3098
3099    _attribute_map = {
3100        'origin': {'key': 'origin', 'type': 'str'},
3101        'name': {'key': 'name', 'type': 'str'},
3102        'operation': {'key': 'display.operation', 'type': 'str'},
3103        'resource': {'key': 'display.resource', 'type': 'str'},
3104        'description': {'key': 'display.description', 'type': 'str'},
3105        'provider': {'key': 'display.provider', 'type': 'str'},
3106    }
3107
3108    def __init__(
3109        self,
3110        **kwargs
3111    ):
3112        super(OperationValue, self).__init__(**kwargs)
3113        self.origin = None
3114        self.name = None
3115        self.operation = None
3116        self.resource = None
3117        self.description = None
3118        self.provider = None
3119
3120
3121class PowerState(msrest.serialization.Model):
3122    """Describes the Power State of the cluster.
3123
3124    :param code: Tells whether the cluster is Running or Stopped. Possible values include:
3125     "Running", "Stopped".
3126    :type code: str or ~azure.mgmt.containerservice.v2020_12_01.models.Code
3127    """
3128
3129    _attribute_map = {
3130        'code': {'key': 'code', 'type': 'str'},
3131    }
3132
3133    def __init__(
3134        self,
3135        *,
3136        code: Optional[Union[str, "Code"]] = None,
3137        **kwargs
3138    ):
3139        super(PowerState, self).__init__(**kwargs)
3140        self.code = code
3141
3142
3143class PrivateEndpoint(msrest.serialization.Model):
3144    """Private endpoint which a connection belongs to.
3145
3146    :param id: The resource Id for private endpoint.
3147    :type id: str
3148    """
3149
3150    _attribute_map = {
3151        'id': {'key': 'id', 'type': 'str'},
3152    }
3153
3154    def __init__(
3155        self,
3156        *,
3157        id: Optional[str] = None,
3158        **kwargs
3159    ):
3160        super(PrivateEndpoint, self).__init__(**kwargs)
3161        self.id = id
3162
3163
3164class PrivateEndpointConnection(msrest.serialization.Model):
3165    """A private endpoint connection.
3166
3167    Variables are only populated by the server, and will be ignored when sending a request.
3168
3169    :ivar id: The ID of the private endpoint connection.
3170    :vartype id: str
3171    :ivar name: The name of the private endpoint connection.
3172    :vartype name: str
3173    :ivar type: The resource type.
3174    :vartype type: str
3175    :ivar provisioning_state: The current provisioning state. Possible values include: "Succeeded",
3176     "Creating", "Deleting", "Failed".
3177    :vartype provisioning_state: str or
3178     ~azure.mgmt.containerservice.v2020_12_01.models.PrivateEndpointConnectionProvisioningState
3179    :param private_endpoint: The resource of private endpoint.
3180    :type private_endpoint: ~azure.mgmt.containerservice.v2020_12_01.models.PrivateEndpoint
3181    :param private_link_service_connection_state: A collection of information about the state of
3182     the connection between service consumer and provider.
3183    :type private_link_service_connection_state:
3184     ~azure.mgmt.containerservice.v2020_12_01.models.PrivateLinkServiceConnectionState
3185    """
3186
3187    _validation = {
3188        'id': {'readonly': True},
3189        'name': {'readonly': True},
3190        'type': {'readonly': True},
3191        'provisioning_state': {'readonly': True},
3192    }
3193
3194    _attribute_map = {
3195        'id': {'key': 'id', 'type': 'str'},
3196        'name': {'key': 'name', 'type': 'str'},
3197        'type': {'key': 'type', 'type': 'str'},
3198        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3199        'private_endpoint': {'key': 'properties.privateEndpoint', 'type': 'PrivateEndpoint'},
3200        'private_link_service_connection_state': {'key': 'properties.privateLinkServiceConnectionState', 'type': 'PrivateLinkServiceConnectionState'},
3201    }
3202
3203    def __init__(
3204        self,
3205        *,
3206        private_endpoint: Optional["PrivateEndpoint"] = None,
3207        private_link_service_connection_state: Optional["PrivateLinkServiceConnectionState"] = None,
3208        **kwargs
3209    ):
3210        super(PrivateEndpointConnection, self).__init__(**kwargs)
3211        self.id = None
3212        self.name = None
3213        self.type = None
3214        self.provisioning_state = None
3215        self.private_endpoint = private_endpoint
3216        self.private_link_service_connection_state = private_link_service_connection_state
3217
3218
3219class PrivateEndpointConnectionListResult(msrest.serialization.Model):
3220    """A list of private endpoint connections.
3221
3222    :param value: The collection value.
3223    :type value: list[~azure.mgmt.containerservice.v2020_12_01.models.PrivateEndpointConnection]
3224    """
3225
3226    _attribute_map = {
3227        'value': {'key': 'value', 'type': '[PrivateEndpointConnection]'},
3228    }
3229
3230    def __init__(
3231        self,
3232        *,
3233        value: Optional[List["PrivateEndpointConnection"]] = None,
3234        **kwargs
3235    ):
3236        super(PrivateEndpointConnectionListResult, self).__init__(**kwargs)
3237        self.value = value
3238
3239
3240class PrivateLinkResource(msrest.serialization.Model):
3241    """A private link resource.
3242
3243    Variables are only populated by the server, and will be ignored when sending a request.
3244
3245    :param id: The ID of the private link resource.
3246    :type id: str
3247    :param name: The name of the private link resource.
3248    :type name: str
3249    :param type: The resource type.
3250    :type type: str
3251    :param group_id: The group ID of the resource.
3252    :type group_id: str
3253    :param required_members: RequiredMembers of the resource.
3254    :type required_members: list[str]
3255    :ivar private_link_service_id: The private link service ID of the resource, this field is
3256     exposed only to NRP internally.
3257    :vartype private_link_service_id: str
3258    """
3259
3260    _validation = {
3261        'private_link_service_id': {'readonly': True},
3262    }
3263
3264    _attribute_map = {
3265        'id': {'key': 'id', 'type': 'str'},
3266        'name': {'key': 'name', 'type': 'str'},
3267        'type': {'key': 'type', 'type': 'str'},
3268        'group_id': {'key': 'groupId', 'type': 'str'},
3269        'required_members': {'key': 'requiredMembers', 'type': '[str]'},
3270        'private_link_service_id': {'key': 'privateLinkServiceID', 'type': 'str'},
3271    }
3272
3273    def __init__(
3274        self,
3275        *,
3276        id: Optional[str] = None,
3277        name: Optional[str] = None,
3278        type: Optional[str] = None,
3279        group_id: Optional[str] = None,
3280        required_members: Optional[List[str]] = None,
3281        **kwargs
3282    ):
3283        super(PrivateLinkResource, self).__init__(**kwargs)
3284        self.id = id
3285        self.name = name
3286        self.type = type
3287        self.group_id = group_id
3288        self.required_members = required_members
3289        self.private_link_service_id = None
3290
3291
3292class PrivateLinkResourcesListResult(msrest.serialization.Model):
3293    """A list of private link resources.
3294
3295    :param value: The collection value.
3296    :type value: list[~azure.mgmt.containerservice.v2020_12_01.models.PrivateLinkResource]
3297    """
3298
3299    _attribute_map = {
3300        'value': {'key': 'value', 'type': '[PrivateLinkResource]'},
3301    }
3302
3303    def __init__(
3304        self,
3305        *,
3306        value: Optional[List["PrivateLinkResource"]] = None,
3307        **kwargs
3308    ):
3309        super(PrivateLinkResourcesListResult, self).__init__(**kwargs)
3310        self.value = value
3311
3312
3313class PrivateLinkServiceConnectionState(msrest.serialization.Model):
3314    """The state of a private link service connection.
3315
3316    :param status: The private link service connection status. Possible values include: "Pending",
3317     "Approved", "Rejected", "Disconnected".
3318    :type status: str or ~azure.mgmt.containerservice.v2020_12_01.models.ConnectionStatus
3319    :param description: The private link service connection description.
3320    :type description: str
3321    """
3322
3323    _attribute_map = {
3324        'status': {'key': 'status', 'type': 'str'},
3325        'description': {'key': 'description', 'type': 'str'},
3326    }
3327
3328    def __init__(
3329        self,
3330        *,
3331        status: Optional[Union[str, "ConnectionStatus"]] = None,
3332        description: Optional[str] = None,
3333        **kwargs
3334    ):
3335        super(PrivateLinkServiceConnectionState, self).__init__(**kwargs)
3336        self.status = status
3337        self.description = description
3338
3339
3340class ResourceReference(msrest.serialization.Model):
3341    """A reference to an Azure resource.
3342
3343    :param id: The fully qualified Azure resource id.
3344    :type id: str
3345    """
3346
3347    _attribute_map = {
3348        'id': {'key': 'id', 'type': 'str'},
3349    }
3350
3351    def __init__(
3352        self,
3353        *,
3354        id: Optional[str] = None,
3355        **kwargs
3356    ):
3357        super(ResourceReference, self).__init__(**kwargs)
3358        self.id = id
3359
3360
3361class SysctlConfig(msrest.serialization.Model):
3362    """Sysctl settings for Linux agent nodes.
3363
3364    :param net_core_somaxconn: Sysctl setting net.core.somaxconn.
3365    :type net_core_somaxconn: int
3366    :param net_core_netdev_max_backlog: Sysctl setting net.core.netdev_max_backlog.
3367    :type net_core_netdev_max_backlog: int
3368    :param net_core_rmem_default: Sysctl setting net.core.rmem_default.
3369    :type net_core_rmem_default: int
3370    :param net_core_rmem_max: Sysctl setting net.core.rmem_max.
3371    :type net_core_rmem_max: int
3372    :param net_core_wmem_default: Sysctl setting net.core.wmem_default.
3373    :type net_core_wmem_default: int
3374    :param net_core_wmem_max: Sysctl setting net.core.wmem_max.
3375    :type net_core_wmem_max: int
3376    :param net_core_optmem_max: Sysctl setting net.core.optmem_max.
3377    :type net_core_optmem_max: int
3378    :param net_ipv4_tcp_max_syn_backlog: Sysctl setting net.ipv4.tcp_max_syn_backlog.
3379    :type net_ipv4_tcp_max_syn_backlog: int
3380    :param net_ipv4_tcp_max_tw_buckets: Sysctl setting net.ipv4.tcp_max_tw_buckets.
3381    :type net_ipv4_tcp_max_tw_buckets: int
3382    :param net_ipv4_tcp_fin_timeout: Sysctl setting net.ipv4.tcp_fin_timeout.
3383    :type net_ipv4_tcp_fin_timeout: int
3384    :param net_ipv4_tcp_keepalive_time: Sysctl setting net.ipv4.tcp_keepalive_time.
3385    :type net_ipv4_tcp_keepalive_time: int
3386    :param net_ipv4_tcp_keepalive_probes: Sysctl setting net.ipv4.tcp_keepalive_probes.
3387    :type net_ipv4_tcp_keepalive_probes: int
3388    :param net_ipv4_tcpkeepalive_intvl: Sysctl setting net.ipv4.tcp_keepalive_intvl.
3389    :type net_ipv4_tcpkeepalive_intvl: int
3390    :param net_ipv4_tcp_tw_reuse: Sysctl setting net.ipv4.tcp_tw_reuse.
3391    :type net_ipv4_tcp_tw_reuse: bool
3392    :param net_ipv4_ip_local_port_range: Sysctl setting net.ipv4.ip_local_port_range.
3393    :type net_ipv4_ip_local_port_range: str
3394    :param net_ipv4_neigh_default_gc_thresh1: Sysctl setting net.ipv4.neigh.default.gc_thresh1.
3395    :type net_ipv4_neigh_default_gc_thresh1: int
3396    :param net_ipv4_neigh_default_gc_thresh2: Sysctl setting net.ipv4.neigh.default.gc_thresh2.
3397    :type net_ipv4_neigh_default_gc_thresh2: int
3398    :param net_ipv4_neigh_default_gc_thresh3: Sysctl setting net.ipv4.neigh.default.gc_thresh3.
3399    :type net_ipv4_neigh_default_gc_thresh3: int
3400    :param net_netfilter_nf_conntrack_max: Sysctl setting net.netfilter.nf_conntrack_max.
3401    :type net_netfilter_nf_conntrack_max: int
3402    :param net_netfilter_nf_conntrack_buckets: Sysctl setting net.netfilter.nf_conntrack_buckets.
3403    :type net_netfilter_nf_conntrack_buckets: int
3404    :param fs_inotify_max_user_watches: Sysctl setting fs.inotify.max_user_watches.
3405    :type fs_inotify_max_user_watches: int
3406    :param fs_file_max: Sysctl setting fs.file-max.
3407    :type fs_file_max: int
3408    :param fs_aio_max_nr: Sysctl setting fs.aio-max-nr.
3409    :type fs_aio_max_nr: int
3410    :param fs_nr_open: Sysctl setting fs.nr_open.
3411    :type fs_nr_open: int
3412    :param kernel_threads_max: Sysctl setting kernel.threads-max.
3413    :type kernel_threads_max: int
3414    :param vm_max_map_count: Sysctl setting vm.max_map_count.
3415    :type vm_max_map_count: int
3416    :param vm_swappiness: Sysctl setting vm.swappiness.
3417    :type vm_swappiness: int
3418    :param vm_vfs_cache_pressure: Sysctl setting vm.vfs_cache_pressure.
3419    :type vm_vfs_cache_pressure: int
3420    """
3421
3422    _attribute_map = {
3423        'net_core_somaxconn': {'key': 'netCoreSomaxconn', 'type': 'int'},
3424        'net_core_netdev_max_backlog': {'key': 'netCoreNetdevMaxBacklog', 'type': 'int'},
3425        'net_core_rmem_default': {'key': 'netCoreRmemDefault', 'type': 'int'},
3426        'net_core_rmem_max': {'key': 'netCoreRmemMax', 'type': 'int'},
3427        'net_core_wmem_default': {'key': 'netCoreWmemDefault', 'type': 'int'},
3428        'net_core_wmem_max': {'key': 'netCoreWmemMax', 'type': 'int'},
3429        'net_core_optmem_max': {'key': 'netCoreOptmemMax', 'type': 'int'},
3430        'net_ipv4_tcp_max_syn_backlog': {'key': 'netIpv4TcpMaxSynBacklog', 'type': 'int'},
3431        'net_ipv4_tcp_max_tw_buckets': {'key': 'netIpv4TcpMaxTwBuckets', 'type': 'int'},
3432        'net_ipv4_tcp_fin_timeout': {'key': 'netIpv4TcpFinTimeout', 'type': 'int'},
3433        'net_ipv4_tcp_keepalive_time': {'key': 'netIpv4TcpKeepaliveTime', 'type': 'int'},
3434        'net_ipv4_tcp_keepalive_probes': {'key': 'netIpv4TcpKeepaliveProbes', 'type': 'int'},
3435        'net_ipv4_tcpkeepalive_intvl': {'key': 'netIpv4TcpkeepaliveIntvl', 'type': 'int'},
3436        'net_ipv4_tcp_tw_reuse': {'key': 'netIpv4TcpTwReuse', 'type': 'bool'},
3437        'net_ipv4_ip_local_port_range': {'key': 'netIpv4IpLocalPortRange', 'type': 'str'},
3438        'net_ipv4_neigh_default_gc_thresh1': {'key': 'netIpv4NeighDefaultGcThresh1', 'type': 'int'},
3439        'net_ipv4_neigh_default_gc_thresh2': {'key': 'netIpv4NeighDefaultGcThresh2', 'type': 'int'},
3440        'net_ipv4_neigh_default_gc_thresh3': {'key': 'netIpv4NeighDefaultGcThresh3', 'type': 'int'},
3441        'net_netfilter_nf_conntrack_max': {'key': 'netNetfilterNfConntrackMax', 'type': 'int'},
3442        'net_netfilter_nf_conntrack_buckets': {'key': 'netNetfilterNfConntrackBuckets', 'type': 'int'},
3443        'fs_inotify_max_user_watches': {'key': 'fsInotifyMaxUserWatches', 'type': 'int'},
3444        'fs_file_max': {'key': 'fsFileMax', 'type': 'int'},
3445        'fs_aio_max_nr': {'key': 'fsAioMaxNr', 'type': 'int'},
3446        'fs_nr_open': {'key': 'fsNrOpen', 'type': 'int'},
3447        'kernel_threads_max': {'key': 'kernelThreadsMax', 'type': 'int'},
3448        'vm_max_map_count': {'key': 'vmMaxMapCount', 'type': 'int'},
3449        'vm_swappiness': {'key': 'vmSwappiness', 'type': 'int'},
3450        'vm_vfs_cache_pressure': {'key': 'vmVfsCachePressure', 'type': 'int'},
3451    }
3452
3453    def __init__(
3454        self,
3455        *,
3456        net_core_somaxconn: Optional[int] = None,
3457        net_core_netdev_max_backlog: Optional[int] = None,
3458        net_core_rmem_default: Optional[int] = None,
3459        net_core_rmem_max: Optional[int] = None,
3460        net_core_wmem_default: Optional[int] = None,
3461        net_core_wmem_max: Optional[int] = None,
3462        net_core_optmem_max: Optional[int] = None,
3463        net_ipv4_tcp_max_syn_backlog: Optional[int] = None,
3464        net_ipv4_tcp_max_tw_buckets: Optional[int] = None,
3465        net_ipv4_tcp_fin_timeout: Optional[int] = None,
3466        net_ipv4_tcp_keepalive_time: Optional[int] = None,
3467        net_ipv4_tcp_keepalive_probes: Optional[int] = None,
3468        net_ipv4_tcpkeepalive_intvl: Optional[int] = None,
3469        net_ipv4_tcp_tw_reuse: Optional[bool] = None,
3470        net_ipv4_ip_local_port_range: Optional[str] = None,
3471        net_ipv4_neigh_default_gc_thresh1: Optional[int] = None,
3472        net_ipv4_neigh_default_gc_thresh2: Optional[int] = None,
3473        net_ipv4_neigh_default_gc_thresh3: Optional[int] = None,
3474        net_netfilter_nf_conntrack_max: Optional[int] = None,
3475        net_netfilter_nf_conntrack_buckets: Optional[int] = None,
3476        fs_inotify_max_user_watches: Optional[int] = None,
3477        fs_file_max: Optional[int] = None,
3478        fs_aio_max_nr: Optional[int] = None,
3479        fs_nr_open: Optional[int] = None,
3480        kernel_threads_max: Optional[int] = None,
3481        vm_max_map_count: Optional[int] = None,
3482        vm_swappiness: Optional[int] = None,
3483        vm_vfs_cache_pressure: Optional[int] = None,
3484        **kwargs
3485    ):
3486        super(SysctlConfig, self).__init__(**kwargs)
3487        self.net_core_somaxconn = net_core_somaxconn
3488        self.net_core_netdev_max_backlog = net_core_netdev_max_backlog
3489        self.net_core_rmem_default = net_core_rmem_default
3490        self.net_core_rmem_max = net_core_rmem_max
3491        self.net_core_wmem_default = net_core_wmem_default
3492        self.net_core_wmem_max = net_core_wmem_max
3493        self.net_core_optmem_max = net_core_optmem_max
3494        self.net_ipv4_tcp_max_syn_backlog = net_ipv4_tcp_max_syn_backlog
3495        self.net_ipv4_tcp_max_tw_buckets = net_ipv4_tcp_max_tw_buckets
3496        self.net_ipv4_tcp_fin_timeout = net_ipv4_tcp_fin_timeout
3497        self.net_ipv4_tcp_keepalive_time = net_ipv4_tcp_keepalive_time
3498        self.net_ipv4_tcp_keepalive_probes = net_ipv4_tcp_keepalive_probes
3499        self.net_ipv4_tcpkeepalive_intvl = net_ipv4_tcpkeepalive_intvl
3500        self.net_ipv4_tcp_tw_reuse = net_ipv4_tcp_tw_reuse
3501        self.net_ipv4_ip_local_port_range = net_ipv4_ip_local_port_range
3502        self.net_ipv4_neigh_default_gc_thresh1 = net_ipv4_neigh_default_gc_thresh1
3503        self.net_ipv4_neigh_default_gc_thresh2 = net_ipv4_neigh_default_gc_thresh2
3504        self.net_ipv4_neigh_default_gc_thresh3 = net_ipv4_neigh_default_gc_thresh3
3505        self.net_netfilter_nf_conntrack_max = net_netfilter_nf_conntrack_max
3506        self.net_netfilter_nf_conntrack_buckets = net_netfilter_nf_conntrack_buckets
3507        self.fs_inotify_max_user_watches = fs_inotify_max_user_watches
3508        self.fs_file_max = fs_file_max
3509        self.fs_aio_max_nr = fs_aio_max_nr
3510        self.fs_nr_open = fs_nr_open
3511        self.kernel_threads_max = kernel_threads_max
3512        self.vm_max_map_count = vm_max_map_count
3513        self.vm_swappiness = vm_swappiness
3514        self.vm_vfs_cache_pressure = vm_vfs_cache_pressure
3515
3516
3517class SystemData(msrest.serialization.Model):
3518    """Metadata pertaining to creation and last modification of the resource.
3519
3520    :param created_by: The identity that created the resource.
3521    :type created_by: str
3522    :param created_by_type: The type of identity that created the resource. Possible values
3523     include: "User", "Application", "ManagedIdentity", "Key".
3524    :type created_by_type: str or ~azure.mgmt.containerservice.v2020_12_01.models.CreatedByType
3525    :param created_at: The timestamp of resource creation (UTC).
3526    :type created_at: ~datetime.datetime
3527    :param last_modified_by: The identity that last modified the resource.
3528    :type last_modified_by: str
3529    :param last_modified_by_type: The type of identity that last modified the resource. Possible
3530     values include: "User", "Application", "ManagedIdentity", "Key".
3531    :type last_modified_by_type: str or
3532     ~azure.mgmt.containerservice.v2020_12_01.models.CreatedByType
3533    :param last_modified_at: The type of identity that last modified the resource.
3534    :type last_modified_at: ~datetime.datetime
3535    """
3536
3537    _attribute_map = {
3538        'created_by': {'key': 'createdBy', 'type': 'str'},
3539        'created_by_type': {'key': 'createdByType', 'type': 'str'},
3540        'created_at': {'key': 'createdAt', 'type': 'iso-8601'},
3541        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'str'},
3542        'last_modified_by_type': {'key': 'lastModifiedByType', 'type': 'str'},
3543        'last_modified_at': {'key': 'lastModifiedAt', 'type': 'iso-8601'},
3544    }
3545
3546    def __init__(
3547        self,
3548        *,
3549        created_by: Optional[str] = None,
3550        created_by_type: Optional[Union[str, "CreatedByType"]] = None,
3551        created_at: Optional[datetime.datetime] = None,
3552        last_modified_by: Optional[str] = None,
3553        last_modified_by_type: Optional[Union[str, "CreatedByType"]] = None,
3554        last_modified_at: Optional[datetime.datetime] = None,
3555        **kwargs
3556    ):
3557        super(SystemData, self).__init__(**kwargs)
3558        self.created_by = created_by
3559        self.created_by_type = created_by_type
3560        self.created_at = created_at
3561        self.last_modified_by = last_modified_by
3562        self.last_modified_by_type = last_modified_by_type
3563        self.last_modified_at = last_modified_at
3564
3565
3566class TagsObject(msrest.serialization.Model):
3567    """Tags object for patch operations.
3568
3569    :param tags: A set of tags. Resource tags.
3570    :type tags: dict[str, str]
3571    """
3572
3573    _attribute_map = {
3574        'tags': {'key': 'tags', 'type': '{str}'},
3575    }
3576
3577    def __init__(
3578        self,
3579        *,
3580        tags: Optional[Dict[str, str]] = None,
3581        **kwargs
3582    ):
3583        super(TagsObject, self).__init__(**kwargs)
3584        self.tags = tags
3585
3586
3587class TimeInWeek(msrest.serialization.Model):
3588    """Time in a week.
3589
3590    :param day: A day in a week. Possible values include: "Sunday", "Monday", "Tuesday",
3591     "Wednesday", "Thursday", "Friday", "Saturday".
3592    :type day: str or ~azure.mgmt.containerservice.v2020_12_01.models.WeekDay
3593    :param hour_slots: hour slots in a day.
3594    :type hour_slots: list[int]
3595    """
3596
3597    _attribute_map = {
3598        'day': {'key': 'day', 'type': 'str'},
3599        'hour_slots': {'key': 'hourSlots', 'type': '[int]'},
3600    }
3601
3602    def __init__(
3603        self,
3604        *,
3605        day: Optional[Union[str, "WeekDay"]] = None,
3606        hour_slots: Optional[List[int]] = None,
3607        **kwargs
3608    ):
3609        super(TimeInWeek, self).__init__(**kwargs)
3610        self.day = day
3611        self.hour_slots = hour_slots
3612
3613
3614class TimeSpan(msrest.serialization.Model):
3615    """The time span with start and end properties.
3616
3617    :param start: The start of a time span.
3618    :type start: ~datetime.datetime
3619    :param end: The end of a time span.
3620    :type end: ~datetime.datetime
3621    """
3622
3623    _attribute_map = {
3624        'start': {'key': 'start', 'type': 'iso-8601'},
3625        'end': {'key': 'end', 'type': 'iso-8601'},
3626    }
3627
3628    def __init__(
3629        self,
3630        *,
3631        start: Optional[datetime.datetime] = None,
3632        end: Optional[datetime.datetime] = None,
3633        **kwargs
3634    ):
3635        super(TimeSpan, self).__init__(**kwargs)
3636        self.start = start
3637        self.end = end
3638