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 msrest.serialization
10
11
12class SubResource(msrest.serialization.Model):
13    """Reference to another subresource.
14
15    Variables are only populated by the server, and will be ignored when sending a request.
16
17    :ivar id: Resource ID.
18    :vartype id: str
19    :ivar name: The name of the resource that is unique within a resource group. This name can be
20     used to access the resource.
21    :vartype name: str
22    :ivar type: Resource type.
23    :vartype type: str
24    """
25
26    _validation = {
27        'id': {'readonly': True},
28        'name': {'readonly': True},
29        'type': {'readonly': True},
30    }
31
32    _attribute_map = {
33        'id': {'key': 'id', 'type': 'str'},
34        'name': {'key': 'name', 'type': 'str'},
35        'type': {'key': 'type', 'type': 'str'},
36    }
37
38    def __init__(
39        self,
40        **kwargs
41    ):
42        super(SubResource, self).__init__(**kwargs)
43        self.id = None
44        self.name = None
45        self.type = None
46
47
48class AgentPool(SubResource):
49    """Agent Pool.
50
51    Variables are only populated by the server, and will be ignored when sending a request.
52
53    :ivar id: Resource ID.
54    :vartype id: str
55    :ivar name: The name of the resource that is unique within a resource group. This name can be
56     used to access the resource.
57    :vartype name: str
58    :ivar type: Resource type.
59    :vartype type: str
60    :param count: Number of agents (VMs) to host docker containers. Allowed values must be in the
61     range of 1 to 100 (inclusive). The default value is 1.
62    :type count: int
63    :param vm_size: Size of agent VMs. Possible values include: "Standard_A1", "Standard_A10",
64     "Standard_A11", "Standard_A1_v2", "Standard_A2", "Standard_A2_v2", "Standard_A2m_v2",
65     "Standard_A3", "Standard_A4", "Standard_A4_v2", "Standard_A4m_v2", "Standard_A5",
66     "Standard_A6", "Standard_A7", "Standard_A8", "Standard_A8_v2", "Standard_A8m_v2",
67     "Standard_A9", "Standard_B2ms", "Standard_B2s", "Standard_B4ms", "Standard_B8ms",
68     "Standard_D1", "Standard_D11", "Standard_D11_v2", "Standard_D11_v2_Promo", "Standard_D12",
69     "Standard_D12_v2", "Standard_D12_v2_Promo", "Standard_D13", "Standard_D13_v2",
70     "Standard_D13_v2_Promo", "Standard_D14", "Standard_D14_v2", "Standard_D14_v2_Promo",
71     "Standard_D15_v2", "Standard_D16_v3", "Standard_D16s_v3", "Standard_D1_v2", "Standard_D2",
72     "Standard_D2_v2", "Standard_D2_v2_Promo", "Standard_D2_v3", "Standard_D2s_v3", "Standard_D3",
73     "Standard_D32_v3", "Standard_D32s_v3", "Standard_D3_v2", "Standard_D3_v2_Promo", "Standard_D4",
74     "Standard_D4_v2", "Standard_D4_v2_Promo", "Standard_D4_v3", "Standard_D4s_v3",
75     "Standard_D5_v2", "Standard_D5_v2_Promo", "Standard_D64_v3", "Standard_D64s_v3",
76     "Standard_D8_v3", "Standard_D8s_v3", "Standard_DS1", "Standard_DS11", "Standard_DS11_v2",
77     "Standard_DS11_v2_Promo", "Standard_DS12", "Standard_DS12_v2", "Standard_DS12_v2_Promo",
78     "Standard_DS13", "Standard_DS13-2_v2", "Standard_DS13-4_v2", "Standard_DS13_v2",
79     "Standard_DS13_v2_Promo", "Standard_DS14", "Standard_DS14-4_v2", "Standard_DS14-8_v2",
80     "Standard_DS14_v2", "Standard_DS14_v2_Promo", "Standard_DS15_v2", "Standard_DS1_v2",
81     "Standard_DS2", "Standard_DS2_v2", "Standard_DS2_v2_Promo", "Standard_DS3", "Standard_DS3_v2",
82     "Standard_DS3_v2_Promo", "Standard_DS4", "Standard_DS4_v2", "Standard_DS4_v2_Promo",
83     "Standard_DS5_v2", "Standard_DS5_v2_Promo", "Standard_E16_v3", "Standard_E16s_v3",
84     "Standard_E2_v3", "Standard_E2s_v3", "Standard_E32-16s_v3", "Standard_E32-8s_v3",
85     "Standard_E32_v3", "Standard_E32s_v3", "Standard_E4_v3", "Standard_E4s_v3",
86     "Standard_E64-16s_v3", "Standard_E64-32s_v3", "Standard_E64_v3", "Standard_E64s_v3",
87     "Standard_E8_v3", "Standard_E8s_v3", "Standard_F1", "Standard_F16", "Standard_F16s",
88     "Standard_F16s_v2", "Standard_F1s", "Standard_F2", "Standard_F2s", "Standard_F2s_v2",
89     "Standard_F32s_v2", "Standard_F4", "Standard_F4s", "Standard_F4s_v2", "Standard_F64s_v2",
90     "Standard_F72s_v2", "Standard_F8", "Standard_F8s", "Standard_F8s_v2", "Standard_G1",
91     "Standard_G2", "Standard_G3", "Standard_G4", "Standard_G5", "Standard_GS1", "Standard_GS2",
92     "Standard_GS3", "Standard_GS4", "Standard_GS4-4", "Standard_GS4-8", "Standard_GS5",
93     "Standard_GS5-16", "Standard_GS5-8", "Standard_H16", "Standard_H16m", "Standard_H16mr",
94     "Standard_H16r", "Standard_H8", "Standard_H8m", "Standard_L16s", "Standard_L32s",
95     "Standard_L4s", "Standard_L8s", "Standard_M128-32ms", "Standard_M128-64ms", "Standard_M128ms",
96     "Standard_M128s", "Standard_M64-16ms", "Standard_M64-32ms", "Standard_M64ms", "Standard_M64s",
97     "Standard_NC12", "Standard_NC12s_v2", "Standard_NC12s_v3", "Standard_NC24", "Standard_NC24r",
98     "Standard_NC24rs_v2", "Standard_NC24rs_v3", "Standard_NC24s_v2", "Standard_NC24s_v3",
99     "Standard_NC6", "Standard_NC6s_v2", "Standard_NC6s_v3", "Standard_ND12s", "Standard_ND24rs",
100     "Standard_ND24s", "Standard_ND6s", "Standard_NV12", "Standard_NV24", "Standard_NV6".
101    :type vm_size: str or
102     ~azure.mgmt.containerservice.v2020_02_01.models.ContainerServiceVMSizeTypes
103    :param os_disk_size_gb: OS Disk Size in GB to be used to specify the disk size for every
104     machine in this master/agent pool. If you specify 0, it will apply the default osDisk size
105     according to the vmSize specified.
106    :type os_disk_size_gb: int
107    :param vnet_subnet_id: VNet SubnetID specifies the VNet's subnet identifier.
108    :type vnet_subnet_id: str
109    :param max_pods: Maximum number of pods that can run on a node.
110    :type max_pods: int
111    :param os_type: OsType to be used to specify os type. Choose from Linux and Windows. Default to
112     Linux. Possible values include: "Linux", "Windows". Default value: "Linux".
113    :type os_type: str or ~azure.mgmt.containerservice.v2020_02_01.models.OSType
114    :param max_count: Maximum number of nodes for auto-scaling.
115    :type max_count: int
116    :param min_count: Minimum number of nodes for auto-scaling.
117    :type min_count: int
118    :param enable_auto_scaling: Whether to enable auto-scaler.
119    :type enable_auto_scaling: bool
120    :param type_properties_type: AgentPoolType represents types of an agent pool. Possible values
121     include: "VirtualMachineScaleSets", "AvailabilitySet".
122    :type type_properties_type: str or
123     ~azure.mgmt.containerservice.v2020_02_01.models.AgentPoolType
124    :param orchestrator_version: Version of orchestrator specified when creating the managed
125     cluster.
126    :type orchestrator_version: str
127    :ivar provisioning_state: The current deployment or provisioning state, which only appears in
128     the response.
129    :vartype provisioning_state: str
130    :param availability_zones: Availability zones for nodes. Must use VirtualMachineScaleSets
131     AgentPoolType.
132    :type availability_zones: list[str]
133    :param enable_node_public_ip: Enable public IP for nodes.
134    :type enable_node_public_ip: bool
135    :param scale_set_priority: ScaleSetPriority to be used to specify virtual machine scale set
136     priority. Default to regular. Possible values include: "Spot", "Low", "Regular". Default value:
137     "Regular".
138    :type scale_set_priority: str or
139     ~azure.mgmt.containerservice.v2020_02_01.models.ScaleSetPriority
140    :param scale_set_eviction_policy: ScaleSetEvictionPolicy to be used to specify eviction policy
141     for Spot or low priority virtual machine scale set. Default to Delete. Possible values include:
142     "Delete", "Deallocate". Default value: "Delete".
143    :type scale_set_eviction_policy: str or
144     ~azure.mgmt.containerservice.v2020_02_01.models.ScaleSetEvictionPolicy
145    :param spot_max_price: SpotMaxPrice to be used to specify the maximum price you are willing to
146     pay in US Dollars. Possible values are any decimal value greater than zero or -1 which
147     indicates default price to be up-to on-demand.
148    :type spot_max_price: float
149    :param tags: A set of tags. Agent pool tags to be persisted on the agent pool virtual machine
150     scale set.
151    :type tags: dict[str, str]
152    :param node_labels: Agent pool node labels to be persisted across all nodes in agent pool.
153    :type node_labels: dict[str, str]
154    :param node_taints: Taints added to new nodes during node pool create and scale. For example,
155     key=value:NoSchedule.
156    :type node_taints: list[str]
157    """
158
159    _validation = {
160        'id': {'readonly': True},
161        'name': {'readonly': True},
162        'type': {'readonly': True},
163        'os_disk_size_gb': {'maximum': 1023, 'minimum': 0},
164        'provisioning_state': {'readonly': True},
165    }
166
167    _attribute_map = {
168        'id': {'key': 'id', 'type': 'str'},
169        'name': {'key': 'name', 'type': 'str'},
170        'type': {'key': 'type', 'type': 'str'},
171        'count': {'key': 'properties.count', 'type': 'int'},
172        'vm_size': {'key': 'properties.vmSize', 'type': 'str'},
173        'os_disk_size_gb': {'key': 'properties.osDiskSizeGB', 'type': 'int'},
174        'vnet_subnet_id': {'key': 'properties.vnetSubnetID', 'type': 'str'},
175        'max_pods': {'key': 'properties.maxPods', 'type': 'int'},
176        'os_type': {'key': 'properties.osType', 'type': 'str'},
177        'max_count': {'key': 'properties.maxCount', 'type': 'int'},
178        'min_count': {'key': 'properties.minCount', 'type': 'int'},
179        'enable_auto_scaling': {'key': 'properties.enableAutoScaling', 'type': 'bool'},
180        'type_properties_type': {'key': 'properties.type', 'type': 'str'},
181        'orchestrator_version': {'key': 'properties.orchestratorVersion', 'type': 'str'},
182        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
183        'availability_zones': {'key': 'properties.availabilityZones', 'type': '[str]'},
184        'enable_node_public_ip': {'key': 'properties.enableNodePublicIP', 'type': 'bool'},
185        'scale_set_priority': {'key': 'properties.scaleSetPriority', 'type': 'str'},
186        'scale_set_eviction_policy': {'key': 'properties.scaleSetEvictionPolicy', 'type': 'str'},
187        'spot_max_price': {'key': 'properties.spotMaxPrice', 'type': 'float'},
188        'tags': {'key': 'properties.tags', 'type': '{str}'},
189        'node_labels': {'key': 'properties.nodeLabels', 'type': '{str}'},
190        'node_taints': {'key': 'properties.nodeTaints', 'type': '[str]'},
191    }
192
193    def __init__(
194        self,
195        **kwargs
196    ):
197        super(AgentPool, self).__init__(**kwargs)
198        self.count = kwargs.get('count', None)
199        self.vm_size = kwargs.get('vm_size', None)
200        self.os_disk_size_gb = kwargs.get('os_disk_size_gb', None)
201        self.vnet_subnet_id = kwargs.get('vnet_subnet_id', None)
202        self.max_pods = kwargs.get('max_pods', None)
203        self.os_type = kwargs.get('os_type', "Linux")
204        self.max_count = kwargs.get('max_count', None)
205        self.min_count = kwargs.get('min_count', None)
206        self.enable_auto_scaling = kwargs.get('enable_auto_scaling', None)
207        self.type_properties_type = kwargs.get('type_properties_type', None)
208        self.orchestrator_version = kwargs.get('orchestrator_version', None)
209        self.provisioning_state = None
210        self.availability_zones = kwargs.get('availability_zones', None)
211        self.enable_node_public_ip = kwargs.get('enable_node_public_ip', None)
212        self.scale_set_priority = kwargs.get('scale_set_priority', "Regular")
213        self.scale_set_eviction_policy = kwargs.get('scale_set_eviction_policy', "Delete")
214        self.spot_max_price = kwargs.get('spot_max_price', -1)
215        self.tags = kwargs.get('tags', None)
216        self.node_labels = kwargs.get('node_labels', None)
217        self.node_taints = kwargs.get('node_taints', None)
218
219
220class AgentPoolAvailableVersions(msrest.serialization.Model):
221    """The list of available versions for an agent pool.
222
223    Variables are only populated by the server, and will be ignored when sending a request.
224
225    :ivar id: Id of the agent pool available versions.
226    :vartype id: str
227    :ivar name: Name of the agent pool available versions.
228    :vartype name: str
229    :ivar type: Type of the agent pool  available versions.
230    :vartype type: str
231    :param agent_pool_versions: List of versions available for agent pool.
232    :type agent_pool_versions:
233     list[~azure.mgmt.containerservice.v2020_02_01.models.AgentPoolAvailableVersionsPropertiesAgentPoolVersionsItem]
234    """
235
236    _validation = {
237        'id': {'readonly': True},
238        'name': {'readonly': True},
239        'type': {'readonly': True},
240    }
241
242    _attribute_map = {
243        'id': {'key': 'id', 'type': 'str'},
244        'name': {'key': 'name', 'type': 'str'},
245        'type': {'key': 'type', 'type': 'str'},
246        'agent_pool_versions': {'key': 'properties.agentPoolVersions', 'type': '[AgentPoolAvailableVersionsPropertiesAgentPoolVersionsItem]'},
247    }
248
249    def __init__(
250        self,
251        **kwargs
252    ):
253        super(AgentPoolAvailableVersions, self).__init__(**kwargs)
254        self.id = None
255        self.name = None
256        self.type = None
257        self.agent_pool_versions = kwargs.get('agent_pool_versions', None)
258
259
260class AgentPoolAvailableVersionsPropertiesAgentPoolVersionsItem(msrest.serialization.Model):
261    """AgentPoolAvailableVersionsPropertiesAgentPoolVersionsItem.
262
263    :param default: Whether this version is the default agent pool version.
264    :type default: bool
265    :param kubernetes_version: Kubernetes version (major, minor, patch).
266    :type kubernetes_version: str
267    :param is_preview: Whether Kubernetes version is currently in preview.
268    :type is_preview: bool
269    """
270
271    _attribute_map = {
272        'default': {'key': 'default', 'type': 'bool'},
273        'kubernetes_version': {'key': 'kubernetesVersion', 'type': 'str'},
274        'is_preview': {'key': 'isPreview', 'type': 'bool'},
275    }
276
277    def __init__(
278        self,
279        **kwargs
280    ):
281        super(AgentPoolAvailableVersionsPropertiesAgentPoolVersionsItem, self).__init__(**kwargs)
282        self.default = kwargs.get('default', None)
283        self.kubernetes_version = kwargs.get('kubernetes_version', None)
284        self.is_preview = kwargs.get('is_preview', None)
285
286
287class AgentPoolListResult(msrest.serialization.Model):
288    """The response from the List Agent Pools operation.
289
290    Variables are only populated by the server, and will be ignored when sending a request.
291
292    :param value: The list of agent pools.
293    :type value: list[~azure.mgmt.containerservice.v2020_02_01.models.AgentPool]
294    :ivar next_link: The URL to get the next set of agent pool results.
295    :vartype next_link: str
296    """
297
298    _validation = {
299        'next_link': {'readonly': True},
300    }
301
302    _attribute_map = {
303        'value': {'key': 'value', 'type': '[AgentPool]'},
304        'next_link': {'key': 'nextLink', 'type': 'str'},
305    }
306
307    def __init__(
308        self,
309        **kwargs
310    ):
311        super(AgentPoolListResult, self).__init__(**kwargs)
312        self.value = kwargs.get('value', None)
313        self.next_link = None
314
315
316class AgentPoolUpgradeProfile(msrest.serialization.Model):
317    """The list of available upgrades for an agent pool.
318
319    Variables are only populated by the server, and will be ignored when sending a request.
320
321    All required parameters must be populated in order to send to Azure.
322
323    :ivar id: Id of the agent pool upgrade profile.
324    :vartype id: str
325    :ivar name: Name of the agent pool upgrade profile.
326    :vartype name: str
327    :ivar type: Type of the agent pool upgrade profile.
328    :vartype type: str
329    :param kubernetes_version: Required. Kubernetes version (major, minor, patch).
330    :type kubernetes_version: str
331    :param os_type: Required. OsType to be used to specify os type. Choose from Linux and Windows.
332     Default to Linux. Possible values include: "Linux", "Windows". Default value: "Linux".
333    :type os_type: str or ~azure.mgmt.containerservice.v2020_02_01.models.OSType
334    :param upgrades: List of orchestrator types and versions available for upgrade.
335    :type upgrades:
336     list[~azure.mgmt.containerservice.v2020_02_01.models.AgentPoolUpgradeProfilePropertiesUpgradesItem]
337    """
338
339    _validation = {
340        'id': {'readonly': True},
341        'name': {'readonly': True},
342        'type': {'readonly': True},
343        'kubernetes_version': {'required': True},
344        'os_type': {'required': True},
345    }
346
347    _attribute_map = {
348        'id': {'key': 'id', 'type': 'str'},
349        'name': {'key': 'name', 'type': 'str'},
350        'type': {'key': 'type', 'type': 'str'},
351        'kubernetes_version': {'key': 'properties.kubernetesVersion', 'type': 'str'},
352        'os_type': {'key': 'properties.osType', 'type': 'str'},
353        'upgrades': {'key': 'properties.upgrades', 'type': '[AgentPoolUpgradeProfilePropertiesUpgradesItem]'},
354    }
355
356    def __init__(
357        self,
358        **kwargs
359    ):
360        super(AgentPoolUpgradeProfile, self).__init__(**kwargs)
361        self.id = None
362        self.name = None
363        self.type = None
364        self.kubernetes_version = kwargs['kubernetes_version']
365        self.os_type = kwargs.get('os_type', "Linux")
366        self.upgrades = kwargs.get('upgrades', None)
367
368
369class AgentPoolUpgradeProfilePropertiesUpgradesItem(msrest.serialization.Model):
370    """AgentPoolUpgradeProfilePropertiesUpgradesItem.
371
372    :param kubernetes_version: Kubernetes version (major, minor, patch).
373    :type kubernetes_version: str
374    :param is_preview: Whether Kubernetes version is currently in preview.
375    :type is_preview: bool
376    """
377
378    _attribute_map = {
379        'kubernetes_version': {'key': 'kubernetesVersion', 'type': 'str'},
380        'is_preview': {'key': 'isPreview', 'type': 'bool'},
381    }
382
383    def __init__(
384        self,
385        **kwargs
386    ):
387        super(AgentPoolUpgradeProfilePropertiesUpgradesItem, self).__init__(**kwargs)
388        self.kubernetes_version = kwargs.get('kubernetes_version', None)
389        self.is_preview = kwargs.get('is_preview', None)
390
391
392class CloudErrorBody(msrest.serialization.Model):
393    """An error response from the Container service.
394
395    :param code: An identifier for the error. Codes are invariant and are intended to be consumed
396     programmatically.
397    :type code: str
398    :param message: A message describing the error, intended to be suitable for display in a user
399     interface.
400    :type message: str
401    :param target: The target of the particular error. For example, the name of the property in
402     error.
403    :type target: str
404    :param details: A list of additional details about the error.
405    :type details: list[~azure.mgmt.containerservice.v2020_02_01.models.CloudErrorBody]
406    """
407
408    _attribute_map = {
409        'code': {'key': 'code', 'type': 'str'},
410        'message': {'key': 'message', 'type': 'str'},
411        'target': {'key': 'target', 'type': 'str'},
412        'details': {'key': 'details', 'type': '[CloudErrorBody]'},
413    }
414
415    def __init__(
416        self,
417        **kwargs
418    ):
419        super(CloudErrorBody, self).__init__(**kwargs)
420        self.code = kwargs.get('code', None)
421        self.message = kwargs.get('message', None)
422        self.target = kwargs.get('target', None)
423        self.details = kwargs.get('details', None)
424
425
426class ContainerServiceDiagnosticsProfile(msrest.serialization.Model):
427    """Profile for diagnostics on the container service cluster.
428
429    All required parameters must be populated in order to send to Azure.
430
431    :param vm_diagnostics: Required. Profile for diagnostics on the container service VMs.
432    :type vm_diagnostics:
433     ~azure.mgmt.containerservice.v2020_02_01.models.ContainerServiceVMDiagnostics
434    """
435
436    _validation = {
437        'vm_diagnostics': {'required': True},
438    }
439
440    _attribute_map = {
441        'vm_diagnostics': {'key': 'vmDiagnostics', 'type': 'ContainerServiceVMDiagnostics'},
442    }
443
444    def __init__(
445        self,
446        **kwargs
447    ):
448        super(ContainerServiceDiagnosticsProfile, self).__init__(**kwargs)
449        self.vm_diagnostics = kwargs['vm_diagnostics']
450
451
452class ContainerServiceLinuxProfile(msrest.serialization.Model):
453    """Profile for Linux VMs in the container service cluster.
454
455    All required parameters must be populated in order to send to Azure.
456
457    :param admin_username: Required. The administrator username to use for Linux VMs.
458    :type admin_username: str
459    :param ssh: Required. SSH configuration for Linux-based VMs running on Azure.
460    :type ssh: ~azure.mgmt.containerservice.v2020_02_01.models.ContainerServiceSshConfiguration
461    """
462
463    _validation = {
464        'admin_username': {'required': True, 'pattern': r'^[A-Za-z][-A-Za-z0-9_]*$'},
465        'ssh': {'required': True},
466    }
467
468    _attribute_map = {
469        'admin_username': {'key': 'adminUsername', 'type': 'str'},
470        'ssh': {'key': 'ssh', 'type': 'ContainerServiceSshConfiguration'},
471    }
472
473    def __init__(
474        self,
475        **kwargs
476    ):
477        super(ContainerServiceLinuxProfile, self).__init__(**kwargs)
478        self.admin_username = kwargs['admin_username']
479        self.ssh = kwargs['ssh']
480
481
482class ContainerServiceMasterProfile(msrest.serialization.Model):
483    """Profile for the container service master.
484
485    Variables are only populated by the server, and will be ignored when sending a request.
486
487    All required parameters must be populated in order to send to Azure.
488
489    :param count: Number of masters (VMs) in the container service cluster. Allowed values are 1,
490     3, and 5. The default value is 1. Possible values include: 1, 3, 5. Default value: "1".
491    :type count: str or ~azure.mgmt.containerservice.v2020_02_01.models.Count
492    :param dns_prefix: Required. DNS prefix to be used to create the FQDN for the master pool.
493    :type dns_prefix: str
494    :param vm_size: Required. Size of agent VMs. Possible values include: "Standard_A1",
495     "Standard_A10", "Standard_A11", "Standard_A1_v2", "Standard_A2", "Standard_A2_v2",
496     "Standard_A2m_v2", "Standard_A3", "Standard_A4", "Standard_A4_v2", "Standard_A4m_v2",
497     "Standard_A5", "Standard_A6", "Standard_A7", "Standard_A8", "Standard_A8_v2",
498     "Standard_A8m_v2", "Standard_A9", "Standard_B2ms", "Standard_B2s", "Standard_B4ms",
499     "Standard_B8ms", "Standard_D1", "Standard_D11", "Standard_D11_v2", "Standard_D11_v2_Promo",
500     "Standard_D12", "Standard_D12_v2", "Standard_D12_v2_Promo", "Standard_D13", "Standard_D13_v2",
501     "Standard_D13_v2_Promo", "Standard_D14", "Standard_D14_v2", "Standard_D14_v2_Promo",
502     "Standard_D15_v2", "Standard_D16_v3", "Standard_D16s_v3", "Standard_D1_v2", "Standard_D2",
503     "Standard_D2_v2", "Standard_D2_v2_Promo", "Standard_D2_v3", "Standard_D2s_v3", "Standard_D3",
504     "Standard_D32_v3", "Standard_D32s_v3", "Standard_D3_v2", "Standard_D3_v2_Promo", "Standard_D4",
505     "Standard_D4_v2", "Standard_D4_v2_Promo", "Standard_D4_v3", "Standard_D4s_v3",
506     "Standard_D5_v2", "Standard_D5_v2_Promo", "Standard_D64_v3", "Standard_D64s_v3",
507     "Standard_D8_v3", "Standard_D8s_v3", "Standard_DS1", "Standard_DS11", "Standard_DS11_v2",
508     "Standard_DS11_v2_Promo", "Standard_DS12", "Standard_DS12_v2", "Standard_DS12_v2_Promo",
509     "Standard_DS13", "Standard_DS13-2_v2", "Standard_DS13-4_v2", "Standard_DS13_v2",
510     "Standard_DS13_v2_Promo", "Standard_DS14", "Standard_DS14-4_v2", "Standard_DS14-8_v2",
511     "Standard_DS14_v2", "Standard_DS14_v2_Promo", "Standard_DS15_v2", "Standard_DS1_v2",
512     "Standard_DS2", "Standard_DS2_v2", "Standard_DS2_v2_Promo", "Standard_DS3", "Standard_DS3_v2",
513     "Standard_DS3_v2_Promo", "Standard_DS4", "Standard_DS4_v2", "Standard_DS4_v2_Promo",
514     "Standard_DS5_v2", "Standard_DS5_v2_Promo", "Standard_E16_v3", "Standard_E16s_v3",
515     "Standard_E2_v3", "Standard_E2s_v3", "Standard_E32-16s_v3", "Standard_E32-8s_v3",
516     "Standard_E32_v3", "Standard_E32s_v3", "Standard_E4_v3", "Standard_E4s_v3",
517     "Standard_E64-16s_v3", "Standard_E64-32s_v3", "Standard_E64_v3", "Standard_E64s_v3",
518     "Standard_E8_v3", "Standard_E8s_v3", "Standard_F1", "Standard_F16", "Standard_F16s",
519     "Standard_F16s_v2", "Standard_F1s", "Standard_F2", "Standard_F2s", "Standard_F2s_v2",
520     "Standard_F32s_v2", "Standard_F4", "Standard_F4s", "Standard_F4s_v2", "Standard_F64s_v2",
521     "Standard_F72s_v2", "Standard_F8", "Standard_F8s", "Standard_F8s_v2", "Standard_G1",
522     "Standard_G2", "Standard_G3", "Standard_G4", "Standard_G5", "Standard_GS1", "Standard_GS2",
523     "Standard_GS3", "Standard_GS4", "Standard_GS4-4", "Standard_GS4-8", "Standard_GS5",
524     "Standard_GS5-16", "Standard_GS5-8", "Standard_H16", "Standard_H16m", "Standard_H16mr",
525     "Standard_H16r", "Standard_H8", "Standard_H8m", "Standard_L16s", "Standard_L32s",
526     "Standard_L4s", "Standard_L8s", "Standard_M128-32ms", "Standard_M128-64ms", "Standard_M128ms",
527     "Standard_M128s", "Standard_M64-16ms", "Standard_M64-32ms", "Standard_M64ms", "Standard_M64s",
528     "Standard_NC12", "Standard_NC12s_v2", "Standard_NC12s_v3", "Standard_NC24", "Standard_NC24r",
529     "Standard_NC24rs_v2", "Standard_NC24rs_v3", "Standard_NC24s_v2", "Standard_NC24s_v3",
530     "Standard_NC6", "Standard_NC6s_v2", "Standard_NC6s_v3", "Standard_ND12s", "Standard_ND24rs",
531     "Standard_ND24s", "Standard_ND6s", "Standard_NV12", "Standard_NV24", "Standard_NV6".
532    :type vm_size: str or
533     ~azure.mgmt.containerservice.v2020_02_01.models.ContainerServiceVMSizeTypes
534    :param os_disk_size_gb: OS Disk Size in GB to be used to specify the disk size for every
535     machine in this master/agent pool. If you specify 0, it will apply the default osDisk size
536     according to the vmSize specified.
537    :type os_disk_size_gb: int
538    :param vnet_subnet_id: VNet SubnetID specifies the VNet's subnet identifier.
539    :type vnet_subnet_id: str
540    :param first_consecutive_static_ip: FirstConsecutiveStaticIP used to specify the first static
541     ip of masters.
542    :type first_consecutive_static_ip: str
543    :param storage_profile: Storage profile specifies what kind of storage used. Choose from
544     StorageAccount and ManagedDisks. Leave it empty, we will choose for you based on the
545     orchestrator choice. Possible values include: "StorageAccount", "ManagedDisks".
546    :type storage_profile: str or
547     ~azure.mgmt.containerservice.v2020_02_01.models.ContainerServiceStorageProfileTypes
548    :ivar fqdn: FQDN for the master pool.
549    :vartype fqdn: str
550    """
551
552    _validation = {
553        'dns_prefix': {'required': True},
554        'vm_size': {'required': True},
555        'os_disk_size_gb': {'maximum': 1023, 'minimum': 0},
556        'fqdn': {'readonly': True},
557    }
558
559    _attribute_map = {
560        'count': {'key': 'count', 'type': 'int'},
561        'dns_prefix': {'key': 'dnsPrefix', 'type': 'str'},
562        'vm_size': {'key': 'vmSize', 'type': 'str'},
563        'os_disk_size_gb': {'key': 'osDiskSizeGB', 'type': 'int'},
564        'vnet_subnet_id': {'key': 'vnetSubnetID', 'type': 'str'},
565        'first_consecutive_static_ip': {'key': 'firstConsecutiveStaticIP', 'type': 'str'},
566        'storage_profile': {'key': 'storageProfile', 'type': 'str'},
567        'fqdn': {'key': 'fqdn', 'type': 'str'},
568    }
569
570    def __init__(
571        self,
572        **kwargs
573    ):
574        super(ContainerServiceMasterProfile, self).__init__(**kwargs)
575        self.count = kwargs.get('count', "1")
576        self.dns_prefix = kwargs['dns_prefix']
577        self.vm_size = kwargs['vm_size']
578        self.os_disk_size_gb = kwargs.get('os_disk_size_gb', None)
579        self.vnet_subnet_id = kwargs.get('vnet_subnet_id', None)
580        self.first_consecutive_static_ip = kwargs.get('first_consecutive_static_ip', "10.240.255.5")
581        self.storage_profile = kwargs.get('storage_profile', None)
582        self.fqdn = None
583
584
585class ContainerServiceNetworkProfile(msrest.serialization.Model):
586    """Profile of network configuration.
587
588    :param network_plugin: Network plugin used for building Kubernetes network. Possible values
589     include: "azure", "kubenet". Default value: "kubenet".
590    :type network_plugin: str or ~azure.mgmt.containerservice.v2020_02_01.models.NetworkPlugin
591    :param network_policy: Network policy used for building Kubernetes network. Possible values
592     include: "calico", "azure".
593    :type network_policy: str or ~azure.mgmt.containerservice.v2020_02_01.models.NetworkPolicy
594    :param network_mode: Network mode used for building Kubernetes network. Possible values
595     include: "transparent", "bridge".
596    :type network_mode: str or ~azure.mgmt.containerservice.v2020_02_01.models.NetworkMode
597    :param pod_cidr: A CIDR notation IP range from which to assign pod IPs when kubenet is used.
598    :type pod_cidr: str
599    :param service_cidr: A CIDR notation IP range from which to assign service cluster IPs. It must
600     not overlap with any Subnet IP ranges.
601    :type service_cidr: str
602    :param dns_service_ip: An IP address assigned to the Kubernetes DNS service. It must be within
603     the Kubernetes service address range specified in serviceCidr.
604    :type dns_service_ip: str
605    :param docker_bridge_cidr: A CIDR notation IP range assigned to the Docker bridge network. It
606     must not overlap with any Subnet IP ranges or the Kubernetes service address range.
607    :type docker_bridge_cidr: str
608    :param outbound_type: The outbound (egress) routing method. Possible values include:
609     "loadBalancer", "userDefinedRouting". Default value: "loadBalancer".
610    :type outbound_type: str or ~azure.mgmt.containerservice.v2020_02_01.models.OutboundType
611    :param load_balancer_sku: The load balancer sku for the managed cluster. Possible values
612     include: "standard", "basic".
613    :type load_balancer_sku: str or ~azure.mgmt.containerservice.v2020_02_01.models.LoadBalancerSku
614    :param load_balancer_profile: Profile of the cluster load balancer.
615    :type load_balancer_profile:
616     ~azure.mgmt.containerservice.v2020_02_01.models.ManagedClusterLoadBalancerProfile
617    """
618
619    _validation = {
620        'pod_cidr': {'pattern': r'^([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2]))?$'},
621        'service_cidr': {'pattern': r'^([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2]))?$'},
622        '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]?)$'},
623        'docker_bridge_cidr': {'pattern': r'^([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2]))?$'},
624    }
625
626    _attribute_map = {
627        'network_plugin': {'key': 'networkPlugin', 'type': 'str'},
628        'network_policy': {'key': 'networkPolicy', 'type': 'str'},
629        'network_mode': {'key': 'networkMode', 'type': 'str'},
630        'pod_cidr': {'key': 'podCidr', 'type': 'str'},
631        'service_cidr': {'key': 'serviceCidr', 'type': 'str'},
632        'dns_service_ip': {'key': 'dnsServiceIP', 'type': 'str'},
633        'docker_bridge_cidr': {'key': 'dockerBridgeCidr', 'type': 'str'},
634        'outbound_type': {'key': 'outboundType', 'type': 'str'},
635        'load_balancer_sku': {'key': 'loadBalancerSku', 'type': 'str'},
636        'load_balancer_profile': {'key': 'loadBalancerProfile', 'type': 'ManagedClusterLoadBalancerProfile'},
637    }
638
639    def __init__(
640        self,
641        **kwargs
642    ):
643        super(ContainerServiceNetworkProfile, self).__init__(**kwargs)
644        self.network_plugin = kwargs.get('network_plugin', "kubenet")
645        self.network_policy = kwargs.get('network_policy', None)
646        self.network_mode = kwargs.get('network_mode', None)
647        self.pod_cidr = kwargs.get('pod_cidr', "10.244.0.0/16")
648        self.service_cidr = kwargs.get('service_cidr', "10.0.0.0/16")
649        self.dns_service_ip = kwargs.get('dns_service_ip', "10.0.0.10")
650        self.docker_bridge_cidr = kwargs.get('docker_bridge_cidr', "172.17.0.1/16")
651        self.outbound_type = kwargs.get('outbound_type', "loadBalancer")
652        self.load_balancer_sku = kwargs.get('load_balancer_sku', None)
653        self.load_balancer_profile = kwargs.get('load_balancer_profile', None)
654
655
656class ContainerServiceSshConfiguration(msrest.serialization.Model):
657    """SSH configuration for Linux-based VMs running on Azure.
658
659    All required parameters must be populated in order to send to Azure.
660
661    :param public_keys: Required. The list of SSH public keys used to authenticate with Linux-based
662     VMs. Only expect one key specified.
663    :type public_keys:
664     list[~azure.mgmt.containerservice.v2020_02_01.models.ContainerServiceSshPublicKey]
665    """
666
667    _validation = {
668        'public_keys': {'required': True},
669    }
670
671    _attribute_map = {
672        'public_keys': {'key': 'publicKeys', 'type': '[ContainerServiceSshPublicKey]'},
673    }
674
675    def __init__(
676        self,
677        **kwargs
678    ):
679        super(ContainerServiceSshConfiguration, self).__init__(**kwargs)
680        self.public_keys = kwargs['public_keys']
681
682
683class ContainerServiceSshPublicKey(msrest.serialization.Model):
684    """Contains information about SSH certificate public key data.
685
686    All required parameters must be populated in order to send to Azure.
687
688    :param key_data: Required. Certificate public key used to authenticate with VMs through SSH.
689     The certificate must be in PEM format with or without headers.
690    :type key_data: str
691    """
692
693    _validation = {
694        'key_data': {'required': True},
695    }
696
697    _attribute_map = {
698        'key_data': {'key': 'keyData', 'type': 'str'},
699    }
700
701    def __init__(
702        self,
703        **kwargs
704    ):
705        super(ContainerServiceSshPublicKey, self).__init__(**kwargs)
706        self.key_data = kwargs['key_data']
707
708
709class ContainerServiceVMDiagnostics(msrest.serialization.Model):
710    """Profile for diagnostics on the container service VMs.
711
712    Variables are only populated by the server, and will be ignored when sending a request.
713
714    All required parameters must be populated in order to send to Azure.
715
716    :param enabled: Required. Whether the VM diagnostic agent is provisioned on the VM.
717    :type enabled: bool
718    :ivar storage_uri: The URI of the storage account where diagnostics are stored.
719    :vartype storage_uri: str
720    """
721
722    _validation = {
723        'enabled': {'required': True},
724        'storage_uri': {'readonly': True},
725    }
726
727    _attribute_map = {
728        'enabled': {'key': 'enabled', 'type': 'bool'},
729        'storage_uri': {'key': 'storageUri', 'type': 'str'},
730    }
731
732    def __init__(
733        self,
734        **kwargs
735    ):
736        super(ContainerServiceVMDiagnostics, self).__init__(**kwargs)
737        self.enabled = kwargs['enabled']
738        self.storage_uri = None
739
740
741class CredentialResult(msrest.serialization.Model):
742    """The credential result response.
743
744    Variables are only populated by the server, and will be ignored when sending a request.
745
746    :ivar name: The name of the credential.
747    :vartype name: str
748    :ivar value: Base64-encoded Kubernetes configuration file.
749    :vartype value: bytearray
750    """
751
752    _validation = {
753        'name': {'readonly': True},
754        'value': {'readonly': True},
755    }
756
757    _attribute_map = {
758        'name': {'key': 'name', 'type': 'str'},
759        'value': {'key': 'value', 'type': 'bytearray'},
760    }
761
762    def __init__(
763        self,
764        **kwargs
765    ):
766        super(CredentialResult, self).__init__(**kwargs)
767        self.name = None
768        self.value = None
769
770
771class CredentialResults(msrest.serialization.Model):
772    """The list of credential result response.
773
774    Variables are only populated by the server, and will be ignored when sending a request.
775
776    :ivar kubeconfigs: Base64-encoded Kubernetes configuration file.
777    :vartype kubeconfigs: list[~azure.mgmt.containerservice.v2020_02_01.models.CredentialResult]
778    """
779
780    _validation = {
781        'kubeconfigs': {'readonly': True},
782    }
783
784    _attribute_map = {
785        'kubeconfigs': {'key': 'kubeconfigs', 'type': '[CredentialResult]'},
786    }
787
788    def __init__(
789        self,
790        **kwargs
791    ):
792        super(CredentialResults, self).__init__(**kwargs)
793        self.kubeconfigs = None
794
795
796class Resource(msrest.serialization.Model):
797    """The Resource model definition.
798
799    Variables are only populated by the server, and will be ignored when sending a request.
800
801    All required parameters must be populated in order to send to Azure.
802
803    :ivar id: Resource Id.
804    :vartype id: str
805    :ivar name: Resource name.
806    :vartype name: str
807    :ivar type: Resource type.
808    :vartype type: str
809    :param location: Required. Resource location.
810    :type location: str
811    :param tags: A set of tags. Resource tags.
812    :type tags: dict[str, str]
813    """
814
815    _validation = {
816        'id': {'readonly': True},
817        'name': {'readonly': True},
818        'type': {'readonly': True},
819        'location': {'required': True},
820    }
821
822    _attribute_map = {
823        'id': {'key': 'id', 'type': 'str'},
824        'name': {'key': 'name', 'type': 'str'},
825        'type': {'key': 'type', 'type': 'str'},
826        'location': {'key': 'location', 'type': 'str'},
827        'tags': {'key': 'tags', 'type': '{str}'},
828    }
829
830    def __init__(
831        self,
832        **kwargs
833    ):
834        super(Resource, self).__init__(**kwargs)
835        self.id = None
836        self.name = None
837        self.type = None
838        self.location = kwargs['location']
839        self.tags = kwargs.get('tags', None)
840
841
842class ManagedCluster(Resource):
843    """Managed cluster.
844
845    Variables are only populated by the server, and will be ignored when sending a request.
846
847    All required parameters must be populated in order to send to Azure.
848
849    :ivar id: Resource Id.
850    :vartype id: str
851    :ivar name: Resource name.
852    :vartype name: str
853    :ivar type: Resource type.
854    :vartype type: str
855    :param location: Required. Resource location.
856    :type location: str
857    :param tags: A set of tags. Resource tags.
858    :type tags: dict[str, str]
859    :param identity: The identity of the managed cluster, if configured.
860    :type identity: ~azure.mgmt.containerservice.v2020_02_01.models.ManagedClusterIdentity
861    :ivar provisioning_state: The current deployment or provisioning state, which only appears in
862     the response.
863    :vartype provisioning_state: str
864    :ivar max_agent_pools: The max number of agent pools for the managed cluster.
865    :vartype max_agent_pools: int
866    :param kubernetes_version: Version of Kubernetes specified when creating the managed cluster.
867    :type kubernetes_version: str
868    :param dns_prefix: DNS prefix specified when creating the managed cluster.
869    :type dns_prefix: str
870    :ivar fqdn: FQDN for the master pool.
871    :vartype fqdn: str
872    :ivar private_fqdn: FQDN of private cluster.
873    :vartype private_fqdn: str
874    :param agent_pool_profiles: Properties of the agent pool.
875    :type agent_pool_profiles:
876     list[~azure.mgmt.containerservice.v2020_02_01.models.ManagedClusterAgentPoolProfile]
877    :param linux_profile: Profile for Linux VMs in the container service cluster.
878    :type linux_profile:
879     ~azure.mgmt.containerservice.v2020_02_01.models.ContainerServiceLinuxProfile
880    :param windows_profile: Profile for Windows VMs in the container service cluster.
881    :type windows_profile:
882     ~azure.mgmt.containerservice.v2020_02_01.models.ManagedClusterWindowsProfile
883    :param service_principal_profile: Information about a service principal identity for the
884     cluster to use for manipulating Azure APIs.
885    :type service_principal_profile:
886     ~azure.mgmt.containerservice.v2020_02_01.models.ManagedClusterServicePrincipalProfile
887    :param addon_profiles: Profile of managed cluster add-on.
888    :type addon_profiles: dict[str,
889     ~azure.mgmt.containerservice.v2020_02_01.models.ManagedClusterAddonProfile]
890    :param node_resource_group: Name of the resource group containing agent pool nodes.
891    :type node_resource_group: str
892    :param enable_rbac: Whether to enable Kubernetes Role-Based Access Control.
893    :type enable_rbac: bool
894    :param enable_pod_security_policy: (DEPRECATING) Whether to enable Kubernetes pod security
895     policy (preview). This feature is set for removal on October 15th, 2020. Learn more at
896     aka.ms/aks/azpodpolicy.
897    :type enable_pod_security_policy: bool
898    :param network_profile: Profile of network configuration.
899    :type network_profile:
900     ~azure.mgmt.containerservice.v2020_02_01.models.ContainerServiceNetworkProfile
901    :param aad_profile: Profile of Azure Active Directory configuration.
902    :type aad_profile: ~azure.mgmt.containerservice.v2020_02_01.models.ManagedClusterAADProfile
903    :param auto_scaler_profile: Parameters to be applied to the cluster-autoscaler when enabled.
904    :type auto_scaler_profile:
905     ~azure.mgmt.containerservice.v2020_02_01.models.ManagedClusterPropertiesAutoScalerProfile
906    :param api_server_access_profile: Access profile for managed cluster API server.
907    :type api_server_access_profile:
908     ~azure.mgmt.containerservice.v2020_02_01.models.ManagedClusterAPIServerAccessProfile
909    :param disk_encryption_set_id: ResourceId of the disk encryption set to use for enabling
910     encryption at rest.
911    :type disk_encryption_set_id: str
912    :param identity_profile: Identities associated with the cluster.
913    :type identity_profile: dict[str,
914     ~azure.mgmt.containerservice.v2020_02_01.models.ManagedClusterPropertiesIdentityProfileValue]
915    """
916
917    _validation = {
918        'id': {'readonly': True},
919        'name': {'readonly': True},
920        'type': {'readonly': True},
921        'location': {'required': True},
922        'provisioning_state': {'readonly': True},
923        'max_agent_pools': {'readonly': True},
924        'fqdn': {'readonly': True},
925        'private_fqdn': {'readonly': True},
926    }
927
928    _attribute_map = {
929        'id': {'key': 'id', 'type': 'str'},
930        'name': {'key': 'name', 'type': 'str'},
931        'type': {'key': 'type', 'type': 'str'},
932        'location': {'key': 'location', 'type': 'str'},
933        'tags': {'key': 'tags', 'type': '{str}'},
934        'identity': {'key': 'identity', 'type': 'ManagedClusterIdentity'},
935        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
936        'max_agent_pools': {'key': 'properties.maxAgentPools', 'type': 'int'},
937        'kubernetes_version': {'key': 'properties.kubernetesVersion', 'type': 'str'},
938        'dns_prefix': {'key': 'properties.dnsPrefix', 'type': 'str'},
939        'fqdn': {'key': 'properties.fqdn', 'type': 'str'},
940        'private_fqdn': {'key': 'properties.privateFQDN', 'type': 'str'},
941        'agent_pool_profiles': {'key': 'properties.agentPoolProfiles', 'type': '[ManagedClusterAgentPoolProfile]'},
942        'linux_profile': {'key': 'properties.linuxProfile', 'type': 'ContainerServiceLinuxProfile'},
943        'windows_profile': {'key': 'properties.windowsProfile', 'type': 'ManagedClusterWindowsProfile'},
944        'service_principal_profile': {'key': 'properties.servicePrincipalProfile', 'type': 'ManagedClusterServicePrincipalProfile'},
945        'addon_profiles': {'key': 'properties.addonProfiles', 'type': '{ManagedClusterAddonProfile}'},
946        'node_resource_group': {'key': 'properties.nodeResourceGroup', 'type': 'str'},
947        'enable_rbac': {'key': 'properties.enableRBAC', 'type': 'bool'},
948        'enable_pod_security_policy': {'key': 'properties.enablePodSecurityPolicy', 'type': 'bool'},
949        'network_profile': {'key': 'properties.networkProfile', 'type': 'ContainerServiceNetworkProfile'},
950        'aad_profile': {'key': 'properties.aadProfile', 'type': 'ManagedClusterAADProfile'},
951        'auto_scaler_profile': {'key': 'properties.autoScalerProfile', 'type': 'ManagedClusterPropertiesAutoScalerProfile'},
952        'api_server_access_profile': {'key': 'properties.apiServerAccessProfile', 'type': 'ManagedClusterAPIServerAccessProfile'},
953        'disk_encryption_set_id': {'key': 'properties.diskEncryptionSetID', 'type': 'str'},
954        'identity_profile': {'key': 'properties.identityProfile', 'type': '{ManagedClusterPropertiesIdentityProfileValue}'},
955    }
956
957    def __init__(
958        self,
959        **kwargs
960    ):
961        super(ManagedCluster, self).__init__(**kwargs)
962        self.identity = kwargs.get('identity', None)
963        self.provisioning_state = None
964        self.max_agent_pools = None
965        self.kubernetes_version = kwargs.get('kubernetes_version', None)
966        self.dns_prefix = kwargs.get('dns_prefix', None)
967        self.fqdn = None
968        self.private_fqdn = None
969        self.agent_pool_profiles = kwargs.get('agent_pool_profiles', None)
970        self.linux_profile = kwargs.get('linux_profile', None)
971        self.windows_profile = kwargs.get('windows_profile', None)
972        self.service_principal_profile = kwargs.get('service_principal_profile', None)
973        self.addon_profiles = kwargs.get('addon_profiles', None)
974        self.node_resource_group = kwargs.get('node_resource_group', None)
975        self.enable_rbac = kwargs.get('enable_rbac', None)
976        self.enable_pod_security_policy = kwargs.get('enable_pod_security_policy', None)
977        self.network_profile = kwargs.get('network_profile', None)
978        self.aad_profile = kwargs.get('aad_profile', None)
979        self.auto_scaler_profile = kwargs.get('auto_scaler_profile', None)
980        self.api_server_access_profile = kwargs.get('api_server_access_profile', None)
981        self.disk_encryption_set_id = kwargs.get('disk_encryption_set_id', None)
982        self.identity_profile = kwargs.get('identity_profile', None)
983
984
985class ManagedClusterAADProfile(msrest.serialization.Model):
986    """AADProfile specifies attributes for Azure Active Directory integration.
987
988    All required parameters must be populated in order to send to Azure.
989
990    :param client_app_id: Required. The client AAD application ID.
991    :type client_app_id: str
992    :param server_app_id: Required. The server AAD application ID.
993    :type server_app_id: str
994    :param server_app_secret: The server AAD application secret.
995    :type server_app_secret: str
996    :param tenant_id: The AAD tenant ID to use for authentication. If not specified, will use the
997     tenant of the deployment subscription.
998    :type tenant_id: str
999    """
1000
1001    _validation = {
1002        'client_app_id': {'required': True},
1003        'server_app_id': {'required': True},
1004    }
1005
1006    _attribute_map = {
1007        'client_app_id': {'key': 'clientAppID', 'type': 'str'},
1008        'server_app_id': {'key': 'serverAppID', 'type': 'str'},
1009        'server_app_secret': {'key': 'serverAppSecret', 'type': 'str'},
1010        'tenant_id': {'key': 'tenantID', 'type': 'str'},
1011    }
1012
1013    def __init__(
1014        self,
1015        **kwargs
1016    ):
1017        super(ManagedClusterAADProfile, self).__init__(**kwargs)
1018        self.client_app_id = kwargs['client_app_id']
1019        self.server_app_id = kwargs['server_app_id']
1020        self.server_app_secret = kwargs.get('server_app_secret', None)
1021        self.tenant_id = kwargs.get('tenant_id', None)
1022
1023
1024class ManagedClusterAccessProfile(Resource):
1025    """Managed cluster Access Profile.
1026
1027    Variables are only populated by the server, and will be ignored when sending a request.
1028
1029    All required parameters must be populated in order to send to Azure.
1030
1031    :ivar id: Resource Id.
1032    :vartype id: str
1033    :ivar name: Resource name.
1034    :vartype name: str
1035    :ivar type: Resource type.
1036    :vartype type: str
1037    :param location: Required. Resource location.
1038    :type location: str
1039    :param tags: A set of tags. Resource tags.
1040    :type tags: dict[str, str]
1041    :param kube_config: Base64-encoded Kubernetes configuration file.
1042    :type kube_config: bytearray
1043    """
1044
1045    _validation = {
1046        'id': {'readonly': True},
1047        'name': {'readonly': True},
1048        'type': {'readonly': True},
1049        'location': {'required': True},
1050    }
1051
1052    _attribute_map = {
1053        'id': {'key': 'id', 'type': 'str'},
1054        'name': {'key': 'name', 'type': 'str'},
1055        'type': {'key': 'type', 'type': 'str'},
1056        'location': {'key': 'location', 'type': 'str'},
1057        'tags': {'key': 'tags', 'type': '{str}'},
1058        'kube_config': {'key': 'properties.kubeConfig', 'type': 'bytearray'},
1059    }
1060
1061    def __init__(
1062        self,
1063        **kwargs
1064    ):
1065        super(ManagedClusterAccessProfile, self).__init__(**kwargs)
1066        self.kube_config = kwargs.get('kube_config', None)
1067
1068
1069class ManagedClusterAddonProfile(msrest.serialization.Model):
1070    """A Kubernetes add-on profile for a managed cluster.
1071
1072    Variables are only populated by the server, and will be ignored when sending a request.
1073
1074    All required parameters must be populated in order to send to Azure.
1075
1076    :param enabled: Required. Whether the add-on is enabled or not.
1077    :type enabled: bool
1078    :param config: Key-value pairs for configuring an add-on.
1079    :type config: dict[str, str]
1080    :ivar identity: Information of user assigned identity used by this add-on.
1081    :vartype identity:
1082     ~azure.mgmt.containerservice.v2020_02_01.models.ManagedClusterAddonProfileIdentity
1083    """
1084
1085    _validation = {
1086        'enabled': {'required': True},
1087        'identity': {'readonly': True},
1088    }
1089
1090    _attribute_map = {
1091        'enabled': {'key': 'enabled', 'type': 'bool'},
1092        'config': {'key': 'config', 'type': '{str}'},
1093        'identity': {'key': 'identity', 'type': 'ManagedClusterAddonProfileIdentity'},
1094    }
1095
1096    def __init__(
1097        self,
1098        **kwargs
1099    ):
1100        super(ManagedClusterAddonProfile, self).__init__(**kwargs)
1101        self.enabled = kwargs['enabled']
1102        self.config = kwargs.get('config', None)
1103        self.identity = None
1104
1105
1106class UserAssignedIdentity(msrest.serialization.Model):
1107    """UserAssignedIdentity.
1108
1109    :param resource_id: The resource id of the user assigned identity.
1110    :type resource_id: str
1111    :param client_id: The client id of the user assigned identity.
1112    :type client_id: str
1113    :param object_id: The object id of the user assigned identity.
1114    :type object_id: str
1115    """
1116
1117    _attribute_map = {
1118        'resource_id': {'key': 'resourceId', 'type': 'str'},
1119        'client_id': {'key': 'clientId', 'type': 'str'},
1120        'object_id': {'key': 'objectId', 'type': 'str'},
1121    }
1122
1123    def __init__(
1124        self,
1125        **kwargs
1126    ):
1127        super(UserAssignedIdentity, self).__init__(**kwargs)
1128        self.resource_id = kwargs.get('resource_id', None)
1129        self.client_id = kwargs.get('client_id', None)
1130        self.object_id = kwargs.get('object_id', None)
1131
1132
1133class ManagedClusterAddonProfileIdentity(UserAssignedIdentity):
1134    """Information of user assigned identity used by this add-on.
1135
1136    :param resource_id: The resource id of the user assigned identity.
1137    :type resource_id: str
1138    :param client_id: The client id of the user assigned identity.
1139    :type client_id: str
1140    :param object_id: The object id of the user assigned identity.
1141    :type object_id: str
1142    """
1143
1144    _attribute_map = {
1145        'resource_id': {'key': 'resourceId', 'type': 'str'},
1146        'client_id': {'key': 'clientId', 'type': 'str'},
1147        'object_id': {'key': 'objectId', 'type': 'str'},
1148    }
1149
1150    def __init__(
1151        self,
1152        **kwargs
1153    ):
1154        super(ManagedClusterAddonProfileIdentity, self).__init__(**kwargs)
1155
1156
1157class ManagedClusterAgentPoolProfileProperties(msrest.serialization.Model):
1158    """Properties for the container service agent pool profile.
1159
1160    Variables are only populated by the server, and will be ignored when sending a request.
1161
1162    :param count: Number of agents (VMs) to host docker containers. Allowed values must be in the
1163     range of 1 to 100 (inclusive). The default value is 1.
1164    :type count: int
1165    :param vm_size: Size of agent VMs. Possible values include: "Standard_A1", "Standard_A10",
1166     "Standard_A11", "Standard_A1_v2", "Standard_A2", "Standard_A2_v2", "Standard_A2m_v2",
1167     "Standard_A3", "Standard_A4", "Standard_A4_v2", "Standard_A4m_v2", "Standard_A5",
1168     "Standard_A6", "Standard_A7", "Standard_A8", "Standard_A8_v2", "Standard_A8m_v2",
1169     "Standard_A9", "Standard_B2ms", "Standard_B2s", "Standard_B4ms", "Standard_B8ms",
1170     "Standard_D1", "Standard_D11", "Standard_D11_v2", "Standard_D11_v2_Promo", "Standard_D12",
1171     "Standard_D12_v2", "Standard_D12_v2_Promo", "Standard_D13", "Standard_D13_v2",
1172     "Standard_D13_v2_Promo", "Standard_D14", "Standard_D14_v2", "Standard_D14_v2_Promo",
1173     "Standard_D15_v2", "Standard_D16_v3", "Standard_D16s_v3", "Standard_D1_v2", "Standard_D2",
1174     "Standard_D2_v2", "Standard_D2_v2_Promo", "Standard_D2_v3", "Standard_D2s_v3", "Standard_D3",
1175     "Standard_D32_v3", "Standard_D32s_v3", "Standard_D3_v2", "Standard_D3_v2_Promo", "Standard_D4",
1176     "Standard_D4_v2", "Standard_D4_v2_Promo", "Standard_D4_v3", "Standard_D4s_v3",
1177     "Standard_D5_v2", "Standard_D5_v2_Promo", "Standard_D64_v3", "Standard_D64s_v3",
1178     "Standard_D8_v3", "Standard_D8s_v3", "Standard_DS1", "Standard_DS11", "Standard_DS11_v2",
1179     "Standard_DS11_v2_Promo", "Standard_DS12", "Standard_DS12_v2", "Standard_DS12_v2_Promo",
1180     "Standard_DS13", "Standard_DS13-2_v2", "Standard_DS13-4_v2", "Standard_DS13_v2",
1181     "Standard_DS13_v2_Promo", "Standard_DS14", "Standard_DS14-4_v2", "Standard_DS14-8_v2",
1182     "Standard_DS14_v2", "Standard_DS14_v2_Promo", "Standard_DS15_v2", "Standard_DS1_v2",
1183     "Standard_DS2", "Standard_DS2_v2", "Standard_DS2_v2_Promo", "Standard_DS3", "Standard_DS3_v2",
1184     "Standard_DS3_v2_Promo", "Standard_DS4", "Standard_DS4_v2", "Standard_DS4_v2_Promo",
1185     "Standard_DS5_v2", "Standard_DS5_v2_Promo", "Standard_E16_v3", "Standard_E16s_v3",
1186     "Standard_E2_v3", "Standard_E2s_v3", "Standard_E32-16s_v3", "Standard_E32-8s_v3",
1187     "Standard_E32_v3", "Standard_E32s_v3", "Standard_E4_v3", "Standard_E4s_v3",
1188     "Standard_E64-16s_v3", "Standard_E64-32s_v3", "Standard_E64_v3", "Standard_E64s_v3",
1189     "Standard_E8_v3", "Standard_E8s_v3", "Standard_F1", "Standard_F16", "Standard_F16s",
1190     "Standard_F16s_v2", "Standard_F1s", "Standard_F2", "Standard_F2s", "Standard_F2s_v2",
1191     "Standard_F32s_v2", "Standard_F4", "Standard_F4s", "Standard_F4s_v2", "Standard_F64s_v2",
1192     "Standard_F72s_v2", "Standard_F8", "Standard_F8s", "Standard_F8s_v2", "Standard_G1",
1193     "Standard_G2", "Standard_G3", "Standard_G4", "Standard_G5", "Standard_GS1", "Standard_GS2",
1194     "Standard_GS3", "Standard_GS4", "Standard_GS4-4", "Standard_GS4-8", "Standard_GS5",
1195     "Standard_GS5-16", "Standard_GS5-8", "Standard_H16", "Standard_H16m", "Standard_H16mr",
1196     "Standard_H16r", "Standard_H8", "Standard_H8m", "Standard_L16s", "Standard_L32s",
1197     "Standard_L4s", "Standard_L8s", "Standard_M128-32ms", "Standard_M128-64ms", "Standard_M128ms",
1198     "Standard_M128s", "Standard_M64-16ms", "Standard_M64-32ms", "Standard_M64ms", "Standard_M64s",
1199     "Standard_NC12", "Standard_NC12s_v2", "Standard_NC12s_v3", "Standard_NC24", "Standard_NC24r",
1200     "Standard_NC24rs_v2", "Standard_NC24rs_v3", "Standard_NC24s_v2", "Standard_NC24s_v3",
1201     "Standard_NC6", "Standard_NC6s_v2", "Standard_NC6s_v3", "Standard_ND12s", "Standard_ND24rs",
1202     "Standard_ND24s", "Standard_ND6s", "Standard_NV12", "Standard_NV24", "Standard_NV6".
1203    :type vm_size: str or
1204     ~azure.mgmt.containerservice.v2020_02_01.models.ContainerServiceVMSizeTypes
1205    :param os_disk_size_gb: OS Disk Size in GB to be used to specify the disk size for every
1206     machine in this master/agent pool. If you specify 0, it will apply the default osDisk size
1207     according to the vmSize specified.
1208    :type os_disk_size_gb: int
1209    :param vnet_subnet_id: VNet SubnetID specifies the VNet's subnet identifier.
1210    :type vnet_subnet_id: str
1211    :param max_pods: Maximum number of pods that can run on a node.
1212    :type max_pods: int
1213    :param os_type: OsType to be used to specify os type. Choose from Linux and Windows. Default to
1214     Linux. Possible values include: "Linux", "Windows". Default value: "Linux".
1215    :type os_type: str or ~azure.mgmt.containerservice.v2020_02_01.models.OSType
1216    :param max_count: Maximum number of nodes for auto-scaling.
1217    :type max_count: int
1218    :param min_count: Minimum number of nodes for auto-scaling.
1219    :type min_count: int
1220    :param enable_auto_scaling: Whether to enable auto-scaler.
1221    :type enable_auto_scaling: bool
1222    :param type: AgentPoolType represents types of an agent pool. Possible values include:
1223     "VirtualMachineScaleSets", "AvailabilitySet".
1224    :type type: str or ~azure.mgmt.containerservice.v2020_02_01.models.AgentPoolType
1225    :param orchestrator_version: Version of orchestrator specified when creating the managed
1226     cluster.
1227    :type orchestrator_version: str
1228    :ivar provisioning_state: The current deployment or provisioning state, which only appears in
1229     the response.
1230    :vartype provisioning_state: str
1231    :param availability_zones: Availability zones for nodes. Must use VirtualMachineScaleSets
1232     AgentPoolType.
1233    :type availability_zones: list[str]
1234    :param enable_node_public_ip: Enable public IP for nodes.
1235    :type enable_node_public_ip: bool
1236    :param scale_set_priority: ScaleSetPriority to be used to specify virtual machine scale set
1237     priority. Default to regular. Possible values include: "Spot", "Low", "Regular". Default value:
1238     "Regular".
1239    :type scale_set_priority: str or
1240     ~azure.mgmt.containerservice.v2020_02_01.models.ScaleSetPriority
1241    :param scale_set_eviction_policy: ScaleSetEvictionPolicy to be used to specify eviction policy
1242     for Spot or low priority virtual machine scale set. Default to Delete. Possible values include:
1243     "Delete", "Deallocate". Default value: "Delete".
1244    :type scale_set_eviction_policy: str or
1245     ~azure.mgmt.containerservice.v2020_02_01.models.ScaleSetEvictionPolicy
1246    :param spot_max_price: SpotMaxPrice to be used to specify the maximum price you are willing to
1247     pay in US Dollars. Possible values are any decimal value greater than zero or -1 which
1248     indicates default price to be up-to on-demand.
1249    :type spot_max_price: float
1250    :param tags: A set of tags. Agent pool tags to be persisted on the agent pool virtual machine
1251     scale set.
1252    :type tags: dict[str, str]
1253    :param node_labels: Agent pool node labels to be persisted across all nodes in agent pool.
1254    :type node_labels: dict[str, str]
1255    :param node_taints: Taints added to new nodes during node pool create and scale. For example,
1256     key=value:NoSchedule.
1257    :type node_taints: list[str]
1258    """
1259
1260    _validation = {
1261        'os_disk_size_gb': {'maximum': 1023, 'minimum': 0},
1262        'provisioning_state': {'readonly': True},
1263    }
1264
1265    _attribute_map = {
1266        'count': {'key': 'count', 'type': 'int'},
1267        'vm_size': {'key': 'vmSize', 'type': 'str'},
1268        'os_disk_size_gb': {'key': 'osDiskSizeGB', 'type': 'int'},
1269        'vnet_subnet_id': {'key': 'vnetSubnetID', 'type': 'str'},
1270        'max_pods': {'key': 'maxPods', 'type': 'int'},
1271        'os_type': {'key': 'osType', 'type': 'str'},
1272        'max_count': {'key': 'maxCount', 'type': 'int'},
1273        'min_count': {'key': 'minCount', 'type': 'int'},
1274        'enable_auto_scaling': {'key': 'enableAutoScaling', 'type': 'bool'},
1275        'type': {'key': 'type', 'type': 'str'},
1276        'orchestrator_version': {'key': 'orchestratorVersion', 'type': 'str'},
1277        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
1278        'availability_zones': {'key': 'availabilityZones', 'type': '[str]'},
1279        'enable_node_public_ip': {'key': 'enableNodePublicIP', 'type': 'bool'},
1280        'scale_set_priority': {'key': 'scaleSetPriority', 'type': 'str'},
1281        'scale_set_eviction_policy': {'key': 'scaleSetEvictionPolicy', 'type': 'str'},
1282        'spot_max_price': {'key': 'spotMaxPrice', 'type': 'float'},
1283        'tags': {'key': 'tags', 'type': '{str}'},
1284        'node_labels': {'key': 'nodeLabels', 'type': '{str}'},
1285        'node_taints': {'key': 'nodeTaints', 'type': '[str]'},
1286    }
1287
1288    def __init__(
1289        self,
1290        **kwargs
1291    ):
1292        super(ManagedClusterAgentPoolProfileProperties, self).__init__(**kwargs)
1293        self.count = kwargs.get('count', None)
1294        self.vm_size = kwargs.get('vm_size', None)
1295        self.os_disk_size_gb = kwargs.get('os_disk_size_gb', None)
1296        self.vnet_subnet_id = kwargs.get('vnet_subnet_id', None)
1297        self.max_pods = kwargs.get('max_pods', None)
1298        self.os_type = kwargs.get('os_type', "Linux")
1299        self.max_count = kwargs.get('max_count', None)
1300        self.min_count = kwargs.get('min_count', None)
1301        self.enable_auto_scaling = kwargs.get('enable_auto_scaling', None)
1302        self.type = kwargs.get('type', None)
1303        self.orchestrator_version = kwargs.get('orchestrator_version', None)
1304        self.provisioning_state = None
1305        self.availability_zones = kwargs.get('availability_zones', None)
1306        self.enable_node_public_ip = kwargs.get('enable_node_public_ip', None)
1307        self.scale_set_priority = kwargs.get('scale_set_priority', "Regular")
1308        self.scale_set_eviction_policy = kwargs.get('scale_set_eviction_policy', "Delete")
1309        self.spot_max_price = kwargs.get('spot_max_price', -1)
1310        self.tags = kwargs.get('tags', None)
1311        self.node_labels = kwargs.get('node_labels', None)
1312        self.node_taints = kwargs.get('node_taints', None)
1313
1314
1315class ManagedClusterAgentPoolProfile(ManagedClusterAgentPoolProfileProperties):
1316    """Profile for the container service agent pool.
1317
1318    Variables are only populated by the server, and will be ignored when sending a request.
1319
1320    All required parameters must be populated in order to send to Azure.
1321
1322    :param count: Number of agents (VMs) to host docker containers. Allowed values must be in the
1323     range of 1 to 100 (inclusive). The default value is 1.
1324    :type count: int
1325    :param vm_size: Size of agent VMs. Possible values include: "Standard_A1", "Standard_A10",
1326     "Standard_A11", "Standard_A1_v2", "Standard_A2", "Standard_A2_v2", "Standard_A2m_v2",
1327     "Standard_A3", "Standard_A4", "Standard_A4_v2", "Standard_A4m_v2", "Standard_A5",
1328     "Standard_A6", "Standard_A7", "Standard_A8", "Standard_A8_v2", "Standard_A8m_v2",
1329     "Standard_A9", "Standard_B2ms", "Standard_B2s", "Standard_B4ms", "Standard_B8ms",
1330     "Standard_D1", "Standard_D11", "Standard_D11_v2", "Standard_D11_v2_Promo", "Standard_D12",
1331     "Standard_D12_v2", "Standard_D12_v2_Promo", "Standard_D13", "Standard_D13_v2",
1332     "Standard_D13_v2_Promo", "Standard_D14", "Standard_D14_v2", "Standard_D14_v2_Promo",
1333     "Standard_D15_v2", "Standard_D16_v3", "Standard_D16s_v3", "Standard_D1_v2", "Standard_D2",
1334     "Standard_D2_v2", "Standard_D2_v2_Promo", "Standard_D2_v3", "Standard_D2s_v3", "Standard_D3",
1335     "Standard_D32_v3", "Standard_D32s_v3", "Standard_D3_v2", "Standard_D3_v2_Promo", "Standard_D4",
1336     "Standard_D4_v2", "Standard_D4_v2_Promo", "Standard_D4_v3", "Standard_D4s_v3",
1337     "Standard_D5_v2", "Standard_D5_v2_Promo", "Standard_D64_v3", "Standard_D64s_v3",
1338     "Standard_D8_v3", "Standard_D8s_v3", "Standard_DS1", "Standard_DS11", "Standard_DS11_v2",
1339     "Standard_DS11_v2_Promo", "Standard_DS12", "Standard_DS12_v2", "Standard_DS12_v2_Promo",
1340     "Standard_DS13", "Standard_DS13-2_v2", "Standard_DS13-4_v2", "Standard_DS13_v2",
1341     "Standard_DS13_v2_Promo", "Standard_DS14", "Standard_DS14-4_v2", "Standard_DS14-8_v2",
1342     "Standard_DS14_v2", "Standard_DS14_v2_Promo", "Standard_DS15_v2", "Standard_DS1_v2",
1343     "Standard_DS2", "Standard_DS2_v2", "Standard_DS2_v2_Promo", "Standard_DS3", "Standard_DS3_v2",
1344     "Standard_DS3_v2_Promo", "Standard_DS4", "Standard_DS4_v2", "Standard_DS4_v2_Promo",
1345     "Standard_DS5_v2", "Standard_DS5_v2_Promo", "Standard_E16_v3", "Standard_E16s_v3",
1346     "Standard_E2_v3", "Standard_E2s_v3", "Standard_E32-16s_v3", "Standard_E32-8s_v3",
1347     "Standard_E32_v3", "Standard_E32s_v3", "Standard_E4_v3", "Standard_E4s_v3",
1348     "Standard_E64-16s_v3", "Standard_E64-32s_v3", "Standard_E64_v3", "Standard_E64s_v3",
1349     "Standard_E8_v3", "Standard_E8s_v3", "Standard_F1", "Standard_F16", "Standard_F16s",
1350     "Standard_F16s_v2", "Standard_F1s", "Standard_F2", "Standard_F2s", "Standard_F2s_v2",
1351     "Standard_F32s_v2", "Standard_F4", "Standard_F4s", "Standard_F4s_v2", "Standard_F64s_v2",
1352     "Standard_F72s_v2", "Standard_F8", "Standard_F8s", "Standard_F8s_v2", "Standard_G1",
1353     "Standard_G2", "Standard_G3", "Standard_G4", "Standard_G5", "Standard_GS1", "Standard_GS2",
1354     "Standard_GS3", "Standard_GS4", "Standard_GS4-4", "Standard_GS4-8", "Standard_GS5",
1355     "Standard_GS5-16", "Standard_GS5-8", "Standard_H16", "Standard_H16m", "Standard_H16mr",
1356     "Standard_H16r", "Standard_H8", "Standard_H8m", "Standard_L16s", "Standard_L32s",
1357     "Standard_L4s", "Standard_L8s", "Standard_M128-32ms", "Standard_M128-64ms", "Standard_M128ms",
1358     "Standard_M128s", "Standard_M64-16ms", "Standard_M64-32ms", "Standard_M64ms", "Standard_M64s",
1359     "Standard_NC12", "Standard_NC12s_v2", "Standard_NC12s_v3", "Standard_NC24", "Standard_NC24r",
1360     "Standard_NC24rs_v2", "Standard_NC24rs_v3", "Standard_NC24s_v2", "Standard_NC24s_v3",
1361     "Standard_NC6", "Standard_NC6s_v2", "Standard_NC6s_v3", "Standard_ND12s", "Standard_ND24rs",
1362     "Standard_ND24s", "Standard_ND6s", "Standard_NV12", "Standard_NV24", "Standard_NV6".
1363    :type vm_size: str or
1364     ~azure.mgmt.containerservice.v2020_02_01.models.ContainerServiceVMSizeTypes
1365    :param os_disk_size_gb: OS Disk Size in GB to be used to specify the disk size for every
1366     machine in this master/agent pool. If you specify 0, it will apply the default osDisk size
1367     according to the vmSize specified.
1368    :type os_disk_size_gb: int
1369    :param vnet_subnet_id: VNet SubnetID specifies the VNet's subnet identifier.
1370    :type vnet_subnet_id: str
1371    :param max_pods: Maximum number of pods that can run on a node.
1372    :type max_pods: int
1373    :param os_type: OsType to be used to specify os type. Choose from Linux and Windows. Default to
1374     Linux. Possible values include: "Linux", "Windows". Default value: "Linux".
1375    :type os_type: str or ~azure.mgmt.containerservice.v2020_02_01.models.OSType
1376    :param max_count: Maximum number of nodes for auto-scaling.
1377    :type max_count: int
1378    :param min_count: Minimum number of nodes for auto-scaling.
1379    :type min_count: int
1380    :param enable_auto_scaling: Whether to enable auto-scaler.
1381    :type enable_auto_scaling: bool
1382    :param type: AgentPoolType represents types of an agent pool. Possible values include:
1383     "VirtualMachineScaleSets", "AvailabilitySet".
1384    :type type: str or ~azure.mgmt.containerservice.v2020_02_01.models.AgentPoolType
1385    :param orchestrator_version: Version of orchestrator specified when creating the managed
1386     cluster.
1387    :type orchestrator_version: str
1388    :ivar provisioning_state: The current deployment or provisioning state, which only appears in
1389     the response.
1390    :vartype provisioning_state: str
1391    :param availability_zones: Availability zones for nodes. Must use VirtualMachineScaleSets
1392     AgentPoolType.
1393    :type availability_zones: list[str]
1394    :param enable_node_public_ip: Enable public IP for nodes.
1395    :type enable_node_public_ip: bool
1396    :param scale_set_priority: ScaleSetPriority to be used to specify virtual machine scale set
1397     priority. Default to regular. Possible values include: "Spot", "Low", "Regular". Default value:
1398     "Regular".
1399    :type scale_set_priority: str or
1400     ~azure.mgmt.containerservice.v2020_02_01.models.ScaleSetPriority
1401    :param scale_set_eviction_policy: ScaleSetEvictionPolicy to be used to specify eviction policy
1402     for Spot or low priority virtual machine scale set. Default to Delete. Possible values include:
1403     "Delete", "Deallocate". Default value: "Delete".
1404    :type scale_set_eviction_policy: str or
1405     ~azure.mgmt.containerservice.v2020_02_01.models.ScaleSetEvictionPolicy
1406    :param spot_max_price: SpotMaxPrice to be used to specify the maximum price you are willing to
1407     pay in US Dollars. Possible values are any decimal value greater than zero or -1 which
1408     indicates default price to be up-to on-demand.
1409    :type spot_max_price: float
1410    :param tags: A set of tags. Agent pool tags to be persisted on the agent pool virtual machine
1411     scale set.
1412    :type tags: dict[str, str]
1413    :param node_labels: Agent pool node labels to be persisted across all nodes in agent pool.
1414    :type node_labels: dict[str, str]
1415    :param node_taints: Taints added to new nodes during node pool create and scale. For example,
1416     key=value:NoSchedule.
1417    :type node_taints: list[str]
1418    :param name: Required. Unique name of the agent pool profile in the context of the subscription
1419     and resource group.
1420    :type name: str
1421    """
1422
1423    _validation = {
1424        'os_disk_size_gb': {'maximum': 1023, 'minimum': 0},
1425        'provisioning_state': {'readonly': True},
1426        'name': {'required': True, 'pattern': r'^[a-z][a-z0-9]{0,11}$'},
1427    }
1428
1429    _attribute_map = {
1430        'count': {'key': 'count', 'type': 'int'},
1431        'vm_size': {'key': 'vmSize', 'type': 'str'},
1432        'os_disk_size_gb': {'key': 'osDiskSizeGB', 'type': 'int'},
1433        'vnet_subnet_id': {'key': 'vnetSubnetID', 'type': 'str'},
1434        'max_pods': {'key': 'maxPods', 'type': 'int'},
1435        'os_type': {'key': 'osType', 'type': 'str'},
1436        'max_count': {'key': 'maxCount', 'type': 'int'},
1437        'min_count': {'key': 'minCount', 'type': 'int'},
1438        'enable_auto_scaling': {'key': 'enableAutoScaling', 'type': 'bool'},
1439        'type': {'key': 'type', 'type': 'str'},
1440        'orchestrator_version': {'key': 'orchestratorVersion', 'type': 'str'},
1441        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
1442        'availability_zones': {'key': 'availabilityZones', 'type': '[str]'},
1443        'enable_node_public_ip': {'key': 'enableNodePublicIP', 'type': 'bool'},
1444        'scale_set_priority': {'key': 'scaleSetPriority', 'type': 'str'},
1445        'scale_set_eviction_policy': {'key': 'scaleSetEvictionPolicy', 'type': 'str'},
1446        'spot_max_price': {'key': 'spotMaxPrice', 'type': 'float'},
1447        'tags': {'key': 'tags', 'type': '{str}'},
1448        'node_labels': {'key': 'nodeLabels', 'type': '{str}'},
1449        'node_taints': {'key': 'nodeTaints', 'type': '[str]'},
1450        'name': {'key': 'name', 'type': 'str'},
1451    }
1452
1453    def __init__(
1454        self,
1455        **kwargs
1456    ):
1457        super(ManagedClusterAgentPoolProfile, self).__init__(**kwargs)
1458        self.name = kwargs['name']
1459
1460
1461class ManagedClusterAPIServerAccessProfile(msrest.serialization.Model):
1462    """Access profile for managed cluster API server.
1463
1464    :param authorized_ip_ranges: Authorized IP Ranges to kubernetes API server.
1465    :type authorized_ip_ranges: list[str]
1466    :param enable_private_cluster: Whether to create the cluster as a private cluster or not.
1467    :type enable_private_cluster: bool
1468    """
1469
1470    _attribute_map = {
1471        'authorized_ip_ranges': {'key': 'authorizedIPRanges', 'type': '[str]'},
1472        'enable_private_cluster': {'key': 'enablePrivateCluster', 'type': 'bool'},
1473    }
1474
1475    def __init__(
1476        self,
1477        **kwargs
1478    ):
1479        super(ManagedClusterAPIServerAccessProfile, self).__init__(**kwargs)
1480        self.authorized_ip_ranges = kwargs.get('authorized_ip_ranges', None)
1481        self.enable_private_cluster = kwargs.get('enable_private_cluster', None)
1482
1483
1484class ManagedClusterIdentity(msrest.serialization.Model):
1485    """Identity for the managed cluster.
1486
1487    Variables are only populated by the server, and will be ignored when sending a request.
1488
1489    :ivar principal_id: The principal id of the system assigned identity which is used by master
1490     components.
1491    :vartype principal_id: str
1492    :ivar tenant_id: The tenant id of the system assigned identity which is used by master
1493     components.
1494    :vartype tenant_id: str
1495    :param type: The type of identity used for the managed cluster. Type 'SystemAssigned' will use
1496     an implicitly created identity in master components and an auto-created user assigned identity
1497     in MC_ resource group in agent nodes. Type 'None' will not use MSI for the managed cluster,
1498     service principal will be used instead. Possible values include: "SystemAssigned", "None".
1499    :type type: str or ~azure.mgmt.containerservice.v2020_02_01.models.ResourceIdentityType
1500    """
1501
1502    _validation = {
1503        'principal_id': {'readonly': True},
1504        'tenant_id': {'readonly': True},
1505    }
1506
1507    _attribute_map = {
1508        'principal_id': {'key': 'principalId', 'type': 'str'},
1509        'tenant_id': {'key': 'tenantId', 'type': 'str'},
1510        'type': {'key': 'type', 'type': 'str'},
1511    }
1512
1513    def __init__(
1514        self,
1515        **kwargs
1516    ):
1517        super(ManagedClusterIdentity, self).__init__(**kwargs)
1518        self.principal_id = None
1519        self.tenant_id = None
1520        self.type = kwargs.get('type', None)
1521
1522
1523class ManagedClusterListResult(msrest.serialization.Model):
1524    """The response from the List Managed Clusters operation.
1525
1526    Variables are only populated by the server, and will be ignored when sending a request.
1527
1528    :param value: The list of managed clusters.
1529    :type value: list[~azure.mgmt.containerservice.v2020_02_01.models.ManagedCluster]
1530    :ivar next_link: The URL to get the next set of managed cluster results.
1531    :vartype next_link: str
1532    """
1533
1534    _validation = {
1535        'next_link': {'readonly': True},
1536    }
1537
1538    _attribute_map = {
1539        'value': {'key': 'value', 'type': '[ManagedCluster]'},
1540        'next_link': {'key': 'nextLink', 'type': 'str'},
1541    }
1542
1543    def __init__(
1544        self,
1545        **kwargs
1546    ):
1547        super(ManagedClusterListResult, self).__init__(**kwargs)
1548        self.value = kwargs.get('value', None)
1549        self.next_link = None
1550
1551
1552class ManagedClusterLoadBalancerProfile(msrest.serialization.Model):
1553    """Profile of the managed cluster load balancer.
1554
1555    :param managed_outbound_i_ps: Desired managed outbound IPs for the cluster load balancer.
1556    :type managed_outbound_i_ps:
1557     ~azure.mgmt.containerservice.v2020_02_01.models.ManagedClusterLoadBalancerProfileManagedOutboundIPs
1558    :param outbound_ip_prefixes: Desired outbound IP Prefix resources for the cluster load
1559     balancer.
1560    :type outbound_ip_prefixes:
1561     ~azure.mgmt.containerservice.v2020_02_01.models.ManagedClusterLoadBalancerProfileOutboundIPPrefixes
1562    :param outbound_i_ps: Desired outbound IP resources for the cluster load balancer.
1563    :type outbound_i_ps:
1564     ~azure.mgmt.containerservice.v2020_02_01.models.ManagedClusterLoadBalancerProfileOutboundIPs
1565    :param effective_outbound_i_ps: The effective outbound IP resources of the cluster load
1566     balancer.
1567    :type effective_outbound_i_ps:
1568     list[~azure.mgmt.containerservice.v2020_02_01.models.ResourceReference]
1569    :param allocated_outbound_ports: Desired number of allocated SNAT ports per VM. Allowed values
1570     must be in the range of 0 to 64000 (inclusive). The default value is 0 which results in Azure
1571     dynamically allocating ports.
1572    :type allocated_outbound_ports: int
1573    :param idle_timeout_in_minutes: Desired outbound flow idle timeout in minutes. Allowed values
1574     must be in the range of 4 to 120 (inclusive). The default value is 30 minutes.
1575    :type idle_timeout_in_minutes: int
1576    """
1577
1578    _validation = {
1579        'allocated_outbound_ports': {'maximum': 64000, 'minimum': 0},
1580        'idle_timeout_in_minutes': {'maximum': 120, 'minimum': 4},
1581    }
1582
1583    _attribute_map = {
1584        'managed_outbound_i_ps': {'key': 'managedOutboundIPs', 'type': 'ManagedClusterLoadBalancerProfileManagedOutboundIPs'},
1585        'outbound_ip_prefixes': {'key': 'outboundIPPrefixes', 'type': 'ManagedClusterLoadBalancerProfileOutboundIPPrefixes'},
1586        'outbound_i_ps': {'key': 'outboundIPs', 'type': 'ManagedClusterLoadBalancerProfileOutboundIPs'},
1587        'effective_outbound_i_ps': {'key': 'effectiveOutboundIPs', 'type': '[ResourceReference]'},
1588        'allocated_outbound_ports': {'key': 'allocatedOutboundPorts', 'type': 'int'},
1589        'idle_timeout_in_minutes': {'key': 'idleTimeoutInMinutes', 'type': 'int'},
1590    }
1591
1592    def __init__(
1593        self,
1594        **kwargs
1595    ):
1596        super(ManagedClusterLoadBalancerProfile, self).__init__(**kwargs)
1597        self.managed_outbound_i_ps = kwargs.get('managed_outbound_i_ps', None)
1598        self.outbound_ip_prefixes = kwargs.get('outbound_ip_prefixes', None)
1599        self.outbound_i_ps = kwargs.get('outbound_i_ps', None)
1600        self.effective_outbound_i_ps = kwargs.get('effective_outbound_i_ps', None)
1601        self.allocated_outbound_ports = kwargs.get('allocated_outbound_ports', 0)
1602        self.idle_timeout_in_minutes = kwargs.get('idle_timeout_in_minutes', 30)
1603
1604
1605class ManagedClusterLoadBalancerProfileManagedOutboundIPs(msrest.serialization.Model):
1606    """Desired managed outbound IPs for the cluster load balancer.
1607
1608    :param count: Desired number of outbound IP created/managed by Azure for the cluster load
1609     balancer. Allowed values must be in the range of 1 to 100 (inclusive). The default value is 1.
1610    :type count: int
1611    """
1612
1613    _validation = {
1614        'count': {'maximum': 100, 'minimum': 1},
1615    }
1616
1617    _attribute_map = {
1618        'count': {'key': 'count', 'type': 'int'},
1619    }
1620
1621    def __init__(
1622        self,
1623        **kwargs
1624    ):
1625        super(ManagedClusterLoadBalancerProfileManagedOutboundIPs, self).__init__(**kwargs)
1626        self.count = kwargs.get('count', 1)
1627
1628
1629class ManagedClusterLoadBalancerProfileOutboundIPPrefixes(msrest.serialization.Model):
1630    """Desired outbound IP Prefix resources for the cluster load balancer.
1631
1632    :param public_ip_prefixes: A list of public IP prefix resources.
1633    :type public_ip_prefixes:
1634     list[~azure.mgmt.containerservice.v2020_02_01.models.ResourceReference]
1635    """
1636
1637    _attribute_map = {
1638        'public_ip_prefixes': {'key': 'publicIPPrefixes', 'type': '[ResourceReference]'},
1639    }
1640
1641    def __init__(
1642        self,
1643        **kwargs
1644    ):
1645        super(ManagedClusterLoadBalancerProfileOutboundIPPrefixes, self).__init__(**kwargs)
1646        self.public_ip_prefixes = kwargs.get('public_ip_prefixes', None)
1647
1648
1649class ManagedClusterLoadBalancerProfileOutboundIPs(msrest.serialization.Model):
1650    """Desired outbound IP resources for the cluster load balancer.
1651
1652    :param public_i_ps: A list of public IP resources.
1653    :type public_i_ps: list[~azure.mgmt.containerservice.v2020_02_01.models.ResourceReference]
1654    """
1655
1656    _attribute_map = {
1657        'public_i_ps': {'key': 'publicIPs', 'type': '[ResourceReference]'},
1658    }
1659
1660    def __init__(
1661        self,
1662        **kwargs
1663    ):
1664        super(ManagedClusterLoadBalancerProfileOutboundIPs, self).__init__(**kwargs)
1665        self.public_i_ps = kwargs.get('public_i_ps', None)
1666
1667
1668class ManagedClusterPoolUpgradeProfile(msrest.serialization.Model):
1669    """The list of available upgrade versions.
1670
1671    All required parameters must be populated in order to send to Azure.
1672
1673    :param kubernetes_version: Required. Kubernetes version (major, minor, patch).
1674    :type kubernetes_version: str
1675    :param name: Pool name.
1676    :type name: str
1677    :param os_type: Required. OsType to be used to specify os type. Choose from Linux and Windows.
1678     Default to Linux. Possible values include: "Linux", "Windows". Default value: "Linux".
1679    :type os_type: str or ~azure.mgmt.containerservice.v2020_02_01.models.OSType
1680    :param upgrades: List of orchestrator types and versions available for upgrade.
1681    :type upgrades:
1682     list[~azure.mgmt.containerservice.v2020_02_01.models.ManagedClusterPoolUpgradeProfileUpgradesItem]
1683    """
1684
1685    _validation = {
1686        'kubernetes_version': {'required': True},
1687        'os_type': {'required': True},
1688    }
1689
1690    _attribute_map = {
1691        'kubernetes_version': {'key': 'kubernetesVersion', 'type': 'str'},
1692        'name': {'key': 'name', 'type': 'str'},
1693        'os_type': {'key': 'osType', 'type': 'str'},
1694        'upgrades': {'key': 'upgrades', 'type': '[ManagedClusterPoolUpgradeProfileUpgradesItem]'},
1695    }
1696
1697    def __init__(
1698        self,
1699        **kwargs
1700    ):
1701        super(ManagedClusterPoolUpgradeProfile, self).__init__(**kwargs)
1702        self.kubernetes_version = kwargs['kubernetes_version']
1703        self.name = kwargs.get('name', None)
1704        self.os_type = kwargs.get('os_type', "Linux")
1705        self.upgrades = kwargs.get('upgrades', None)
1706
1707
1708class ManagedClusterPoolUpgradeProfileUpgradesItem(msrest.serialization.Model):
1709    """ManagedClusterPoolUpgradeProfileUpgradesItem.
1710
1711    :param kubernetes_version: Kubernetes version (major, minor, patch).
1712    :type kubernetes_version: str
1713    :param is_preview: Whether Kubernetes version is currently in preview.
1714    :type is_preview: bool
1715    """
1716
1717    _attribute_map = {
1718        'kubernetes_version': {'key': 'kubernetesVersion', 'type': 'str'},
1719        'is_preview': {'key': 'isPreview', 'type': 'bool'},
1720    }
1721
1722    def __init__(
1723        self,
1724        **kwargs
1725    ):
1726        super(ManagedClusterPoolUpgradeProfileUpgradesItem, self).__init__(**kwargs)
1727        self.kubernetes_version = kwargs.get('kubernetes_version', None)
1728        self.is_preview = kwargs.get('is_preview', None)
1729
1730
1731class ManagedClusterPropertiesAutoScalerProfile(msrest.serialization.Model):
1732    """Parameters to be applied to the cluster-autoscaler when enabled.
1733
1734    :param scan_interval:
1735    :type scan_interval: str
1736    :param scale_down_delay_after_add:
1737    :type scale_down_delay_after_add: str
1738    :param scale_down_delay_after_delete:
1739    :type scale_down_delay_after_delete: str
1740    :param scale_down_delay_after_failure:
1741    :type scale_down_delay_after_failure: str
1742    :param scale_down_unneeded_time:
1743    :type scale_down_unneeded_time: str
1744    :param scale_down_unready_time:
1745    :type scale_down_unready_time: str
1746    :param scale_down_utilization_threshold:
1747    :type scale_down_utilization_threshold: str
1748    :param max_graceful_termination_sec:
1749    :type max_graceful_termination_sec: str
1750    """
1751
1752    _attribute_map = {
1753        'scan_interval': {'key': 'scan-interval', 'type': 'str'},
1754        'scale_down_delay_after_add': {'key': 'scale-down-delay-after-add', 'type': 'str'},
1755        'scale_down_delay_after_delete': {'key': 'scale-down-delay-after-delete', 'type': 'str'},
1756        'scale_down_delay_after_failure': {'key': 'scale-down-delay-after-failure', 'type': 'str'},
1757        'scale_down_unneeded_time': {'key': 'scale-down-unneeded-time', 'type': 'str'},
1758        'scale_down_unready_time': {'key': 'scale-down-unready-time', 'type': 'str'},
1759        'scale_down_utilization_threshold': {'key': 'scale-down-utilization-threshold', 'type': 'str'},
1760        'max_graceful_termination_sec': {'key': 'max-graceful-termination-sec', 'type': 'str'},
1761    }
1762
1763    def __init__(
1764        self,
1765        **kwargs
1766    ):
1767        super(ManagedClusterPropertiesAutoScalerProfile, self).__init__(**kwargs)
1768        self.scan_interval = kwargs.get('scan_interval', None)
1769        self.scale_down_delay_after_add = kwargs.get('scale_down_delay_after_add', None)
1770        self.scale_down_delay_after_delete = kwargs.get('scale_down_delay_after_delete', None)
1771        self.scale_down_delay_after_failure = kwargs.get('scale_down_delay_after_failure', None)
1772        self.scale_down_unneeded_time = kwargs.get('scale_down_unneeded_time', None)
1773        self.scale_down_unready_time = kwargs.get('scale_down_unready_time', None)
1774        self.scale_down_utilization_threshold = kwargs.get('scale_down_utilization_threshold', None)
1775        self.max_graceful_termination_sec = kwargs.get('max_graceful_termination_sec', None)
1776
1777
1778class ManagedClusterPropertiesIdentityProfileValue(UserAssignedIdentity):
1779    """ManagedClusterPropertiesIdentityProfileValue.
1780
1781    :param resource_id: The resource id of the user assigned identity.
1782    :type resource_id: str
1783    :param client_id: The client id of the user assigned identity.
1784    :type client_id: str
1785    :param object_id: The object id of the user assigned identity.
1786    :type object_id: str
1787    """
1788
1789    _attribute_map = {
1790        'resource_id': {'key': 'resourceId', 'type': 'str'},
1791        'client_id': {'key': 'clientId', 'type': 'str'},
1792        'object_id': {'key': 'objectId', 'type': 'str'},
1793    }
1794
1795    def __init__(
1796        self,
1797        **kwargs
1798    ):
1799        super(ManagedClusterPropertiesIdentityProfileValue, self).__init__(**kwargs)
1800
1801
1802class ManagedClusterServicePrincipalProfile(msrest.serialization.Model):
1803    """Information about a service principal identity for the cluster to use for manipulating Azure APIs.
1804
1805    All required parameters must be populated in order to send to Azure.
1806
1807    :param client_id: Required. The ID for the service principal.
1808    :type client_id: str
1809    :param secret: The secret password associated with the service principal in plain text.
1810    :type secret: str
1811    """
1812
1813    _validation = {
1814        'client_id': {'required': True},
1815    }
1816
1817    _attribute_map = {
1818        'client_id': {'key': 'clientId', 'type': 'str'},
1819        'secret': {'key': 'secret', 'type': 'str'},
1820    }
1821
1822    def __init__(
1823        self,
1824        **kwargs
1825    ):
1826        super(ManagedClusterServicePrincipalProfile, self).__init__(**kwargs)
1827        self.client_id = kwargs['client_id']
1828        self.secret = kwargs.get('secret', None)
1829
1830
1831class ManagedClusterUpgradeProfile(msrest.serialization.Model):
1832    """The list of available upgrades for compute pools.
1833
1834    Variables are only populated by the server, and will be ignored when sending a request.
1835
1836    All required parameters must be populated in order to send to Azure.
1837
1838    :ivar id: Id of upgrade profile.
1839    :vartype id: str
1840    :ivar name: Name of upgrade profile.
1841    :vartype name: str
1842    :ivar type: Type of upgrade profile.
1843    :vartype type: str
1844    :param control_plane_profile: Required. The list of available upgrade versions for the control
1845     plane.
1846    :type control_plane_profile:
1847     ~azure.mgmt.containerservice.v2020_02_01.models.ManagedClusterPoolUpgradeProfile
1848    :param agent_pool_profiles: Required. The list of available upgrade versions for agent pools.
1849    :type agent_pool_profiles:
1850     list[~azure.mgmt.containerservice.v2020_02_01.models.ManagedClusterPoolUpgradeProfile]
1851    """
1852
1853    _validation = {
1854        'id': {'readonly': True},
1855        'name': {'readonly': True},
1856        'type': {'readonly': True},
1857        'control_plane_profile': {'required': True},
1858        'agent_pool_profiles': {'required': True},
1859    }
1860
1861    _attribute_map = {
1862        'id': {'key': 'id', 'type': 'str'},
1863        'name': {'key': 'name', 'type': 'str'},
1864        'type': {'key': 'type', 'type': 'str'},
1865        'control_plane_profile': {'key': 'properties.controlPlaneProfile', 'type': 'ManagedClusterPoolUpgradeProfile'},
1866        'agent_pool_profiles': {'key': 'properties.agentPoolProfiles', 'type': '[ManagedClusterPoolUpgradeProfile]'},
1867    }
1868
1869    def __init__(
1870        self,
1871        **kwargs
1872    ):
1873        super(ManagedClusterUpgradeProfile, self).__init__(**kwargs)
1874        self.id = None
1875        self.name = None
1876        self.type = None
1877        self.control_plane_profile = kwargs['control_plane_profile']
1878        self.agent_pool_profiles = kwargs['agent_pool_profiles']
1879
1880
1881class ManagedClusterWindowsProfile(msrest.serialization.Model):
1882    """Profile for Windows VMs in the container service cluster.
1883
1884    All required parameters must be populated in order to send to Azure.
1885
1886    :param admin_username: Required. Specifies the name of the administrator account.
1887     :code:`<br>`:code:`<br>` **restriction:** Cannot end in "." :code:`<br>`:code:`<br>`
1888     **Disallowed values:** "administrator", "admin", "user", "user1", "test", "user2", "test1",
1889     "user3", "admin1", "1", "123", "a", "actuser", "adm", "admin2", "aspnet", "backup", "console",
1890     "david", "guest", "john", "owner", "root", "server", "sql", "support", "support_388945a0",
1891     "sys", "test2", "test3", "user4", "user5". :code:`<br>`:code:`<br>` **Minimum-length:** 1
1892     character :code:`<br>`:code:`<br>` **Max-length:** 20 characters.
1893    :type admin_username: str
1894    :param admin_password: Specifies the password of the administrator account.
1895     :code:`<br>`:code:`<br>` **Minimum-length:** 8 characters :code:`<br>`:code:`<br>`
1896     **Max-length:** 123 characters :code:`<br>`:code:`<br>` **Complexity requirements:** 3 out of 4
1897     conditions below need to be fulfilled :code:`<br>` Has lower characters :code:`<br>`Has upper
1898     characters :code:`<br>` Has a digit :code:`<br>` Has a special character (Regex match [\W_])
1899     :code:`<br>`:code:`<br>` **Disallowed values:** "abc@123", "P@$$w0rd", "P@ssw0rd",
1900     "P@ssword123", "Pa$$word", "pass@word1", "Password!", "Password1", "Password22", "iloveyou!".
1901    :type admin_password: str
1902    """
1903
1904    _validation = {
1905        'admin_username': {'required': True},
1906    }
1907
1908    _attribute_map = {
1909        'admin_username': {'key': 'adminUsername', 'type': 'str'},
1910        'admin_password': {'key': 'adminPassword', 'type': 'str'},
1911    }
1912
1913    def __init__(
1914        self,
1915        **kwargs
1916    ):
1917        super(ManagedClusterWindowsProfile, self).__init__(**kwargs)
1918        self.admin_username = kwargs['admin_username']
1919        self.admin_password = kwargs.get('admin_password', None)
1920
1921
1922class OperationListResult(msrest.serialization.Model):
1923    """The List Compute Operation operation response.
1924
1925    Variables are only populated by the server, and will be ignored when sending a request.
1926
1927    :ivar value: The list of compute operations.
1928    :vartype value: list[~azure.mgmt.containerservice.v2020_02_01.models.OperationValue]
1929    """
1930
1931    _validation = {
1932        'value': {'readonly': True},
1933    }
1934
1935    _attribute_map = {
1936        'value': {'key': 'value', 'type': '[OperationValue]'},
1937    }
1938
1939    def __init__(
1940        self,
1941        **kwargs
1942    ):
1943        super(OperationListResult, self).__init__(**kwargs)
1944        self.value = None
1945
1946
1947class OperationValue(msrest.serialization.Model):
1948    """Describes the properties of a Compute Operation value.
1949
1950    Variables are only populated by the server, and will be ignored when sending a request.
1951
1952    :ivar origin: The origin of the compute operation.
1953    :vartype origin: str
1954    :ivar name: The name of the compute operation.
1955    :vartype name: str
1956    :ivar operation: The display name of the compute operation.
1957    :vartype operation: str
1958    :ivar resource: The display name of the resource the operation applies to.
1959    :vartype resource: str
1960    :ivar description: The description of the operation.
1961    :vartype description: str
1962    :ivar provider: The resource provider for the operation.
1963    :vartype provider: str
1964    """
1965
1966    _validation = {
1967        'origin': {'readonly': True},
1968        'name': {'readonly': True},
1969        'operation': {'readonly': True},
1970        'resource': {'readonly': True},
1971        'description': {'readonly': True},
1972        'provider': {'readonly': True},
1973    }
1974
1975    _attribute_map = {
1976        'origin': {'key': 'origin', 'type': 'str'},
1977        'name': {'key': 'name', 'type': 'str'},
1978        'operation': {'key': 'display.operation', 'type': 'str'},
1979        'resource': {'key': 'display.resource', 'type': 'str'},
1980        'description': {'key': 'display.description', 'type': 'str'},
1981        'provider': {'key': 'display.provider', 'type': 'str'},
1982    }
1983
1984    def __init__(
1985        self,
1986        **kwargs
1987    ):
1988        super(OperationValue, self).__init__(**kwargs)
1989        self.origin = None
1990        self.name = None
1991        self.operation = None
1992        self.resource = None
1993        self.description = None
1994        self.provider = None
1995
1996
1997class ResourceReference(msrest.serialization.Model):
1998    """A reference to an Azure resource.
1999
2000    :param id: The fully qualified Azure resource id.
2001    :type id: str
2002    """
2003
2004    _attribute_map = {
2005        'id': {'key': 'id', 'type': 'str'},
2006    }
2007
2008    def __init__(
2009        self,
2010        **kwargs
2011    ):
2012        super(ResourceReference, self).__init__(**kwargs)
2013        self.id = kwargs.get('id', None)
2014
2015
2016class TagsObject(msrest.serialization.Model):
2017    """Tags object for patch operations.
2018
2019    :param tags: A set of tags. Resource tags.
2020    :type tags: dict[str, str]
2021    """
2022
2023    _attribute_map = {
2024        'tags': {'key': 'tags', 'type': '{str}'},
2025    }
2026
2027    def __init__(
2028        self,
2029        **kwargs
2030    ):
2031        super(TagsObject, self).__init__(**kwargs)
2032        self.tags = kwargs.get('tags', None)
2033