1package containerservice
2
3// Copyright (c) Microsoft and contributors.  All rights reserved.
4//
5// Licensed under the Apache License, Version 2.0 (the "License");
6// you may not use this file except in compliance with the License.
7// You may obtain a copy of the License at
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13//
14// See the License for the specific language governing permissions and
15// limitations under the License.
16//
17// Code generated by Microsoft (R) AutoRest Code Generator.
18// Changes may cause incorrect behavior and will be lost if the code is regenerated.
19
20import (
21	"context"
22	"encoding/json"
23	"github.com/Azure/go-autorest/autorest"
24	"github.com/Azure/go-autorest/autorest/azure"
25	"github.com/Azure/go-autorest/autorest/to"
26	"github.com/Azure/go-autorest/tracing"
27	"net/http"
28)
29
30// The package's fully qualified name.
31const fqdn = "github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2019-10-01/containerservice"
32
33// AgentPoolType enumerates the values for agent pool type.
34type AgentPoolType string
35
36const (
37	// AvailabilitySet ...
38	AvailabilitySet AgentPoolType = "AvailabilitySet"
39	// VirtualMachineScaleSets ...
40	VirtualMachineScaleSets AgentPoolType = "VirtualMachineScaleSets"
41)
42
43// PossibleAgentPoolTypeValues returns an array of possible values for the AgentPoolType const type.
44func PossibleAgentPoolTypeValues() []AgentPoolType {
45	return []AgentPoolType{AvailabilitySet, VirtualMachineScaleSets}
46}
47
48// Kind enumerates the values for kind.
49type Kind string
50
51const (
52	// KindAADIdentityProvider ...
53	KindAADIdentityProvider Kind = "AADIdentityProvider"
54	// KindOpenShiftManagedClusterBaseIdentityProvider ...
55	KindOpenShiftManagedClusterBaseIdentityProvider Kind = "OpenShiftManagedClusterBaseIdentityProvider"
56)
57
58// PossibleKindValues returns an array of possible values for the Kind const type.
59func PossibleKindValues() []Kind {
60	return []Kind{KindAADIdentityProvider, KindOpenShiftManagedClusterBaseIdentityProvider}
61}
62
63// LoadBalancerSku enumerates the values for load balancer sku.
64type LoadBalancerSku string
65
66const (
67	// Basic ...
68	Basic LoadBalancerSku = "basic"
69	// Standard ...
70	Standard LoadBalancerSku = "standard"
71)
72
73// PossibleLoadBalancerSkuValues returns an array of possible values for the LoadBalancerSku const type.
74func PossibleLoadBalancerSkuValues() []LoadBalancerSku {
75	return []LoadBalancerSku{Basic, Standard}
76}
77
78// NetworkPlugin enumerates the values for network plugin.
79type NetworkPlugin string
80
81const (
82	// Azure ...
83	Azure NetworkPlugin = "azure"
84	// Kubenet ...
85	Kubenet NetworkPlugin = "kubenet"
86)
87
88// PossibleNetworkPluginValues returns an array of possible values for the NetworkPlugin const type.
89func PossibleNetworkPluginValues() []NetworkPlugin {
90	return []NetworkPlugin{Azure, Kubenet}
91}
92
93// NetworkPolicy enumerates the values for network policy.
94type NetworkPolicy string
95
96const (
97	// NetworkPolicyAzure ...
98	NetworkPolicyAzure NetworkPolicy = "azure"
99	// NetworkPolicyCalico ...
100	NetworkPolicyCalico NetworkPolicy = "calico"
101)
102
103// PossibleNetworkPolicyValues returns an array of possible values for the NetworkPolicy const type.
104func PossibleNetworkPolicyValues() []NetworkPolicy {
105	return []NetworkPolicy{NetworkPolicyAzure, NetworkPolicyCalico}
106}
107
108// OpenShiftAgentPoolProfileRole enumerates the values for open shift agent pool profile role.
109type OpenShiftAgentPoolProfileRole string
110
111const (
112	// Compute ...
113	Compute OpenShiftAgentPoolProfileRole = "compute"
114	// Infra ...
115	Infra OpenShiftAgentPoolProfileRole = "infra"
116)
117
118// PossibleOpenShiftAgentPoolProfileRoleValues returns an array of possible values for the OpenShiftAgentPoolProfileRole const type.
119func PossibleOpenShiftAgentPoolProfileRoleValues() []OpenShiftAgentPoolProfileRole {
120	return []OpenShiftAgentPoolProfileRole{Compute, Infra}
121}
122
123// OpenShiftContainerServiceVMSize enumerates the values for open shift container service vm size.
124type OpenShiftContainerServiceVMSize string
125
126const (
127	// StandardD16sV3 ...
128	StandardD16sV3 OpenShiftContainerServiceVMSize = "Standard_D16s_v3"
129	// StandardD2sV3 ...
130	StandardD2sV3 OpenShiftContainerServiceVMSize = "Standard_D2s_v3"
131	// StandardD32sV3 ...
132	StandardD32sV3 OpenShiftContainerServiceVMSize = "Standard_D32s_v3"
133	// StandardD4sV3 ...
134	StandardD4sV3 OpenShiftContainerServiceVMSize = "Standard_D4s_v3"
135	// StandardD64sV3 ...
136	StandardD64sV3 OpenShiftContainerServiceVMSize = "Standard_D64s_v3"
137	// StandardD8sV3 ...
138	StandardD8sV3 OpenShiftContainerServiceVMSize = "Standard_D8s_v3"
139	// StandardDS12V2 ...
140	StandardDS12V2 OpenShiftContainerServiceVMSize = "Standard_DS12_v2"
141	// StandardDS13V2 ...
142	StandardDS13V2 OpenShiftContainerServiceVMSize = "Standard_DS13_v2"
143	// StandardDS14V2 ...
144	StandardDS14V2 OpenShiftContainerServiceVMSize = "Standard_DS14_v2"
145	// StandardDS15V2 ...
146	StandardDS15V2 OpenShiftContainerServiceVMSize = "Standard_DS15_v2"
147	// StandardDS4V2 ...
148	StandardDS4V2 OpenShiftContainerServiceVMSize = "Standard_DS4_v2"
149	// StandardDS5V2 ...
150	StandardDS5V2 OpenShiftContainerServiceVMSize = "Standard_DS5_v2"
151	// StandardE16sV3 ...
152	StandardE16sV3 OpenShiftContainerServiceVMSize = "Standard_E16s_v3"
153	// StandardE20sV3 ...
154	StandardE20sV3 OpenShiftContainerServiceVMSize = "Standard_E20s_v3"
155	// StandardE32sV3 ...
156	StandardE32sV3 OpenShiftContainerServiceVMSize = "Standard_E32s_v3"
157	// StandardE4sV3 ...
158	StandardE4sV3 OpenShiftContainerServiceVMSize = "Standard_E4s_v3"
159	// StandardE64sV3 ...
160	StandardE64sV3 OpenShiftContainerServiceVMSize = "Standard_E64s_v3"
161	// StandardE8sV3 ...
162	StandardE8sV3 OpenShiftContainerServiceVMSize = "Standard_E8s_v3"
163	// StandardF16s ...
164	StandardF16s OpenShiftContainerServiceVMSize = "Standard_F16s"
165	// StandardF16sV2 ...
166	StandardF16sV2 OpenShiftContainerServiceVMSize = "Standard_F16s_v2"
167	// StandardF32sV2 ...
168	StandardF32sV2 OpenShiftContainerServiceVMSize = "Standard_F32s_v2"
169	// StandardF64sV2 ...
170	StandardF64sV2 OpenShiftContainerServiceVMSize = "Standard_F64s_v2"
171	// StandardF72sV2 ...
172	StandardF72sV2 OpenShiftContainerServiceVMSize = "Standard_F72s_v2"
173	// StandardF8s ...
174	StandardF8s OpenShiftContainerServiceVMSize = "Standard_F8s"
175	// StandardF8sV2 ...
176	StandardF8sV2 OpenShiftContainerServiceVMSize = "Standard_F8s_v2"
177	// StandardGS2 ...
178	StandardGS2 OpenShiftContainerServiceVMSize = "Standard_GS2"
179	// StandardGS3 ...
180	StandardGS3 OpenShiftContainerServiceVMSize = "Standard_GS3"
181	// StandardGS4 ...
182	StandardGS4 OpenShiftContainerServiceVMSize = "Standard_GS4"
183	// StandardGS5 ...
184	StandardGS5 OpenShiftContainerServiceVMSize = "Standard_GS5"
185	// StandardL16s ...
186	StandardL16s OpenShiftContainerServiceVMSize = "Standard_L16s"
187	// StandardL32s ...
188	StandardL32s OpenShiftContainerServiceVMSize = "Standard_L32s"
189	// StandardL4s ...
190	StandardL4s OpenShiftContainerServiceVMSize = "Standard_L4s"
191	// StandardL8s ...
192	StandardL8s OpenShiftContainerServiceVMSize = "Standard_L8s"
193)
194
195// PossibleOpenShiftContainerServiceVMSizeValues returns an array of possible values for the OpenShiftContainerServiceVMSize const type.
196func PossibleOpenShiftContainerServiceVMSizeValues() []OpenShiftContainerServiceVMSize {
197	return []OpenShiftContainerServiceVMSize{StandardD16sV3, StandardD2sV3, StandardD32sV3, StandardD4sV3, StandardD64sV3, StandardD8sV3, StandardDS12V2, StandardDS13V2, StandardDS14V2, StandardDS15V2, StandardDS4V2, StandardDS5V2, StandardE16sV3, StandardE20sV3, StandardE32sV3, StandardE4sV3, StandardE64sV3, StandardE8sV3, StandardF16s, StandardF16sV2, StandardF32sV2, StandardF64sV2, StandardF72sV2, StandardF8s, StandardF8sV2, StandardGS2, StandardGS3, StandardGS4, StandardGS5, StandardL16s, StandardL32s, StandardL4s, StandardL8s}
198}
199
200// OrchestratorTypes enumerates the values for orchestrator types.
201type OrchestratorTypes string
202
203const (
204	// Custom ...
205	Custom OrchestratorTypes = "Custom"
206	// DCOS ...
207	DCOS OrchestratorTypes = "DCOS"
208	// DockerCE ...
209	DockerCE OrchestratorTypes = "DockerCE"
210	// Kubernetes ...
211	Kubernetes OrchestratorTypes = "Kubernetes"
212	// Swarm ...
213	Swarm OrchestratorTypes = "Swarm"
214)
215
216// PossibleOrchestratorTypesValues returns an array of possible values for the OrchestratorTypes const type.
217func PossibleOrchestratorTypesValues() []OrchestratorTypes {
218	return []OrchestratorTypes{Custom, DCOS, DockerCE, Kubernetes, Swarm}
219}
220
221// OSType enumerates the values for os type.
222type OSType string
223
224const (
225	// Linux ...
226	Linux OSType = "Linux"
227	// Windows ...
228	Windows OSType = "Windows"
229)
230
231// PossibleOSTypeValues returns an array of possible values for the OSType const type.
232func PossibleOSTypeValues() []OSType {
233	return []OSType{Linux, Windows}
234}
235
236// ResourceIdentityType enumerates the values for resource identity type.
237type ResourceIdentityType string
238
239const (
240	// None ...
241	None ResourceIdentityType = "None"
242	// SystemAssigned ...
243	SystemAssigned ResourceIdentityType = "SystemAssigned"
244)
245
246// PossibleResourceIdentityTypeValues returns an array of possible values for the ResourceIdentityType const type.
247func PossibleResourceIdentityTypeValues() []ResourceIdentityType {
248	return []ResourceIdentityType{None, SystemAssigned}
249}
250
251// ScaleSetEvictionPolicy enumerates the values for scale set eviction policy.
252type ScaleSetEvictionPolicy string
253
254const (
255	// Deallocate ...
256	Deallocate ScaleSetEvictionPolicy = "Deallocate"
257	// Delete ...
258	Delete ScaleSetEvictionPolicy = "Delete"
259)
260
261// PossibleScaleSetEvictionPolicyValues returns an array of possible values for the ScaleSetEvictionPolicy const type.
262func PossibleScaleSetEvictionPolicyValues() []ScaleSetEvictionPolicy {
263	return []ScaleSetEvictionPolicy{Deallocate, Delete}
264}
265
266// ScaleSetPriority enumerates the values for scale set priority.
267type ScaleSetPriority string
268
269const (
270	// Low ...
271	Low ScaleSetPriority = "Low"
272	// Regular ...
273	Regular ScaleSetPriority = "Regular"
274)
275
276// PossibleScaleSetPriorityValues returns an array of possible values for the ScaleSetPriority const type.
277func PossibleScaleSetPriorityValues() []ScaleSetPriority {
278	return []ScaleSetPriority{Low, Regular}
279}
280
281// StorageProfileTypes enumerates the values for storage profile types.
282type StorageProfileTypes string
283
284const (
285	// ManagedDisks ...
286	ManagedDisks StorageProfileTypes = "ManagedDisks"
287	// StorageAccount ...
288	StorageAccount StorageProfileTypes = "StorageAccount"
289)
290
291// PossibleStorageProfileTypesValues returns an array of possible values for the StorageProfileTypes const type.
292func PossibleStorageProfileTypesValues() []StorageProfileTypes {
293	return []StorageProfileTypes{ManagedDisks, StorageAccount}
294}
295
296// VMSizeTypes enumerates the values for vm size types.
297type VMSizeTypes string
298
299const (
300	// VMSizeTypesStandardA1 ...
301	VMSizeTypesStandardA1 VMSizeTypes = "Standard_A1"
302	// VMSizeTypesStandardA10 ...
303	VMSizeTypesStandardA10 VMSizeTypes = "Standard_A10"
304	// VMSizeTypesStandardA11 ...
305	VMSizeTypesStandardA11 VMSizeTypes = "Standard_A11"
306	// VMSizeTypesStandardA1V2 ...
307	VMSizeTypesStandardA1V2 VMSizeTypes = "Standard_A1_v2"
308	// VMSizeTypesStandardA2 ...
309	VMSizeTypesStandardA2 VMSizeTypes = "Standard_A2"
310	// VMSizeTypesStandardA2mV2 ...
311	VMSizeTypesStandardA2mV2 VMSizeTypes = "Standard_A2m_v2"
312	// VMSizeTypesStandardA2V2 ...
313	VMSizeTypesStandardA2V2 VMSizeTypes = "Standard_A2_v2"
314	// VMSizeTypesStandardA3 ...
315	VMSizeTypesStandardA3 VMSizeTypes = "Standard_A3"
316	// VMSizeTypesStandardA4 ...
317	VMSizeTypesStandardA4 VMSizeTypes = "Standard_A4"
318	// VMSizeTypesStandardA4mV2 ...
319	VMSizeTypesStandardA4mV2 VMSizeTypes = "Standard_A4m_v2"
320	// VMSizeTypesStandardA4V2 ...
321	VMSizeTypesStandardA4V2 VMSizeTypes = "Standard_A4_v2"
322	// VMSizeTypesStandardA5 ...
323	VMSizeTypesStandardA5 VMSizeTypes = "Standard_A5"
324	// VMSizeTypesStandardA6 ...
325	VMSizeTypesStandardA6 VMSizeTypes = "Standard_A6"
326	// VMSizeTypesStandardA7 ...
327	VMSizeTypesStandardA7 VMSizeTypes = "Standard_A7"
328	// VMSizeTypesStandardA8 ...
329	VMSizeTypesStandardA8 VMSizeTypes = "Standard_A8"
330	// VMSizeTypesStandardA8mV2 ...
331	VMSizeTypesStandardA8mV2 VMSizeTypes = "Standard_A8m_v2"
332	// VMSizeTypesStandardA8V2 ...
333	VMSizeTypesStandardA8V2 VMSizeTypes = "Standard_A8_v2"
334	// VMSizeTypesStandardA9 ...
335	VMSizeTypesStandardA9 VMSizeTypes = "Standard_A9"
336	// VMSizeTypesStandardB2ms ...
337	VMSizeTypesStandardB2ms VMSizeTypes = "Standard_B2ms"
338	// VMSizeTypesStandardB2s ...
339	VMSizeTypesStandardB2s VMSizeTypes = "Standard_B2s"
340	// VMSizeTypesStandardB4ms ...
341	VMSizeTypesStandardB4ms VMSizeTypes = "Standard_B4ms"
342	// VMSizeTypesStandardB8ms ...
343	VMSizeTypesStandardB8ms VMSizeTypes = "Standard_B8ms"
344	// VMSizeTypesStandardD1 ...
345	VMSizeTypesStandardD1 VMSizeTypes = "Standard_D1"
346	// VMSizeTypesStandardD11 ...
347	VMSizeTypesStandardD11 VMSizeTypes = "Standard_D11"
348	// VMSizeTypesStandardD11V2 ...
349	VMSizeTypesStandardD11V2 VMSizeTypes = "Standard_D11_v2"
350	// VMSizeTypesStandardD11V2Promo ...
351	VMSizeTypesStandardD11V2Promo VMSizeTypes = "Standard_D11_v2_Promo"
352	// VMSizeTypesStandardD12 ...
353	VMSizeTypesStandardD12 VMSizeTypes = "Standard_D12"
354	// VMSizeTypesStandardD12V2 ...
355	VMSizeTypesStandardD12V2 VMSizeTypes = "Standard_D12_v2"
356	// VMSizeTypesStandardD12V2Promo ...
357	VMSizeTypesStandardD12V2Promo VMSizeTypes = "Standard_D12_v2_Promo"
358	// VMSizeTypesStandardD13 ...
359	VMSizeTypesStandardD13 VMSizeTypes = "Standard_D13"
360	// VMSizeTypesStandardD13V2 ...
361	VMSizeTypesStandardD13V2 VMSizeTypes = "Standard_D13_v2"
362	// VMSizeTypesStandardD13V2Promo ...
363	VMSizeTypesStandardD13V2Promo VMSizeTypes = "Standard_D13_v2_Promo"
364	// VMSizeTypesStandardD14 ...
365	VMSizeTypesStandardD14 VMSizeTypes = "Standard_D14"
366	// VMSizeTypesStandardD14V2 ...
367	VMSizeTypesStandardD14V2 VMSizeTypes = "Standard_D14_v2"
368	// VMSizeTypesStandardD14V2Promo ...
369	VMSizeTypesStandardD14V2Promo VMSizeTypes = "Standard_D14_v2_Promo"
370	// VMSizeTypesStandardD15V2 ...
371	VMSizeTypesStandardD15V2 VMSizeTypes = "Standard_D15_v2"
372	// VMSizeTypesStandardD16sV3 ...
373	VMSizeTypesStandardD16sV3 VMSizeTypes = "Standard_D16s_v3"
374	// VMSizeTypesStandardD16V3 ...
375	VMSizeTypesStandardD16V3 VMSizeTypes = "Standard_D16_v3"
376	// VMSizeTypesStandardD1V2 ...
377	VMSizeTypesStandardD1V2 VMSizeTypes = "Standard_D1_v2"
378	// VMSizeTypesStandardD2 ...
379	VMSizeTypesStandardD2 VMSizeTypes = "Standard_D2"
380	// VMSizeTypesStandardD2sV3 ...
381	VMSizeTypesStandardD2sV3 VMSizeTypes = "Standard_D2s_v3"
382	// VMSizeTypesStandardD2V2 ...
383	VMSizeTypesStandardD2V2 VMSizeTypes = "Standard_D2_v2"
384	// VMSizeTypesStandardD2V2Promo ...
385	VMSizeTypesStandardD2V2Promo VMSizeTypes = "Standard_D2_v2_Promo"
386	// VMSizeTypesStandardD2V3 ...
387	VMSizeTypesStandardD2V3 VMSizeTypes = "Standard_D2_v3"
388	// VMSizeTypesStandardD3 ...
389	VMSizeTypesStandardD3 VMSizeTypes = "Standard_D3"
390	// VMSizeTypesStandardD32sV3 ...
391	VMSizeTypesStandardD32sV3 VMSizeTypes = "Standard_D32s_v3"
392	// VMSizeTypesStandardD32V3 ...
393	VMSizeTypesStandardD32V3 VMSizeTypes = "Standard_D32_v3"
394	// VMSizeTypesStandardD3V2 ...
395	VMSizeTypesStandardD3V2 VMSizeTypes = "Standard_D3_v2"
396	// VMSizeTypesStandardD3V2Promo ...
397	VMSizeTypesStandardD3V2Promo VMSizeTypes = "Standard_D3_v2_Promo"
398	// VMSizeTypesStandardD4 ...
399	VMSizeTypesStandardD4 VMSizeTypes = "Standard_D4"
400	// VMSizeTypesStandardD4sV3 ...
401	VMSizeTypesStandardD4sV3 VMSizeTypes = "Standard_D4s_v3"
402	// VMSizeTypesStandardD4V2 ...
403	VMSizeTypesStandardD4V2 VMSizeTypes = "Standard_D4_v2"
404	// VMSizeTypesStandardD4V2Promo ...
405	VMSizeTypesStandardD4V2Promo VMSizeTypes = "Standard_D4_v2_Promo"
406	// VMSizeTypesStandardD4V3 ...
407	VMSizeTypesStandardD4V3 VMSizeTypes = "Standard_D4_v3"
408	// VMSizeTypesStandardD5V2 ...
409	VMSizeTypesStandardD5V2 VMSizeTypes = "Standard_D5_v2"
410	// VMSizeTypesStandardD5V2Promo ...
411	VMSizeTypesStandardD5V2Promo VMSizeTypes = "Standard_D5_v2_Promo"
412	// VMSizeTypesStandardD64sV3 ...
413	VMSizeTypesStandardD64sV3 VMSizeTypes = "Standard_D64s_v3"
414	// VMSizeTypesStandardD64V3 ...
415	VMSizeTypesStandardD64V3 VMSizeTypes = "Standard_D64_v3"
416	// VMSizeTypesStandardD8sV3 ...
417	VMSizeTypesStandardD8sV3 VMSizeTypes = "Standard_D8s_v3"
418	// VMSizeTypesStandardD8V3 ...
419	VMSizeTypesStandardD8V3 VMSizeTypes = "Standard_D8_v3"
420	// VMSizeTypesStandardDS1 ...
421	VMSizeTypesStandardDS1 VMSizeTypes = "Standard_DS1"
422	// VMSizeTypesStandardDS11 ...
423	VMSizeTypesStandardDS11 VMSizeTypes = "Standard_DS11"
424	// VMSizeTypesStandardDS11V2 ...
425	VMSizeTypesStandardDS11V2 VMSizeTypes = "Standard_DS11_v2"
426	// VMSizeTypesStandardDS11V2Promo ...
427	VMSizeTypesStandardDS11V2Promo VMSizeTypes = "Standard_DS11_v2_Promo"
428	// VMSizeTypesStandardDS12 ...
429	VMSizeTypesStandardDS12 VMSizeTypes = "Standard_DS12"
430	// VMSizeTypesStandardDS12V2 ...
431	VMSizeTypesStandardDS12V2 VMSizeTypes = "Standard_DS12_v2"
432	// VMSizeTypesStandardDS12V2Promo ...
433	VMSizeTypesStandardDS12V2Promo VMSizeTypes = "Standard_DS12_v2_Promo"
434	// VMSizeTypesStandardDS13 ...
435	VMSizeTypesStandardDS13 VMSizeTypes = "Standard_DS13"
436	// VMSizeTypesStandardDS132V2 ...
437	VMSizeTypesStandardDS132V2 VMSizeTypes = "Standard_DS13-2_v2"
438	// VMSizeTypesStandardDS134V2 ...
439	VMSizeTypesStandardDS134V2 VMSizeTypes = "Standard_DS13-4_v2"
440	// VMSizeTypesStandardDS13V2 ...
441	VMSizeTypesStandardDS13V2 VMSizeTypes = "Standard_DS13_v2"
442	// VMSizeTypesStandardDS13V2Promo ...
443	VMSizeTypesStandardDS13V2Promo VMSizeTypes = "Standard_DS13_v2_Promo"
444	// VMSizeTypesStandardDS14 ...
445	VMSizeTypesStandardDS14 VMSizeTypes = "Standard_DS14"
446	// VMSizeTypesStandardDS144V2 ...
447	VMSizeTypesStandardDS144V2 VMSizeTypes = "Standard_DS14-4_v2"
448	// VMSizeTypesStandardDS148V2 ...
449	VMSizeTypesStandardDS148V2 VMSizeTypes = "Standard_DS14-8_v2"
450	// VMSizeTypesStandardDS14V2 ...
451	VMSizeTypesStandardDS14V2 VMSizeTypes = "Standard_DS14_v2"
452	// VMSizeTypesStandardDS14V2Promo ...
453	VMSizeTypesStandardDS14V2Promo VMSizeTypes = "Standard_DS14_v2_Promo"
454	// VMSizeTypesStandardDS15V2 ...
455	VMSizeTypesStandardDS15V2 VMSizeTypes = "Standard_DS15_v2"
456	// VMSizeTypesStandardDS1V2 ...
457	VMSizeTypesStandardDS1V2 VMSizeTypes = "Standard_DS1_v2"
458	// VMSizeTypesStandardDS2 ...
459	VMSizeTypesStandardDS2 VMSizeTypes = "Standard_DS2"
460	// VMSizeTypesStandardDS2V2 ...
461	VMSizeTypesStandardDS2V2 VMSizeTypes = "Standard_DS2_v2"
462	// VMSizeTypesStandardDS2V2Promo ...
463	VMSizeTypesStandardDS2V2Promo VMSizeTypes = "Standard_DS2_v2_Promo"
464	// VMSizeTypesStandardDS3 ...
465	VMSizeTypesStandardDS3 VMSizeTypes = "Standard_DS3"
466	// VMSizeTypesStandardDS3V2 ...
467	VMSizeTypesStandardDS3V2 VMSizeTypes = "Standard_DS3_v2"
468	// VMSizeTypesStandardDS3V2Promo ...
469	VMSizeTypesStandardDS3V2Promo VMSizeTypes = "Standard_DS3_v2_Promo"
470	// VMSizeTypesStandardDS4 ...
471	VMSizeTypesStandardDS4 VMSizeTypes = "Standard_DS4"
472	// VMSizeTypesStandardDS4V2 ...
473	VMSizeTypesStandardDS4V2 VMSizeTypes = "Standard_DS4_v2"
474	// VMSizeTypesStandardDS4V2Promo ...
475	VMSizeTypesStandardDS4V2Promo VMSizeTypes = "Standard_DS4_v2_Promo"
476	// VMSizeTypesStandardDS5V2 ...
477	VMSizeTypesStandardDS5V2 VMSizeTypes = "Standard_DS5_v2"
478	// VMSizeTypesStandardDS5V2Promo ...
479	VMSizeTypesStandardDS5V2Promo VMSizeTypes = "Standard_DS5_v2_Promo"
480	// VMSizeTypesStandardE16sV3 ...
481	VMSizeTypesStandardE16sV3 VMSizeTypes = "Standard_E16s_v3"
482	// VMSizeTypesStandardE16V3 ...
483	VMSizeTypesStandardE16V3 VMSizeTypes = "Standard_E16_v3"
484	// VMSizeTypesStandardE2sV3 ...
485	VMSizeTypesStandardE2sV3 VMSizeTypes = "Standard_E2s_v3"
486	// VMSizeTypesStandardE2V3 ...
487	VMSizeTypesStandardE2V3 VMSizeTypes = "Standard_E2_v3"
488	// VMSizeTypesStandardE3216sV3 ...
489	VMSizeTypesStandardE3216sV3 VMSizeTypes = "Standard_E32-16s_v3"
490	// VMSizeTypesStandardE328sV3 ...
491	VMSizeTypesStandardE328sV3 VMSizeTypes = "Standard_E32-8s_v3"
492	// VMSizeTypesStandardE32sV3 ...
493	VMSizeTypesStandardE32sV3 VMSizeTypes = "Standard_E32s_v3"
494	// VMSizeTypesStandardE32V3 ...
495	VMSizeTypesStandardE32V3 VMSizeTypes = "Standard_E32_v3"
496	// VMSizeTypesStandardE4sV3 ...
497	VMSizeTypesStandardE4sV3 VMSizeTypes = "Standard_E4s_v3"
498	// VMSizeTypesStandardE4V3 ...
499	VMSizeTypesStandardE4V3 VMSizeTypes = "Standard_E4_v3"
500	// VMSizeTypesStandardE6416sV3 ...
501	VMSizeTypesStandardE6416sV3 VMSizeTypes = "Standard_E64-16s_v3"
502	// VMSizeTypesStandardE6432sV3 ...
503	VMSizeTypesStandardE6432sV3 VMSizeTypes = "Standard_E64-32s_v3"
504	// VMSizeTypesStandardE64sV3 ...
505	VMSizeTypesStandardE64sV3 VMSizeTypes = "Standard_E64s_v3"
506	// VMSizeTypesStandardE64V3 ...
507	VMSizeTypesStandardE64V3 VMSizeTypes = "Standard_E64_v3"
508	// VMSizeTypesStandardE8sV3 ...
509	VMSizeTypesStandardE8sV3 VMSizeTypes = "Standard_E8s_v3"
510	// VMSizeTypesStandardE8V3 ...
511	VMSizeTypesStandardE8V3 VMSizeTypes = "Standard_E8_v3"
512	// VMSizeTypesStandardF1 ...
513	VMSizeTypesStandardF1 VMSizeTypes = "Standard_F1"
514	// VMSizeTypesStandardF16 ...
515	VMSizeTypesStandardF16 VMSizeTypes = "Standard_F16"
516	// VMSizeTypesStandardF16s ...
517	VMSizeTypesStandardF16s VMSizeTypes = "Standard_F16s"
518	// VMSizeTypesStandardF16sV2 ...
519	VMSizeTypesStandardF16sV2 VMSizeTypes = "Standard_F16s_v2"
520	// VMSizeTypesStandardF1s ...
521	VMSizeTypesStandardF1s VMSizeTypes = "Standard_F1s"
522	// VMSizeTypesStandardF2 ...
523	VMSizeTypesStandardF2 VMSizeTypes = "Standard_F2"
524	// VMSizeTypesStandardF2s ...
525	VMSizeTypesStandardF2s VMSizeTypes = "Standard_F2s"
526	// VMSizeTypesStandardF2sV2 ...
527	VMSizeTypesStandardF2sV2 VMSizeTypes = "Standard_F2s_v2"
528	// VMSizeTypesStandardF32sV2 ...
529	VMSizeTypesStandardF32sV2 VMSizeTypes = "Standard_F32s_v2"
530	// VMSizeTypesStandardF4 ...
531	VMSizeTypesStandardF4 VMSizeTypes = "Standard_F4"
532	// VMSizeTypesStandardF4s ...
533	VMSizeTypesStandardF4s VMSizeTypes = "Standard_F4s"
534	// VMSizeTypesStandardF4sV2 ...
535	VMSizeTypesStandardF4sV2 VMSizeTypes = "Standard_F4s_v2"
536	// VMSizeTypesStandardF64sV2 ...
537	VMSizeTypesStandardF64sV2 VMSizeTypes = "Standard_F64s_v2"
538	// VMSizeTypesStandardF72sV2 ...
539	VMSizeTypesStandardF72sV2 VMSizeTypes = "Standard_F72s_v2"
540	// VMSizeTypesStandardF8 ...
541	VMSizeTypesStandardF8 VMSizeTypes = "Standard_F8"
542	// VMSizeTypesStandardF8s ...
543	VMSizeTypesStandardF8s VMSizeTypes = "Standard_F8s"
544	// VMSizeTypesStandardF8sV2 ...
545	VMSizeTypesStandardF8sV2 VMSizeTypes = "Standard_F8s_v2"
546	// VMSizeTypesStandardG1 ...
547	VMSizeTypesStandardG1 VMSizeTypes = "Standard_G1"
548	// VMSizeTypesStandardG2 ...
549	VMSizeTypesStandardG2 VMSizeTypes = "Standard_G2"
550	// VMSizeTypesStandardG3 ...
551	VMSizeTypesStandardG3 VMSizeTypes = "Standard_G3"
552	// VMSizeTypesStandardG4 ...
553	VMSizeTypesStandardG4 VMSizeTypes = "Standard_G4"
554	// VMSizeTypesStandardG5 ...
555	VMSizeTypesStandardG5 VMSizeTypes = "Standard_G5"
556	// VMSizeTypesStandardGS1 ...
557	VMSizeTypesStandardGS1 VMSizeTypes = "Standard_GS1"
558	// VMSizeTypesStandardGS2 ...
559	VMSizeTypesStandardGS2 VMSizeTypes = "Standard_GS2"
560	// VMSizeTypesStandardGS3 ...
561	VMSizeTypesStandardGS3 VMSizeTypes = "Standard_GS3"
562	// VMSizeTypesStandardGS4 ...
563	VMSizeTypesStandardGS4 VMSizeTypes = "Standard_GS4"
564	// VMSizeTypesStandardGS44 ...
565	VMSizeTypesStandardGS44 VMSizeTypes = "Standard_GS4-4"
566	// VMSizeTypesStandardGS48 ...
567	VMSizeTypesStandardGS48 VMSizeTypes = "Standard_GS4-8"
568	// VMSizeTypesStandardGS5 ...
569	VMSizeTypesStandardGS5 VMSizeTypes = "Standard_GS5"
570	// VMSizeTypesStandardGS516 ...
571	VMSizeTypesStandardGS516 VMSizeTypes = "Standard_GS5-16"
572	// VMSizeTypesStandardGS58 ...
573	VMSizeTypesStandardGS58 VMSizeTypes = "Standard_GS5-8"
574	// VMSizeTypesStandardH16 ...
575	VMSizeTypesStandardH16 VMSizeTypes = "Standard_H16"
576	// VMSizeTypesStandardH16m ...
577	VMSizeTypesStandardH16m VMSizeTypes = "Standard_H16m"
578	// VMSizeTypesStandardH16mr ...
579	VMSizeTypesStandardH16mr VMSizeTypes = "Standard_H16mr"
580	// VMSizeTypesStandardH16r ...
581	VMSizeTypesStandardH16r VMSizeTypes = "Standard_H16r"
582	// VMSizeTypesStandardH8 ...
583	VMSizeTypesStandardH8 VMSizeTypes = "Standard_H8"
584	// VMSizeTypesStandardH8m ...
585	VMSizeTypesStandardH8m VMSizeTypes = "Standard_H8m"
586	// VMSizeTypesStandardL16s ...
587	VMSizeTypesStandardL16s VMSizeTypes = "Standard_L16s"
588	// VMSizeTypesStandardL32s ...
589	VMSizeTypesStandardL32s VMSizeTypes = "Standard_L32s"
590	// VMSizeTypesStandardL4s ...
591	VMSizeTypesStandardL4s VMSizeTypes = "Standard_L4s"
592	// VMSizeTypesStandardL8s ...
593	VMSizeTypesStandardL8s VMSizeTypes = "Standard_L8s"
594	// VMSizeTypesStandardM12832ms ...
595	VMSizeTypesStandardM12832ms VMSizeTypes = "Standard_M128-32ms"
596	// VMSizeTypesStandardM12864ms ...
597	VMSizeTypesStandardM12864ms VMSizeTypes = "Standard_M128-64ms"
598	// VMSizeTypesStandardM128ms ...
599	VMSizeTypesStandardM128ms VMSizeTypes = "Standard_M128ms"
600	// VMSizeTypesStandardM128s ...
601	VMSizeTypesStandardM128s VMSizeTypes = "Standard_M128s"
602	// VMSizeTypesStandardM6416ms ...
603	VMSizeTypesStandardM6416ms VMSizeTypes = "Standard_M64-16ms"
604	// VMSizeTypesStandardM6432ms ...
605	VMSizeTypesStandardM6432ms VMSizeTypes = "Standard_M64-32ms"
606	// VMSizeTypesStandardM64ms ...
607	VMSizeTypesStandardM64ms VMSizeTypes = "Standard_M64ms"
608	// VMSizeTypesStandardM64s ...
609	VMSizeTypesStandardM64s VMSizeTypes = "Standard_M64s"
610	// VMSizeTypesStandardNC12 ...
611	VMSizeTypesStandardNC12 VMSizeTypes = "Standard_NC12"
612	// VMSizeTypesStandardNC12sV2 ...
613	VMSizeTypesStandardNC12sV2 VMSizeTypes = "Standard_NC12s_v2"
614	// VMSizeTypesStandardNC12sV3 ...
615	VMSizeTypesStandardNC12sV3 VMSizeTypes = "Standard_NC12s_v3"
616	// VMSizeTypesStandardNC24 ...
617	VMSizeTypesStandardNC24 VMSizeTypes = "Standard_NC24"
618	// VMSizeTypesStandardNC24r ...
619	VMSizeTypesStandardNC24r VMSizeTypes = "Standard_NC24r"
620	// VMSizeTypesStandardNC24rsV2 ...
621	VMSizeTypesStandardNC24rsV2 VMSizeTypes = "Standard_NC24rs_v2"
622	// VMSizeTypesStandardNC24rsV3 ...
623	VMSizeTypesStandardNC24rsV3 VMSizeTypes = "Standard_NC24rs_v3"
624	// VMSizeTypesStandardNC24sV2 ...
625	VMSizeTypesStandardNC24sV2 VMSizeTypes = "Standard_NC24s_v2"
626	// VMSizeTypesStandardNC24sV3 ...
627	VMSizeTypesStandardNC24sV3 VMSizeTypes = "Standard_NC24s_v3"
628	// VMSizeTypesStandardNC6 ...
629	VMSizeTypesStandardNC6 VMSizeTypes = "Standard_NC6"
630	// VMSizeTypesStandardNC6sV2 ...
631	VMSizeTypesStandardNC6sV2 VMSizeTypes = "Standard_NC6s_v2"
632	// VMSizeTypesStandardNC6sV3 ...
633	VMSizeTypesStandardNC6sV3 VMSizeTypes = "Standard_NC6s_v3"
634	// VMSizeTypesStandardND12s ...
635	VMSizeTypesStandardND12s VMSizeTypes = "Standard_ND12s"
636	// VMSizeTypesStandardND24rs ...
637	VMSizeTypesStandardND24rs VMSizeTypes = "Standard_ND24rs"
638	// VMSizeTypesStandardND24s ...
639	VMSizeTypesStandardND24s VMSizeTypes = "Standard_ND24s"
640	// VMSizeTypesStandardND6s ...
641	VMSizeTypesStandardND6s VMSizeTypes = "Standard_ND6s"
642	// VMSizeTypesStandardNV12 ...
643	VMSizeTypesStandardNV12 VMSizeTypes = "Standard_NV12"
644	// VMSizeTypesStandardNV24 ...
645	VMSizeTypesStandardNV24 VMSizeTypes = "Standard_NV24"
646	// VMSizeTypesStandardNV6 ...
647	VMSizeTypesStandardNV6 VMSizeTypes = "Standard_NV6"
648)
649
650// PossibleVMSizeTypesValues returns an array of possible values for the VMSizeTypes const type.
651func PossibleVMSizeTypesValues() []VMSizeTypes {
652	return []VMSizeTypes{VMSizeTypesStandardA1, VMSizeTypesStandardA10, VMSizeTypesStandardA11, VMSizeTypesStandardA1V2, VMSizeTypesStandardA2, VMSizeTypesStandardA2mV2, VMSizeTypesStandardA2V2, VMSizeTypesStandardA3, VMSizeTypesStandardA4, VMSizeTypesStandardA4mV2, VMSizeTypesStandardA4V2, VMSizeTypesStandardA5, VMSizeTypesStandardA6, VMSizeTypesStandardA7, VMSizeTypesStandardA8, VMSizeTypesStandardA8mV2, VMSizeTypesStandardA8V2, VMSizeTypesStandardA9, VMSizeTypesStandardB2ms, VMSizeTypesStandardB2s, VMSizeTypesStandardB4ms, VMSizeTypesStandardB8ms, VMSizeTypesStandardD1, VMSizeTypesStandardD11, VMSizeTypesStandardD11V2, VMSizeTypesStandardD11V2Promo, VMSizeTypesStandardD12, VMSizeTypesStandardD12V2, VMSizeTypesStandardD12V2Promo, VMSizeTypesStandardD13, VMSizeTypesStandardD13V2, VMSizeTypesStandardD13V2Promo, VMSizeTypesStandardD14, VMSizeTypesStandardD14V2, VMSizeTypesStandardD14V2Promo, VMSizeTypesStandardD15V2, VMSizeTypesStandardD16sV3, VMSizeTypesStandardD16V3, VMSizeTypesStandardD1V2, VMSizeTypesStandardD2, VMSizeTypesStandardD2sV3, VMSizeTypesStandardD2V2, VMSizeTypesStandardD2V2Promo, VMSizeTypesStandardD2V3, VMSizeTypesStandardD3, VMSizeTypesStandardD32sV3, VMSizeTypesStandardD32V3, VMSizeTypesStandardD3V2, VMSizeTypesStandardD3V2Promo, VMSizeTypesStandardD4, VMSizeTypesStandardD4sV3, VMSizeTypesStandardD4V2, VMSizeTypesStandardD4V2Promo, VMSizeTypesStandardD4V3, VMSizeTypesStandardD5V2, VMSizeTypesStandardD5V2Promo, VMSizeTypesStandardD64sV3, VMSizeTypesStandardD64V3, VMSizeTypesStandardD8sV3, VMSizeTypesStandardD8V3, VMSizeTypesStandardDS1, VMSizeTypesStandardDS11, VMSizeTypesStandardDS11V2, VMSizeTypesStandardDS11V2Promo, VMSizeTypesStandardDS12, VMSizeTypesStandardDS12V2, VMSizeTypesStandardDS12V2Promo, VMSizeTypesStandardDS13, VMSizeTypesStandardDS132V2, VMSizeTypesStandardDS134V2, VMSizeTypesStandardDS13V2, VMSizeTypesStandardDS13V2Promo, VMSizeTypesStandardDS14, VMSizeTypesStandardDS144V2, VMSizeTypesStandardDS148V2, VMSizeTypesStandardDS14V2, VMSizeTypesStandardDS14V2Promo, VMSizeTypesStandardDS15V2, VMSizeTypesStandardDS1V2, VMSizeTypesStandardDS2, VMSizeTypesStandardDS2V2, VMSizeTypesStandardDS2V2Promo, VMSizeTypesStandardDS3, VMSizeTypesStandardDS3V2, VMSizeTypesStandardDS3V2Promo, VMSizeTypesStandardDS4, VMSizeTypesStandardDS4V2, VMSizeTypesStandardDS4V2Promo, VMSizeTypesStandardDS5V2, VMSizeTypesStandardDS5V2Promo, VMSizeTypesStandardE16sV3, VMSizeTypesStandardE16V3, VMSizeTypesStandardE2sV3, VMSizeTypesStandardE2V3, VMSizeTypesStandardE3216sV3, VMSizeTypesStandardE328sV3, VMSizeTypesStandardE32sV3, VMSizeTypesStandardE32V3, VMSizeTypesStandardE4sV3, VMSizeTypesStandardE4V3, VMSizeTypesStandardE6416sV3, VMSizeTypesStandardE6432sV3, VMSizeTypesStandardE64sV3, VMSizeTypesStandardE64V3, VMSizeTypesStandardE8sV3, VMSizeTypesStandardE8V3, VMSizeTypesStandardF1, VMSizeTypesStandardF16, VMSizeTypesStandardF16s, VMSizeTypesStandardF16sV2, VMSizeTypesStandardF1s, VMSizeTypesStandardF2, VMSizeTypesStandardF2s, VMSizeTypesStandardF2sV2, VMSizeTypesStandardF32sV2, VMSizeTypesStandardF4, VMSizeTypesStandardF4s, VMSizeTypesStandardF4sV2, VMSizeTypesStandardF64sV2, VMSizeTypesStandardF72sV2, VMSizeTypesStandardF8, VMSizeTypesStandardF8s, VMSizeTypesStandardF8sV2, VMSizeTypesStandardG1, VMSizeTypesStandardG2, VMSizeTypesStandardG3, VMSizeTypesStandardG4, VMSizeTypesStandardG5, VMSizeTypesStandardGS1, VMSizeTypesStandardGS2, VMSizeTypesStandardGS3, VMSizeTypesStandardGS4, VMSizeTypesStandardGS44, VMSizeTypesStandardGS48, VMSizeTypesStandardGS5, VMSizeTypesStandardGS516, VMSizeTypesStandardGS58, VMSizeTypesStandardH16, VMSizeTypesStandardH16m, VMSizeTypesStandardH16mr, VMSizeTypesStandardH16r, VMSizeTypesStandardH8, VMSizeTypesStandardH8m, VMSizeTypesStandardL16s, VMSizeTypesStandardL32s, VMSizeTypesStandardL4s, VMSizeTypesStandardL8s, VMSizeTypesStandardM12832ms, VMSizeTypesStandardM12864ms, VMSizeTypesStandardM128ms, VMSizeTypesStandardM128s, VMSizeTypesStandardM6416ms, VMSizeTypesStandardM6432ms, VMSizeTypesStandardM64ms, VMSizeTypesStandardM64s, VMSizeTypesStandardNC12, VMSizeTypesStandardNC12sV2, VMSizeTypesStandardNC12sV3, VMSizeTypesStandardNC24, VMSizeTypesStandardNC24r, VMSizeTypesStandardNC24rsV2, VMSizeTypesStandardNC24rsV3, VMSizeTypesStandardNC24sV2, VMSizeTypesStandardNC24sV3, VMSizeTypesStandardNC6, VMSizeTypesStandardNC6sV2, VMSizeTypesStandardNC6sV3, VMSizeTypesStandardND12s, VMSizeTypesStandardND24rs, VMSizeTypesStandardND24s, VMSizeTypesStandardND6s, VMSizeTypesStandardNV12, VMSizeTypesStandardNV24, VMSizeTypesStandardNV6}
653}
654
655// AccessProfile profile for enabling a user to access a managed cluster.
656type AccessProfile struct {
657	// KubeConfig - Base64-encoded Kubernetes configuration file.
658	KubeConfig *[]byte `json:"kubeConfig,omitempty"`
659}
660
661// AgentPool agent Pool.
662type AgentPool struct {
663	autorest.Response `json:"-"`
664	// ManagedClusterAgentPoolProfileProperties - Properties of an agent pool.
665	*ManagedClusterAgentPoolProfileProperties `json:"properties,omitempty"`
666	// ID - READ-ONLY; Resource ID.
667	ID *string `json:"id,omitempty"`
668	// Name - READ-ONLY; The name of the resource that is unique within a resource group. This name can be used to access the resource.
669	Name *string `json:"name,omitempty"`
670	// Type - READ-ONLY; Resource type
671	Type *string `json:"type,omitempty"`
672}
673
674// MarshalJSON is the custom marshaler for AgentPool.
675func (ap AgentPool) MarshalJSON() ([]byte, error) {
676	objectMap := make(map[string]interface{})
677	if ap.ManagedClusterAgentPoolProfileProperties != nil {
678		objectMap["properties"] = ap.ManagedClusterAgentPoolProfileProperties
679	}
680	return json.Marshal(objectMap)
681}
682
683// UnmarshalJSON is the custom unmarshaler for AgentPool struct.
684func (ap *AgentPool) UnmarshalJSON(body []byte) error {
685	var m map[string]*json.RawMessage
686	err := json.Unmarshal(body, &m)
687	if err != nil {
688		return err
689	}
690	for k, v := range m {
691		switch k {
692		case "properties":
693			if v != nil {
694				var managedClusterAgentPoolProfileProperties ManagedClusterAgentPoolProfileProperties
695				err = json.Unmarshal(*v, &managedClusterAgentPoolProfileProperties)
696				if err != nil {
697					return err
698				}
699				ap.ManagedClusterAgentPoolProfileProperties = &managedClusterAgentPoolProfileProperties
700			}
701		case "id":
702			if v != nil {
703				var ID string
704				err = json.Unmarshal(*v, &ID)
705				if err != nil {
706					return err
707				}
708				ap.ID = &ID
709			}
710		case "name":
711			if v != nil {
712				var name string
713				err = json.Unmarshal(*v, &name)
714				if err != nil {
715					return err
716				}
717				ap.Name = &name
718			}
719		case "type":
720			if v != nil {
721				var typeVar string
722				err = json.Unmarshal(*v, &typeVar)
723				if err != nil {
724					return err
725				}
726				ap.Type = &typeVar
727			}
728		}
729	}
730
731	return nil
732}
733
734// AgentPoolAvailableVersions the list of available versions for an agent pool.
735type AgentPoolAvailableVersions struct {
736	autorest.Response `json:"-"`
737	// ID - READ-ONLY; Id of the agent pool available versions.
738	ID *string `json:"id,omitempty"`
739	// Name - READ-ONLY; Name of the agent pool available versions.
740	Name *string `json:"name,omitempty"`
741	// Type - READ-ONLY; Type of the agent pool  available versions.
742	Type *string `json:"type,omitempty"`
743	// AgentPoolAvailableVersionsProperties - Properties of agent pool available versions.
744	*AgentPoolAvailableVersionsProperties `json:"properties,omitempty"`
745}
746
747// MarshalJSON is the custom marshaler for AgentPoolAvailableVersions.
748func (apav AgentPoolAvailableVersions) MarshalJSON() ([]byte, error) {
749	objectMap := make(map[string]interface{})
750	if apav.AgentPoolAvailableVersionsProperties != nil {
751		objectMap["properties"] = apav.AgentPoolAvailableVersionsProperties
752	}
753	return json.Marshal(objectMap)
754}
755
756// UnmarshalJSON is the custom unmarshaler for AgentPoolAvailableVersions struct.
757func (apav *AgentPoolAvailableVersions) UnmarshalJSON(body []byte) error {
758	var m map[string]*json.RawMessage
759	err := json.Unmarshal(body, &m)
760	if err != nil {
761		return err
762	}
763	for k, v := range m {
764		switch k {
765		case "id":
766			if v != nil {
767				var ID string
768				err = json.Unmarshal(*v, &ID)
769				if err != nil {
770					return err
771				}
772				apav.ID = &ID
773			}
774		case "name":
775			if v != nil {
776				var name string
777				err = json.Unmarshal(*v, &name)
778				if err != nil {
779					return err
780				}
781				apav.Name = &name
782			}
783		case "type":
784			if v != nil {
785				var typeVar string
786				err = json.Unmarshal(*v, &typeVar)
787				if err != nil {
788					return err
789				}
790				apav.Type = &typeVar
791			}
792		case "properties":
793			if v != nil {
794				var agentPoolAvailableVersionsProperties AgentPoolAvailableVersionsProperties
795				err = json.Unmarshal(*v, &agentPoolAvailableVersionsProperties)
796				if err != nil {
797					return err
798				}
799				apav.AgentPoolAvailableVersionsProperties = &agentPoolAvailableVersionsProperties
800			}
801		}
802	}
803
804	return nil
805}
806
807// AgentPoolAvailableVersionsProperties the list of available agent pool versions.
808type AgentPoolAvailableVersionsProperties struct {
809	// AgentPoolVersions - List of versions available for agent pool.
810	AgentPoolVersions *[]AgentPoolAvailableVersionsPropertiesAgentPoolVersionsItem `json:"agentPoolVersions,omitempty"`
811}
812
813// AgentPoolAvailableVersionsPropertiesAgentPoolVersionsItem ...
814type AgentPoolAvailableVersionsPropertiesAgentPoolVersionsItem struct {
815	// Default - Whether this version is the default agent pool version.
816	Default *bool `json:"default,omitempty"`
817	// KubernetesVersion - Kubernetes version (major, minor, patch).
818	KubernetesVersion *string `json:"kubernetesVersion,omitempty"`
819	// IsPreview - Whether Kubernetes version is currently in preview.
820	IsPreview *bool `json:"isPreview,omitempty"`
821}
822
823// AgentPoolListResult the response from the List Agent Pools operation.
824type AgentPoolListResult struct {
825	autorest.Response `json:"-"`
826	// Value - The list of agent pools.
827	Value *[]AgentPool `json:"value,omitempty"`
828	// NextLink - READ-ONLY; The URL to get the next set of agent pool results.
829	NextLink *string `json:"nextLink,omitempty"`
830}
831
832// AgentPoolListResultIterator provides access to a complete listing of AgentPool values.
833type AgentPoolListResultIterator struct {
834	i    int
835	page AgentPoolListResultPage
836}
837
838// NextWithContext advances to the next value.  If there was an error making
839// the request the iterator does not advance and the error is returned.
840func (iter *AgentPoolListResultIterator) NextWithContext(ctx context.Context) (err error) {
841	if tracing.IsEnabled() {
842		ctx = tracing.StartSpan(ctx, fqdn+"/AgentPoolListResultIterator.NextWithContext")
843		defer func() {
844			sc := -1
845			if iter.Response().Response.Response != nil {
846				sc = iter.Response().Response.Response.StatusCode
847			}
848			tracing.EndSpan(ctx, sc, err)
849		}()
850	}
851	iter.i++
852	if iter.i < len(iter.page.Values()) {
853		return nil
854	}
855	err = iter.page.NextWithContext(ctx)
856	if err != nil {
857		iter.i--
858		return err
859	}
860	iter.i = 0
861	return nil
862}
863
864// Next advances to the next value.  If there was an error making
865// the request the iterator does not advance and the error is returned.
866// Deprecated: Use NextWithContext() instead.
867func (iter *AgentPoolListResultIterator) Next() error {
868	return iter.NextWithContext(context.Background())
869}
870
871// NotDone returns true if the enumeration should be started or is not yet complete.
872func (iter AgentPoolListResultIterator) NotDone() bool {
873	return iter.page.NotDone() && iter.i < len(iter.page.Values())
874}
875
876// Response returns the raw server response from the last page request.
877func (iter AgentPoolListResultIterator) Response() AgentPoolListResult {
878	return iter.page.Response()
879}
880
881// Value returns the current value or a zero-initialized value if the
882// iterator has advanced beyond the end of the collection.
883func (iter AgentPoolListResultIterator) Value() AgentPool {
884	if !iter.page.NotDone() {
885		return AgentPool{}
886	}
887	return iter.page.Values()[iter.i]
888}
889
890// Creates a new instance of the AgentPoolListResultIterator type.
891func NewAgentPoolListResultIterator(page AgentPoolListResultPage) AgentPoolListResultIterator {
892	return AgentPoolListResultIterator{page: page}
893}
894
895// IsEmpty returns true if the ListResult contains no values.
896func (aplr AgentPoolListResult) IsEmpty() bool {
897	return aplr.Value == nil || len(*aplr.Value) == 0
898}
899
900// agentPoolListResultPreparer prepares a request to retrieve the next set of results.
901// It returns nil if no more results exist.
902func (aplr AgentPoolListResult) agentPoolListResultPreparer(ctx context.Context) (*http.Request, error) {
903	if aplr.NextLink == nil || len(to.String(aplr.NextLink)) < 1 {
904		return nil, nil
905	}
906	return autorest.Prepare((&http.Request{}).WithContext(ctx),
907		autorest.AsJSON(),
908		autorest.AsGet(),
909		autorest.WithBaseURL(to.String(aplr.NextLink)))
910}
911
912// AgentPoolListResultPage contains a page of AgentPool values.
913type AgentPoolListResultPage struct {
914	fn   func(context.Context, AgentPoolListResult) (AgentPoolListResult, error)
915	aplr AgentPoolListResult
916}
917
918// NextWithContext advances to the next page of values.  If there was an error making
919// the request the page does not advance and the error is returned.
920func (page *AgentPoolListResultPage) NextWithContext(ctx context.Context) (err error) {
921	if tracing.IsEnabled() {
922		ctx = tracing.StartSpan(ctx, fqdn+"/AgentPoolListResultPage.NextWithContext")
923		defer func() {
924			sc := -1
925			if page.Response().Response.Response != nil {
926				sc = page.Response().Response.Response.StatusCode
927			}
928			tracing.EndSpan(ctx, sc, err)
929		}()
930	}
931	next, err := page.fn(ctx, page.aplr)
932	if err != nil {
933		return err
934	}
935	page.aplr = next
936	return nil
937}
938
939// Next advances to the next page of values.  If there was an error making
940// the request the page does not advance and the error is returned.
941// Deprecated: Use NextWithContext() instead.
942func (page *AgentPoolListResultPage) Next() error {
943	return page.NextWithContext(context.Background())
944}
945
946// NotDone returns true if the page enumeration should be started or is not yet complete.
947func (page AgentPoolListResultPage) NotDone() bool {
948	return !page.aplr.IsEmpty()
949}
950
951// Response returns the raw server response from the last page request.
952func (page AgentPoolListResultPage) Response() AgentPoolListResult {
953	return page.aplr
954}
955
956// Values returns the slice of values for the current page or nil if there are no values.
957func (page AgentPoolListResultPage) Values() []AgentPool {
958	if page.aplr.IsEmpty() {
959		return nil
960	}
961	return *page.aplr.Value
962}
963
964// Creates a new instance of the AgentPoolListResultPage type.
965func NewAgentPoolListResultPage(getNextPage func(context.Context, AgentPoolListResult) (AgentPoolListResult, error)) AgentPoolListResultPage {
966	return AgentPoolListResultPage{fn: getNextPage}
967}
968
969// AgentPoolProfile profile for the container service agent pool.
970type AgentPoolProfile struct {
971	// Name - Unique name of the agent pool profile in the context of the subscription and resource group.
972	Name *string `json:"name,omitempty"`
973	// Count - Number of agents (VMs) to host docker containers. Allowed values must be in the range of 1 to 100 (inclusive). The default value is 1.
974	Count *int32 `json:"count,omitempty"`
975	// VMSize - Size of agent VMs. Possible values include: 'VMSizeTypesStandardA1', 'VMSizeTypesStandardA10', 'VMSizeTypesStandardA11', 'VMSizeTypesStandardA1V2', 'VMSizeTypesStandardA2', 'VMSizeTypesStandardA2V2', 'VMSizeTypesStandardA2mV2', 'VMSizeTypesStandardA3', 'VMSizeTypesStandardA4', 'VMSizeTypesStandardA4V2', 'VMSizeTypesStandardA4mV2', 'VMSizeTypesStandardA5', 'VMSizeTypesStandardA6', 'VMSizeTypesStandardA7', 'VMSizeTypesStandardA8', 'VMSizeTypesStandardA8V2', 'VMSizeTypesStandardA8mV2', 'VMSizeTypesStandardA9', 'VMSizeTypesStandardB2ms', 'VMSizeTypesStandardB2s', 'VMSizeTypesStandardB4ms', 'VMSizeTypesStandardB8ms', 'VMSizeTypesStandardD1', 'VMSizeTypesStandardD11', 'VMSizeTypesStandardD11V2', 'VMSizeTypesStandardD11V2Promo', 'VMSizeTypesStandardD12', 'VMSizeTypesStandardD12V2', 'VMSizeTypesStandardD12V2Promo', 'VMSizeTypesStandardD13', 'VMSizeTypesStandardD13V2', 'VMSizeTypesStandardD13V2Promo', 'VMSizeTypesStandardD14', 'VMSizeTypesStandardD14V2', 'VMSizeTypesStandardD14V2Promo', 'VMSizeTypesStandardD15V2', 'VMSizeTypesStandardD16V3', 'VMSizeTypesStandardD16sV3', 'VMSizeTypesStandardD1V2', 'VMSizeTypesStandardD2', 'VMSizeTypesStandardD2V2', 'VMSizeTypesStandardD2V2Promo', 'VMSizeTypesStandardD2V3', 'VMSizeTypesStandardD2sV3', 'VMSizeTypesStandardD3', 'VMSizeTypesStandardD32V3', 'VMSizeTypesStandardD32sV3', 'VMSizeTypesStandardD3V2', 'VMSizeTypesStandardD3V2Promo', 'VMSizeTypesStandardD4', 'VMSizeTypesStandardD4V2', 'VMSizeTypesStandardD4V2Promo', 'VMSizeTypesStandardD4V3', 'VMSizeTypesStandardD4sV3', 'VMSizeTypesStandardD5V2', 'VMSizeTypesStandardD5V2Promo', 'VMSizeTypesStandardD64V3', 'VMSizeTypesStandardD64sV3', 'VMSizeTypesStandardD8V3', 'VMSizeTypesStandardD8sV3', 'VMSizeTypesStandardDS1', 'VMSizeTypesStandardDS11', 'VMSizeTypesStandardDS11V2', 'VMSizeTypesStandardDS11V2Promo', 'VMSizeTypesStandardDS12', 'VMSizeTypesStandardDS12V2', 'VMSizeTypesStandardDS12V2Promo', 'VMSizeTypesStandardDS13', 'VMSizeTypesStandardDS132V2', 'VMSizeTypesStandardDS134V2', 'VMSizeTypesStandardDS13V2', 'VMSizeTypesStandardDS13V2Promo', 'VMSizeTypesStandardDS14', 'VMSizeTypesStandardDS144V2', 'VMSizeTypesStandardDS148V2', 'VMSizeTypesStandardDS14V2', 'VMSizeTypesStandardDS14V2Promo', 'VMSizeTypesStandardDS15V2', 'VMSizeTypesStandardDS1V2', 'VMSizeTypesStandardDS2', 'VMSizeTypesStandardDS2V2', 'VMSizeTypesStandardDS2V2Promo', 'VMSizeTypesStandardDS3', 'VMSizeTypesStandardDS3V2', 'VMSizeTypesStandardDS3V2Promo', 'VMSizeTypesStandardDS4', 'VMSizeTypesStandardDS4V2', 'VMSizeTypesStandardDS4V2Promo', 'VMSizeTypesStandardDS5V2', 'VMSizeTypesStandardDS5V2Promo', 'VMSizeTypesStandardE16V3', 'VMSizeTypesStandardE16sV3', 'VMSizeTypesStandardE2V3', 'VMSizeTypesStandardE2sV3', 'VMSizeTypesStandardE3216sV3', 'VMSizeTypesStandardE328sV3', 'VMSizeTypesStandardE32V3', 'VMSizeTypesStandardE32sV3', 'VMSizeTypesStandardE4V3', 'VMSizeTypesStandardE4sV3', 'VMSizeTypesStandardE6416sV3', 'VMSizeTypesStandardE6432sV3', 'VMSizeTypesStandardE64V3', 'VMSizeTypesStandardE64sV3', 'VMSizeTypesStandardE8V3', 'VMSizeTypesStandardE8sV3', 'VMSizeTypesStandardF1', 'VMSizeTypesStandardF16', 'VMSizeTypesStandardF16s', 'VMSizeTypesStandardF16sV2', 'VMSizeTypesStandardF1s', 'VMSizeTypesStandardF2', 'VMSizeTypesStandardF2s', 'VMSizeTypesStandardF2sV2', 'VMSizeTypesStandardF32sV2', 'VMSizeTypesStandardF4', 'VMSizeTypesStandardF4s', 'VMSizeTypesStandardF4sV2', 'VMSizeTypesStandardF64sV2', 'VMSizeTypesStandardF72sV2', 'VMSizeTypesStandardF8', 'VMSizeTypesStandardF8s', 'VMSizeTypesStandardF8sV2', 'VMSizeTypesStandardG1', 'VMSizeTypesStandardG2', 'VMSizeTypesStandardG3', 'VMSizeTypesStandardG4', 'VMSizeTypesStandardG5', 'VMSizeTypesStandardGS1', 'VMSizeTypesStandardGS2', 'VMSizeTypesStandardGS3', 'VMSizeTypesStandardGS4', 'VMSizeTypesStandardGS44', 'VMSizeTypesStandardGS48', 'VMSizeTypesStandardGS5', 'VMSizeTypesStandardGS516', 'VMSizeTypesStandardGS58', 'VMSizeTypesStandardH16', 'VMSizeTypesStandardH16m', 'VMSizeTypesStandardH16mr', 'VMSizeTypesStandardH16r', 'VMSizeTypesStandardH8', 'VMSizeTypesStandardH8m', 'VMSizeTypesStandardL16s', 'VMSizeTypesStandardL32s', 'VMSizeTypesStandardL4s', 'VMSizeTypesStandardL8s', 'VMSizeTypesStandardM12832ms', 'VMSizeTypesStandardM12864ms', 'VMSizeTypesStandardM128ms', 'VMSizeTypesStandardM128s', 'VMSizeTypesStandardM6416ms', 'VMSizeTypesStandardM6432ms', 'VMSizeTypesStandardM64ms', 'VMSizeTypesStandardM64s', 'VMSizeTypesStandardNC12', 'VMSizeTypesStandardNC12sV2', 'VMSizeTypesStandardNC12sV3', 'VMSizeTypesStandardNC24', 'VMSizeTypesStandardNC24r', 'VMSizeTypesStandardNC24rsV2', 'VMSizeTypesStandardNC24rsV3', 'VMSizeTypesStandardNC24sV2', 'VMSizeTypesStandardNC24sV3', 'VMSizeTypesStandardNC6', 'VMSizeTypesStandardNC6sV2', 'VMSizeTypesStandardNC6sV3', 'VMSizeTypesStandardND12s', 'VMSizeTypesStandardND24rs', 'VMSizeTypesStandardND24s', 'VMSizeTypesStandardND6s', 'VMSizeTypesStandardNV12', 'VMSizeTypesStandardNV24', 'VMSizeTypesStandardNV6'
976	VMSize VMSizeTypes `json:"vmSize,omitempty"`
977	// OsDiskSizeGB - OS Disk Size in GB to be used to specify the disk size for every machine in this master/agent pool. If you specify 0, it will apply the default osDisk size according to the vmSize specified.
978	OsDiskSizeGB *int32 `json:"osDiskSizeGB,omitempty"`
979	// DNSPrefix - DNS prefix to be used to create the FQDN for the agent pool.
980	DNSPrefix *string `json:"dnsPrefix,omitempty"`
981	// Fqdn - READ-ONLY; FQDN for the agent pool.
982	Fqdn *string `json:"fqdn,omitempty"`
983	// Ports - Ports number array used to expose on this agent pool. The default opened ports are different based on your choice of orchestrator.
984	Ports *[]int32 `json:"ports,omitempty"`
985	// StorageProfile - Storage profile specifies what kind of storage used. Choose from StorageAccount and ManagedDisks. Leave it empty, we will choose for you based on the orchestrator choice. Possible values include: 'StorageAccount', 'ManagedDisks'
986	StorageProfile StorageProfileTypes `json:"storageProfile,omitempty"`
987	// VnetSubnetID - VNet SubnetID specifies the VNet's subnet identifier.
988	VnetSubnetID *string `json:"vnetSubnetID,omitempty"`
989	// OsType - OsType to be used to specify os type. Choose from Linux and Windows. Default to Linux. Possible values include: 'Linux', 'Windows'
990	OsType OSType `json:"osType,omitempty"`
991}
992
993// AgentPoolsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
994// long-running operation.
995type AgentPoolsCreateOrUpdateFuture struct {
996	azure.Future
997}
998
999// Result returns the result of the asynchronous operation.
1000// If the operation has not completed it will return an error.
1001func (future *AgentPoolsCreateOrUpdateFuture) Result(client AgentPoolsClient) (ap AgentPool, err error) {
1002	var done bool
1003	done, err = future.DoneWithContext(context.Background(), client)
1004	if err != nil {
1005		err = autorest.NewErrorWithError(err, "containerservice.AgentPoolsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
1006		return
1007	}
1008	if !done {
1009		err = azure.NewAsyncOpIncompleteError("containerservice.AgentPoolsCreateOrUpdateFuture")
1010		return
1011	}
1012	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1013	if ap.Response.Response, err = future.GetResult(sender); err == nil && ap.Response.Response.StatusCode != http.StatusNoContent {
1014		ap, err = client.CreateOrUpdateResponder(ap.Response.Response)
1015		if err != nil {
1016			err = autorest.NewErrorWithError(err, "containerservice.AgentPoolsCreateOrUpdateFuture", "Result", ap.Response.Response, "Failure responding to request")
1017		}
1018	}
1019	return
1020}
1021
1022// AgentPoolsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
1023// operation.
1024type AgentPoolsDeleteFuture struct {
1025	azure.Future
1026}
1027
1028// Result returns the result of the asynchronous operation.
1029// If the operation has not completed it will return an error.
1030func (future *AgentPoolsDeleteFuture) Result(client AgentPoolsClient) (ar autorest.Response, err error) {
1031	var done bool
1032	done, err = future.DoneWithContext(context.Background(), client)
1033	if err != nil {
1034		err = autorest.NewErrorWithError(err, "containerservice.AgentPoolsDeleteFuture", "Result", future.Response(), "Polling failure")
1035		return
1036	}
1037	if !done {
1038		err = azure.NewAsyncOpIncompleteError("containerservice.AgentPoolsDeleteFuture")
1039		return
1040	}
1041	ar.Response = future.Response()
1042	return
1043}
1044
1045// AgentPoolUpgradeProfile the list of available upgrades for an agent pool.
1046type AgentPoolUpgradeProfile struct {
1047	autorest.Response `json:"-"`
1048	// ID - READ-ONLY; Id of the agent pool upgrade profile.
1049	ID *string `json:"id,omitempty"`
1050	// Name - READ-ONLY; Name of the agent pool upgrade profile.
1051	Name *string `json:"name,omitempty"`
1052	// Type - READ-ONLY; Type of the agent pool upgrade profile.
1053	Type *string `json:"type,omitempty"`
1054	// AgentPoolUpgradeProfileProperties - Properties of agent pool upgrade profile.
1055	*AgentPoolUpgradeProfileProperties `json:"properties,omitempty"`
1056}
1057
1058// MarshalJSON is the custom marshaler for AgentPoolUpgradeProfile.
1059func (apup AgentPoolUpgradeProfile) MarshalJSON() ([]byte, error) {
1060	objectMap := make(map[string]interface{})
1061	if apup.AgentPoolUpgradeProfileProperties != nil {
1062		objectMap["properties"] = apup.AgentPoolUpgradeProfileProperties
1063	}
1064	return json.Marshal(objectMap)
1065}
1066
1067// UnmarshalJSON is the custom unmarshaler for AgentPoolUpgradeProfile struct.
1068func (apup *AgentPoolUpgradeProfile) UnmarshalJSON(body []byte) error {
1069	var m map[string]*json.RawMessage
1070	err := json.Unmarshal(body, &m)
1071	if err != nil {
1072		return err
1073	}
1074	for k, v := range m {
1075		switch k {
1076		case "id":
1077			if v != nil {
1078				var ID string
1079				err = json.Unmarshal(*v, &ID)
1080				if err != nil {
1081					return err
1082				}
1083				apup.ID = &ID
1084			}
1085		case "name":
1086			if v != nil {
1087				var name string
1088				err = json.Unmarshal(*v, &name)
1089				if err != nil {
1090					return err
1091				}
1092				apup.Name = &name
1093			}
1094		case "type":
1095			if v != nil {
1096				var typeVar string
1097				err = json.Unmarshal(*v, &typeVar)
1098				if err != nil {
1099					return err
1100				}
1101				apup.Type = &typeVar
1102			}
1103		case "properties":
1104			if v != nil {
1105				var agentPoolUpgradeProfileProperties AgentPoolUpgradeProfileProperties
1106				err = json.Unmarshal(*v, &agentPoolUpgradeProfileProperties)
1107				if err != nil {
1108					return err
1109				}
1110				apup.AgentPoolUpgradeProfileProperties = &agentPoolUpgradeProfileProperties
1111			}
1112		}
1113	}
1114
1115	return nil
1116}
1117
1118// AgentPoolUpgradeProfileProperties the list of available upgrade versions.
1119type AgentPoolUpgradeProfileProperties struct {
1120	// KubernetesVersion - Kubernetes version (major, minor, patch).
1121	KubernetesVersion *string `json:"kubernetesVersion,omitempty"`
1122	// OsType - OsType to be used to specify os type. Choose from Linux and Windows. Default to Linux. Possible values include: 'Linux', 'Windows'
1123	OsType OSType `json:"osType,omitempty"`
1124	// Upgrades - List of orchestrator types and versions available for upgrade.
1125	Upgrades *[]AgentPoolUpgradeProfilePropertiesUpgradesItem `json:"upgrades,omitempty"`
1126}
1127
1128// AgentPoolUpgradeProfilePropertiesUpgradesItem ...
1129type AgentPoolUpgradeProfilePropertiesUpgradesItem struct {
1130	// KubernetesVersion - Kubernetes version (major, minor, patch).
1131	KubernetesVersion *string `json:"kubernetesVersion,omitempty"`
1132	// IsPreview - Whether Kubernetes version is currently in preview.
1133	IsPreview *bool `json:"isPreview,omitempty"`
1134}
1135
1136// CloudError an error response from the Container service.
1137type CloudError struct {
1138	// Error - Details about the error.
1139	Error *CloudErrorBody `json:"error,omitempty"`
1140}
1141
1142// CloudErrorBody an error response from the Container service.
1143type CloudErrorBody struct {
1144	// Code - An identifier for the error. Codes are invariant and are intended to be consumed programmatically.
1145	Code *string `json:"code,omitempty"`
1146	// Message - A message describing the error, intended to be suitable for display in a user interface.
1147	Message *string `json:"message,omitempty"`
1148	// Target - The target of the particular error. For example, the name of the property in error.
1149	Target *string `json:"target,omitempty"`
1150	// Details - A list of additional details about the error.
1151	Details *[]CloudErrorBody `json:"details,omitempty"`
1152}
1153
1154// ContainerService container service.
1155type ContainerService struct {
1156	autorest.Response `json:"-"`
1157	// Properties - Properties of the container service.
1158	*Properties `json:"properties,omitempty"`
1159	// ID - READ-ONLY; Resource Id
1160	ID *string `json:"id,omitempty"`
1161	// Name - READ-ONLY; Resource name
1162	Name *string `json:"name,omitempty"`
1163	// Type - READ-ONLY; Resource type
1164	Type *string `json:"type,omitempty"`
1165	// Location - Resource location
1166	Location *string `json:"location,omitempty"`
1167	// Tags - Resource tags
1168	Tags map[string]*string `json:"tags"`
1169}
1170
1171// MarshalJSON is the custom marshaler for ContainerService.
1172func (cs ContainerService) MarshalJSON() ([]byte, error) {
1173	objectMap := make(map[string]interface{})
1174	if cs.Properties != nil {
1175		objectMap["properties"] = cs.Properties
1176	}
1177	if cs.Location != nil {
1178		objectMap["location"] = cs.Location
1179	}
1180	if cs.Tags != nil {
1181		objectMap["tags"] = cs.Tags
1182	}
1183	return json.Marshal(objectMap)
1184}
1185
1186// UnmarshalJSON is the custom unmarshaler for ContainerService struct.
1187func (cs *ContainerService) UnmarshalJSON(body []byte) error {
1188	var m map[string]*json.RawMessage
1189	err := json.Unmarshal(body, &m)
1190	if err != nil {
1191		return err
1192	}
1193	for k, v := range m {
1194		switch k {
1195		case "properties":
1196			if v != nil {
1197				var properties Properties
1198				err = json.Unmarshal(*v, &properties)
1199				if err != nil {
1200					return err
1201				}
1202				cs.Properties = &properties
1203			}
1204		case "id":
1205			if v != nil {
1206				var ID string
1207				err = json.Unmarshal(*v, &ID)
1208				if err != nil {
1209					return err
1210				}
1211				cs.ID = &ID
1212			}
1213		case "name":
1214			if v != nil {
1215				var name string
1216				err = json.Unmarshal(*v, &name)
1217				if err != nil {
1218					return err
1219				}
1220				cs.Name = &name
1221			}
1222		case "type":
1223			if v != nil {
1224				var typeVar string
1225				err = json.Unmarshal(*v, &typeVar)
1226				if err != nil {
1227					return err
1228				}
1229				cs.Type = &typeVar
1230			}
1231		case "location":
1232			if v != nil {
1233				var location string
1234				err = json.Unmarshal(*v, &location)
1235				if err != nil {
1236					return err
1237				}
1238				cs.Location = &location
1239			}
1240		case "tags":
1241			if v != nil {
1242				var tags map[string]*string
1243				err = json.Unmarshal(*v, &tags)
1244				if err != nil {
1245					return err
1246				}
1247				cs.Tags = tags
1248			}
1249		}
1250	}
1251
1252	return nil
1253}
1254
1255// ContainerServicesCreateOrUpdateFutureType an abstraction for monitoring and retrieving the results of a
1256// long-running operation.
1257type ContainerServicesCreateOrUpdateFutureType struct {
1258	azure.Future
1259}
1260
1261// Result returns the result of the asynchronous operation.
1262// If the operation has not completed it will return an error.
1263func (future *ContainerServicesCreateOrUpdateFutureType) Result(client ContainerServicesClient) (cs ContainerService, err error) {
1264	var done bool
1265	done, err = future.DoneWithContext(context.Background(), client)
1266	if err != nil {
1267		err = autorest.NewErrorWithError(err, "containerservice.ContainerServicesCreateOrUpdateFutureType", "Result", future.Response(), "Polling failure")
1268		return
1269	}
1270	if !done {
1271		err = azure.NewAsyncOpIncompleteError("containerservice.ContainerServicesCreateOrUpdateFutureType")
1272		return
1273	}
1274	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1275	if cs.Response.Response, err = future.GetResult(sender); err == nil && cs.Response.Response.StatusCode != http.StatusNoContent {
1276		cs, err = client.CreateOrUpdateResponder(cs.Response.Response)
1277		if err != nil {
1278			err = autorest.NewErrorWithError(err, "containerservice.ContainerServicesCreateOrUpdateFutureType", "Result", cs.Response.Response, "Failure responding to request")
1279		}
1280	}
1281	return
1282}
1283
1284// ContainerServicesDeleteFutureType an abstraction for monitoring and retrieving the results of a
1285// long-running operation.
1286type ContainerServicesDeleteFutureType struct {
1287	azure.Future
1288}
1289
1290// Result returns the result of the asynchronous operation.
1291// If the operation has not completed it will return an error.
1292func (future *ContainerServicesDeleteFutureType) Result(client ContainerServicesClient) (ar autorest.Response, err error) {
1293	var done bool
1294	done, err = future.DoneWithContext(context.Background(), client)
1295	if err != nil {
1296		err = autorest.NewErrorWithError(err, "containerservice.ContainerServicesDeleteFutureType", "Result", future.Response(), "Polling failure")
1297		return
1298	}
1299	if !done {
1300		err = azure.NewAsyncOpIncompleteError("containerservice.ContainerServicesDeleteFutureType")
1301		return
1302	}
1303	ar.Response = future.Response()
1304	return
1305}
1306
1307// CredentialResult the credential result response.
1308type CredentialResult struct {
1309	// Name - READ-ONLY; The name of the credential.
1310	Name *string `json:"name,omitempty"`
1311	// Value - READ-ONLY; Base64-encoded Kubernetes configuration file.
1312	Value *[]byte `json:"value,omitempty"`
1313}
1314
1315// CredentialResults the list of credential result response.
1316type CredentialResults struct {
1317	autorest.Response `json:"-"`
1318	// Kubeconfigs - READ-ONLY; Base64-encoded Kubernetes configuration file.
1319	Kubeconfigs *[]CredentialResult `json:"kubeconfigs,omitempty"`
1320}
1321
1322// CustomProfile properties to configure a custom container service cluster.
1323type CustomProfile struct {
1324	// Orchestrator - The name of the custom orchestrator to use.
1325	Orchestrator *string `json:"orchestrator,omitempty"`
1326}
1327
1328// DiagnosticsProfile profile for diagnostics on the container service cluster.
1329type DiagnosticsProfile struct {
1330	// VMDiagnostics - Profile for diagnostics on the container service VMs.
1331	VMDiagnostics *VMDiagnostics `json:"vmDiagnostics,omitempty"`
1332}
1333
1334// KeyVaultSecretRef reference to a secret stored in Azure Key Vault.
1335type KeyVaultSecretRef struct {
1336	// VaultID - Key vault identifier.
1337	VaultID *string `json:"vaultID,omitempty"`
1338	// SecretName - The secret name.
1339	SecretName *string `json:"secretName,omitempty"`
1340	// Version - The secret version.
1341	Version *string `json:"version,omitempty"`
1342}
1343
1344// LinuxProfile profile for Linux VMs in the container service cluster.
1345type LinuxProfile struct {
1346	// AdminUsername - The administrator username to use for Linux VMs.
1347	AdminUsername *string `json:"adminUsername,omitempty"`
1348	// SSH - SSH configuration for Linux-based VMs running on Azure.
1349	SSH *SSHConfiguration `json:"ssh,omitempty"`
1350}
1351
1352// ListResult the response from the List Container Services operation.
1353type ListResult struct {
1354	autorest.Response `json:"-"`
1355	// Value - The list of container services.
1356	Value *[]ContainerService `json:"value,omitempty"`
1357	// NextLink - READ-ONLY; The URL to get the next set of container service results.
1358	NextLink *string `json:"nextLink,omitempty"`
1359}
1360
1361// ListResultIterator provides access to a complete listing of ContainerService values.
1362type ListResultIterator struct {
1363	i    int
1364	page ListResultPage
1365}
1366
1367// NextWithContext advances to the next value.  If there was an error making
1368// the request the iterator does not advance and the error is returned.
1369func (iter *ListResultIterator) NextWithContext(ctx context.Context) (err error) {
1370	if tracing.IsEnabled() {
1371		ctx = tracing.StartSpan(ctx, fqdn+"/ListResultIterator.NextWithContext")
1372		defer func() {
1373			sc := -1
1374			if iter.Response().Response.Response != nil {
1375				sc = iter.Response().Response.Response.StatusCode
1376			}
1377			tracing.EndSpan(ctx, sc, err)
1378		}()
1379	}
1380	iter.i++
1381	if iter.i < len(iter.page.Values()) {
1382		return nil
1383	}
1384	err = iter.page.NextWithContext(ctx)
1385	if err != nil {
1386		iter.i--
1387		return err
1388	}
1389	iter.i = 0
1390	return nil
1391}
1392
1393// Next advances to the next value.  If there was an error making
1394// the request the iterator does not advance and the error is returned.
1395// Deprecated: Use NextWithContext() instead.
1396func (iter *ListResultIterator) Next() error {
1397	return iter.NextWithContext(context.Background())
1398}
1399
1400// NotDone returns true if the enumeration should be started or is not yet complete.
1401func (iter ListResultIterator) NotDone() bool {
1402	return iter.page.NotDone() && iter.i < len(iter.page.Values())
1403}
1404
1405// Response returns the raw server response from the last page request.
1406func (iter ListResultIterator) Response() ListResult {
1407	return iter.page.Response()
1408}
1409
1410// Value returns the current value or a zero-initialized value if the
1411// iterator has advanced beyond the end of the collection.
1412func (iter ListResultIterator) Value() ContainerService {
1413	if !iter.page.NotDone() {
1414		return ContainerService{}
1415	}
1416	return iter.page.Values()[iter.i]
1417}
1418
1419// Creates a new instance of the ListResultIterator type.
1420func NewListResultIterator(page ListResultPage) ListResultIterator {
1421	return ListResultIterator{page: page}
1422}
1423
1424// IsEmpty returns true if the ListResult contains no values.
1425func (lr ListResult) IsEmpty() bool {
1426	return lr.Value == nil || len(*lr.Value) == 0
1427}
1428
1429// listResultPreparer prepares a request to retrieve the next set of results.
1430// It returns nil if no more results exist.
1431func (lr ListResult) listResultPreparer(ctx context.Context) (*http.Request, error) {
1432	if lr.NextLink == nil || len(to.String(lr.NextLink)) < 1 {
1433		return nil, nil
1434	}
1435	return autorest.Prepare((&http.Request{}).WithContext(ctx),
1436		autorest.AsJSON(),
1437		autorest.AsGet(),
1438		autorest.WithBaseURL(to.String(lr.NextLink)))
1439}
1440
1441// ListResultPage contains a page of ContainerService values.
1442type ListResultPage struct {
1443	fn func(context.Context, ListResult) (ListResult, error)
1444	lr ListResult
1445}
1446
1447// NextWithContext advances to the next page of values.  If there was an error making
1448// the request the page does not advance and the error is returned.
1449func (page *ListResultPage) NextWithContext(ctx context.Context) (err error) {
1450	if tracing.IsEnabled() {
1451		ctx = tracing.StartSpan(ctx, fqdn+"/ListResultPage.NextWithContext")
1452		defer func() {
1453			sc := -1
1454			if page.Response().Response.Response != nil {
1455				sc = page.Response().Response.Response.StatusCode
1456			}
1457			tracing.EndSpan(ctx, sc, err)
1458		}()
1459	}
1460	next, err := page.fn(ctx, page.lr)
1461	if err != nil {
1462		return err
1463	}
1464	page.lr = next
1465	return nil
1466}
1467
1468// Next advances to the next page of values.  If there was an error making
1469// the request the page does not advance and the error is returned.
1470// Deprecated: Use NextWithContext() instead.
1471func (page *ListResultPage) Next() error {
1472	return page.NextWithContext(context.Background())
1473}
1474
1475// NotDone returns true if the page enumeration should be started or is not yet complete.
1476func (page ListResultPage) NotDone() bool {
1477	return !page.lr.IsEmpty()
1478}
1479
1480// Response returns the raw server response from the last page request.
1481func (page ListResultPage) Response() ListResult {
1482	return page.lr
1483}
1484
1485// Values returns the slice of values for the current page or nil if there are no values.
1486func (page ListResultPage) Values() []ContainerService {
1487	if page.lr.IsEmpty() {
1488		return nil
1489	}
1490	return *page.lr.Value
1491}
1492
1493// Creates a new instance of the ListResultPage type.
1494func NewListResultPage(getNextPage func(context.Context, ListResult) (ListResult, error)) ListResultPage {
1495	return ListResultPage{fn: getNextPage}
1496}
1497
1498// ManagedCluster managed cluster.
1499type ManagedCluster struct {
1500	autorest.Response `json:"-"`
1501	// ManagedClusterProperties - Properties of a managed cluster.
1502	*ManagedClusterProperties `json:"properties,omitempty"`
1503	// Identity - The identity of the managed cluster, if configured.
1504	Identity *ManagedClusterIdentity `json:"identity,omitempty"`
1505	// ID - READ-ONLY; Resource Id
1506	ID *string `json:"id,omitempty"`
1507	// Name - READ-ONLY; Resource name
1508	Name *string `json:"name,omitempty"`
1509	// Type - READ-ONLY; Resource type
1510	Type *string `json:"type,omitempty"`
1511	// Location - Resource location
1512	Location *string `json:"location,omitempty"`
1513	// Tags - Resource tags
1514	Tags map[string]*string `json:"tags"`
1515}
1516
1517// MarshalJSON is the custom marshaler for ManagedCluster.
1518func (mc ManagedCluster) MarshalJSON() ([]byte, error) {
1519	objectMap := make(map[string]interface{})
1520	if mc.ManagedClusterProperties != nil {
1521		objectMap["properties"] = mc.ManagedClusterProperties
1522	}
1523	if mc.Identity != nil {
1524		objectMap["identity"] = mc.Identity
1525	}
1526	if mc.Location != nil {
1527		objectMap["location"] = mc.Location
1528	}
1529	if mc.Tags != nil {
1530		objectMap["tags"] = mc.Tags
1531	}
1532	return json.Marshal(objectMap)
1533}
1534
1535// UnmarshalJSON is the custom unmarshaler for ManagedCluster struct.
1536func (mc *ManagedCluster) UnmarshalJSON(body []byte) error {
1537	var m map[string]*json.RawMessage
1538	err := json.Unmarshal(body, &m)
1539	if err != nil {
1540		return err
1541	}
1542	for k, v := range m {
1543		switch k {
1544		case "properties":
1545			if v != nil {
1546				var managedClusterProperties ManagedClusterProperties
1547				err = json.Unmarshal(*v, &managedClusterProperties)
1548				if err != nil {
1549					return err
1550				}
1551				mc.ManagedClusterProperties = &managedClusterProperties
1552			}
1553		case "identity":
1554			if v != nil {
1555				var identity ManagedClusterIdentity
1556				err = json.Unmarshal(*v, &identity)
1557				if err != nil {
1558					return err
1559				}
1560				mc.Identity = &identity
1561			}
1562		case "id":
1563			if v != nil {
1564				var ID string
1565				err = json.Unmarshal(*v, &ID)
1566				if err != nil {
1567					return err
1568				}
1569				mc.ID = &ID
1570			}
1571		case "name":
1572			if v != nil {
1573				var name string
1574				err = json.Unmarshal(*v, &name)
1575				if err != nil {
1576					return err
1577				}
1578				mc.Name = &name
1579			}
1580		case "type":
1581			if v != nil {
1582				var typeVar string
1583				err = json.Unmarshal(*v, &typeVar)
1584				if err != nil {
1585					return err
1586				}
1587				mc.Type = &typeVar
1588			}
1589		case "location":
1590			if v != nil {
1591				var location string
1592				err = json.Unmarshal(*v, &location)
1593				if err != nil {
1594					return err
1595				}
1596				mc.Location = &location
1597			}
1598		case "tags":
1599			if v != nil {
1600				var tags map[string]*string
1601				err = json.Unmarshal(*v, &tags)
1602				if err != nil {
1603					return err
1604				}
1605				mc.Tags = tags
1606			}
1607		}
1608	}
1609
1610	return nil
1611}
1612
1613// ManagedClusterAADProfile aADProfile specifies attributes for Azure Active Directory integration.
1614type ManagedClusterAADProfile struct {
1615	// ClientAppID - The client AAD application ID.
1616	ClientAppID *string `json:"clientAppID,omitempty"`
1617	// ServerAppID - The server AAD application ID.
1618	ServerAppID *string `json:"serverAppID,omitempty"`
1619	// ServerAppSecret - The server AAD application secret.
1620	ServerAppSecret *string `json:"serverAppSecret,omitempty"`
1621	// TenantID - The AAD tenant ID to use for authentication. If not specified, will use the tenant of the deployment subscription.
1622	TenantID *string `json:"tenantID,omitempty"`
1623}
1624
1625// ManagedClusterAccessProfile managed cluster Access Profile.
1626type ManagedClusterAccessProfile struct {
1627	autorest.Response `json:"-"`
1628	// AccessProfile - AccessProfile of a managed cluster.
1629	*AccessProfile `json:"properties,omitempty"`
1630	// ID - READ-ONLY; Resource Id
1631	ID *string `json:"id,omitempty"`
1632	// Name - READ-ONLY; Resource name
1633	Name *string `json:"name,omitempty"`
1634	// Type - READ-ONLY; Resource type
1635	Type *string `json:"type,omitempty"`
1636	// Location - Resource location
1637	Location *string `json:"location,omitempty"`
1638	// Tags - Resource tags
1639	Tags map[string]*string `json:"tags"`
1640}
1641
1642// MarshalJSON is the custom marshaler for ManagedClusterAccessProfile.
1643func (mcap ManagedClusterAccessProfile) MarshalJSON() ([]byte, error) {
1644	objectMap := make(map[string]interface{})
1645	if mcap.AccessProfile != nil {
1646		objectMap["properties"] = mcap.AccessProfile
1647	}
1648	if mcap.Location != nil {
1649		objectMap["location"] = mcap.Location
1650	}
1651	if mcap.Tags != nil {
1652		objectMap["tags"] = mcap.Tags
1653	}
1654	return json.Marshal(objectMap)
1655}
1656
1657// UnmarshalJSON is the custom unmarshaler for ManagedClusterAccessProfile struct.
1658func (mcap *ManagedClusterAccessProfile) UnmarshalJSON(body []byte) error {
1659	var m map[string]*json.RawMessage
1660	err := json.Unmarshal(body, &m)
1661	if err != nil {
1662		return err
1663	}
1664	for k, v := range m {
1665		switch k {
1666		case "properties":
1667			if v != nil {
1668				var accessProfile AccessProfile
1669				err = json.Unmarshal(*v, &accessProfile)
1670				if err != nil {
1671					return err
1672				}
1673				mcap.AccessProfile = &accessProfile
1674			}
1675		case "id":
1676			if v != nil {
1677				var ID string
1678				err = json.Unmarshal(*v, &ID)
1679				if err != nil {
1680					return err
1681				}
1682				mcap.ID = &ID
1683			}
1684		case "name":
1685			if v != nil {
1686				var name string
1687				err = json.Unmarshal(*v, &name)
1688				if err != nil {
1689					return err
1690				}
1691				mcap.Name = &name
1692			}
1693		case "type":
1694			if v != nil {
1695				var typeVar string
1696				err = json.Unmarshal(*v, &typeVar)
1697				if err != nil {
1698					return err
1699				}
1700				mcap.Type = &typeVar
1701			}
1702		case "location":
1703			if v != nil {
1704				var location string
1705				err = json.Unmarshal(*v, &location)
1706				if err != nil {
1707					return err
1708				}
1709				mcap.Location = &location
1710			}
1711		case "tags":
1712			if v != nil {
1713				var tags map[string]*string
1714				err = json.Unmarshal(*v, &tags)
1715				if err != nil {
1716					return err
1717				}
1718				mcap.Tags = tags
1719			}
1720		}
1721	}
1722
1723	return nil
1724}
1725
1726// ManagedClusterAddonProfile a Kubernetes add-on profile for a managed cluster.
1727type ManagedClusterAddonProfile struct {
1728	// Enabled - Whether the add-on is enabled or not.
1729	Enabled *bool `json:"enabled,omitempty"`
1730	// Config - Key-value pairs for configuring an add-on.
1731	Config map[string]*string `json:"config"`
1732}
1733
1734// MarshalJSON is the custom marshaler for ManagedClusterAddonProfile.
1735func (mcap ManagedClusterAddonProfile) MarshalJSON() ([]byte, error) {
1736	objectMap := make(map[string]interface{})
1737	if mcap.Enabled != nil {
1738		objectMap["enabled"] = mcap.Enabled
1739	}
1740	if mcap.Config != nil {
1741		objectMap["config"] = mcap.Config
1742	}
1743	return json.Marshal(objectMap)
1744}
1745
1746// ManagedClusterAgentPoolProfile profile for the container service agent pool.
1747type ManagedClusterAgentPoolProfile struct {
1748	// Name - Unique name of the agent pool profile in the context of the subscription and resource group.
1749	Name *string `json:"name,omitempty"`
1750	// Count - Number of agents (VMs) to host docker containers. Allowed values must be in the range of 1 to 100 (inclusive). The default value is 1.
1751	Count *int32 `json:"count,omitempty"`
1752	// VMSize - Size of agent VMs. Possible values include: 'VMSizeTypesStandardA1', 'VMSizeTypesStandardA10', 'VMSizeTypesStandardA11', 'VMSizeTypesStandardA1V2', 'VMSizeTypesStandardA2', 'VMSizeTypesStandardA2V2', 'VMSizeTypesStandardA2mV2', 'VMSizeTypesStandardA3', 'VMSizeTypesStandardA4', 'VMSizeTypesStandardA4V2', 'VMSizeTypesStandardA4mV2', 'VMSizeTypesStandardA5', 'VMSizeTypesStandardA6', 'VMSizeTypesStandardA7', 'VMSizeTypesStandardA8', 'VMSizeTypesStandardA8V2', 'VMSizeTypesStandardA8mV2', 'VMSizeTypesStandardA9', 'VMSizeTypesStandardB2ms', 'VMSizeTypesStandardB2s', 'VMSizeTypesStandardB4ms', 'VMSizeTypesStandardB8ms', 'VMSizeTypesStandardD1', 'VMSizeTypesStandardD11', 'VMSizeTypesStandardD11V2', 'VMSizeTypesStandardD11V2Promo', 'VMSizeTypesStandardD12', 'VMSizeTypesStandardD12V2', 'VMSizeTypesStandardD12V2Promo', 'VMSizeTypesStandardD13', 'VMSizeTypesStandardD13V2', 'VMSizeTypesStandardD13V2Promo', 'VMSizeTypesStandardD14', 'VMSizeTypesStandardD14V2', 'VMSizeTypesStandardD14V2Promo', 'VMSizeTypesStandardD15V2', 'VMSizeTypesStandardD16V3', 'VMSizeTypesStandardD16sV3', 'VMSizeTypesStandardD1V2', 'VMSizeTypesStandardD2', 'VMSizeTypesStandardD2V2', 'VMSizeTypesStandardD2V2Promo', 'VMSizeTypesStandardD2V3', 'VMSizeTypesStandardD2sV3', 'VMSizeTypesStandardD3', 'VMSizeTypesStandardD32V3', 'VMSizeTypesStandardD32sV3', 'VMSizeTypesStandardD3V2', 'VMSizeTypesStandardD3V2Promo', 'VMSizeTypesStandardD4', 'VMSizeTypesStandardD4V2', 'VMSizeTypesStandardD4V2Promo', 'VMSizeTypesStandardD4V3', 'VMSizeTypesStandardD4sV3', 'VMSizeTypesStandardD5V2', 'VMSizeTypesStandardD5V2Promo', 'VMSizeTypesStandardD64V3', 'VMSizeTypesStandardD64sV3', 'VMSizeTypesStandardD8V3', 'VMSizeTypesStandardD8sV3', 'VMSizeTypesStandardDS1', 'VMSizeTypesStandardDS11', 'VMSizeTypesStandardDS11V2', 'VMSizeTypesStandardDS11V2Promo', 'VMSizeTypesStandardDS12', 'VMSizeTypesStandardDS12V2', 'VMSizeTypesStandardDS12V2Promo', 'VMSizeTypesStandardDS13', 'VMSizeTypesStandardDS132V2', 'VMSizeTypesStandardDS134V2', 'VMSizeTypesStandardDS13V2', 'VMSizeTypesStandardDS13V2Promo', 'VMSizeTypesStandardDS14', 'VMSizeTypesStandardDS144V2', 'VMSizeTypesStandardDS148V2', 'VMSizeTypesStandardDS14V2', 'VMSizeTypesStandardDS14V2Promo', 'VMSizeTypesStandardDS15V2', 'VMSizeTypesStandardDS1V2', 'VMSizeTypesStandardDS2', 'VMSizeTypesStandardDS2V2', 'VMSizeTypesStandardDS2V2Promo', 'VMSizeTypesStandardDS3', 'VMSizeTypesStandardDS3V2', 'VMSizeTypesStandardDS3V2Promo', 'VMSizeTypesStandardDS4', 'VMSizeTypesStandardDS4V2', 'VMSizeTypesStandardDS4V2Promo', 'VMSizeTypesStandardDS5V2', 'VMSizeTypesStandardDS5V2Promo', 'VMSizeTypesStandardE16V3', 'VMSizeTypesStandardE16sV3', 'VMSizeTypesStandardE2V3', 'VMSizeTypesStandardE2sV3', 'VMSizeTypesStandardE3216sV3', 'VMSizeTypesStandardE328sV3', 'VMSizeTypesStandardE32V3', 'VMSizeTypesStandardE32sV3', 'VMSizeTypesStandardE4V3', 'VMSizeTypesStandardE4sV3', 'VMSizeTypesStandardE6416sV3', 'VMSizeTypesStandardE6432sV3', 'VMSizeTypesStandardE64V3', 'VMSizeTypesStandardE64sV3', 'VMSizeTypesStandardE8V3', 'VMSizeTypesStandardE8sV3', 'VMSizeTypesStandardF1', 'VMSizeTypesStandardF16', 'VMSizeTypesStandardF16s', 'VMSizeTypesStandardF16sV2', 'VMSizeTypesStandardF1s', 'VMSizeTypesStandardF2', 'VMSizeTypesStandardF2s', 'VMSizeTypesStandardF2sV2', 'VMSizeTypesStandardF32sV2', 'VMSizeTypesStandardF4', 'VMSizeTypesStandardF4s', 'VMSizeTypesStandardF4sV2', 'VMSizeTypesStandardF64sV2', 'VMSizeTypesStandardF72sV2', 'VMSizeTypesStandardF8', 'VMSizeTypesStandardF8s', 'VMSizeTypesStandardF8sV2', 'VMSizeTypesStandardG1', 'VMSizeTypesStandardG2', 'VMSizeTypesStandardG3', 'VMSizeTypesStandardG4', 'VMSizeTypesStandardG5', 'VMSizeTypesStandardGS1', 'VMSizeTypesStandardGS2', 'VMSizeTypesStandardGS3', 'VMSizeTypesStandardGS4', 'VMSizeTypesStandardGS44', 'VMSizeTypesStandardGS48', 'VMSizeTypesStandardGS5', 'VMSizeTypesStandardGS516', 'VMSizeTypesStandardGS58', 'VMSizeTypesStandardH16', 'VMSizeTypesStandardH16m', 'VMSizeTypesStandardH16mr', 'VMSizeTypesStandardH16r', 'VMSizeTypesStandardH8', 'VMSizeTypesStandardH8m', 'VMSizeTypesStandardL16s', 'VMSizeTypesStandardL32s', 'VMSizeTypesStandardL4s', 'VMSizeTypesStandardL8s', 'VMSizeTypesStandardM12832ms', 'VMSizeTypesStandardM12864ms', 'VMSizeTypesStandardM128ms', 'VMSizeTypesStandardM128s', 'VMSizeTypesStandardM6416ms', 'VMSizeTypesStandardM6432ms', 'VMSizeTypesStandardM64ms', 'VMSizeTypesStandardM64s', 'VMSizeTypesStandardNC12', 'VMSizeTypesStandardNC12sV2', 'VMSizeTypesStandardNC12sV3', 'VMSizeTypesStandardNC24', 'VMSizeTypesStandardNC24r', 'VMSizeTypesStandardNC24rsV2', 'VMSizeTypesStandardNC24rsV3', 'VMSizeTypesStandardNC24sV2', 'VMSizeTypesStandardNC24sV3', 'VMSizeTypesStandardNC6', 'VMSizeTypesStandardNC6sV2', 'VMSizeTypesStandardNC6sV3', 'VMSizeTypesStandardND12s', 'VMSizeTypesStandardND24rs', 'VMSizeTypesStandardND24s', 'VMSizeTypesStandardND6s', 'VMSizeTypesStandardNV12', 'VMSizeTypesStandardNV24', 'VMSizeTypesStandardNV6'
1753	VMSize VMSizeTypes `json:"vmSize,omitempty"`
1754	// OsDiskSizeGB - OS Disk Size in GB to be used to specify the disk size for every machine in this master/agent pool. If you specify 0, it will apply the default osDisk size according to the vmSize specified.
1755	OsDiskSizeGB *int32 `json:"osDiskSizeGB,omitempty"`
1756	// VnetSubnetID - VNet SubnetID specifies the VNet's subnet identifier.
1757	VnetSubnetID *string `json:"vnetSubnetID,omitempty"`
1758	// MaxPods - Maximum number of pods that can run on a node.
1759	MaxPods *int32 `json:"maxPods,omitempty"`
1760	// OsType - OsType to be used to specify os type. Choose from Linux and Windows. Default to Linux. Possible values include: 'Linux', 'Windows'
1761	OsType OSType `json:"osType,omitempty"`
1762	// MaxCount - Maximum number of nodes for auto-scaling
1763	MaxCount *int32 `json:"maxCount,omitempty"`
1764	// MinCount - Minimum number of nodes for auto-scaling
1765	MinCount *int32 `json:"minCount,omitempty"`
1766	// EnableAutoScaling - Whether to enable auto-scaler
1767	EnableAutoScaling *bool `json:"enableAutoScaling,omitempty"`
1768	// Type - AgentPoolType represents types of an agent pool. Possible values include: 'VirtualMachineScaleSets', 'AvailabilitySet'
1769	Type AgentPoolType `json:"type,omitempty"`
1770	// OrchestratorVersion - Version of orchestrator specified when creating the managed cluster.
1771	OrchestratorVersion *string `json:"orchestratorVersion,omitempty"`
1772	// ProvisioningState - READ-ONLY; The current deployment or provisioning state, which only appears in the response.
1773	ProvisioningState *string `json:"provisioningState,omitempty"`
1774	// AvailabilityZones - (PREVIEW) Availability zones for nodes. Must use VirtualMachineScaleSets AgentPoolType.
1775	AvailabilityZones *[]string `json:"availabilityZones,omitempty"`
1776	// EnableNodePublicIP - Enable public IP for nodes
1777	EnableNodePublicIP *bool `json:"enableNodePublicIP,omitempty"`
1778	// ScaleSetPriority - ScaleSetPriority to be used to specify virtual machine scale set priority. Default to regular. Possible values include: 'Low', 'Regular'
1779	ScaleSetPriority ScaleSetPriority `json:"scaleSetPriority,omitempty"`
1780	// ScaleSetEvictionPolicy - ScaleSetEvictionPolicy to be used to specify eviction policy for low priority virtual machine scale set. Default to Delete. Possible values include: 'Delete', 'Deallocate'
1781	ScaleSetEvictionPolicy ScaleSetEvictionPolicy `json:"scaleSetEvictionPolicy,omitempty"`
1782	// NodeTaints - Taints added to new nodes during node pool create and scale. For example, key=value:NoSchedule.
1783	NodeTaints *[]string `json:"nodeTaints,omitempty"`
1784}
1785
1786// ManagedClusterAgentPoolProfileProperties properties for the container service agent pool profile.
1787type ManagedClusterAgentPoolProfileProperties struct {
1788	// Count - Number of agents (VMs) to host docker containers. Allowed values must be in the range of 1 to 100 (inclusive). The default value is 1.
1789	Count *int32 `json:"count,omitempty"`
1790	// VMSize - Size of agent VMs. Possible values include: 'VMSizeTypesStandardA1', 'VMSizeTypesStandardA10', 'VMSizeTypesStandardA11', 'VMSizeTypesStandardA1V2', 'VMSizeTypesStandardA2', 'VMSizeTypesStandardA2V2', 'VMSizeTypesStandardA2mV2', 'VMSizeTypesStandardA3', 'VMSizeTypesStandardA4', 'VMSizeTypesStandardA4V2', 'VMSizeTypesStandardA4mV2', 'VMSizeTypesStandardA5', 'VMSizeTypesStandardA6', 'VMSizeTypesStandardA7', 'VMSizeTypesStandardA8', 'VMSizeTypesStandardA8V2', 'VMSizeTypesStandardA8mV2', 'VMSizeTypesStandardA9', 'VMSizeTypesStandardB2ms', 'VMSizeTypesStandardB2s', 'VMSizeTypesStandardB4ms', 'VMSizeTypesStandardB8ms', 'VMSizeTypesStandardD1', 'VMSizeTypesStandardD11', 'VMSizeTypesStandardD11V2', 'VMSizeTypesStandardD11V2Promo', 'VMSizeTypesStandardD12', 'VMSizeTypesStandardD12V2', 'VMSizeTypesStandardD12V2Promo', 'VMSizeTypesStandardD13', 'VMSizeTypesStandardD13V2', 'VMSizeTypesStandardD13V2Promo', 'VMSizeTypesStandardD14', 'VMSizeTypesStandardD14V2', 'VMSizeTypesStandardD14V2Promo', 'VMSizeTypesStandardD15V2', 'VMSizeTypesStandardD16V3', 'VMSizeTypesStandardD16sV3', 'VMSizeTypesStandardD1V2', 'VMSizeTypesStandardD2', 'VMSizeTypesStandardD2V2', 'VMSizeTypesStandardD2V2Promo', 'VMSizeTypesStandardD2V3', 'VMSizeTypesStandardD2sV3', 'VMSizeTypesStandardD3', 'VMSizeTypesStandardD32V3', 'VMSizeTypesStandardD32sV3', 'VMSizeTypesStandardD3V2', 'VMSizeTypesStandardD3V2Promo', 'VMSizeTypesStandardD4', 'VMSizeTypesStandardD4V2', 'VMSizeTypesStandardD4V2Promo', 'VMSizeTypesStandardD4V3', 'VMSizeTypesStandardD4sV3', 'VMSizeTypesStandardD5V2', 'VMSizeTypesStandardD5V2Promo', 'VMSizeTypesStandardD64V3', 'VMSizeTypesStandardD64sV3', 'VMSizeTypesStandardD8V3', 'VMSizeTypesStandardD8sV3', 'VMSizeTypesStandardDS1', 'VMSizeTypesStandardDS11', 'VMSizeTypesStandardDS11V2', 'VMSizeTypesStandardDS11V2Promo', 'VMSizeTypesStandardDS12', 'VMSizeTypesStandardDS12V2', 'VMSizeTypesStandardDS12V2Promo', 'VMSizeTypesStandardDS13', 'VMSizeTypesStandardDS132V2', 'VMSizeTypesStandardDS134V2', 'VMSizeTypesStandardDS13V2', 'VMSizeTypesStandardDS13V2Promo', 'VMSizeTypesStandardDS14', 'VMSizeTypesStandardDS144V2', 'VMSizeTypesStandardDS148V2', 'VMSizeTypesStandardDS14V2', 'VMSizeTypesStandardDS14V2Promo', 'VMSizeTypesStandardDS15V2', 'VMSizeTypesStandardDS1V2', 'VMSizeTypesStandardDS2', 'VMSizeTypesStandardDS2V2', 'VMSizeTypesStandardDS2V2Promo', 'VMSizeTypesStandardDS3', 'VMSizeTypesStandardDS3V2', 'VMSizeTypesStandardDS3V2Promo', 'VMSizeTypesStandardDS4', 'VMSizeTypesStandardDS4V2', 'VMSizeTypesStandardDS4V2Promo', 'VMSizeTypesStandardDS5V2', 'VMSizeTypesStandardDS5V2Promo', 'VMSizeTypesStandardE16V3', 'VMSizeTypesStandardE16sV3', 'VMSizeTypesStandardE2V3', 'VMSizeTypesStandardE2sV3', 'VMSizeTypesStandardE3216sV3', 'VMSizeTypesStandardE328sV3', 'VMSizeTypesStandardE32V3', 'VMSizeTypesStandardE32sV3', 'VMSizeTypesStandardE4V3', 'VMSizeTypesStandardE4sV3', 'VMSizeTypesStandardE6416sV3', 'VMSizeTypesStandardE6432sV3', 'VMSizeTypesStandardE64V3', 'VMSizeTypesStandardE64sV3', 'VMSizeTypesStandardE8V3', 'VMSizeTypesStandardE8sV3', 'VMSizeTypesStandardF1', 'VMSizeTypesStandardF16', 'VMSizeTypesStandardF16s', 'VMSizeTypesStandardF16sV2', 'VMSizeTypesStandardF1s', 'VMSizeTypesStandardF2', 'VMSizeTypesStandardF2s', 'VMSizeTypesStandardF2sV2', 'VMSizeTypesStandardF32sV2', 'VMSizeTypesStandardF4', 'VMSizeTypesStandardF4s', 'VMSizeTypesStandardF4sV2', 'VMSizeTypesStandardF64sV2', 'VMSizeTypesStandardF72sV2', 'VMSizeTypesStandardF8', 'VMSizeTypesStandardF8s', 'VMSizeTypesStandardF8sV2', 'VMSizeTypesStandardG1', 'VMSizeTypesStandardG2', 'VMSizeTypesStandardG3', 'VMSizeTypesStandardG4', 'VMSizeTypesStandardG5', 'VMSizeTypesStandardGS1', 'VMSizeTypesStandardGS2', 'VMSizeTypesStandardGS3', 'VMSizeTypesStandardGS4', 'VMSizeTypesStandardGS44', 'VMSizeTypesStandardGS48', 'VMSizeTypesStandardGS5', 'VMSizeTypesStandardGS516', 'VMSizeTypesStandardGS58', 'VMSizeTypesStandardH16', 'VMSizeTypesStandardH16m', 'VMSizeTypesStandardH16mr', 'VMSizeTypesStandardH16r', 'VMSizeTypesStandardH8', 'VMSizeTypesStandardH8m', 'VMSizeTypesStandardL16s', 'VMSizeTypesStandardL32s', 'VMSizeTypesStandardL4s', 'VMSizeTypesStandardL8s', 'VMSizeTypesStandardM12832ms', 'VMSizeTypesStandardM12864ms', 'VMSizeTypesStandardM128ms', 'VMSizeTypesStandardM128s', 'VMSizeTypesStandardM6416ms', 'VMSizeTypesStandardM6432ms', 'VMSizeTypesStandardM64ms', 'VMSizeTypesStandardM64s', 'VMSizeTypesStandardNC12', 'VMSizeTypesStandardNC12sV2', 'VMSizeTypesStandardNC12sV3', 'VMSizeTypesStandardNC24', 'VMSizeTypesStandardNC24r', 'VMSizeTypesStandardNC24rsV2', 'VMSizeTypesStandardNC24rsV3', 'VMSizeTypesStandardNC24sV2', 'VMSizeTypesStandardNC24sV3', 'VMSizeTypesStandardNC6', 'VMSizeTypesStandardNC6sV2', 'VMSizeTypesStandardNC6sV3', 'VMSizeTypesStandardND12s', 'VMSizeTypesStandardND24rs', 'VMSizeTypesStandardND24s', 'VMSizeTypesStandardND6s', 'VMSizeTypesStandardNV12', 'VMSizeTypesStandardNV24', 'VMSizeTypesStandardNV6'
1791	VMSize VMSizeTypes `json:"vmSize,omitempty"`
1792	// OsDiskSizeGB - OS Disk Size in GB to be used to specify the disk size for every machine in this master/agent pool. If you specify 0, it will apply the default osDisk size according to the vmSize specified.
1793	OsDiskSizeGB *int32 `json:"osDiskSizeGB,omitempty"`
1794	// VnetSubnetID - VNet SubnetID specifies the VNet's subnet identifier.
1795	VnetSubnetID *string `json:"vnetSubnetID,omitempty"`
1796	// MaxPods - Maximum number of pods that can run on a node.
1797	MaxPods *int32 `json:"maxPods,omitempty"`
1798	// OsType - OsType to be used to specify os type. Choose from Linux and Windows. Default to Linux. Possible values include: 'Linux', 'Windows'
1799	OsType OSType `json:"osType,omitempty"`
1800	// MaxCount - Maximum number of nodes for auto-scaling
1801	MaxCount *int32 `json:"maxCount,omitempty"`
1802	// MinCount - Minimum number of nodes for auto-scaling
1803	MinCount *int32 `json:"minCount,omitempty"`
1804	// EnableAutoScaling - Whether to enable auto-scaler
1805	EnableAutoScaling *bool `json:"enableAutoScaling,omitempty"`
1806	// Type - AgentPoolType represents types of an agent pool. Possible values include: 'VirtualMachineScaleSets', 'AvailabilitySet'
1807	Type AgentPoolType `json:"type,omitempty"`
1808	// OrchestratorVersion - Version of orchestrator specified when creating the managed cluster.
1809	OrchestratorVersion *string `json:"orchestratorVersion,omitempty"`
1810	// ProvisioningState - READ-ONLY; The current deployment or provisioning state, which only appears in the response.
1811	ProvisioningState *string `json:"provisioningState,omitempty"`
1812	// AvailabilityZones - (PREVIEW) Availability zones for nodes. Must use VirtualMachineScaleSets AgentPoolType.
1813	AvailabilityZones *[]string `json:"availabilityZones,omitempty"`
1814	// EnableNodePublicIP - Enable public IP for nodes
1815	EnableNodePublicIP *bool `json:"enableNodePublicIP,omitempty"`
1816	// ScaleSetPriority - ScaleSetPriority to be used to specify virtual machine scale set priority. Default to regular. Possible values include: 'Low', 'Regular'
1817	ScaleSetPriority ScaleSetPriority `json:"scaleSetPriority,omitempty"`
1818	// ScaleSetEvictionPolicy - ScaleSetEvictionPolicy to be used to specify eviction policy for low priority virtual machine scale set. Default to Delete. Possible values include: 'Delete', 'Deallocate'
1819	ScaleSetEvictionPolicy ScaleSetEvictionPolicy `json:"scaleSetEvictionPolicy,omitempty"`
1820	// NodeTaints - Taints added to new nodes during node pool create and scale. For example, key=value:NoSchedule.
1821	NodeTaints *[]string `json:"nodeTaints,omitempty"`
1822}
1823
1824// ManagedClusterAPIServerAccessProfile access profile for managed cluster API server.
1825type ManagedClusterAPIServerAccessProfile struct {
1826	// AuthorizedIPRanges - Authorized IP Ranges to kubernetes API server.
1827	AuthorizedIPRanges *[]string `json:"authorizedIPRanges,omitempty"`
1828	// EnablePrivateCluster - Whether to create the cluster as a private cluster or not.
1829	EnablePrivateCluster *bool `json:"enablePrivateCluster,omitempty"`
1830}
1831
1832// ManagedClusterIdentity identity for the managed cluster.
1833type ManagedClusterIdentity struct {
1834	// PrincipalID - READ-ONLY; The principal id of the system assigned identity which is used by master components.
1835	PrincipalID *string `json:"principalId,omitempty"`
1836	// TenantID - READ-ONLY; The tenant id of the system assigned identity which is used by master components.
1837	TenantID *string `json:"tenantId,omitempty"`
1838	// Type - The type of identity used for the managed cluster. Type 'SystemAssigned' will use an implicitly created identity in master components and an auto-created user assigned identity in MC_ resource group in agent nodes. Type 'None' will not use MSI for the managed cluster, service principal will be used instead. Possible values include: 'SystemAssigned', 'None'
1839	Type ResourceIdentityType `json:"type,omitempty"`
1840}
1841
1842// ManagedClusterListResult the response from the List Managed Clusters operation.
1843type ManagedClusterListResult struct {
1844	autorest.Response `json:"-"`
1845	// Value - The list of managed clusters.
1846	Value *[]ManagedCluster `json:"value,omitempty"`
1847	// NextLink - READ-ONLY; The URL to get the next set of managed cluster results.
1848	NextLink *string `json:"nextLink,omitempty"`
1849}
1850
1851// ManagedClusterListResultIterator provides access to a complete listing of ManagedCluster values.
1852type ManagedClusterListResultIterator struct {
1853	i    int
1854	page ManagedClusterListResultPage
1855}
1856
1857// NextWithContext advances to the next value.  If there was an error making
1858// the request the iterator does not advance and the error is returned.
1859func (iter *ManagedClusterListResultIterator) NextWithContext(ctx context.Context) (err error) {
1860	if tracing.IsEnabled() {
1861		ctx = tracing.StartSpan(ctx, fqdn+"/ManagedClusterListResultIterator.NextWithContext")
1862		defer func() {
1863			sc := -1
1864			if iter.Response().Response.Response != nil {
1865				sc = iter.Response().Response.Response.StatusCode
1866			}
1867			tracing.EndSpan(ctx, sc, err)
1868		}()
1869	}
1870	iter.i++
1871	if iter.i < len(iter.page.Values()) {
1872		return nil
1873	}
1874	err = iter.page.NextWithContext(ctx)
1875	if err != nil {
1876		iter.i--
1877		return err
1878	}
1879	iter.i = 0
1880	return nil
1881}
1882
1883// Next advances to the next value.  If there was an error making
1884// the request the iterator does not advance and the error is returned.
1885// Deprecated: Use NextWithContext() instead.
1886func (iter *ManagedClusterListResultIterator) Next() error {
1887	return iter.NextWithContext(context.Background())
1888}
1889
1890// NotDone returns true if the enumeration should be started or is not yet complete.
1891func (iter ManagedClusterListResultIterator) NotDone() bool {
1892	return iter.page.NotDone() && iter.i < len(iter.page.Values())
1893}
1894
1895// Response returns the raw server response from the last page request.
1896func (iter ManagedClusterListResultIterator) Response() ManagedClusterListResult {
1897	return iter.page.Response()
1898}
1899
1900// Value returns the current value or a zero-initialized value if the
1901// iterator has advanced beyond the end of the collection.
1902func (iter ManagedClusterListResultIterator) Value() ManagedCluster {
1903	if !iter.page.NotDone() {
1904		return ManagedCluster{}
1905	}
1906	return iter.page.Values()[iter.i]
1907}
1908
1909// Creates a new instance of the ManagedClusterListResultIterator type.
1910func NewManagedClusterListResultIterator(page ManagedClusterListResultPage) ManagedClusterListResultIterator {
1911	return ManagedClusterListResultIterator{page: page}
1912}
1913
1914// IsEmpty returns true if the ListResult contains no values.
1915func (mclr ManagedClusterListResult) IsEmpty() bool {
1916	return mclr.Value == nil || len(*mclr.Value) == 0
1917}
1918
1919// managedClusterListResultPreparer prepares a request to retrieve the next set of results.
1920// It returns nil if no more results exist.
1921func (mclr ManagedClusterListResult) managedClusterListResultPreparer(ctx context.Context) (*http.Request, error) {
1922	if mclr.NextLink == nil || len(to.String(mclr.NextLink)) < 1 {
1923		return nil, nil
1924	}
1925	return autorest.Prepare((&http.Request{}).WithContext(ctx),
1926		autorest.AsJSON(),
1927		autorest.AsGet(),
1928		autorest.WithBaseURL(to.String(mclr.NextLink)))
1929}
1930
1931// ManagedClusterListResultPage contains a page of ManagedCluster values.
1932type ManagedClusterListResultPage struct {
1933	fn   func(context.Context, ManagedClusterListResult) (ManagedClusterListResult, error)
1934	mclr ManagedClusterListResult
1935}
1936
1937// NextWithContext advances to the next page of values.  If there was an error making
1938// the request the page does not advance and the error is returned.
1939func (page *ManagedClusterListResultPage) NextWithContext(ctx context.Context) (err error) {
1940	if tracing.IsEnabled() {
1941		ctx = tracing.StartSpan(ctx, fqdn+"/ManagedClusterListResultPage.NextWithContext")
1942		defer func() {
1943			sc := -1
1944			if page.Response().Response.Response != nil {
1945				sc = page.Response().Response.Response.StatusCode
1946			}
1947			tracing.EndSpan(ctx, sc, err)
1948		}()
1949	}
1950	next, err := page.fn(ctx, page.mclr)
1951	if err != nil {
1952		return err
1953	}
1954	page.mclr = next
1955	return nil
1956}
1957
1958// Next advances to the next page of values.  If there was an error making
1959// the request the page does not advance and the error is returned.
1960// Deprecated: Use NextWithContext() instead.
1961func (page *ManagedClusterListResultPage) Next() error {
1962	return page.NextWithContext(context.Background())
1963}
1964
1965// NotDone returns true if the page enumeration should be started or is not yet complete.
1966func (page ManagedClusterListResultPage) NotDone() bool {
1967	return !page.mclr.IsEmpty()
1968}
1969
1970// Response returns the raw server response from the last page request.
1971func (page ManagedClusterListResultPage) Response() ManagedClusterListResult {
1972	return page.mclr
1973}
1974
1975// Values returns the slice of values for the current page or nil if there are no values.
1976func (page ManagedClusterListResultPage) Values() []ManagedCluster {
1977	if page.mclr.IsEmpty() {
1978		return nil
1979	}
1980	return *page.mclr.Value
1981}
1982
1983// Creates a new instance of the ManagedClusterListResultPage type.
1984func NewManagedClusterListResultPage(getNextPage func(context.Context, ManagedClusterListResult) (ManagedClusterListResult, error)) ManagedClusterListResultPage {
1985	return ManagedClusterListResultPage{fn: getNextPage}
1986}
1987
1988// ManagedClusterLoadBalancerProfile profile of the managed cluster load balancer
1989type ManagedClusterLoadBalancerProfile struct {
1990	// ManagedOutboundIPs - Desired managed outbound IPs for the cluster load balancer.
1991	ManagedOutboundIPs *ManagedClusterLoadBalancerProfileManagedOutboundIPs `json:"managedOutboundIPs,omitempty"`
1992	// OutboundIPPrefixes - Desired outbound IP Prefix resources for the cluster load balancer.
1993	OutboundIPPrefixes *ManagedClusterLoadBalancerProfileOutboundIPPrefixes `json:"outboundIPPrefixes,omitempty"`
1994	// OutboundIPs - Desired outbound IP resources for the cluster load balancer.
1995	OutboundIPs *ManagedClusterLoadBalancerProfileOutboundIPs `json:"outboundIPs,omitempty"`
1996	// EffectiveOutboundIPs - The effective outbound IP resources of the cluster load balancer.
1997	EffectiveOutboundIPs *[]ResourceReference `json:"effectiveOutboundIPs,omitempty"`
1998}
1999
2000// ManagedClusterLoadBalancerProfileManagedOutboundIPs desired managed outbound IPs for the cluster load
2001// balancer.
2002type ManagedClusterLoadBalancerProfileManagedOutboundIPs struct {
2003	// Count - Desired number of outbound IP created/managed by Azure for the cluster load balancer. Allowed values must be in the range of 1 to 100 (inclusive). The default value is 1.
2004	Count *int32 `json:"count,omitempty"`
2005}
2006
2007// ManagedClusterLoadBalancerProfileOutboundIPPrefixes desired outbound IP Prefix resources for the cluster
2008// load balancer.
2009type ManagedClusterLoadBalancerProfileOutboundIPPrefixes struct {
2010	// PublicIPPrefixes - A list of public IP prefix resources.
2011	PublicIPPrefixes *[]ResourceReference `json:"publicIPPrefixes,omitempty"`
2012}
2013
2014// ManagedClusterLoadBalancerProfileOutboundIPs desired outbound IP resources for the cluster load
2015// balancer.
2016type ManagedClusterLoadBalancerProfileOutboundIPs struct {
2017	// PublicIPs - A list of public IP resources.
2018	PublicIPs *[]ResourceReference `json:"publicIPs,omitempty"`
2019}
2020
2021// ManagedClusterPoolUpgradeProfile the list of available upgrade versions.
2022type ManagedClusterPoolUpgradeProfile struct {
2023	// KubernetesVersion - Kubernetes version (major, minor, patch).
2024	KubernetesVersion *string `json:"kubernetesVersion,omitempty"`
2025	// Name - Pool name.
2026	Name *string `json:"name,omitempty"`
2027	// OsType - OsType to be used to specify os type. Choose from Linux and Windows. Default to Linux. Possible values include: 'Linux', 'Windows'
2028	OsType OSType `json:"osType,omitempty"`
2029	// Upgrades - List of orchestrator types and versions available for upgrade.
2030	Upgrades *[]ManagedClusterPoolUpgradeProfileUpgradesItem `json:"upgrades,omitempty"`
2031}
2032
2033// ManagedClusterPoolUpgradeProfileUpgradesItem ...
2034type ManagedClusterPoolUpgradeProfileUpgradesItem struct {
2035	// KubernetesVersion - Kubernetes version (major, minor, patch).
2036	KubernetesVersion *string `json:"kubernetesVersion,omitempty"`
2037	// IsPreview - Whether Kubernetes version is currently in preview.
2038	IsPreview *bool `json:"isPreview,omitempty"`
2039}
2040
2041// ManagedClusterProperties properties of the managed cluster.
2042type ManagedClusterProperties struct {
2043	// ProvisioningState - READ-ONLY; The current deployment or provisioning state, which only appears in the response.
2044	ProvisioningState *string `json:"provisioningState,omitempty"`
2045	// MaxAgentPools - READ-ONLY; The max number of agent pools for the managed cluster.
2046	MaxAgentPools *int32 `json:"maxAgentPools,omitempty"`
2047	// KubernetesVersion - Version of Kubernetes specified when creating the managed cluster.
2048	KubernetesVersion *string `json:"kubernetesVersion,omitempty"`
2049	// DNSPrefix - DNS prefix specified when creating the managed cluster.
2050	DNSPrefix *string `json:"dnsPrefix,omitempty"`
2051	// Fqdn - READ-ONLY; FQDN for the master pool.
2052	Fqdn *string `json:"fqdn,omitempty"`
2053	// PrivateFQDN - READ-ONLY; FQDN of private cluster.
2054	PrivateFQDN *string `json:"privateFQDN,omitempty"`
2055	// AgentPoolProfiles - Properties of the agent pool.
2056	AgentPoolProfiles *[]ManagedClusterAgentPoolProfile `json:"agentPoolProfiles,omitempty"`
2057	// LinuxProfile - Profile for Linux VMs in the container service cluster.
2058	LinuxProfile *LinuxProfile `json:"linuxProfile,omitempty"`
2059	// WindowsProfile - Profile for Windows VMs in the container service cluster.
2060	WindowsProfile *ManagedClusterWindowsProfile `json:"windowsProfile,omitempty"`
2061	// ServicePrincipalProfile - Information about a service principal identity for the cluster to use for manipulating Azure APIs.
2062	ServicePrincipalProfile *ManagedClusterServicePrincipalProfile `json:"servicePrincipalProfile,omitempty"`
2063	// AddonProfiles - Profile of managed cluster add-on.
2064	AddonProfiles map[string]*ManagedClusterAddonProfile `json:"addonProfiles"`
2065	// NodeResourceGroup - Name of the resource group containing agent pool nodes.
2066	NodeResourceGroup *string `json:"nodeResourceGroup,omitempty"`
2067	// EnableRBAC - Whether to enable Kubernetes Role-Based Access Control.
2068	EnableRBAC *bool `json:"enableRBAC,omitempty"`
2069	// EnablePodSecurityPolicy - (PREVIEW) Whether to enable Kubernetes Pod security policy.
2070	EnablePodSecurityPolicy *bool `json:"enablePodSecurityPolicy,omitempty"`
2071	// NetworkProfile - Profile of network configuration.
2072	NetworkProfile *NetworkProfileType `json:"networkProfile,omitempty"`
2073	// AadProfile - Profile of Azure Active Directory configuration.
2074	AadProfile *ManagedClusterAADProfile `json:"aadProfile,omitempty"`
2075	// APIServerAccessProfile - Access profile for managed cluster API server.
2076	APIServerAccessProfile *ManagedClusterAPIServerAccessProfile `json:"apiServerAccessProfile,omitempty"`
2077}
2078
2079// MarshalJSON is the custom marshaler for ManagedClusterProperties.
2080func (mcp ManagedClusterProperties) MarshalJSON() ([]byte, error) {
2081	objectMap := make(map[string]interface{})
2082	if mcp.KubernetesVersion != nil {
2083		objectMap["kubernetesVersion"] = mcp.KubernetesVersion
2084	}
2085	if mcp.DNSPrefix != nil {
2086		objectMap["dnsPrefix"] = mcp.DNSPrefix
2087	}
2088	if mcp.AgentPoolProfiles != nil {
2089		objectMap["agentPoolProfiles"] = mcp.AgentPoolProfiles
2090	}
2091	if mcp.LinuxProfile != nil {
2092		objectMap["linuxProfile"] = mcp.LinuxProfile
2093	}
2094	if mcp.WindowsProfile != nil {
2095		objectMap["windowsProfile"] = mcp.WindowsProfile
2096	}
2097	if mcp.ServicePrincipalProfile != nil {
2098		objectMap["servicePrincipalProfile"] = mcp.ServicePrincipalProfile
2099	}
2100	if mcp.AddonProfiles != nil {
2101		objectMap["addonProfiles"] = mcp.AddonProfiles
2102	}
2103	if mcp.NodeResourceGroup != nil {
2104		objectMap["nodeResourceGroup"] = mcp.NodeResourceGroup
2105	}
2106	if mcp.EnableRBAC != nil {
2107		objectMap["enableRBAC"] = mcp.EnableRBAC
2108	}
2109	if mcp.EnablePodSecurityPolicy != nil {
2110		objectMap["enablePodSecurityPolicy"] = mcp.EnablePodSecurityPolicy
2111	}
2112	if mcp.NetworkProfile != nil {
2113		objectMap["networkProfile"] = mcp.NetworkProfile
2114	}
2115	if mcp.AadProfile != nil {
2116		objectMap["aadProfile"] = mcp.AadProfile
2117	}
2118	if mcp.APIServerAccessProfile != nil {
2119		objectMap["apiServerAccessProfile"] = mcp.APIServerAccessProfile
2120	}
2121	return json.Marshal(objectMap)
2122}
2123
2124// ManagedClustersCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
2125// long-running operation.
2126type ManagedClustersCreateOrUpdateFuture struct {
2127	azure.Future
2128}
2129
2130// Result returns the result of the asynchronous operation.
2131// If the operation has not completed it will return an error.
2132func (future *ManagedClustersCreateOrUpdateFuture) Result(client ManagedClustersClient) (mc ManagedCluster, err error) {
2133	var done bool
2134	done, err = future.DoneWithContext(context.Background(), client)
2135	if err != nil {
2136		err = autorest.NewErrorWithError(err, "containerservice.ManagedClustersCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
2137		return
2138	}
2139	if !done {
2140		err = azure.NewAsyncOpIncompleteError("containerservice.ManagedClustersCreateOrUpdateFuture")
2141		return
2142	}
2143	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2144	if mc.Response.Response, err = future.GetResult(sender); err == nil && mc.Response.Response.StatusCode != http.StatusNoContent {
2145		mc, err = client.CreateOrUpdateResponder(mc.Response.Response)
2146		if err != nil {
2147			err = autorest.NewErrorWithError(err, "containerservice.ManagedClustersCreateOrUpdateFuture", "Result", mc.Response.Response, "Failure responding to request")
2148		}
2149	}
2150	return
2151}
2152
2153// ManagedClustersDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
2154// operation.
2155type ManagedClustersDeleteFuture struct {
2156	azure.Future
2157}
2158
2159// Result returns the result of the asynchronous operation.
2160// If the operation has not completed it will return an error.
2161func (future *ManagedClustersDeleteFuture) Result(client ManagedClustersClient) (ar autorest.Response, err error) {
2162	var done bool
2163	done, err = future.DoneWithContext(context.Background(), client)
2164	if err != nil {
2165		err = autorest.NewErrorWithError(err, "containerservice.ManagedClustersDeleteFuture", "Result", future.Response(), "Polling failure")
2166		return
2167	}
2168	if !done {
2169		err = azure.NewAsyncOpIncompleteError("containerservice.ManagedClustersDeleteFuture")
2170		return
2171	}
2172	ar.Response = future.Response()
2173	return
2174}
2175
2176// ManagedClusterServicePrincipalProfile information about a service principal identity for the cluster to
2177// use for manipulating Azure APIs.
2178type ManagedClusterServicePrincipalProfile struct {
2179	// ClientID - The ID for the service principal.
2180	ClientID *string `json:"clientId,omitempty"`
2181	// Secret - The secret password associated with the service principal in plain text.
2182	Secret *string `json:"secret,omitempty"`
2183}
2184
2185// ManagedClustersResetAADProfileFuture an abstraction for monitoring and retrieving the results of a
2186// long-running operation.
2187type ManagedClustersResetAADProfileFuture struct {
2188	azure.Future
2189}
2190
2191// Result returns the result of the asynchronous operation.
2192// If the operation has not completed it will return an error.
2193func (future *ManagedClustersResetAADProfileFuture) Result(client ManagedClustersClient) (ar autorest.Response, err error) {
2194	var done bool
2195	done, err = future.DoneWithContext(context.Background(), client)
2196	if err != nil {
2197		err = autorest.NewErrorWithError(err, "containerservice.ManagedClustersResetAADProfileFuture", "Result", future.Response(), "Polling failure")
2198		return
2199	}
2200	if !done {
2201		err = azure.NewAsyncOpIncompleteError("containerservice.ManagedClustersResetAADProfileFuture")
2202		return
2203	}
2204	ar.Response = future.Response()
2205	return
2206}
2207
2208// ManagedClustersResetServicePrincipalProfileFuture an abstraction for monitoring and retrieving the
2209// results of a long-running operation.
2210type ManagedClustersResetServicePrincipalProfileFuture struct {
2211	azure.Future
2212}
2213
2214// Result returns the result of the asynchronous operation.
2215// If the operation has not completed it will return an error.
2216func (future *ManagedClustersResetServicePrincipalProfileFuture) Result(client ManagedClustersClient) (ar autorest.Response, err error) {
2217	var done bool
2218	done, err = future.DoneWithContext(context.Background(), client)
2219	if err != nil {
2220		err = autorest.NewErrorWithError(err, "containerservice.ManagedClustersResetServicePrincipalProfileFuture", "Result", future.Response(), "Polling failure")
2221		return
2222	}
2223	if !done {
2224		err = azure.NewAsyncOpIncompleteError("containerservice.ManagedClustersResetServicePrincipalProfileFuture")
2225		return
2226	}
2227	ar.Response = future.Response()
2228	return
2229}
2230
2231// ManagedClustersRotateClusterCertificatesFuture an abstraction for monitoring and retrieving the results
2232// of a long-running operation.
2233type ManagedClustersRotateClusterCertificatesFuture struct {
2234	azure.Future
2235}
2236
2237// Result returns the result of the asynchronous operation.
2238// If the operation has not completed it will return an error.
2239func (future *ManagedClustersRotateClusterCertificatesFuture) Result(client ManagedClustersClient) (ar autorest.Response, err error) {
2240	var done bool
2241	done, err = future.DoneWithContext(context.Background(), client)
2242	if err != nil {
2243		err = autorest.NewErrorWithError(err, "containerservice.ManagedClustersRotateClusterCertificatesFuture", "Result", future.Response(), "Polling failure")
2244		return
2245	}
2246	if !done {
2247		err = azure.NewAsyncOpIncompleteError("containerservice.ManagedClustersRotateClusterCertificatesFuture")
2248		return
2249	}
2250	ar.Response = future.Response()
2251	return
2252}
2253
2254// ManagedClustersUpdateTagsFuture an abstraction for monitoring and retrieving the results of a
2255// long-running operation.
2256type ManagedClustersUpdateTagsFuture struct {
2257	azure.Future
2258}
2259
2260// Result returns the result of the asynchronous operation.
2261// If the operation has not completed it will return an error.
2262func (future *ManagedClustersUpdateTagsFuture) Result(client ManagedClustersClient) (mc ManagedCluster, err error) {
2263	var done bool
2264	done, err = future.DoneWithContext(context.Background(), client)
2265	if err != nil {
2266		err = autorest.NewErrorWithError(err, "containerservice.ManagedClustersUpdateTagsFuture", "Result", future.Response(), "Polling failure")
2267		return
2268	}
2269	if !done {
2270		err = azure.NewAsyncOpIncompleteError("containerservice.ManagedClustersUpdateTagsFuture")
2271		return
2272	}
2273	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2274	if mc.Response.Response, err = future.GetResult(sender); err == nil && mc.Response.Response.StatusCode != http.StatusNoContent {
2275		mc, err = client.UpdateTagsResponder(mc.Response.Response)
2276		if err != nil {
2277			err = autorest.NewErrorWithError(err, "containerservice.ManagedClustersUpdateTagsFuture", "Result", mc.Response.Response, "Failure responding to request")
2278		}
2279	}
2280	return
2281}
2282
2283// ManagedClusterUpgradeProfile the list of available upgrades for compute pools.
2284type ManagedClusterUpgradeProfile struct {
2285	autorest.Response `json:"-"`
2286	// ID - READ-ONLY; Id of upgrade profile.
2287	ID *string `json:"id,omitempty"`
2288	// Name - READ-ONLY; Name of upgrade profile.
2289	Name *string `json:"name,omitempty"`
2290	// Type - READ-ONLY; Type of upgrade profile.
2291	Type *string `json:"type,omitempty"`
2292	// ManagedClusterUpgradeProfileProperties - Properties of upgrade profile.
2293	*ManagedClusterUpgradeProfileProperties `json:"properties,omitempty"`
2294}
2295
2296// MarshalJSON is the custom marshaler for ManagedClusterUpgradeProfile.
2297func (mcup ManagedClusterUpgradeProfile) MarshalJSON() ([]byte, error) {
2298	objectMap := make(map[string]interface{})
2299	if mcup.ManagedClusterUpgradeProfileProperties != nil {
2300		objectMap["properties"] = mcup.ManagedClusterUpgradeProfileProperties
2301	}
2302	return json.Marshal(objectMap)
2303}
2304
2305// UnmarshalJSON is the custom unmarshaler for ManagedClusterUpgradeProfile struct.
2306func (mcup *ManagedClusterUpgradeProfile) UnmarshalJSON(body []byte) error {
2307	var m map[string]*json.RawMessage
2308	err := json.Unmarshal(body, &m)
2309	if err != nil {
2310		return err
2311	}
2312	for k, v := range m {
2313		switch k {
2314		case "id":
2315			if v != nil {
2316				var ID string
2317				err = json.Unmarshal(*v, &ID)
2318				if err != nil {
2319					return err
2320				}
2321				mcup.ID = &ID
2322			}
2323		case "name":
2324			if v != nil {
2325				var name string
2326				err = json.Unmarshal(*v, &name)
2327				if err != nil {
2328					return err
2329				}
2330				mcup.Name = &name
2331			}
2332		case "type":
2333			if v != nil {
2334				var typeVar string
2335				err = json.Unmarshal(*v, &typeVar)
2336				if err != nil {
2337					return err
2338				}
2339				mcup.Type = &typeVar
2340			}
2341		case "properties":
2342			if v != nil {
2343				var managedClusterUpgradeProfileProperties ManagedClusterUpgradeProfileProperties
2344				err = json.Unmarshal(*v, &managedClusterUpgradeProfileProperties)
2345				if err != nil {
2346					return err
2347				}
2348				mcup.ManagedClusterUpgradeProfileProperties = &managedClusterUpgradeProfileProperties
2349			}
2350		}
2351	}
2352
2353	return nil
2354}
2355
2356// ManagedClusterUpgradeProfileProperties control plane and agent pool upgrade profiles.
2357type ManagedClusterUpgradeProfileProperties struct {
2358	// ControlPlaneProfile - The list of available upgrade versions for the control plane.
2359	ControlPlaneProfile *ManagedClusterPoolUpgradeProfile `json:"controlPlaneProfile,omitempty"`
2360	// AgentPoolProfiles - The list of available upgrade versions for agent pools.
2361	AgentPoolProfiles *[]ManagedClusterPoolUpgradeProfile `json:"agentPoolProfiles,omitempty"`
2362}
2363
2364// ManagedClusterWindowsProfile profile for Windows VMs in the container service cluster.
2365type ManagedClusterWindowsProfile struct {
2366	// AdminUsername - The administrator username to use for Windows VMs.
2367	AdminUsername *string `json:"adminUsername,omitempty"`
2368	// AdminPassword - The administrator password to use for Windows VMs.
2369	AdminPassword *string `json:"adminPassword,omitempty"`
2370}
2371
2372// MasterProfile profile for the container service master.
2373type MasterProfile struct {
2374	// Count - Number of masters (VMs) in the container service cluster. Allowed values are 1, 3, and 5. The default value is 1.
2375	Count *int32 `json:"count,omitempty"`
2376	// DNSPrefix - DNS prefix to be used to create the FQDN for the master pool.
2377	DNSPrefix *string `json:"dnsPrefix,omitempty"`
2378	// VMSize - Size of agent VMs. Possible values include: 'VMSizeTypesStandardA1', 'VMSizeTypesStandardA10', 'VMSizeTypesStandardA11', 'VMSizeTypesStandardA1V2', 'VMSizeTypesStandardA2', 'VMSizeTypesStandardA2V2', 'VMSizeTypesStandardA2mV2', 'VMSizeTypesStandardA3', 'VMSizeTypesStandardA4', 'VMSizeTypesStandardA4V2', 'VMSizeTypesStandardA4mV2', 'VMSizeTypesStandardA5', 'VMSizeTypesStandardA6', 'VMSizeTypesStandardA7', 'VMSizeTypesStandardA8', 'VMSizeTypesStandardA8V2', 'VMSizeTypesStandardA8mV2', 'VMSizeTypesStandardA9', 'VMSizeTypesStandardB2ms', 'VMSizeTypesStandardB2s', 'VMSizeTypesStandardB4ms', 'VMSizeTypesStandardB8ms', 'VMSizeTypesStandardD1', 'VMSizeTypesStandardD11', 'VMSizeTypesStandardD11V2', 'VMSizeTypesStandardD11V2Promo', 'VMSizeTypesStandardD12', 'VMSizeTypesStandardD12V2', 'VMSizeTypesStandardD12V2Promo', 'VMSizeTypesStandardD13', 'VMSizeTypesStandardD13V2', 'VMSizeTypesStandardD13V2Promo', 'VMSizeTypesStandardD14', 'VMSizeTypesStandardD14V2', 'VMSizeTypesStandardD14V2Promo', 'VMSizeTypesStandardD15V2', 'VMSizeTypesStandardD16V3', 'VMSizeTypesStandardD16sV3', 'VMSizeTypesStandardD1V2', 'VMSizeTypesStandardD2', 'VMSizeTypesStandardD2V2', 'VMSizeTypesStandardD2V2Promo', 'VMSizeTypesStandardD2V3', 'VMSizeTypesStandardD2sV3', 'VMSizeTypesStandardD3', 'VMSizeTypesStandardD32V3', 'VMSizeTypesStandardD32sV3', 'VMSizeTypesStandardD3V2', 'VMSizeTypesStandardD3V2Promo', 'VMSizeTypesStandardD4', 'VMSizeTypesStandardD4V2', 'VMSizeTypesStandardD4V2Promo', 'VMSizeTypesStandardD4V3', 'VMSizeTypesStandardD4sV3', 'VMSizeTypesStandardD5V2', 'VMSizeTypesStandardD5V2Promo', 'VMSizeTypesStandardD64V3', 'VMSizeTypesStandardD64sV3', 'VMSizeTypesStandardD8V3', 'VMSizeTypesStandardD8sV3', 'VMSizeTypesStandardDS1', 'VMSizeTypesStandardDS11', 'VMSizeTypesStandardDS11V2', 'VMSizeTypesStandardDS11V2Promo', 'VMSizeTypesStandardDS12', 'VMSizeTypesStandardDS12V2', 'VMSizeTypesStandardDS12V2Promo', 'VMSizeTypesStandardDS13', 'VMSizeTypesStandardDS132V2', 'VMSizeTypesStandardDS134V2', 'VMSizeTypesStandardDS13V2', 'VMSizeTypesStandardDS13V2Promo', 'VMSizeTypesStandardDS14', 'VMSizeTypesStandardDS144V2', 'VMSizeTypesStandardDS148V2', 'VMSizeTypesStandardDS14V2', 'VMSizeTypesStandardDS14V2Promo', 'VMSizeTypesStandardDS15V2', 'VMSizeTypesStandardDS1V2', 'VMSizeTypesStandardDS2', 'VMSizeTypesStandardDS2V2', 'VMSizeTypesStandardDS2V2Promo', 'VMSizeTypesStandardDS3', 'VMSizeTypesStandardDS3V2', 'VMSizeTypesStandardDS3V2Promo', 'VMSizeTypesStandardDS4', 'VMSizeTypesStandardDS4V2', 'VMSizeTypesStandardDS4V2Promo', 'VMSizeTypesStandardDS5V2', 'VMSizeTypesStandardDS5V2Promo', 'VMSizeTypesStandardE16V3', 'VMSizeTypesStandardE16sV3', 'VMSizeTypesStandardE2V3', 'VMSizeTypesStandardE2sV3', 'VMSizeTypesStandardE3216sV3', 'VMSizeTypesStandardE328sV3', 'VMSizeTypesStandardE32V3', 'VMSizeTypesStandardE32sV3', 'VMSizeTypesStandardE4V3', 'VMSizeTypesStandardE4sV3', 'VMSizeTypesStandardE6416sV3', 'VMSizeTypesStandardE6432sV3', 'VMSizeTypesStandardE64V3', 'VMSizeTypesStandardE64sV3', 'VMSizeTypesStandardE8V3', 'VMSizeTypesStandardE8sV3', 'VMSizeTypesStandardF1', 'VMSizeTypesStandardF16', 'VMSizeTypesStandardF16s', 'VMSizeTypesStandardF16sV2', 'VMSizeTypesStandardF1s', 'VMSizeTypesStandardF2', 'VMSizeTypesStandardF2s', 'VMSizeTypesStandardF2sV2', 'VMSizeTypesStandardF32sV2', 'VMSizeTypesStandardF4', 'VMSizeTypesStandardF4s', 'VMSizeTypesStandardF4sV2', 'VMSizeTypesStandardF64sV2', 'VMSizeTypesStandardF72sV2', 'VMSizeTypesStandardF8', 'VMSizeTypesStandardF8s', 'VMSizeTypesStandardF8sV2', 'VMSizeTypesStandardG1', 'VMSizeTypesStandardG2', 'VMSizeTypesStandardG3', 'VMSizeTypesStandardG4', 'VMSizeTypesStandardG5', 'VMSizeTypesStandardGS1', 'VMSizeTypesStandardGS2', 'VMSizeTypesStandardGS3', 'VMSizeTypesStandardGS4', 'VMSizeTypesStandardGS44', 'VMSizeTypesStandardGS48', 'VMSizeTypesStandardGS5', 'VMSizeTypesStandardGS516', 'VMSizeTypesStandardGS58', 'VMSizeTypesStandardH16', 'VMSizeTypesStandardH16m', 'VMSizeTypesStandardH16mr', 'VMSizeTypesStandardH16r', 'VMSizeTypesStandardH8', 'VMSizeTypesStandardH8m', 'VMSizeTypesStandardL16s', 'VMSizeTypesStandardL32s', 'VMSizeTypesStandardL4s', 'VMSizeTypesStandardL8s', 'VMSizeTypesStandardM12832ms', 'VMSizeTypesStandardM12864ms', 'VMSizeTypesStandardM128ms', 'VMSizeTypesStandardM128s', 'VMSizeTypesStandardM6416ms', 'VMSizeTypesStandardM6432ms', 'VMSizeTypesStandardM64ms', 'VMSizeTypesStandardM64s', 'VMSizeTypesStandardNC12', 'VMSizeTypesStandardNC12sV2', 'VMSizeTypesStandardNC12sV3', 'VMSizeTypesStandardNC24', 'VMSizeTypesStandardNC24r', 'VMSizeTypesStandardNC24rsV2', 'VMSizeTypesStandardNC24rsV3', 'VMSizeTypesStandardNC24sV2', 'VMSizeTypesStandardNC24sV3', 'VMSizeTypesStandardNC6', 'VMSizeTypesStandardNC6sV2', 'VMSizeTypesStandardNC6sV3', 'VMSizeTypesStandardND12s', 'VMSizeTypesStandardND24rs', 'VMSizeTypesStandardND24s', 'VMSizeTypesStandardND6s', 'VMSizeTypesStandardNV12', 'VMSizeTypesStandardNV24', 'VMSizeTypesStandardNV6'
2379	VMSize VMSizeTypes `json:"vmSize,omitempty"`
2380	// OsDiskSizeGB - OS Disk Size in GB to be used to specify the disk size for every machine in this master/agent pool. If you specify 0, it will apply the default osDisk size according to the vmSize specified.
2381	OsDiskSizeGB *int32 `json:"osDiskSizeGB,omitempty"`
2382	// VnetSubnetID - VNet SubnetID specifies the VNet's subnet identifier.
2383	VnetSubnetID *string `json:"vnetSubnetID,omitempty"`
2384	// FirstConsecutiveStaticIP - FirstConsecutiveStaticIP used to specify the first static ip of masters.
2385	FirstConsecutiveStaticIP *string `json:"firstConsecutiveStaticIP,omitempty"`
2386	// StorageProfile - Storage profile specifies what kind of storage used. Choose from StorageAccount and ManagedDisks. Leave it empty, we will choose for you based on the orchestrator choice. Possible values include: 'StorageAccount', 'ManagedDisks'
2387	StorageProfile StorageProfileTypes `json:"storageProfile,omitempty"`
2388	// Fqdn - READ-ONLY; FQDN for the master pool.
2389	Fqdn *string `json:"fqdn,omitempty"`
2390}
2391
2392// NetworkProfile represents the OpenShift networking configuration
2393type NetworkProfile struct {
2394	// VnetCidr - CIDR for the OpenShift Vnet.
2395	VnetCidr *string `json:"vnetCidr,omitempty"`
2396	// PeerVnetID - CIDR of the Vnet to peer.
2397	PeerVnetID *string `json:"peerVnetId,omitempty"`
2398	// VnetID - ID of the Vnet created for OSA cluster.
2399	VnetID *string `json:"vnetId,omitempty"`
2400}
2401
2402// NetworkProfileType profile of network configuration.
2403type NetworkProfileType struct {
2404	// NetworkPlugin - Network plugin used for building Kubernetes network. Possible values include: 'Azure', 'Kubenet'
2405	NetworkPlugin NetworkPlugin `json:"networkPlugin,omitempty"`
2406	// NetworkPolicy - Network policy used for building Kubernetes network. Possible values include: 'NetworkPolicyCalico', 'NetworkPolicyAzure'
2407	NetworkPolicy NetworkPolicy `json:"networkPolicy,omitempty"`
2408	// PodCidr - A CIDR notation IP range from which to assign pod IPs when kubenet is used.
2409	PodCidr *string `json:"podCidr,omitempty"`
2410	// ServiceCidr - A CIDR notation IP range from which to assign service cluster IPs. It must not overlap with any Subnet IP ranges.
2411	ServiceCidr *string `json:"serviceCidr,omitempty"`
2412	// DNSServiceIP - An IP address assigned to the Kubernetes DNS service. It must be within the Kubernetes service address range specified in serviceCidr.
2413	DNSServiceIP *string `json:"dnsServiceIP,omitempty"`
2414	// DockerBridgeCidr - A CIDR notation IP range assigned to the Docker bridge network. It must not overlap with any Subnet IP ranges or the Kubernetes service address range.
2415	DockerBridgeCidr *string `json:"dockerBridgeCidr,omitempty"`
2416	// LoadBalancerSku - The load balancer sku for the managed cluster. Possible values include: 'Standard', 'Basic'
2417	LoadBalancerSku LoadBalancerSku `json:"loadBalancerSku,omitempty"`
2418	// LoadBalancerProfile - Profile of the cluster load balancer.
2419	LoadBalancerProfile *ManagedClusterLoadBalancerProfile `json:"loadBalancerProfile,omitempty"`
2420}
2421
2422// OpenShiftManagedCluster openShift Managed cluster.
2423type OpenShiftManagedCluster struct {
2424	autorest.Response `json:"-"`
2425	// Plan - Define the resource plan as required by ARM for billing purposes
2426	Plan *PurchasePlan `json:"plan,omitempty"`
2427	// OpenShiftManagedClusterProperties - Properties of a OpenShift managed cluster.
2428	*OpenShiftManagedClusterProperties `json:"properties,omitempty"`
2429	// ID - READ-ONLY; Resource Id
2430	ID *string `json:"id,omitempty"`
2431	// Name - READ-ONLY; Resource name
2432	Name *string `json:"name,omitempty"`
2433	// Type - READ-ONLY; Resource type
2434	Type *string `json:"type,omitempty"`
2435	// Location - Resource location
2436	Location *string `json:"location,omitempty"`
2437	// Tags - Resource tags
2438	Tags map[string]*string `json:"tags"`
2439}
2440
2441// MarshalJSON is the custom marshaler for OpenShiftManagedCluster.
2442func (osmc OpenShiftManagedCluster) MarshalJSON() ([]byte, error) {
2443	objectMap := make(map[string]interface{})
2444	if osmc.Plan != nil {
2445		objectMap["plan"] = osmc.Plan
2446	}
2447	if osmc.OpenShiftManagedClusterProperties != nil {
2448		objectMap["properties"] = osmc.OpenShiftManagedClusterProperties
2449	}
2450	if osmc.Location != nil {
2451		objectMap["location"] = osmc.Location
2452	}
2453	if osmc.Tags != nil {
2454		objectMap["tags"] = osmc.Tags
2455	}
2456	return json.Marshal(objectMap)
2457}
2458
2459// UnmarshalJSON is the custom unmarshaler for OpenShiftManagedCluster struct.
2460func (osmc *OpenShiftManagedCluster) UnmarshalJSON(body []byte) error {
2461	var m map[string]*json.RawMessage
2462	err := json.Unmarshal(body, &m)
2463	if err != nil {
2464		return err
2465	}
2466	for k, v := range m {
2467		switch k {
2468		case "plan":
2469			if v != nil {
2470				var plan PurchasePlan
2471				err = json.Unmarshal(*v, &plan)
2472				if err != nil {
2473					return err
2474				}
2475				osmc.Plan = &plan
2476			}
2477		case "properties":
2478			if v != nil {
2479				var openShiftManagedClusterProperties OpenShiftManagedClusterProperties
2480				err = json.Unmarshal(*v, &openShiftManagedClusterProperties)
2481				if err != nil {
2482					return err
2483				}
2484				osmc.OpenShiftManagedClusterProperties = &openShiftManagedClusterProperties
2485			}
2486		case "id":
2487			if v != nil {
2488				var ID string
2489				err = json.Unmarshal(*v, &ID)
2490				if err != nil {
2491					return err
2492				}
2493				osmc.ID = &ID
2494			}
2495		case "name":
2496			if v != nil {
2497				var name string
2498				err = json.Unmarshal(*v, &name)
2499				if err != nil {
2500					return err
2501				}
2502				osmc.Name = &name
2503			}
2504		case "type":
2505			if v != nil {
2506				var typeVar string
2507				err = json.Unmarshal(*v, &typeVar)
2508				if err != nil {
2509					return err
2510				}
2511				osmc.Type = &typeVar
2512			}
2513		case "location":
2514			if v != nil {
2515				var location string
2516				err = json.Unmarshal(*v, &location)
2517				if err != nil {
2518					return err
2519				}
2520				osmc.Location = &location
2521			}
2522		case "tags":
2523			if v != nil {
2524				var tags map[string]*string
2525				err = json.Unmarshal(*v, &tags)
2526				if err != nil {
2527					return err
2528				}
2529				osmc.Tags = tags
2530			}
2531		}
2532	}
2533
2534	return nil
2535}
2536
2537// OpenShiftManagedClusterAADIdentityProvider defines the Identity provider for MS AAD.
2538type OpenShiftManagedClusterAADIdentityProvider struct {
2539	// ClientID - The clientId password associated with the provider.
2540	ClientID *string `json:"clientId,omitempty"`
2541	// Secret - The secret password associated with the provider.
2542	Secret *string `json:"secret,omitempty"`
2543	// TenantID - The tenantId associated with the provider.
2544	TenantID *string `json:"tenantId,omitempty"`
2545	// CustomerAdminGroupID - The groupId to be granted cluster admin role.
2546	CustomerAdminGroupID *string `json:"customerAdminGroupId,omitempty"`
2547	// Kind - Possible values include: 'KindOpenShiftManagedClusterBaseIdentityProvider', 'KindAADIdentityProvider'
2548	Kind Kind `json:"kind,omitempty"`
2549}
2550
2551// MarshalJSON is the custom marshaler for OpenShiftManagedClusterAADIdentityProvider.
2552func (osmcaip OpenShiftManagedClusterAADIdentityProvider) MarshalJSON() ([]byte, error) {
2553	osmcaip.Kind = KindAADIdentityProvider
2554	objectMap := make(map[string]interface{})
2555	if osmcaip.ClientID != nil {
2556		objectMap["clientId"] = osmcaip.ClientID
2557	}
2558	if osmcaip.Secret != nil {
2559		objectMap["secret"] = osmcaip.Secret
2560	}
2561	if osmcaip.TenantID != nil {
2562		objectMap["tenantId"] = osmcaip.TenantID
2563	}
2564	if osmcaip.CustomerAdminGroupID != nil {
2565		objectMap["customerAdminGroupId"] = osmcaip.CustomerAdminGroupID
2566	}
2567	if osmcaip.Kind != "" {
2568		objectMap["kind"] = osmcaip.Kind
2569	}
2570	return json.Marshal(objectMap)
2571}
2572
2573// AsOpenShiftManagedClusterAADIdentityProvider is the BasicOpenShiftManagedClusterBaseIdentityProvider implementation for OpenShiftManagedClusterAADIdentityProvider.
2574func (osmcaip OpenShiftManagedClusterAADIdentityProvider) AsOpenShiftManagedClusterAADIdentityProvider() (*OpenShiftManagedClusterAADIdentityProvider, bool) {
2575	return &osmcaip, true
2576}
2577
2578// AsOpenShiftManagedClusterBaseIdentityProvider is the BasicOpenShiftManagedClusterBaseIdentityProvider implementation for OpenShiftManagedClusterAADIdentityProvider.
2579func (osmcaip OpenShiftManagedClusterAADIdentityProvider) AsOpenShiftManagedClusterBaseIdentityProvider() (*OpenShiftManagedClusterBaseIdentityProvider, bool) {
2580	return nil, false
2581}
2582
2583// AsBasicOpenShiftManagedClusterBaseIdentityProvider is the BasicOpenShiftManagedClusterBaseIdentityProvider implementation for OpenShiftManagedClusterAADIdentityProvider.
2584func (osmcaip OpenShiftManagedClusterAADIdentityProvider) AsBasicOpenShiftManagedClusterBaseIdentityProvider() (BasicOpenShiftManagedClusterBaseIdentityProvider, bool) {
2585	return &osmcaip, true
2586}
2587
2588// OpenShiftManagedClusterAgentPoolProfile defines the configuration of the OpenShift cluster VMs.
2589type OpenShiftManagedClusterAgentPoolProfile struct {
2590	// Name - Unique name of the pool profile in the context of the subscription and resource group.
2591	Name *string `json:"name,omitempty"`
2592	// Count - Number of agents (VMs) to host docker containers.
2593	Count *int32 `json:"count,omitempty"`
2594	// VMSize - Size of agent VMs. Possible values include: 'StandardD2sV3', 'StandardD4sV3', 'StandardD8sV3', 'StandardD16sV3', 'StandardD32sV3', 'StandardD64sV3', 'StandardDS4V2', 'StandardDS5V2', 'StandardF8sV2', 'StandardF16sV2', 'StandardF32sV2', 'StandardF64sV2', 'StandardF72sV2', 'StandardF8s', 'StandardF16s', 'StandardE4sV3', 'StandardE8sV3', 'StandardE16sV3', 'StandardE20sV3', 'StandardE32sV3', 'StandardE64sV3', 'StandardGS2', 'StandardGS3', 'StandardGS4', 'StandardGS5', 'StandardDS12V2', 'StandardDS13V2', 'StandardDS14V2', 'StandardDS15V2', 'StandardL4s', 'StandardL8s', 'StandardL16s', 'StandardL32s'
2595	VMSize OpenShiftContainerServiceVMSize `json:"vmSize,omitempty"`
2596	// SubnetCidr - Subnet CIDR for the peering.
2597	SubnetCidr *string `json:"subnetCidr,omitempty"`
2598	// OsType - OsType to be used to specify os type. Choose from Linux and Windows. Default to Linux. Possible values include: 'Linux', 'Windows'
2599	OsType OSType `json:"osType,omitempty"`
2600	// Role - Define the role of the AgentPoolProfile. Possible values include: 'Compute', 'Infra'
2601	Role OpenShiftAgentPoolProfileRole `json:"role,omitempty"`
2602}
2603
2604// OpenShiftManagedClusterAuthProfile defines all possible authentication profiles for the OpenShift
2605// cluster.
2606type OpenShiftManagedClusterAuthProfile struct {
2607	// IdentityProviders - Type of authentication profile to use.
2608	IdentityProviders *[]OpenShiftManagedClusterIdentityProvider `json:"identityProviders,omitempty"`
2609}
2610
2611// BasicOpenShiftManagedClusterBaseIdentityProvider structure for any Identity provider.
2612type BasicOpenShiftManagedClusterBaseIdentityProvider interface {
2613	AsOpenShiftManagedClusterAADIdentityProvider() (*OpenShiftManagedClusterAADIdentityProvider, bool)
2614	AsOpenShiftManagedClusterBaseIdentityProvider() (*OpenShiftManagedClusterBaseIdentityProvider, bool)
2615}
2616
2617// OpenShiftManagedClusterBaseIdentityProvider structure for any Identity provider.
2618type OpenShiftManagedClusterBaseIdentityProvider struct {
2619	// Kind - Possible values include: 'KindOpenShiftManagedClusterBaseIdentityProvider', 'KindAADIdentityProvider'
2620	Kind Kind `json:"kind,omitempty"`
2621}
2622
2623func unmarshalBasicOpenShiftManagedClusterBaseIdentityProvider(body []byte) (BasicOpenShiftManagedClusterBaseIdentityProvider, error) {
2624	var m map[string]interface{}
2625	err := json.Unmarshal(body, &m)
2626	if err != nil {
2627		return nil, err
2628	}
2629
2630	switch m["kind"] {
2631	case string(KindAADIdentityProvider):
2632		var osmcaip OpenShiftManagedClusterAADIdentityProvider
2633		err := json.Unmarshal(body, &osmcaip)
2634		return osmcaip, err
2635	default:
2636		var osmcbip OpenShiftManagedClusterBaseIdentityProvider
2637		err := json.Unmarshal(body, &osmcbip)
2638		return osmcbip, err
2639	}
2640}
2641func unmarshalBasicOpenShiftManagedClusterBaseIdentityProviderArray(body []byte) ([]BasicOpenShiftManagedClusterBaseIdentityProvider, error) {
2642	var rawMessages []*json.RawMessage
2643	err := json.Unmarshal(body, &rawMessages)
2644	if err != nil {
2645		return nil, err
2646	}
2647
2648	osmcbipArray := make([]BasicOpenShiftManagedClusterBaseIdentityProvider, len(rawMessages))
2649
2650	for index, rawMessage := range rawMessages {
2651		osmcbip, err := unmarshalBasicOpenShiftManagedClusterBaseIdentityProvider(*rawMessage)
2652		if err != nil {
2653			return nil, err
2654		}
2655		osmcbipArray[index] = osmcbip
2656	}
2657	return osmcbipArray, nil
2658}
2659
2660// MarshalJSON is the custom marshaler for OpenShiftManagedClusterBaseIdentityProvider.
2661func (osmcbip OpenShiftManagedClusterBaseIdentityProvider) MarshalJSON() ([]byte, error) {
2662	osmcbip.Kind = KindOpenShiftManagedClusterBaseIdentityProvider
2663	objectMap := make(map[string]interface{})
2664	if osmcbip.Kind != "" {
2665		objectMap["kind"] = osmcbip.Kind
2666	}
2667	return json.Marshal(objectMap)
2668}
2669
2670// AsOpenShiftManagedClusterAADIdentityProvider is the BasicOpenShiftManagedClusterBaseIdentityProvider implementation for OpenShiftManagedClusterBaseIdentityProvider.
2671func (osmcbip OpenShiftManagedClusterBaseIdentityProvider) AsOpenShiftManagedClusterAADIdentityProvider() (*OpenShiftManagedClusterAADIdentityProvider, bool) {
2672	return nil, false
2673}
2674
2675// AsOpenShiftManagedClusterBaseIdentityProvider is the BasicOpenShiftManagedClusterBaseIdentityProvider implementation for OpenShiftManagedClusterBaseIdentityProvider.
2676func (osmcbip OpenShiftManagedClusterBaseIdentityProvider) AsOpenShiftManagedClusterBaseIdentityProvider() (*OpenShiftManagedClusterBaseIdentityProvider, bool) {
2677	return &osmcbip, true
2678}
2679
2680// AsBasicOpenShiftManagedClusterBaseIdentityProvider is the BasicOpenShiftManagedClusterBaseIdentityProvider implementation for OpenShiftManagedClusterBaseIdentityProvider.
2681func (osmcbip OpenShiftManagedClusterBaseIdentityProvider) AsBasicOpenShiftManagedClusterBaseIdentityProvider() (BasicOpenShiftManagedClusterBaseIdentityProvider, bool) {
2682	return &osmcbip, true
2683}
2684
2685// OpenShiftManagedClusterIdentityProvider defines the configuration of the identity providers to be used
2686// in the OpenShift cluster.
2687type OpenShiftManagedClusterIdentityProvider struct {
2688	// Name - Name of the provider.
2689	Name *string `json:"name,omitempty"`
2690	// Provider - Configuration of the provider.
2691	Provider BasicOpenShiftManagedClusterBaseIdentityProvider `json:"provider,omitempty"`
2692}
2693
2694// UnmarshalJSON is the custom unmarshaler for OpenShiftManagedClusterIdentityProvider struct.
2695func (osmcip *OpenShiftManagedClusterIdentityProvider) UnmarshalJSON(body []byte) error {
2696	var m map[string]*json.RawMessage
2697	err := json.Unmarshal(body, &m)
2698	if err != nil {
2699		return err
2700	}
2701	for k, v := range m {
2702		switch k {
2703		case "name":
2704			if v != nil {
2705				var name string
2706				err = json.Unmarshal(*v, &name)
2707				if err != nil {
2708					return err
2709				}
2710				osmcip.Name = &name
2711			}
2712		case "provider":
2713			if v != nil {
2714				provider, err := unmarshalBasicOpenShiftManagedClusterBaseIdentityProvider(*v)
2715				if err != nil {
2716					return err
2717				}
2718				osmcip.Provider = provider
2719			}
2720		}
2721	}
2722
2723	return nil
2724}
2725
2726// OpenShiftManagedClusterListResult the response from the List OpenShift Managed Clusters operation.
2727type OpenShiftManagedClusterListResult struct {
2728	autorest.Response `json:"-"`
2729	// Value - The list of OpenShift managed clusters.
2730	Value *[]OpenShiftManagedCluster `json:"value,omitempty"`
2731	// NextLink - READ-ONLY; The URL to get the next set of OpenShift managed cluster results.
2732	NextLink *string `json:"nextLink,omitempty"`
2733}
2734
2735// OpenShiftManagedClusterListResultIterator provides access to a complete listing of
2736// OpenShiftManagedCluster values.
2737type OpenShiftManagedClusterListResultIterator struct {
2738	i    int
2739	page OpenShiftManagedClusterListResultPage
2740}
2741
2742// NextWithContext advances to the next value.  If there was an error making
2743// the request the iterator does not advance and the error is returned.
2744func (iter *OpenShiftManagedClusterListResultIterator) NextWithContext(ctx context.Context) (err error) {
2745	if tracing.IsEnabled() {
2746		ctx = tracing.StartSpan(ctx, fqdn+"/OpenShiftManagedClusterListResultIterator.NextWithContext")
2747		defer func() {
2748			sc := -1
2749			if iter.Response().Response.Response != nil {
2750				sc = iter.Response().Response.Response.StatusCode
2751			}
2752			tracing.EndSpan(ctx, sc, err)
2753		}()
2754	}
2755	iter.i++
2756	if iter.i < len(iter.page.Values()) {
2757		return nil
2758	}
2759	err = iter.page.NextWithContext(ctx)
2760	if err != nil {
2761		iter.i--
2762		return err
2763	}
2764	iter.i = 0
2765	return nil
2766}
2767
2768// Next advances to the next value.  If there was an error making
2769// the request the iterator does not advance and the error is returned.
2770// Deprecated: Use NextWithContext() instead.
2771func (iter *OpenShiftManagedClusterListResultIterator) Next() error {
2772	return iter.NextWithContext(context.Background())
2773}
2774
2775// NotDone returns true if the enumeration should be started or is not yet complete.
2776func (iter OpenShiftManagedClusterListResultIterator) NotDone() bool {
2777	return iter.page.NotDone() && iter.i < len(iter.page.Values())
2778}
2779
2780// Response returns the raw server response from the last page request.
2781func (iter OpenShiftManagedClusterListResultIterator) Response() OpenShiftManagedClusterListResult {
2782	return iter.page.Response()
2783}
2784
2785// Value returns the current value or a zero-initialized value if the
2786// iterator has advanced beyond the end of the collection.
2787func (iter OpenShiftManagedClusterListResultIterator) Value() OpenShiftManagedCluster {
2788	if !iter.page.NotDone() {
2789		return OpenShiftManagedCluster{}
2790	}
2791	return iter.page.Values()[iter.i]
2792}
2793
2794// Creates a new instance of the OpenShiftManagedClusterListResultIterator type.
2795func NewOpenShiftManagedClusterListResultIterator(page OpenShiftManagedClusterListResultPage) OpenShiftManagedClusterListResultIterator {
2796	return OpenShiftManagedClusterListResultIterator{page: page}
2797}
2798
2799// IsEmpty returns true if the ListResult contains no values.
2800func (osmclr OpenShiftManagedClusterListResult) IsEmpty() bool {
2801	return osmclr.Value == nil || len(*osmclr.Value) == 0
2802}
2803
2804// openShiftManagedClusterListResultPreparer prepares a request to retrieve the next set of results.
2805// It returns nil if no more results exist.
2806func (osmclr OpenShiftManagedClusterListResult) openShiftManagedClusterListResultPreparer(ctx context.Context) (*http.Request, error) {
2807	if osmclr.NextLink == nil || len(to.String(osmclr.NextLink)) < 1 {
2808		return nil, nil
2809	}
2810	return autorest.Prepare((&http.Request{}).WithContext(ctx),
2811		autorest.AsJSON(),
2812		autorest.AsGet(),
2813		autorest.WithBaseURL(to.String(osmclr.NextLink)))
2814}
2815
2816// OpenShiftManagedClusterListResultPage contains a page of OpenShiftManagedCluster values.
2817type OpenShiftManagedClusterListResultPage struct {
2818	fn     func(context.Context, OpenShiftManagedClusterListResult) (OpenShiftManagedClusterListResult, error)
2819	osmclr OpenShiftManagedClusterListResult
2820}
2821
2822// NextWithContext advances to the next page of values.  If there was an error making
2823// the request the page does not advance and the error is returned.
2824func (page *OpenShiftManagedClusterListResultPage) NextWithContext(ctx context.Context) (err error) {
2825	if tracing.IsEnabled() {
2826		ctx = tracing.StartSpan(ctx, fqdn+"/OpenShiftManagedClusterListResultPage.NextWithContext")
2827		defer func() {
2828			sc := -1
2829			if page.Response().Response.Response != nil {
2830				sc = page.Response().Response.Response.StatusCode
2831			}
2832			tracing.EndSpan(ctx, sc, err)
2833		}()
2834	}
2835	next, err := page.fn(ctx, page.osmclr)
2836	if err != nil {
2837		return err
2838	}
2839	page.osmclr = next
2840	return nil
2841}
2842
2843// Next advances to the next page of values.  If there was an error making
2844// the request the page does not advance and the error is returned.
2845// Deprecated: Use NextWithContext() instead.
2846func (page *OpenShiftManagedClusterListResultPage) Next() error {
2847	return page.NextWithContext(context.Background())
2848}
2849
2850// NotDone returns true if the page enumeration should be started or is not yet complete.
2851func (page OpenShiftManagedClusterListResultPage) NotDone() bool {
2852	return !page.osmclr.IsEmpty()
2853}
2854
2855// Response returns the raw server response from the last page request.
2856func (page OpenShiftManagedClusterListResultPage) Response() OpenShiftManagedClusterListResult {
2857	return page.osmclr
2858}
2859
2860// Values returns the slice of values for the current page or nil if there are no values.
2861func (page OpenShiftManagedClusterListResultPage) Values() []OpenShiftManagedCluster {
2862	if page.osmclr.IsEmpty() {
2863		return nil
2864	}
2865	return *page.osmclr.Value
2866}
2867
2868// Creates a new instance of the OpenShiftManagedClusterListResultPage type.
2869func NewOpenShiftManagedClusterListResultPage(getNextPage func(context.Context, OpenShiftManagedClusterListResult) (OpenShiftManagedClusterListResult, error)) OpenShiftManagedClusterListResultPage {
2870	return OpenShiftManagedClusterListResultPage{fn: getNextPage}
2871}
2872
2873// OpenShiftManagedClusterMasterPoolProfile openShiftManagedClusterMaterPoolProfile contains configuration
2874// for OpenShift master VMs.
2875type OpenShiftManagedClusterMasterPoolProfile struct {
2876	// Name - Unique name of the master pool profile in the context of the subscription and resource group.
2877	Name *string `json:"name,omitempty"`
2878	// Count - Number of masters (VMs) to host docker containers. The default value is 3.
2879	Count *int32 `json:"count,omitempty"`
2880	// VMSize - Size of agent VMs. Possible values include: 'StandardD2sV3', 'StandardD4sV3', 'StandardD8sV3', 'StandardD16sV3', 'StandardD32sV3', 'StandardD64sV3', 'StandardDS4V2', 'StandardDS5V2', 'StandardF8sV2', 'StandardF16sV2', 'StandardF32sV2', 'StandardF64sV2', 'StandardF72sV2', 'StandardF8s', 'StandardF16s', 'StandardE4sV3', 'StandardE8sV3', 'StandardE16sV3', 'StandardE20sV3', 'StandardE32sV3', 'StandardE64sV3', 'StandardGS2', 'StandardGS3', 'StandardGS4', 'StandardGS5', 'StandardDS12V2', 'StandardDS13V2', 'StandardDS14V2', 'StandardDS15V2', 'StandardL4s', 'StandardL8s', 'StandardL16s', 'StandardL32s'
2881	VMSize OpenShiftContainerServiceVMSize `json:"vmSize,omitempty"`
2882	// SubnetCidr - Subnet CIDR for the peering.
2883	SubnetCidr *string `json:"subnetCidr,omitempty"`
2884	// OsType - OsType to be used to specify os type. Choose from Linux and Windows. Default to Linux. Possible values include: 'Linux', 'Windows'
2885	OsType OSType `json:"osType,omitempty"`
2886}
2887
2888// OpenShiftManagedClusterProperties properties of the OpenShift managed cluster.
2889type OpenShiftManagedClusterProperties struct {
2890	// ProvisioningState - READ-ONLY; The current deployment or provisioning state, which only appears in the response.
2891	ProvisioningState *string `json:"provisioningState,omitempty"`
2892	// OpenShiftVersion - Version of OpenShift specified when creating the cluster.
2893	OpenShiftVersion *string `json:"openShiftVersion,omitempty"`
2894	// ClusterVersion - READ-ONLY; Version of OpenShift specified when creating the cluster.
2895	ClusterVersion *string `json:"clusterVersion,omitempty"`
2896	// PublicHostname - READ-ONLY; Service generated FQDN for OpenShift API server.
2897	PublicHostname *string `json:"publicHostname,omitempty"`
2898	// Fqdn - READ-ONLY; Service generated FQDN for OpenShift API server loadbalancer internal hostname.
2899	Fqdn *string `json:"fqdn,omitempty"`
2900	// NetworkProfile - Configuration for OpenShift networking.
2901	NetworkProfile *NetworkProfile `json:"networkProfile,omitempty"`
2902	// RouterProfiles - Configuration for OpenShift router(s).
2903	RouterProfiles *[]OpenShiftRouterProfile `json:"routerProfiles,omitempty"`
2904	// MasterPoolProfile - Configuration for OpenShift master VMs.
2905	MasterPoolProfile *OpenShiftManagedClusterMasterPoolProfile `json:"masterPoolProfile,omitempty"`
2906	// AgentPoolProfiles - Configuration of OpenShift cluster VMs.
2907	AgentPoolProfiles *[]OpenShiftManagedClusterAgentPoolProfile `json:"agentPoolProfiles,omitempty"`
2908	// AuthProfile - Configures OpenShift authentication.
2909	AuthProfile *OpenShiftManagedClusterAuthProfile `json:"authProfile,omitempty"`
2910}
2911
2912// OpenShiftManagedClustersCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of
2913// a long-running operation.
2914type OpenShiftManagedClustersCreateOrUpdateFuture struct {
2915	azure.Future
2916}
2917
2918// Result returns the result of the asynchronous operation.
2919// If the operation has not completed it will return an error.
2920func (future *OpenShiftManagedClustersCreateOrUpdateFuture) Result(client OpenShiftManagedClustersClient) (osmc OpenShiftManagedCluster, err error) {
2921	var done bool
2922	done, err = future.DoneWithContext(context.Background(), client)
2923	if err != nil {
2924		err = autorest.NewErrorWithError(err, "containerservice.OpenShiftManagedClustersCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
2925		return
2926	}
2927	if !done {
2928		err = azure.NewAsyncOpIncompleteError("containerservice.OpenShiftManagedClustersCreateOrUpdateFuture")
2929		return
2930	}
2931	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2932	if osmc.Response.Response, err = future.GetResult(sender); err == nil && osmc.Response.Response.StatusCode != http.StatusNoContent {
2933		osmc, err = client.CreateOrUpdateResponder(osmc.Response.Response)
2934		if err != nil {
2935			err = autorest.NewErrorWithError(err, "containerservice.OpenShiftManagedClustersCreateOrUpdateFuture", "Result", osmc.Response.Response, "Failure responding to request")
2936		}
2937	}
2938	return
2939}
2940
2941// OpenShiftManagedClustersDeleteFuture an abstraction for monitoring and retrieving the results of a
2942// long-running operation.
2943type OpenShiftManagedClustersDeleteFuture struct {
2944	azure.Future
2945}
2946
2947// Result returns the result of the asynchronous operation.
2948// If the operation has not completed it will return an error.
2949func (future *OpenShiftManagedClustersDeleteFuture) Result(client OpenShiftManagedClustersClient) (ar autorest.Response, err error) {
2950	var done bool
2951	done, err = future.DoneWithContext(context.Background(), client)
2952	if err != nil {
2953		err = autorest.NewErrorWithError(err, "containerservice.OpenShiftManagedClustersDeleteFuture", "Result", future.Response(), "Polling failure")
2954		return
2955	}
2956	if !done {
2957		err = azure.NewAsyncOpIncompleteError("containerservice.OpenShiftManagedClustersDeleteFuture")
2958		return
2959	}
2960	ar.Response = future.Response()
2961	return
2962}
2963
2964// OpenShiftManagedClustersUpdateTagsFuture an abstraction for monitoring and retrieving the results of a
2965// long-running operation.
2966type OpenShiftManagedClustersUpdateTagsFuture struct {
2967	azure.Future
2968}
2969
2970// Result returns the result of the asynchronous operation.
2971// If the operation has not completed it will return an error.
2972func (future *OpenShiftManagedClustersUpdateTagsFuture) Result(client OpenShiftManagedClustersClient) (osmc OpenShiftManagedCluster, err error) {
2973	var done bool
2974	done, err = future.DoneWithContext(context.Background(), client)
2975	if err != nil {
2976		err = autorest.NewErrorWithError(err, "containerservice.OpenShiftManagedClustersUpdateTagsFuture", "Result", future.Response(), "Polling failure")
2977		return
2978	}
2979	if !done {
2980		err = azure.NewAsyncOpIncompleteError("containerservice.OpenShiftManagedClustersUpdateTagsFuture")
2981		return
2982	}
2983	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2984	if osmc.Response.Response, err = future.GetResult(sender); err == nil && osmc.Response.Response.StatusCode != http.StatusNoContent {
2985		osmc, err = client.UpdateTagsResponder(osmc.Response.Response)
2986		if err != nil {
2987			err = autorest.NewErrorWithError(err, "containerservice.OpenShiftManagedClustersUpdateTagsFuture", "Result", osmc.Response.Response, "Failure responding to request")
2988		}
2989	}
2990	return
2991}
2992
2993// OpenShiftRouterProfile represents an OpenShift router
2994type OpenShiftRouterProfile struct {
2995	// Name - Name of the router profile.
2996	Name *string `json:"name,omitempty"`
2997	// PublicSubdomain - READ-ONLY; DNS subdomain for OpenShift router.
2998	PublicSubdomain *string `json:"publicSubdomain,omitempty"`
2999	// Fqdn - READ-ONLY; Auto-allocated FQDN for the OpenShift router.
3000	Fqdn *string `json:"fqdn,omitempty"`
3001}
3002
3003// OperationListResult the List Compute Operation operation response.
3004type OperationListResult struct {
3005	autorest.Response `json:"-"`
3006	// Value - READ-ONLY; The list of compute operations
3007	Value *[]OperationValue `json:"value,omitempty"`
3008}
3009
3010// OperationValue describes the properties of a Compute Operation value.
3011type OperationValue struct {
3012	// Origin - READ-ONLY; The origin of the compute operation.
3013	Origin *string `json:"origin,omitempty"`
3014	// Name - READ-ONLY; The name of the compute operation.
3015	Name *string `json:"name,omitempty"`
3016	// OperationValueDisplay - Describes the properties of a Compute Operation Value Display.
3017	*OperationValueDisplay `json:"display,omitempty"`
3018}
3019
3020// MarshalJSON is the custom marshaler for OperationValue.
3021func (ov OperationValue) MarshalJSON() ([]byte, error) {
3022	objectMap := make(map[string]interface{})
3023	if ov.OperationValueDisplay != nil {
3024		objectMap["display"] = ov.OperationValueDisplay
3025	}
3026	return json.Marshal(objectMap)
3027}
3028
3029// UnmarshalJSON is the custom unmarshaler for OperationValue struct.
3030func (ov *OperationValue) UnmarshalJSON(body []byte) error {
3031	var m map[string]*json.RawMessage
3032	err := json.Unmarshal(body, &m)
3033	if err != nil {
3034		return err
3035	}
3036	for k, v := range m {
3037		switch k {
3038		case "origin":
3039			if v != nil {
3040				var origin string
3041				err = json.Unmarshal(*v, &origin)
3042				if err != nil {
3043					return err
3044				}
3045				ov.Origin = &origin
3046			}
3047		case "name":
3048			if v != nil {
3049				var name string
3050				err = json.Unmarshal(*v, &name)
3051				if err != nil {
3052					return err
3053				}
3054				ov.Name = &name
3055			}
3056		case "display":
3057			if v != nil {
3058				var operationValueDisplay OperationValueDisplay
3059				err = json.Unmarshal(*v, &operationValueDisplay)
3060				if err != nil {
3061					return err
3062				}
3063				ov.OperationValueDisplay = &operationValueDisplay
3064			}
3065		}
3066	}
3067
3068	return nil
3069}
3070
3071// OperationValueDisplay describes the properties of a Compute Operation Value Display.
3072type OperationValueDisplay struct {
3073	// Operation - READ-ONLY; The display name of the compute operation.
3074	Operation *string `json:"operation,omitempty"`
3075	// Resource - READ-ONLY; The display name of the resource the operation applies to.
3076	Resource *string `json:"resource,omitempty"`
3077	// Description - READ-ONLY; The description of the operation.
3078	Description *string `json:"description,omitempty"`
3079	// Provider - READ-ONLY; The resource provider for the operation.
3080	Provider *string `json:"provider,omitempty"`
3081}
3082
3083// OrchestratorProfile contains information about orchestrator.
3084type OrchestratorProfile struct {
3085	// OrchestratorType - Orchestrator type.
3086	OrchestratorType *string `json:"orchestratorType,omitempty"`
3087	// OrchestratorVersion - Orchestrator version (major, minor, patch).
3088	OrchestratorVersion *string `json:"orchestratorVersion,omitempty"`
3089	// IsPreview - Whether Kubernetes version is currently in preview.
3090	IsPreview *bool `json:"isPreview,omitempty"`
3091}
3092
3093// OrchestratorProfileType profile for the container service orchestrator.
3094type OrchestratorProfileType struct {
3095	// OrchestratorType - The orchestrator to use to manage container service cluster resources. Valid values are Kubernetes, Swarm, DCOS, DockerCE and Custom. Possible values include: 'Kubernetes', 'Swarm', 'DCOS', 'DockerCE', 'Custom'
3096	OrchestratorType OrchestratorTypes `json:"orchestratorType,omitempty"`
3097	// OrchestratorVersion - The version of the orchestrator to use. You can specify the major.minor.patch part of the actual version.For example, you can specify version as "1.6.11".
3098	OrchestratorVersion *string `json:"orchestratorVersion,omitempty"`
3099}
3100
3101// OrchestratorVersionProfile the profile of an orchestrator and its available versions.
3102type OrchestratorVersionProfile struct {
3103	// OrchestratorType - Orchestrator type.
3104	OrchestratorType *string `json:"orchestratorType,omitempty"`
3105	// OrchestratorVersion - Orchestrator version (major, minor, patch).
3106	OrchestratorVersion *string `json:"orchestratorVersion,omitempty"`
3107	// Default - Installed by default if version is not specified.
3108	Default *bool `json:"default,omitempty"`
3109	// IsPreview - Whether Kubernetes version is currently in preview.
3110	IsPreview *bool `json:"isPreview,omitempty"`
3111	// Upgrades - The list of available upgrade versions.
3112	Upgrades *[]OrchestratorProfile `json:"upgrades,omitempty"`
3113}
3114
3115// OrchestratorVersionProfileListResult the list of versions for supported orchestrators.
3116type OrchestratorVersionProfileListResult struct {
3117	autorest.Response `json:"-"`
3118	// ID - READ-ONLY; Id of the orchestrator version profile list result.
3119	ID *string `json:"id,omitempty"`
3120	// Name - READ-ONLY; Name of the orchestrator version profile list result.
3121	Name *string `json:"name,omitempty"`
3122	// Type - READ-ONLY; Type of the orchestrator version profile list result.
3123	Type *string `json:"type,omitempty"`
3124	// OrchestratorVersionProfileProperties - The properties of an orchestrator version profile.
3125	*OrchestratorVersionProfileProperties `json:"properties,omitempty"`
3126}
3127
3128// MarshalJSON is the custom marshaler for OrchestratorVersionProfileListResult.
3129func (ovplr OrchestratorVersionProfileListResult) MarshalJSON() ([]byte, error) {
3130	objectMap := make(map[string]interface{})
3131	if ovplr.OrchestratorVersionProfileProperties != nil {
3132		objectMap["properties"] = ovplr.OrchestratorVersionProfileProperties
3133	}
3134	return json.Marshal(objectMap)
3135}
3136
3137// UnmarshalJSON is the custom unmarshaler for OrchestratorVersionProfileListResult struct.
3138func (ovplr *OrchestratorVersionProfileListResult) UnmarshalJSON(body []byte) error {
3139	var m map[string]*json.RawMessage
3140	err := json.Unmarshal(body, &m)
3141	if err != nil {
3142		return err
3143	}
3144	for k, v := range m {
3145		switch k {
3146		case "id":
3147			if v != nil {
3148				var ID string
3149				err = json.Unmarshal(*v, &ID)
3150				if err != nil {
3151					return err
3152				}
3153				ovplr.ID = &ID
3154			}
3155		case "name":
3156			if v != nil {
3157				var name string
3158				err = json.Unmarshal(*v, &name)
3159				if err != nil {
3160					return err
3161				}
3162				ovplr.Name = &name
3163			}
3164		case "type":
3165			if v != nil {
3166				var typeVar string
3167				err = json.Unmarshal(*v, &typeVar)
3168				if err != nil {
3169					return err
3170				}
3171				ovplr.Type = &typeVar
3172			}
3173		case "properties":
3174			if v != nil {
3175				var orchestratorVersionProfileProperties OrchestratorVersionProfileProperties
3176				err = json.Unmarshal(*v, &orchestratorVersionProfileProperties)
3177				if err != nil {
3178					return err
3179				}
3180				ovplr.OrchestratorVersionProfileProperties = &orchestratorVersionProfileProperties
3181			}
3182		}
3183	}
3184
3185	return nil
3186}
3187
3188// OrchestratorVersionProfileProperties the properties of an orchestrator version profile.
3189type OrchestratorVersionProfileProperties struct {
3190	// Orchestrators - List of orchestrator version profiles.
3191	Orchestrators *[]OrchestratorVersionProfile `json:"orchestrators,omitempty"`
3192}
3193
3194// Properties properties of the container service.
3195type Properties struct {
3196	// ProvisioningState - READ-ONLY; The current deployment or provisioning state, which only appears in the response.
3197	ProvisioningState *string `json:"provisioningState,omitempty"`
3198	// OrchestratorProfile - Profile for the container service orchestrator.
3199	OrchestratorProfile *OrchestratorProfileType `json:"orchestratorProfile,omitempty"`
3200	// CustomProfile - Properties to configure a custom container service cluster.
3201	CustomProfile *CustomProfile `json:"customProfile,omitempty"`
3202	// ServicePrincipalProfile - Information about a service principal identity for the cluster to use for manipulating Azure APIs. Exact one of secret or keyVaultSecretRef need to be specified.
3203	ServicePrincipalProfile *ServicePrincipalProfile `json:"servicePrincipalProfile,omitempty"`
3204	// MasterProfile - Profile for the container service master.
3205	MasterProfile *MasterProfile `json:"masterProfile,omitempty"`
3206	// AgentPoolProfiles - Properties of the agent pool.
3207	AgentPoolProfiles *[]AgentPoolProfile `json:"agentPoolProfiles,omitempty"`
3208	// WindowsProfile - Profile for Windows VMs in the container service cluster.
3209	WindowsProfile *WindowsProfile `json:"windowsProfile,omitempty"`
3210	// LinuxProfile - Profile for Linux VMs in the container service cluster.
3211	LinuxProfile *LinuxProfile `json:"linuxProfile,omitempty"`
3212	// DiagnosticsProfile - Profile for diagnostics in the container service cluster.
3213	DiagnosticsProfile *DiagnosticsProfile `json:"diagnosticsProfile,omitempty"`
3214}
3215
3216// PurchasePlan used for establishing the purchase context of any 3rd Party artifact through MarketPlace.
3217type PurchasePlan struct {
3218	// Name - The plan ID.
3219	Name *string `json:"name,omitempty"`
3220	// Product - Specifies the product of the image from the marketplace. This is the same value as Offer under the imageReference element.
3221	Product *string `json:"product,omitempty"`
3222	// PromotionCode - The promotion code.
3223	PromotionCode *string `json:"promotionCode,omitempty"`
3224	// Publisher - The plan ID.
3225	Publisher *string `json:"publisher,omitempty"`
3226}
3227
3228// Resource the Resource model definition.
3229type Resource struct {
3230	// ID - READ-ONLY; Resource Id
3231	ID *string `json:"id,omitempty"`
3232	// Name - READ-ONLY; Resource name
3233	Name *string `json:"name,omitempty"`
3234	// Type - READ-ONLY; Resource type
3235	Type *string `json:"type,omitempty"`
3236	// Location - Resource location
3237	Location *string `json:"location,omitempty"`
3238	// Tags - Resource tags
3239	Tags map[string]*string `json:"tags"`
3240}
3241
3242// MarshalJSON is the custom marshaler for Resource.
3243func (r Resource) MarshalJSON() ([]byte, error) {
3244	objectMap := make(map[string]interface{})
3245	if r.Location != nil {
3246		objectMap["location"] = r.Location
3247	}
3248	if r.Tags != nil {
3249		objectMap["tags"] = r.Tags
3250	}
3251	return json.Marshal(objectMap)
3252}
3253
3254// ResourceReference a reference to an Azure resource.
3255type ResourceReference struct {
3256	// ID - The fully qualified Azure resource id.
3257	ID *string `json:"id,omitempty"`
3258}
3259
3260// ServicePrincipalProfile information about a service principal identity for the cluster to use for
3261// manipulating Azure APIs. Either secret or keyVaultSecretRef must be specified.
3262type ServicePrincipalProfile struct {
3263	// ClientID - The ID for the service principal.
3264	ClientID *string `json:"clientId,omitempty"`
3265	// Secret - The secret password associated with the service principal in plain text.
3266	Secret *string `json:"secret,omitempty"`
3267	// KeyVaultSecretRef - Reference to a secret stored in Azure Key Vault.
3268	KeyVaultSecretRef *KeyVaultSecretRef `json:"keyVaultSecretRef,omitempty"`
3269}
3270
3271// SSHConfiguration SSH configuration for Linux-based VMs running on Azure.
3272type SSHConfiguration struct {
3273	// PublicKeys - The list of SSH public keys used to authenticate with Linux-based VMs. Only expect one key specified.
3274	PublicKeys *[]SSHPublicKey `json:"publicKeys,omitempty"`
3275}
3276
3277// SSHPublicKey contains information about SSH certificate public key data.
3278type SSHPublicKey struct {
3279	// KeyData - Certificate public key used to authenticate with VMs through SSH. The certificate must be in PEM format with or without headers.
3280	KeyData *string `json:"keyData,omitempty"`
3281}
3282
3283// SubResource reference to another subresource.
3284type SubResource struct {
3285	// ID - READ-ONLY; Resource ID.
3286	ID *string `json:"id,omitempty"`
3287	// Name - READ-ONLY; The name of the resource that is unique within a resource group. This name can be used to access the resource.
3288	Name *string `json:"name,omitempty"`
3289	// Type - READ-ONLY; Resource type
3290	Type *string `json:"type,omitempty"`
3291}
3292
3293// TagsObject tags object for patch operations.
3294type TagsObject struct {
3295	// Tags - Resource tags.
3296	Tags map[string]*string `json:"tags"`
3297}
3298
3299// MarshalJSON is the custom marshaler for TagsObject.
3300func (toVar TagsObject) MarshalJSON() ([]byte, error) {
3301	objectMap := make(map[string]interface{})
3302	if toVar.Tags != nil {
3303		objectMap["tags"] = toVar.Tags
3304	}
3305	return json.Marshal(objectMap)
3306}
3307
3308// VMDiagnostics profile for diagnostics on the container service VMs.
3309type VMDiagnostics struct {
3310	// Enabled - Whether the VM diagnostic agent is provisioned on the VM.
3311	Enabled *bool `json:"enabled,omitempty"`
3312	// StorageURI - READ-ONLY; The URI of the storage account where diagnostics are stored.
3313	StorageURI *string `json:"storageUri,omitempty"`
3314}
3315
3316// WindowsProfile profile for Windows VMs in the container service cluster.
3317type WindowsProfile struct {
3318	// AdminUsername - The administrator username to use for Windows VMs.
3319	AdminUsername *string `json:"adminUsername,omitempty"`
3320	// AdminPassword - The administrator password to use for Windows VMs.
3321	AdminPassword *string `json:"adminPassword,omitempty"`
3322}
3323