1package containerservice
2
3// Copyright (c) Microsoft Corporation. All rights reserved.
4// Licensed under the MIT License. See License.txt in the project root for license information.
5//
6// Code generated by Microsoft (R) AutoRest Code Generator.
7// Changes may cause incorrect behavior and will be lost if the code is regenerated.
8
9import (
10	"context"
11	"encoding/json"
12	"github.com/Azure/go-autorest/autorest"
13	"github.com/Azure/go-autorest/autorest/azure"
14	"github.com/Azure/go-autorest/autorest/date"
15	"github.com/Azure/go-autorest/autorest/to"
16	"github.com/Azure/go-autorest/tracing"
17	"net/http"
18)
19
20// The package's fully qualified name.
21const fqdn = "github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2021-02-01/containerservice"
22
23// AccessProfile profile for enabling a user to access a managed cluster.
24type AccessProfile struct {
25	// KubeConfig - Base64-encoded Kubernetes configuration file.
26	KubeConfig *[]byte `json:"kubeConfig,omitempty"`
27}
28
29// AgentPool agent Pool.
30type AgentPool struct {
31	autorest.Response `json:"-"`
32	// ManagedClusterAgentPoolProfileProperties - Properties of an agent pool.
33	*ManagedClusterAgentPoolProfileProperties `json:"properties,omitempty"`
34	// ID - READ-ONLY; Resource ID.
35	ID *string `json:"id,omitempty"`
36	// Name - READ-ONLY; The name of the resource that is unique within a resource group. This name can be used to access the resource.
37	Name *string `json:"name,omitempty"`
38	// Type - READ-ONLY; Resource type
39	Type *string `json:"type,omitempty"`
40}
41
42// MarshalJSON is the custom marshaler for AgentPool.
43func (ap AgentPool) MarshalJSON() ([]byte, error) {
44	objectMap := make(map[string]interface{})
45	if ap.ManagedClusterAgentPoolProfileProperties != nil {
46		objectMap["properties"] = ap.ManagedClusterAgentPoolProfileProperties
47	}
48	return json.Marshal(objectMap)
49}
50
51// UnmarshalJSON is the custom unmarshaler for AgentPool struct.
52func (ap *AgentPool) UnmarshalJSON(body []byte) error {
53	var m map[string]*json.RawMessage
54	err := json.Unmarshal(body, &m)
55	if err != nil {
56		return err
57	}
58	for k, v := range m {
59		switch k {
60		case "properties":
61			if v != nil {
62				var managedClusterAgentPoolProfileProperties ManagedClusterAgentPoolProfileProperties
63				err = json.Unmarshal(*v, &managedClusterAgentPoolProfileProperties)
64				if err != nil {
65					return err
66				}
67				ap.ManagedClusterAgentPoolProfileProperties = &managedClusterAgentPoolProfileProperties
68			}
69		case "id":
70			if v != nil {
71				var ID string
72				err = json.Unmarshal(*v, &ID)
73				if err != nil {
74					return err
75				}
76				ap.ID = &ID
77			}
78		case "name":
79			if v != nil {
80				var name string
81				err = json.Unmarshal(*v, &name)
82				if err != nil {
83					return err
84				}
85				ap.Name = &name
86			}
87		case "type":
88			if v != nil {
89				var typeVar string
90				err = json.Unmarshal(*v, &typeVar)
91				if err != nil {
92					return err
93				}
94				ap.Type = &typeVar
95			}
96		}
97	}
98
99	return nil
100}
101
102// AgentPoolAvailableVersions the list of available versions for an agent pool.
103type AgentPoolAvailableVersions struct {
104	autorest.Response `json:"-"`
105	// ID - READ-ONLY; Id of the agent pool available versions.
106	ID *string `json:"id,omitempty"`
107	// Name - READ-ONLY; Name of the agent pool available versions.
108	Name *string `json:"name,omitempty"`
109	// Type - READ-ONLY; Type of the agent pool  available versions.
110	Type *string `json:"type,omitempty"`
111	// AgentPoolAvailableVersionsProperties - Properties of agent pool available versions.
112	*AgentPoolAvailableVersionsProperties `json:"properties,omitempty"`
113}
114
115// MarshalJSON is the custom marshaler for AgentPoolAvailableVersions.
116func (apav AgentPoolAvailableVersions) MarshalJSON() ([]byte, error) {
117	objectMap := make(map[string]interface{})
118	if apav.AgentPoolAvailableVersionsProperties != nil {
119		objectMap["properties"] = apav.AgentPoolAvailableVersionsProperties
120	}
121	return json.Marshal(objectMap)
122}
123
124// UnmarshalJSON is the custom unmarshaler for AgentPoolAvailableVersions struct.
125func (apav *AgentPoolAvailableVersions) UnmarshalJSON(body []byte) error {
126	var m map[string]*json.RawMessage
127	err := json.Unmarshal(body, &m)
128	if err != nil {
129		return err
130	}
131	for k, v := range m {
132		switch k {
133		case "id":
134			if v != nil {
135				var ID string
136				err = json.Unmarshal(*v, &ID)
137				if err != nil {
138					return err
139				}
140				apav.ID = &ID
141			}
142		case "name":
143			if v != nil {
144				var name string
145				err = json.Unmarshal(*v, &name)
146				if err != nil {
147					return err
148				}
149				apav.Name = &name
150			}
151		case "type":
152			if v != nil {
153				var typeVar string
154				err = json.Unmarshal(*v, &typeVar)
155				if err != nil {
156					return err
157				}
158				apav.Type = &typeVar
159			}
160		case "properties":
161			if v != nil {
162				var agentPoolAvailableVersionsProperties AgentPoolAvailableVersionsProperties
163				err = json.Unmarshal(*v, &agentPoolAvailableVersionsProperties)
164				if err != nil {
165					return err
166				}
167				apav.AgentPoolAvailableVersionsProperties = &agentPoolAvailableVersionsProperties
168			}
169		}
170	}
171
172	return nil
173}
174
175// AgentPoolAvailableVersionsProperties the list of available agent pool versions.
176type AgentPoolAvailableVersionsProperties struct {
177	// AgentPoolVersions - List of versions available for agent pool.
178	AgentPoolVersions *[]AgentPoolAvailableVersionsPropertiesAgentPoolVersionsItem `json:"agentPoolVersions,omitempty"`
179}
180
181// AgentPoolAvailableVersionsPropertiesAgentPoolVersionsItem ...
182type AgentPoolAvailableVersionsPropertiesAgentPoolVersionsItem struct {
183	// Default - Whether this version is the default agent pool version.
184	Default *bool `json:"default,omitempty"`
185	// KubernetesVersion - Kubernetes version (major, minor, patch).
186	KubernetesVersion *string `json:"kubernetesVersion,omitempty"`
187	// IsPreview - Whether Kubernetes version is currently in preview.
188	IsPreview *bool `json:"isPreview,omitempty"`
189}
190
191// AgentPoolListResult the response from the List Agent Pools operation.
192type AgentPoolListResult struct {
193	autorest.Response `json:"-"`
194	// Value - The list of agent pools.
195	Value *[]AgentPool `json:"value,omitempty"`
196	// NextLink - READ-ONLY; The URL to get the next set of agent pool results.
197	NextLink *string `json:"nextLink,omitempty"`
198}
199
200// MarshalJSON is the custom marshaler for AgentPoolListResult.
201func (aplr AgentPoolListResult) MarshalJSON() ([]byte, error) {
202	objectMap := make(map[string]interface{})
203	if aplr.Value != nil {
204		objectMap["value"] = aplr.Value
205	}
206	return json.Marshal(objectMap)
207}
208
209// AgentPoolListResultIterator provides access to a complete listing of AgentPool values.
210type AgentPoolListResultIterator struct {
211	i    int
212	page AgentPoolListResultPage
213}
214
215// NextWithContext advances to the next value.  If there was an error making
216// the request the iterator does not advance and the error is returned.
217func (iter *AgentPoolListResultIterator) NextWithContext(ctx context.Context) (err error) {
218	if tracing.IsEnabled() {
219		ctx = tracing.StartSpan(ctx, fqdn+"/AgentPoolListResultIterator.NextWithContext")
220		defer func() {
221			sc := -1
222			if iter.Response().Response.Response != nil {
223				sc = iter.Response().Response.Response.StatusCode
224			}
225			tracing.EndSpan(ctx, sc, err)
226		}()
227	}
228	iter.i++
229	if iter.i < len(iter.page.Values()) {
230		return nil
231	}
232	err = iter.page.NextWithContext(ctx)
233	if err != nil {
234		iter.i--
235		return err
236	}
237	iter.i = 0
238	return nil
239}
240
241// Next advances to the next value.  If there was an error making
242// the request the iterator does not advance and the error is returned.
243// Deprecated: Use NextWithContext() instead.
244func (iter *AgentPoolListResultIterator) Next() error {
245	return iter.NextWithContext(context.Background())
246}
247
248// NotDone returns true if the enumeration should be started or is not yet complete.
249func (iter AgentPoolListResultIterator) NotDone() bool {
250	return iter.page.NotDone() && iter.i < len(iter.page.Values())
251}
252
253// Response returns the raw server response from the last page request.
254func (iter AgentPoolListResultIterator) Response() AgentPoolListResult {
255	return iter.page.Response()
256}
257
258// Value returns the current value or a zero-initialized value if the
259// iterator has advanced beyond the end of the collection.
260func (iter AgentPoolListResultIterator) Value() AgentPool {
261	if !iter.page.NotDone() {
262		return AgentPool{}
263	}
264	return iter.page.Values()[iter.i]
265}
266
267// Creates a new instance of the AgentPoolListResultIterator type.
268func NewAgentPoolListResultIterator(page AgentPoolListResultPage) AgentPoolListResultIterator {
269	return AgentPoolListResultIterator{page: page}
270}
271
272// IsEmpty returns true if the ListResult contains no values.
273func (aplr AgentPoolListResult) IsEmpty() bool {
274	return aplr.Value == nil || len(*aplr.Value) == 0
275}
276
277// hasNextLink returns true if the NextLink is not empty.
278func (aplr AgentPoolListResult) hasNextLink() bool {
279	return aplr.NextLink != nil && len(*aplr.NextLink) != 0
280}
281
282// agentPoolListResultPreparer prepares a request to retrieve the next set of results.
283// It returns nil if no more results exist.
284func (aplr AgentPoolListResult) agentPoolListResultPreparer(ctx context.Context) (*http.Request, error) {
285	if !aplr.hasNextLink() {
286		return nil, nil
287	}
288	return autorest.Prepare((&http.Request{}).WithContext(ctx),
289		autorest.AsJSON(),
290		autorest.AsGet(),
291		autorest.WithBaseURL(to.String(aplr.NextLink)))
292}
293
294// AgentPoolListResultPage contains a page of AgentPool values.
295type AgentPoolListResultPage struct {
296	fn   func(context.Context, AgentPoolListResult) (AgentPoolListResult, error)
297	aplr AgentPoolListResult
298}
299
300// NextWithContext advances to the next page of values.  If there was an error making
301// the request the page does not advance and the error is returned.
302func (page *AgentPoolListResultPage) NextWithContext(ctx context.Context) (err error) {
303	if tracing.IsEnabled() {
304		ctx = tracing.StartSpan(ctx, fqdn+"/AgentPoolListResultPage.NextWithContext")
305		defer func() {
306			sc := -1
307			if page.Response().Response.Response != nil {
308				sc = page.Response().Response.Response.StatusCode
309			}
310			tracing.EndSpan(ctx, sc, err)
311		}()
312	}
313	for {
314		next, err := page.fn(ctx, page.aplr)
315		if err != nil {
316			return err
317		}
318		page.aplr = next
319		if !next.hasNextLink() || !next.IsEmpty() {
320			break
321		}
322	}
323	return nil
324}
325
326// Next advances to the next page of values.  If there was an error making
327// the request the page does not advance and the error is returned.
328// Deprecated: Use NextWithContext() instead.
329func (page *AgentPoolListResultPage) Next() error {
330	return page.NextWithContext(context.Background())
331}
332
333// NotDone returns true if the page enumeration should be started or is not yet complete.
334func (page AgentPoolListResultPage) NotDone() bool {
335	return !page.aplr.IsEmpty()
336}
337
338// Response returns the raw server response from the last page request.
339func (page AgentPoolListResultPage) Response() AgentPoolListResult {
340	return page.aplr
341}
342
343// Values returns the slice of values for the current page or nil if there are no values.
344func (page AgentPoolListResultPage) Values() []AgentPool {
345	if page.aplr.IsEmpty() {
346		return nil
347	}
348	return *page.aplr.Value
349}
350
351// Creates a new instance of the AgentPoolListResultPage type.
352func NewAgentPoolListResultPage(cur AgentPoolListResult, getNextPage func(context.Context, AgentPoolListResult) (AgentPoolListResult, error)) AgentPoolListResultPage {
353	return AgentPoolListResultPage{
354		fn:   getNextPage,
355		aplr: cur,
356	}
357}
358
359// AgentPoolsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
360// long-running operation.
361type AgentPoolsCreateOrUpdateFuture struct {
362	azure.FutureAPI
363	// Result returns the result of the asynchronous operation.
364	// If the operation has not completed it will return an error.
365	Result func(AgentPoolsClient) (AgentPool, error)
366}
367
368// UnmarshalJSON is the custom unmarshaller for CreateFuture.
369func (future *AgentPoolsCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
370	var azFuture azure.Future
371	if err := json.Unmarshal(body, &azFuture); err != nil {
372		return err
373	}
374	future.FutureAPI = &azFuture
375	future.Result = future.result
376	return nil
377}
378
379// result is the default implementation for AgentPoolsCreateOrUpdateFuture.Result.
380func (future *AgentPoolsCreateOrUpdateFuture) result(client AgentPoolsClient) (ap AgentPool, err error) {
381	var done bool
382	done, err = future.DoneWithContext(context.Background(), client)
383	if err != nil {
384		err = autorest.NewErrorWithError(err, "containerservice.AgentPoolsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
385		return
386	}
387	if !done {
388		ap.Response.Response = future.Response()
389		err = azure.NewAsyncOpIncompleteError("containerservice.AgentPoolsCreateOrUpdateFuture")
390		return
391	}
392	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
393	if ap.Response.Response, err = future.GetResult(sender); err == nil && ap.Response.Response.StatusCode != http.StatusNoContent {
394		ap, err = client.CreateOrUpdateResponder(ap.Response.Response)
395		if err != nil {
396			err = autorest.NewErrorWithError(err, "containerservice.AgentPoolsCreateOrUpdateFuture", "Result", ap.Response.Response, "Failure responding to request")
397		}
398	}
399	return
400}
401
402// AgentPoolsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
403// operation.
404type AgentPoolsDeleteFuture struct {
405	azure.FutureAPI
406	// Result returns the result of the asynchronous operation.
407	// If the operation has not completed it will return an error.
408	Result func(AgentPoolsClient) (autorest.Response, error)
409}
410
411// UnmarshalJSON is the custom unmarshaller for CreateFuture.
412func (future *AgentPoolsDeleteFuture) UnmarshalJSON(body []byte) error {
413	var azFuture azure.Future
414	if err := json.Unmarshal(body, &azFuture); err != nil {
415		return err
416	}
417	future.FutureAPI = &azFuture
418	future.Result = future.result
419	return nil
420}
421
422// result is the default implementation for AgentPoolsDeleteFuture.Result.
423func (future *AgentPoolsDeleteFuture) result(client AgentPoolsClient) (ar autorest.Response, err error) {
424	var done bool
425	done, err = future.DoneWithContext(context.Background(), client)
426	if err != nil {
427		err = autorest.NewErrorWithError(err, "containerservice.AgentPoolsDeleteFuture", "Result", future.Response(), "Polling failure")
428		return
429	}
430	if !done {
431		ar.Response = future.Response()
432		err = azure.NewAsyncOpIncompleteError("containerservice.AgentPoolsDeleteFuture")
433		return
434	}
435	ar.Response = future.Response()
436	return
437}
438
439// AgentPoolsUpgradeNodeImageVersionFuture an abstraction for monitoring and retrieving the results of a
440// long-running operation.
441type AgentPoolsUpgradeNodeImageVersionFuture struct {
442	azure.FutureAPI
443	// Result returns the result of the asynchronous operation.
444	// If the operation has not completed it will return an error.
445	Result func(AgentPoolsClient) (AgentPool, error)
446}
447
448// UnmarshalJSON is the custom unmarshaller for CreateFuture.
449func (future *AgentPoolsUpgradeNodeImageVersionFuture) UnmarshalJSON(body []byte) error {
450	var azFuture azure.Future
451	if err := json.Unmarshal(body, &azFuture); err != nil {
452		return err
453	}
454	future.FutureAPI = &azFuture
455	future.Result = future.result
456	return nil
457}
458
459// result is the default implementation for AgentPoolsUpgradeNodeImageVersionFuture.Result.
460func (future *AgentPoolsUpgradeNodeImageVersionFuture) result(client AgentPoolsClient) (ap AgentPool, err error) {
461	var done bool
462	done, err = future.DoneWithContext(context.Background(), client)
463	if err != nil {
464		err = autorest.NewErrorWithError(err, "containerservice.AgentPoolsUpgradeNodeImageVersionFuture", "Result", future.Response(), "Polling failure")
465		return
466	}
467	if !done {
468		ap.Response.Response = future.Response()
469		err = azure.NewAsyncOpIncompleteError("containerservice.AgentPoolsUpgradeNodeImageVersionFuture")
470		return
471	}
472	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
473	if ap.Response.Response, err = future.GetResult(sender); err == nil && ap.Response.Response.StatusCode != http.StatusNoContent {
474		ap, err = client.UpgradeNodeImageVersionResponder(ap.Response.Response)
475		if err != nil {
476			err = autorest.NewErrorWithError(err, "containerservice.AgentPoolsUpgradeNodeImageVersionFuture", "Result", ap.Response.Response, "Failure responding to request")
477		}
478	}
479	return
480}
481
482// AgentPoolUpgradeProfile the list of available upgrades for an agent pool.
483type AgentPoolUpgradeProfile struct {
484	autorest.Response `json:"-"`
485	// ID - READ-ONLY; Id of the agent pool upgrade profile.
486	ID *string `json:"id,omitempty"`
487	// Name - READ-ONLY; Name of the agent pool upgrade profile.
488	Name *string `json:"name,omitempty"`
489	// Type - READ-ONLY; Type of the agent pool upgrade profile.
490	Type *string `json:"type,omitempty"`
491	// AgentPoolUpgradeProfileProperties - Properties of agent pool upgrade profile.
492	*AgentPoolUpgradeProfileProperties `json:"properties,omitempty"`
493}
494
495// MarshalJSON is the custom marshaler for AgentPoolUpgradeProfile.
496func (apup AgentPoolUpgradeProfile) MarshalJSON() ([]byte, error) {
497	objectMap := make(map[string]interface{})
498	if apup.AgentPoolUpgradeProfileProperties != nil {
499		objectMap["properties"] = apup.AgentPoolUpgradeProfileProperties
500	}
501	return json.Marshal(objectMap)
502}
503
504// UnmarshalJSON is the custom unmarshaler for AgentPoolUpgradeProfile struct.
505func (apup *AgentPoolUpgradeProfile) UnmarshalJSON(body []byte) error {
506	var m map[string]*json.RawMessage
507	err := json.Unmarshal(body, &m)
508	if err != nil {
509		return err
510	}
511	for k, v := range m {
512		switch k {
513		case "id":
514			if v != nil {
515				var ID string
516				err = json.Unmarshal(*v, &ID)
517				if err != nil {
518					return err
519				}
520				apup.ID = &ID
521			}
522		case "name":
523			if v != nil {
524				var name string
525				err = json.Unmarshal(*v, &name)
526				if err != nil {
527					return err
528				}
529				apup.Name = &name
530			}
531		case "type":
532			if v != nil {
533				var typeVar string
534				err = json.Unmarshal(*v, &typeVar)
535				if err != nil {
536					return err
537				}
538				apup.Type = &typeVar
539			}
540		case "properties":
541			if v != nil {
542				var agentPoolUpgradeProfileProperties AgentPoolUpgradeProfileProperties
543				err = json.Unmarshal(*v, &agentPoolUpgradeProfileProperties)
544				if err != nil {
545					return err
546				}
547				apup.AgentPoolUpgradeProfileProperties = &agentPoolUpgradeProfileProperties
548			}
549		}
550	}
551
552	return nil
553}
554
555// AgentPoolUpgradeProfileProperties the list of available upgrade versions.
556type AgentPoolUpgradeProfileProperties struct {
557	// KubernetesVersion - Kubernetes version (major, minor, patch).
558	KubernetesVersion *string `json:"kubernetesVersion,omitempty"`
559	// OsType - OsType to be used to specify os type. Choose from Linux and Windows. Default to Linux. Possible values include: 'Linux', 'Windows'
560	OsType OSType `json:"osType,omitempty"`
561	// Upgrades - List of orchestrator types and versions available for upgrade.
562	Upgrades *[]AgentPoolUpgradeProfilePropertiesUpgradesItem `json:"upgrades,omitempty"`
563	// LatestNodeImageVersion - LatestNodeImageVersion is the latest AKS supported node image version.
564	LatestNodeImageVersion *string `json:"latestNodeImageVersion,omitempty"`
565}
566
567// AgentPoolUpgradeProfilePropertiesUpgradesItem ...
568type AgentPoolUpgradeProfilePropertiesUpgradesItem struct {
569	// KubernetesVersion - Kubernetes version (major, minor, patch).
570	KubernetesVersion *string `json:"kubernetesVersion,omitempty"`
571	// IsPreview - Whether Kubernetes version is currently in preview.
572	IsPreview *bool `json:"isPreview,omitempty"`
573}
574
575// AgentPoolUpgradeSettings settings for upgrading an agentpool
576type AgentPoolUpgradeSettings struct {
577	// MaxSurge - Count or percentage of additional nodes to be added during upgrade. If empty uses AKS default
578	MaxSurge *string `json:"maxSurge,omitempty"`
579}
580
581// CloudError an error response from the Container service.
582type CloudError struct {
583	// Error - Details about the error.
584	Error *CloudErrorBody `json:"error,omitempty"`
585}
586
587// CloudErrorBody an error response from the Container service.
588type CloudErrorBody struct {
589	// Code - An identifier for the error. Codes are invariant and are intended to be consumed programmatically.
590	Code *string `json:"code,omitempty"`
591	// Message - A message describing the error, intended to be suitable for display in a user interface.
592	Message *string `json:"message,omitempty"`
593	// Target - The target of the particular error. For example, the name of the property in error.
594	Target *string `json:"target,omitempty"`
595	// Details - A list of additional details about the error.
596	Details *[]CloudErrorBody `json:"details,omitempty"`
597}
598
599// CredentialResult the credential result response.
600type CredentialResult struct {
601	// Name - READ-ONLY; The name of the credential.
602	Name *string `json:"name,omitempty"`
603	// Value - READ-ONLY; Base64-encoded Kubernetes configuration file.
604	Value *[]byte `json:"value,omitempty"`
605}
606
607// MarshalJSON is the custom marshaler for CredentialResult.
608func (cr CredentialResult) MarshalJSON() ([]byte, error) {
609	objectMap := make(map[string]interface{})
610	return json.Marshal(objectMap)
611}
612
613// CredentialResults the list of credential result response.
614type CredentialResults struct {
615	autorest.Response `json:"-"`
616	// Kubeconfigs - READ-ONLY; Base64-encoded Kubernetes configuration file.
617	Kubeconfigs *[]CredentialResult `json:"kubeconfigs,omitempty"`
618}
619
620// MarshalJSON is the custom marshaler for CredentialResults.
621func (cr CredentialResults) MarshalJSON() ([]byte, error) {
622	objectMap := make(map[string]interface{})
623	return json.Marshal(objectMap)
624}
625
626// DiagnosticsProfile profile for diagnostics on the container service cluster.
627type DiagnosticsProfile struct {
628	// VMDiagnostics - Profile for diagnostics on the container service VMs.
629	VMDiagnostics *VMDiagnostics `json:"vmDiagnostics,omitempty"`
630}
631
632// KubeletConfig kubelet configurations of agent nodes.
633type KubeletConfig struct {
634	// CPUManagerPolicy - CPU Manager policy to use.
635	CPUManagerPolicy *string `json:"cpuManagerPolicy,omitempty"`
636	// CPUCfsQuota - Enable CPU CFS quota enforcement for containers that specify CPU limits.
637	CPUCfsQuota *bool `json:"cpuCfsQuota,omitempty"`
638	// CPUCfsQuotaPeriod - Sets CPU CFS quota period value.
639	CPUCfsQuotaPeriod *string `json:"cpuCfsQuotaPeriod,omitempty"`
640	// ImageGcHighThreshold - The percent of disk usage after which image garbage collection is always run.
641	ImageGcHighThreshold *int32 `json:"imageGcHighThreshold,omitempty"`
642	// ImageGcLowThreshold - The percent of disk usage before which image garbage collection is never run.
643	ImageGcLowThreshold *int32 `json:"imageGcLowThreshold,omitempty"`
644	// TopologyManagerPolicy - Topology Manager policy to use.
645	TopologyManagerPolicy *string `json:"topologyManagerPolicy,omitempty"`
646	// AllowedUnsafeSysctls - Allowlist of unsafe sysctls or unsafe sysctl patterns (ending in `*`).
647	AllowedUnsafeSysctls *[]string `json:"allowedUnsafeSysctls,omitempty"`
648	// FailSwapOn - If set to true it will make the Kubelet fail to start if swap is enabled on the node.
649	FailSwapOn *bool `json:"failSwapOn,omitempty"`
650	// ContainerLogMaxSizeMB - The maximum size (e.g. 10Mi) of container log file before it is rotated.
651	ContainerLogMaxSizeMB *int32 `json:"containerLogMaxSizeMB,omitempty"`
652	// ContainerLogMaxFiles - The maximum number of container log files that can be present for a container. The number must be ≥ 2.
653	ContainerLogMaxFiles *int32 `json:"containerLogMaxFiles,omitempty"`
654	// PodMaxPids - The maximum number of processes per pod.
655	PodMaxPids *int32 `json:"podMaxPids,omitempty"`
656}
657
658// LinuxOSConfig OS configurations of Linux agent nodes.
659type LinuxOSConfig struct {
660	// Sysctls - Sysctl settings for Linux agent nodes.
661	Sysctls *SysctlConfig `json:"sysctls,omitempty"`
662	// TransparentHugePageEnabled - Transparent Huge Page enabled configuration.
663	TransparentHugePageEnabled *string `json:"transparentHugePageEnabled,omitempty"`
664	// TransparentHugePageDefrag - Transparent Huge Page defrag configuration.
665	TransparentHugePageDefrag *string `json:"transparentHugePageDefrag,omitempty"`
666	// SwapFileSizeMB - SwapFileSizeMB specifies size in MB of a swap file will be created on each node.
667	SwapFileSizeMB *int32 `json:"swapFileSizeMB,omitempty"`
668}
669
670// LinuxProfile profile for Linux VMs in the container service cluster.
671type LinuxProfile struct {
672	// AdminUsername - The administrator username to use for Linux VMs.
673	AdminUsername *string `json:"adminUsername,omitempty"`
674	// SSH - SSH configuration for Linux-based VMs running on Azure.
675	SSH *SSHConfiguration `json:"ssh,omitempty"`
676}
677
678// MaintenanceConfiguration maintenance configuration.
679type MaintenanceConfiguration struct {
680	autorest.Response `json:"-"`
681	// SystemData - READ-ONLY; The system meta data relating to this resource.
682	SystemData *SystemData `json:"systemData,omitempty"`
683	// MaintenanceConfigurationProperties - Properties of a default maintenance configuration.
684	*MaintenanceConfigurationProperties `json:"properties,omitempty"`
685	// ID - READ-ONLY; Resource ID.
686	ID *string `json:"id,omitempty"`
687	// Name - READ-ONLY; The name of the resource that is unique within a resource group. This name can be used to access the resource.
688	Name *string `json:"name,omitempty"`
689	// Type - READ-ONLY; Resource type
690	Type *string `json:"type,omitempty"`
691}
692
693// MarshalJSON is the custom marshaler for MaintenanceConfiguration.
694func (mc MaintenanceConfiguration) MarshalJSON() ([]byte, error) {
695	objectMap := make(map[string]interface{})
696	if mc.MaintenanceConfigurationProperties != nil {
697		objectMap["properties"] = mc.MaintenanceConfigurationProperties
698	}
699	return json.Marshal(objectMap)
700}
701
702// UnmarshalJSON is the custom unmarshaler for MaintenanceConfiguration struct.
703func (mc *MaintenanceConfiguration) UnmarshalJSON(body []byte) error {
704	var m map[string]*json.RawMessage
705	err := json.Unmarshal(body, &m)
706	if err != nil {
707		return err
708	}
709	for k, v := range m {
710		switch k {
711		case "systemData":
712			if v != nil {
713				var systemData SystemData
714				err = json.Unmarshal(*v, &systemData)
715				if err != nil {
716					return err
717				}
718				mc.SystemData = &systemData
719			}
720		case "properties":
721			if v != nil {
722				var maintenanceConfigurationProperties MaintenanceConfigurationProperties
723				err = json.Unmarshal(*v, &maintenanceConfigurationProperties)
724				if err != nil {
725					return err
726				}
727				mc.MaintenanceConfigurationProperties = &maintenanceConfigurationProperties
728			}
729		case "id":
730			if v != nil {
731				var ID string
732				err = json.Unmarshal(*v, &ID)
733				if err != nil {
734					return err
735				}
736				mc.ID = &ID
737			}
738		case "name":
739			if v != nil {
740				var name string
741				err = json.Unmarshal(*v, &name)
742				if err != nil {
743					return err
744				}
745				mc.Name = &name
746			}
747		case "type":
748			if v != nil {
749				var typeVar string
750				err = json.Unmarshal(*v, &typeVar)
751				if err != nil {
752					return err
753				}
754				mc.Type = &typeVar
755			}
756		}
757	}
758
759	return nil
760}
761
762// MaintenanceConfigurationListResult the response from the List maintenance configurations operation.
763type MaintenanceConfigurationListResult struct {
764	autorest.Response `json:"-"`
765	// Value - The list of maintenance configurations.
766	Value *[]MaintenanceConfiguration `json:"value,omitempty"`
767	// NextLink - READ-ONLY; The URL to get the next set of maintenance configuration results.
768	NextLink *string `json:"nextLink,omitempty"`
769}
770
771// MarshalJSON is the custom marshaler for MaintenanceConfigurationListResult.
772func (mclr MaintenanceConfigurationListResult) MarshalJSON() ([]byte, error) {
773	objectMap := make(map[string]interface{})
774	if mclr.Value != nil {
775		objectMap["value"] = mclr.Value
776	}
777	return json.Marshal(objectMap)
778}
779
780// MaintenanceConfigurationListResultIterator provides access to a complete listing of
781// MaintenanceConfiguration values.
782type MaintenanceConfigurationListResultIterator struct {
783	i    int
784	page MaintenanceConfigurationListResultPage
785}
786
787// NextWithContext advances to the next value.  If there was an error making
788// the request the iterator does not advance and the error is returned.
789func (iter *MaintenanceConfigurationListResultIterator) NextWithContext(ctx context.Context) (err error) {
790	if tracing.IsEnabled() {
791		ctx = tracing.StartSpan(ctx, fqdn+"/MaintenanceConfigurationListResultIterator.NextWithContext")
792		defer func() {
793			sc := -1
794			if iter.Response().Response.Response != nil {
795				sc = iter.Response().Response.Response.StatusCode
796			}
797			tracing.EndSpan(ctx, sc, err)
798		}()
799	}
800	iter.i++
801	if iter.i < len(iter.page.Values()) {
802		return nil
803	}
804	err = iter.page.NextWithContext(ctx)
805	if err != nil {
806		iter.i--
807		return err
808	}
809	iter.i = 0
810	return nil
811}
812
813// Next advances to the next value.  If there was an error making
814// the request the iterator does not advance and the error is returned.
815// Deprecated: Use NextWithContext() instead.
816func (iter *MaintenanceConfigurationListResultIterator) Next() error {
817	return iter.NextWithContext(context.Background())
818}
819
820// NotDone returns true if the enumeration should be started or is not yet complete.
821func (iter MaintenanceConfigurationListResultIterator) NotDone() bool {
822	return iter.page.NotDone() && iter.i < len(iter.page.Values())
823}
824
825// Response returns the raw server response from the last page request.
826func (iter MaintenanceConfigurationListResultIterator) Response() MaintenanceConfigurationListResult {
827	return iter.page.Response()
828}
829
830// Value returns the current value or a zero-initialized value if the
831// iterator has advanced beyond the end of the collection.
832func (iter MaintenanceConfigurationListResultIterator) Value() MaintenanceConfiguration {
833	if !iter.page.NotDone() {
834		return MaintenanceConfiguration{}
835	}
836	return iter.page.Values()[iter.i]
837}
838
839// Creates a new instance of the MaintenanceConfigurationListResultIterator type.
840func NewMaintenanceConfigurationListResultIterator(page MaintenanceConfigurationListResultPage) MaintenanceConfigurationListResultIterator {
841	return MaintenanceConfigurationListResultIterator{page: page}
842}
843
844// IsEmpty returns true if the ListResult contains no values.
845func (mclr MaintenanceConfigurationListResult) IsEmpty() bool {
846	return mclr.Value == nil || len(*mclr.Value) == 0
847}
848
849// hasNextLink returns true if the NextLink is not empty.
850func (mclr MaintenanceConfigurationListResult) hasNextLink() bool {
851	return mclr.NextLink != nil && len(*mclr.NextLink) != 0
852}
853
854// maintenanceConfigurationListResultPreparer prepares a request to retrieve the next set of results.
855// It returns nil if no more results exist.
856func (mclr MaintenanceConfigurationListResult) maintenanceConfigurationListResultPreparer(ctx context.Context) (*http.Request, error) {
857	if !mclr.hasNextLink() {
858		return nil, nil
859	}
860	return autorest.Prepare((&http.Request{}).WithContext(ctx),
861		autorest.AsJSON(),
862		autorest.AsGet(),
863		autorest.WithBaseURL(to.String(mclr.NextLink)))
864}
865
866// MaintenanceConfigurationListResultPage contains a page of MaintenanceConfiguration values.
867type MaintenanceConfigurationListResultPage struct {
868	fn   func(context.Context, MaintenanceConfigurationListResult) (MaintenanceConfigurationListResult, error)
869	mclr MaintenanceConfigurationListResult
870}
871
872// NextWithContext advances to the next page of values.  If there was an error making
873// the request the page does not advance and the error is returned.
874func (page *MaintenanceConfigurationListResultPage) NextWithContext(ctx context.Context) (err error) {
875	if tracing.IsEnabled() {
876		ctx = tracing.StartSpan(ctx, fqdn+"/MaintenanceConfigurationListResultPage.NextWithContext")
877		defer func() {
878			sc := -1
879			if page.Response().Response.Response != nil {
880				sc = page.Response().Response.Response.StatusCode
881			}
882			tracing.EndSpan(ctx, sc, err)
883		}()
884	}
885	for {
886		next, err := page.fn(ctx, page.mclr)
887		if err != nil {
888			return err
889		}
890		page.mclr = next
891		if !next.hasNextLink() || !next.IsEmpty() {
892			break
893		}
894	}
895	return nil
896}
897
898// Next advances to the next page of values.  If there was an error making
899// the request the page does not advance and the error is returned.
900// Deprecated: Use NextWithContext() instead.
901func (page *MaintenanceConfigurationListResultPage) Next() error {
902	return page.NextWithContext(context.Background())
903}
904
905// NotDone returns true if the page enumeration should be started or is not yet complete.
906func (page MaintenanceConfigurationListResultPage) NotDone() bool {
907	return !page.mclr.IsEmpty()
908}
909
910// Response returns the raw server response from the last page request.
911func (page MaintenanceConfigurationListResultPage) Response() MaintenanceConfigurationListResult {
912	return page.mclr
913}
914
915// Values returns the slice of values for the current page or nil if there are no values.
916func (page MaintenanceConfigurationListResultPage) Values() []MaintenanceConfiguration {
917	if page.mclr.IsEmpty() {
918		return nil
919	}
920	return *page.mclr.Value
921}
922
923// Creates a new instance of the MaintenanceConfigurationListResultPage type.
924func NewMaintenanceConfigurationListResultPage(cur MaintenanceConfigurationListResult, getNextPage func(context.Context, MaintenanceConfigurationListResult) (MaintenanceConfigurationListResult, error)) MaintenanceConfigurationListResultPage {
925	return MaintenanceConfigurationListResultPage{
926		fn:   getNextPage,
927		mclr: cur,
928	}
929}
930
931// MaintenanceConfigurationProperties default maintenance configuration properties.
932type MaintenanceConfigurationProperties struct {
933	// TimeInWeek - Weekday time slots allowed to upgrade.
934	TimeInWeek *[]TimeInWeek `json:"timeInWeek,omitempty"`
935	// NotAllowedTime - Time slots on which upgrade is not allowed.
936	NotAllowedTime *[]TimeSpan `json:"notAllowedTime,omitempty"`
937}
938
939// ManagedCluster managed cluster.
940type ManagedCluster struct {
941	autorest.Response `json:"-"`
942	// ManagedClusterProperties - Properties of a managed cluster.
943	*ManagedClusterProperties `json:"properties,omitempty"`
944	// Identity - The identity of the managed cluster, if configured.
945	Identity *ManagedClusterIdentity `json:"identity,omitempty"`
946	// Sku - The managed cluster SKU.
947	Sku *ManagedClusterSKU `json:"sku,omitempty"`
948	// ID - READ-ONLY; Resource Id
949	ID *string `json:"id,omitempty"`
950	// Name - READ-ONLY; Resource name
951	Name *string `json:"name,omitempty"`
952	// Type - READ-ONLY; Resource type
953	Type *string `json:"type,omitempty"`
954	// Location - Resource location
955	Location *string `json:"location,omitempty"`
956	// Tags - Resource tags
957	Tags map[string]*string `json:"tags"`
958}
959
960// MarshalJSON is the custom marshaler for ManagedCluster.
961func (mc ManagedCluster) MarshalJSON() ([]byte, error) {
962	objectMap := make(map[string]interface{})
963	if mc.ManagedClusterProperties != nil {
964		objectMap["properties"] = mc.ManagedClusterProperties
965	}
966	if mc.Identity != nil {
967		objectMap["identity"] = mc.Identity
968	}
969	if mc.Sku != nil {
970		objectMap["sku"] = mc.Sku
971	}
972	if mc.Location != nil {
973		objectMap["location"] = mc.Location
974	}
975	if mc.Tags != nil {
976		objectMap["tags"] = mc.Tags
977	}
978	return json.Marshal(objectMap)
979}
980
981// UnmarshalJSON is the custom unmarshaler for ManagedCluster struct.
982func (mc *ManagedCluster) UnmarshalJSON(body []byte) error {
983	var m map[string]*json.RawMessage
984	err := json.Unmarshal(body, &m)
985	if err != nil {
986		return err
987	}
988	for k, v := range m {
989		switch k {
990		case "properties":
991			if v != nil {
992				var managedClusterProperties ManagedClusterProperties
993				err = json.Unmarshal(*v, &managedClusterProperties)
994				if err != nil {
995					return err
996				}
997				mc.ManagedClusterProperties = &managedClusterProperties
998			}
999		case "identity":
1000			if v != nil {
1001				var identity ManagedClusterIdentity
1002				err = json.Unmarshal(*v, &identity)
1003				if err != nil {
1004					return err
1005				}
1006				mc.Identity = &identity
1007			}
1008		case "sku":
1009			if v != nil {
1010				var sku ManagedClusterSKU
1011				err = json.Unmarshal(*v, &sku)
1012				if err != nil {
1013					return err
1014				}
1015				mc.Sku = &sku
1016			}
1017		case "id":
1018			if v != nil {
1019				var ID string
1020				err = json.Unmarshal(*v, &ID)
1021				if err != nil {
1022					return err
1023				}
1024				mc.ID = &ID
1025			}
1026		case "name":
1027			if v != nil {
1028				var name string
1029				err = json.Unmarshal(*v, &name)
1030				if err != nil {
1031					return err
1032				}
1033				mc.Name = &name
1034			}
1035		case "type":
1036			if v != nil {
1037				var typeVar string
1038				err = json.Unmarshal(*v, &typeVar)
1039				if err != nil {
1040					return err
1041				}
1042				mc.Type = &typeVar
1043			}
1044		case "location":
1045			if v != nil {
1046				var location string
1047				err = json.Unmarshal(*v, &location)
1048				if err != nil {
1049					return err
1050				}
1051				mc.Location = &location
1052			}
1053		case "tags":
1054			if v != nil {
1055				var tags map[string]*string
1056				err = json.Unmarshal(*v, &tags)
1057				if err != nil {
1058					return err
1059				}
1060				mc.Tags = tags
1061			}
1062		}
1063	}
1064
1065	return nil
1066}
1067
1068// ManagedClusterAADProfile aADProfile specifies attributes for Azure Active Directory integration.
1069type ManagedClusterAADProfile struct {
1070	// Managed - Whether to enable managed AAD.
1071	Managed *bool `json:"managed,omitempty"`
1072	// EnableAzureRBAC - Whether to enable Azure RBAC for Kubernetes authorization.
1073	EnableAzureRBAC *bool `json:"enableAzureRBAC,omitempty"`
1074	// AdminGroupObjectIDs - AAD group object IDs that will have admin role of the cluster.
1075	AdminGroupObjectIDs *[]string `json:"adminGroupObjectIDs,omitempty"`
1076	// ClientAppID - The client AAD application ID.
1077	ClientAppID *string `json:"clientAppID,omitempty"`
1078	// ServerAppID - The server AAD application ID.
1079	ServerAppID *string `json:"serverAppID,omitempty"`
1080	// ServerAppSecret - The server AAD application secret.
1081	ServerAppSecret *string `json:"serverAppSecret,omitempty"`
1082	// TenantID - The AAD tenant ID to use for authentication. If not specified, will use the tenant of the deployment subscription.
1083	TenantID *string `json:"tenantID,omitempty"`
1084}
1085
1086// ManagedClusterAccessProfile managed cluster Access Profile.
1087type ManagedClusterAccessProfile struct {
1088	autorest.Response `json:"-"`
1089	// AccessProfile - AccessProfile of a managed cluster.
1090	*AccessProfile `json:"properties,omitempty"`
1091	// ID - READ-ONLY; Resource Id
1092	ID *string `json:"id,omitempty"`
1093	// Name - READ-ONLY; Resource name
1094	Name *string `json:"name,omitempty"`
1095	// Type - READ-ONLY; Resource type
1096	Type *string `json:"type,omitempty"`
1097	// Location - Resource location
1098	Location *string `json:"location,omitempty"`
1099	// Tags - Resource tags
1100	Tags map[string]*string `json:"tags"`
1101}
1102
1103// MarshalJSON is the custom marshaler for ManagedClusterAccessProfile.
1104func (mcap ManagedClusterAccessProfile) MarshalJSON() ([]byte, error) {
1105	objectMap := make(map[string]interface{})
1106	if mcap.AccessProfile != nil {
1107		objectMap["properties"] = mcap.AccessProfile
1108	}
1109	if mcap.Location != nil {
1110		objectMap["location"] = mcap.Location
1111	}
1112	if mcap.Tags != nil {
1113		objectMap["tags"] = mcap.Tags
1114	}
1115	return json.Marshal(objectMap)
1116}
1117
1118// UnmarshalJSON is the custom unmarshaler for ManagedClusterAccessProfile struct.
1119func (mcap *ManagedClusterAccessProfile) UnmarshalJSON(body []byte) error {
1120	var m map[string]*json.RawMessage
1121	err := json.Unmarshal(body, &m)
1122	if err != nil {
1123		return err
1124	}
1125	for k, v := range m {
1126		switch k {
1127		case "properties":
1128			if v != nil {
1129				var accessProfile AccessProfile
1130				err = json.Unmarshal(*v, &accessProfile)
1131				if err != nil {
1132					return err
1133				}
1134				mcap.AccessProfile = &accessProfile
1135			}
1136		case "id":
1137			if v != nil {
1138				var ID string
1139				err = json.Unmarshal(*v, &ID)
1140				if err != nil {
1141					return err
1142				}
1143				mcap.ID = &ID
1144			}
1145		case "name":
1146			if v != nil {
1147				var name string
1148				err = json.Unmarshal(*v, &name)
1149				if err != nil {
1150					return err
1151				}
1152				mcap.Name = &name
1153			}
1154		case "type":
1155			if v != nil {
1156				var typeVar string
1157				err = json.Unmarshal(*v, &typeVar)
1158				if err != nil {
1159					return err
1160				}
1161				mcap.Type = &typeVar
1162			}
1163		case "location":
1164			if v != nil {
1165				var location string
1166				err = json.Unmarshal(*v, &location)
1167				if err != nil {
1168					return err
1169				}
1170				mcap.Location = &location
1171			}
1172		case "tags":
1173			if v != nil {
1174				var tags map[string]*string
1175				err = json.Unmarshal(*v, &tags)
1176				if err != nil {
1177					return err
1178				}
1179				mcap.Tags = tags
1180			}
1181		}
1182	}
1183
1184	return nil
1185}
1186
1187// ManagedClusterAddonProfile a Kubernetes add-on profile for a managed cluster.
1188type ManagedClusterAddonProfile struct {
1189	// Enabled - Whether the add-on is enabled or not.
1190	Enabled *bool `json:"enabled,omitempty"`
1191	// Config - Key-value pairs for configuring an add-on.
1192	Config map[string]*string `json:"config"`
1193	// Identity - READ-ONLY; Information of user assigned identity used by this add-on.
1194	Identity *ManagedClusterAddonProfileIdentity `json:"identity,omitempty"`
1195}
1196
1197// MarshalJSON is the custom marshaler for ManagedClusterAddonProfile.
1198func (mcap ManagedClusterAddonProfile) MarshalJSON() ([]byte, error) {
1199	objectMap := make(map[string]interface{})
1200	if mcap.Enabled != nil {
1201		objectMap["enabled"] = mcap.Enabled
1202	}
1203	if mcap.Config != nil {
1204		objectMap["config"] = mcap.Config
1205	}
1206	return json.Marshal(objectMap)
1207}
1208
1209// ManagedClusterAddonProfileIdentity information of user assigned identity used by this add-on.
1210type ManagedClusterAddonProfileIdentity struct {
1211	// ResourceID - The resource id of the user assigned identity.
1212	ResourceID *string `json:"resourceId,omitempty"`
1213	// ClientID - The client id of the user assigned identity.
1214	ClientID *string `json:"clientId,omitempty"`
1215	// ObjectID - The object id of the user assigned identity.
1216	ObjectID *string `json:"objectId,omitempty"`
1217}
1218
1219// ManagedClusterAgentPoolProfile profile for the container service agent pool.
1220type ManagedClusterAgentPoolProfile struct {
1221	// Name - Unique name of the agent pool profile in the context of the subscription and resource group.
1222	Name *string `json:"name,omitempty"`
1223	// Count - Number of agents (VMs) to host docker containers. Allowed values must be in the range of 0 to 100 (inclusive) for user pools and in the range of 1 to 100 (inclusive) for system pools. The default value is 1.
1224	Count *int32 `json:"count,omitempty"`
1225	// VMSize - Size of agent VMs. Possible values include: 'StandardA1', 'StandardA10', 'StandardA11', 'StandardA1V2', 'StandardA2', 'StandardA2V2', 'StandardA2mV2', 'StandardA3', 'StandardA4', 'StandardA4V2', 'StandardA4mV2', 'StandardA5', 'StandardA6', 'StandardA7', 'StandardA8', 'StandardA8V2', 'StandardA8mV2', 'StandardA9', 'StandardB2ms', 'StandardB2s', 'StandardB4ms', 'StandardB8ms', 'StandardD1', 'StandardD11', 'StandardD11V2', 'StandardD11V2Promo', 'StandardD12', 'StandardD12V2', 'StandardD12V2Promo', 'StandardD13', 'StandardD13V2', 'StandardD13V2Promo', 'StandardD14', 'StandardD14V2', 'StandardD14V2Promo', 'StandardD15V2', 'StandardD16V3', 'StandardD16sV3', 'StandardD1V2', 'StandardD2', 'StandardD2V2', 'StandardD2V2Promo', 'StandardD2V3', 'StandardD2sV3', 'StandardD3', 'StandardD32V3', 'StandardD32sV3', 'StandardD3V2', 'StandardD3V2Promo', 'StandardD4', 'StandardD4V2', 'StandardD4V2Promo', 'StandardD4V3', 'StandardD4sV3', 'StandardD5V2', 'StandardD5V2Promo', 'StandardD64V3', 'StandardD64sV3', 'StandardD8V3', 'StandardD8sV3', 'StandardDS1', 'StandardDS11', 'StandardDS11V2', 'StandardDS11V2Promo', 'StandardDS12', 'StandardDS12V2', 'StandardDS12V2Promo', 'StandardDS13', 'StandardDS132V2', 'StandardDS134V2', 'StandardDS13V2', 'StandardDS13V2Promo', 'StandardDS14', 'StandardDS144V2', 'StandardDS148V2', 'StandardDS14V2', 'StandardDS14V2Promo', 'StandardDS15V2', 'StandardDS1V2', 'StandardDS2', 'StandardDS2V2', 'StandardDS2V2Promo', 'StandardDS3', 'StandardDS3V2', 'StandardDS3V2Promo', 'StandardDS4', 'StandardDS4V2', 'StandardDS4V2Promo', 'StandardDS5V2', 'StandardDS5V2Promo', 'StandardE16V3', 'StandardE16sV3', 'StandardE2V3', 'StandardE2sV3', 'StandardE3216sV3', 'StandardE328sV3', 'StandardE32V3', 'StandardE32sV3', 'StandardE4V3', 'StandardE4sV3', 'StandardE6416sV3', 'StandardE6432sV3', 'StandardE64V3', 'StandardE64sV3', 'StandardE8V3', 'StandardE8sV3', 'StandardF1', 'StandardF16', 'StandardF16s', 'StandardF16sV2', 'StandardF1s', 'StandardF2', 'StandardF2s', 'StandardF2sV2', 'StandardF32sV2', 'StandardF4', 'StandardF4s', 'StandardF4sV2', 'StandardF64sV2', 'StandardF72sV2', 'StandardF8', 'StandardF8s', 'StandardF8sV2', 'StandardG1', 'StandardG2', 'StandardG3', 'StandardG4', 'StandardG5', 'StandardGS1', 'StandardGS2', 'StandardGS3', 'StandardGS4', 'StandardGS44', 'StandardGS48', 'StandardGS5', 'StandardGS516', 'StandardGS58', 'StandardH16', 'StandardH16m', 'StandardH16mr', 'StandardH16r', 'StandardH8', 'StandardH8m', 'StandardL16s', 'StandardL32s', 'StandardL4s', 'StandardL8s', 'StandardM12832ms', 'StandardM12864ms', 'StandardM128ms', 'StandardM128s', 'StandardM6416ms', 'StandardM6432ms', 'StandardM64ms', 'StandardM64s', 'StandardNC12', 'StandardNC12sV2', 'StandardNC12sV3', 'StandardNC24', 'StandardNC24r', 'StandardNC24rsV2', 'StandardNC24rsV3', 'StandardNC24sV2', 'StandardNC24sV3', 'StandardNC6', 'StandardNC6sV2', 'StandardNC6sV3', 'StandardND12s', 'StandardND24rs', 'StandardND24s', 'StandardND6s', 'StandardNV12', 'StandardNV24', 'StandardNV6'
1226	VMSize VMSizeTypes `json:"vmSize,omitempty"`
1227	// 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.
1228	OsDiskSizeGB *int32 `json:"osDiskSizeGB,omitempty"`
1229	// OsDiskType - OS disk type to be used for machines in a given agent pool. Allowed values are 'Ephemeral' and 'Managed'. Defaults to 'Managed'. May not be changed after creation. Possible values include: 'Managed', 'Ephemeral'
1230	OsDiskType OSDiskType `json:"osDiskType,omitempty"`
1231	// KubeletDiskType - KubeletDiskType determines the placement of emptyDir volumes, container runtime data root, and Kubelet ephemeral storage. Currently allows one value, OS, resulting in Kubelet using the OS disk for data. Possible values include: 'OS', 'Temporary'
1232	KubeletDiskType KubeletDiskType `json:"kubeletDiskType,omitempty"`
1233	// VnetSubnetID - VNet SubnetID specifies the VNet's subnet identifier for nodes and maybe pods
1234	VnetSubnetID *string `json:"vnetSubnetID,omitempty"`
1235	// PodSubnetID - Pod SubnetID specifies the VNet's subnet identifier for pods.
1236	PodSubnetID *string `json:"podSubnetID,omitempty"`
1237	// MaxPods - Maximum number of pods that can run on a node.
1238	MaxPods *int32 `json:"maxPods,omitempty"`
1239	// OsType - OsType to be used to specify os type. Choose from Linux and Windows. Default to Linux. Possible values include: 'Linux', 'Windows'
1240	OsType OSType `json:"osType,omitempty"`
1241	// MaxCount - Maximum number of nodes for auto-scaling
1242	MaxCount *int32 `json:"maxCount,omitempty"`
1243	// MinCount - Minimum number of nodes for auto-scaling
1244	MinCount *int32 `json:"minCount,omitempty"`
1245	// EnableAutoScaling - Whether to enable auto-scaler
1246	EnableAutoScaling *bool `json:"enableAutoScaling,omitempty"`
1247	// Type - AgentPoolType represents types of an agent pool. Possible values include: 'VirtualMachineScaleSets', 'AvailabilitySet'
1248	Type AgentPoolType `json:"type,omitempty"`
1249	// Mode - AgentPoolMode represents mode of an agent pool. Possible values include: 'System', 'User'
1250	Mode AgentPoolMode `json:"mode,omitempty"`
1251	// OrchestratorVersion - Version of orchestrator specified when creating the managed cluster.
1252	OrchestratorVersion *string `json:"orchestratorVersion,omitempty"`
1253	// NodeImageVersion - READ-ONLY; Version of node image
1254	NodeImageVersion *string `json:"nodeImageVersion,omitempty"`
1255	// UpgradeSettings - Settings for upgrading the agentpool
1256	UpgradeSettings *AgentPoolUpgradeSettings `json:"upgradeSettings,omitempty"`
1257	// ProvisioningState - READ-ONLY; The current deployment or provisioning state, which only appears in the response.
1258	ProvisioningState *string `json:"provisioningState,omitempty"`
1259	// PowerState - READ-ONLY; Describes whether the Agent Pool is Running or Stopped
1260	PowerState *PowerState `json:"powerState,omitempty"`
1261	// AvailabilityZones - Availability zones for nodes. Must use VirtualMachineScaleSets AgentPoolType.
1262	AvailabilityZones *[]string `json:"availabilityZones,omitempty"`
1263	// EnableNodePublicIP - Enable public IP for nodes
1264	EnableNodePublicIP *bool `json:"enableNodePublicIP,omitempty"`
1265	// NodePublicIPPrefixID - Public IP Prefix ID. VM nodes use IPs assigned from this Public IP Prefix.
1266	NodePublicIPPrefixID *string `json:"nodePublicIPPrefixID,omitempty"`
1267	// ScaleSetPriority - ScaleSetPriority to be used to specify virtual machine scale set priority. Default to regular. Possible values include: 'Spot', 'Regular'
1268	ScaleSetPriority ScaleSetPriority `json:"scaleSetPriority,omitempty"`
1269	// ScaleSetEvictionPolicy - ScaleSetEvictionPolicy to be used to specify eviction policy for Spot virtual machine scale set. Default to Delete. Possible values include: 'Delete', 'Deallocate'
1270	ScaleSetEvictionPolicy ScaleSetEvictionPolicy `json:"scaleSetEvictionPolicy,omitempty"`
1271	// SpotMaxPrice - SpotMaxPrice to be used to specify the maximum price you are willing to pay in US Dollars. Possible values are any decimal value greater than zero or -1 which indicates default price to be up-to on-demand.
1272	SpotMaxPrice *float64 `json:"spotMaxPrice,omitempty"`
1273	// Tags - Agent pool tags to be persisted on the agent pool virtual machine scale set.
1274	Tags map[string]*string `json:"tags"`
1275	// NodeLabels - Agent pool node labels to be persisted across all nodes in agent pool.
1276	NodeLabels map[string]*string `json:"nodeLabels"`
1277	// NodeTaints - Taints added to new nodes during node pool create and scale. For example, key=value:NoSchedule.
1278	NodeTaints *[]string `json:"nodeTaints,omitempty"`
1279	// ProximityPlacementGroupID - The ID for Proximity Placement Group.
1280	ProximityPlacementGroupID *string `json:"proximityPlacementGroupID,omitempty"`
1281	// KubeletConfig - KubeletConfig specifies the configuration of kubelet on agent nodes.
1282	KubeletConfig *KubeletConfig `json:"kubeletConfig,omitempty"`
1283	// LinuxOSConfig - LinuxOSConfig specifies the OS configuration of linux agent nodes.
1284	LinuxOSConfig *LinuxOSConfig `json:"linuxOSConfig,omitempty"`
1285	// EnableEncryptionAtHost - Whether to enable EncryptionAtHost
1286	EnableEncryptionAtHost *bool `json:"enableEncryptionAtHost,omitempty"`
1287}
1288
1289// MarshalJSON is the custom marshaler for ManagedClusterAgentPoolProfile.
1290func (mcapp ManagedClusterAgentPoolProfile) MarshalJSON() ([]byte, error) {
1291	objectMap := make(map[string]interface{})
1292	if mcapp.Name != nil {
1293		objectMap["name"] = mcapp.Name
1294	}
1295	if mcapp.Count != nil {
1296		objectMap["count"] = mcapp.Count
1297	}
1298	if mcapp.VMSize != "" {
1299		objectMap["vmSize"] = mcapp.VMSize
1300	}
1301	if mcapp.OsDiskSizeGB != nil {
1302		objectMap["osDiskSizeGB"] = mcapp.OsDiskSizeGB
1303	}
1304	if mcapp.OsDiskType != "" {
1305		objectMap["osDiskType"] = mcapp.OsDiskType
1306	}
1307	if mcapp.KubeletDiskType != "" {
1308		objectMap["kubeletDiskType"] = mcapp.KubeletDiskType
1309	}
1310	if mcapp.VnetSubnetID != nil {
1311		objectMap["vnetSubnetID"] = mcapp.VnetSubnetID
1312	}
1313	if mcapp.PodSubnetID != nil {
1314		objectMap["podSubnetID"] = mcapp.PodSubnetID
1315	}
1316	if mcapp.MaxPods != nil {
1317		objectMap["maxPods"] = mcapp.MaxPods
1318	}
1319	if mcapp.OsType != "" {
1320		objectMap["osType"] = mcapp.OsType
1321	}
1322	if mcapp.MaxCount != nil {
1323		objectMap["maxCount"] = mcapp.MaxCount
1324	}
1325	if mcapp.MinCount != nil {
1326		objectMap["minCount"] = mcapp.MinCount
1327	}
1328	if mcapp.EnableAutoScaling != nil {
1329		objectMap["enableAutoScaling"] = mcapp.EnableAutoScaling
1330	}
1331	if mcapp.Type != "" {
1332		objectMap["type"] = mcapp.Type
1333	}
1334	if mcapp.Mode != "" {
1335		objectMap["mode"] = mcapp.Mode
1336	}
1337	if mcapp.OrchestratorVersion != nil {
1338		objectMap["orchestratorVersion"] = mcapp.OrchestratorVersion
1339	}
1340	if mcapp.UpgradeSettings != nil {
1341		objectMap["upgradeSettings"] = mcapp.UpgradeSettings
1342	}
1343	if mcapp.AvailabilityZones != nil {
1344		objectMap["availabilityZones"] = mcapp.AvailabilityZones
1345	}
1346	if mcapp.EnableNodePublicIP != nil {
1347		objectMap["enableNodePublicIP"] = mcapp.EnableNodePublicIP
1348	}
1349	if mcapp.NodePublicIPPrefixID != nil {
1350		objectMap["nodePublicIPPrefixID"] = mcapp.NodePublicIPPrefixID
1351	}
1352	if mcapp.ScaleSetPriority != "" {
1353		objectMap["scaleSetPriority"] = mcapp.ScaleSetPriority
1354	}
1355	if mcapp.ScaleSetEvictionPolicy != "" {
1356		objectMap["scaleSetEvictionPolicy"] = mcapp.ScaleSetEvictionPolicy
1357	}
1358	if mcapp.SpotMaxPrice != nil {
1359		objectMap["spotMaxPrice"] = mcapp.SpotMaxPrice
1360	}
1361	if mcapp.Tags != nil {
1362		objectMap["tags"] = mcapp.Tags
1363	}
1364	if mcapp.NodeLabels != nil {
1365		objectMap["nodeLabels"] = mcapp.NodeLabels
1366	}
1367	if mcapp.NodeTaints != nil {
1368		objectMap["nodeTaints"] = mcapp.NodeTaints
1369	}
1370	if mcapp.ProximityPlacementGroupID != nil {
1371		objectMap["proximityPlacementGroupID"] = mcapp.ProximityPlacementGroupID
1372	}
1373	if mcapp.KubeletConfig != nil {
1374		objectMap["kubeletConfig"] = mcapp.KubeletConfig
1375	}
1376	if mcapp.LinuxOSConfig != nil {
1377		objectMap["linuxOSConfig"] = mcapp.LinuxOSConfig
1378	}
1379	if mcapp.EnableEncryptionAtHost != nil {
1380		objectMap["enableEncryptionAtHost"] = mcapp.EnableEncryptionAtHost
1381	}
1382	return json.Marshal(objectMap)
1383}
1384
1385// ManagedClusterAgentPoolProfileProperties properties for the container service agent pool profile.
1386type ManagedClusterAgentPoolProfileProperties struct {
1387	// Count - Number of agents (VMs) to host docker containers. Allowed values must be in the range of 0 to 100 (inclusive) for user pools and in the range of 1 to 100 (inclusive) for system pools. The default value is 1.
1388	Count *int32 `json:"count,omitempty"`
1389	// VMSize - Size of agent VMs. Possible values include: 'StandardA1', 'StandardA10', 'StandardA11', 'StandardA1V2', 'StandardA2', 'StandardA2V2', 'StandardA2mV2', 'StandardA3', 'StandardA4', 'StandardA4V2', 'StandardA4mV2', 'StandardA5', 'StandardA6', 'StandardA7', 'StandardA8', 'StandardA8V2', 'StandardA8mV2', 'StandardA9', 'StandardB2ms', 'StandardB2s', 'StandardB4ms', 'StandardB8ms', 'StandardD1', 'StandardD11', 'StandardD11V2', 'StandardD11V2Promo', 'StandardD12', 'StandardD12V2', 'StandardD12V2Promo', 'StandardD13', 'StandardD13V2', 'StandardD13V2Promo', 'StandardD14', 'StandardD14V2', 'StandardD14V2Promo', 'StandardD15V2', 'StandardD16V3', 'StandardD16sV3', 'StandardD1V2', 'StandardD2', 'StandardD2V2', 'StandardD2V2Promo', 'StandardD2V3', 'StandardD2sV3', 'StandardD3', 'StandardD32V3', 'StandardD32sV3', 'StandardD3V2', 'StandardD3V2Promo', 'StandardD4', 'StandardD4V2', 'StandardD4V2Promo', 'StandardD4V3', 'StandardD4sV3', 'StandardD5V2', 'StandardD5V2Promo', 'StandardD64V3', 'StandardD64sV3', 'StandardD8V3', 'StandardD8sV3', 'StandardDS1', 'StandardDS11', 'StandardDS11V2', 'StandardDS11V2Promo', 'StandardDS12', 'StandardDS12V2', 'StandardDS12V2Promo', 'StandardDS13', 'StandardDS132V2', 'StandardDS134V2', 'StandardDS13V2', 'StandardDS13V2Promo', 'StandardDS14', 'StandardDS144V2', 'StandardDS148V2', 'StandardDS14V2', 'StandardDS14V2Promo', 'StandardDS15V2', 'StandardDS1V2', 'StandardDS2', 'StandardDS2V2', 'StandardDS2V2Promo', 'StandardDS3', 'StandardDS3V2', 'StandardDS3V2Promo', 'StandardDS4', 'StandardDS4V2', 'StandardDS4V2Promo', 'StandardDS5V2', 'StandardDS5V2Promo', 'StandardE16V3', 'StandardE16sV3', 'StandardE2V3', 'StandardE2sV3', 'StandardE3216sV3', 'StandardE328sV3', 'StandardE32V3', 'StandardE32sV3', 'StandardE4V3', 'StandardE4sV3', 'StandardE6416sV3', 'StandardE6432sV3', 'StandardE64V3', 'StandardE64sV3', 'StandardE8V3', 'StandardE8sV3', 'StandardF1', 'StandardF16', 'StandardF16s', 'StandardF16sV2', 'StandardF1s', 'StandardF2', 'StandardF2s', 'StandardF2sV2', 'StandardF32sV2', 'StandardF4', 'StandardF4s', 'StandardF4sV2', 'StandardF64sV2', 'StandardF72sV2', 'StandardF8', 'StandardF8s', 'StandardF8sV2', 'StandardG1', 'StandardG2', 'StandardG3', 'StandardG4', 'StandardG5', 'StandardGS1', 'StandardGS2', 'StandardGS3', 'StandardGS4', 'StandardGS44', 'StandardGS48', 'StandardGS5', 'StandardGS516', 'StandardGS58', 'StandardH16', 'StandardH16m', 'StandardH16mr', 'StandardH16r', 'StandardH8', 'StandardH8m', 'StandardL16s', 'StandardL32s', 'StandardL4s', 'StandardL8s', 'StandardM12832ms', 'StandardM12864ms', 'StandardM128ms', 'StandardM128s', 'StandardM6416ms', 'StandardM6432ms', 'StandardM64ms', 'StandardM64s', 'StandardNC12', 'StandardNC12sV2', 'StandardNC12sV3', 'StandardNC24', 'StandardNC24r', 'StandardNC24rsV2', 'StandardNC24rsV3', 'StandardNC24sV2', 'StandardNC24sV3', 'StandardNC6', 'StandardNC6sV2', 'StandardNC6sV3', 'StandardND12s', 'StandardND24rs', 'StandardND24s', 'StandardND6s', 'StandardNV12', 'StandardNV24', 'StandardNV6'
1390	VMSize VMSizeTypes `json:"vmSize,omitempty"`
1391	// 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.
1392	OsDiskSizeGB *int32 `json:"osDiskSizeGB,omitempty"`
1393	// OsDiskType - OS disk type to be used for machines in a given agent pool. Allowed values are 'Ephemeral' and 'Managed'. Defaults to 'Managed'. May not be changed after creation. Possible values include: 'Managed', 'Ephemeral'
1394	OsDiskType OSDiskType `json:"osDiskType,omitempty"`
1395	// KubeletDiskType - KubeletDiskType determines the placement of emptyDir volumes, container runtime data root, and Kubelet ephemeral storage. Currently allows one value, OS, resulting in Kubelet using the OS disk for data. Possible values include: 'OS', 'Temporary'
1396	KubeletDiskType KubeletDiskType `json:"kubeletDiskType,omitempty"`
1397	// VnetSubnetID - VNet SubnetID specifies the VNet's subnet identifier for nodes and maybe pods
1398	VnetSubnetID *string `json:"vnetSubnetID,omitempty"`
1399	// PodSubnetID - Pod SubnetID specifies the VNet's subnet identifier for pods.
1400	PodSubnetID *string `json:"podSubnetID,omitempty"`
1401	// MaxPods - Maximum number of pods that can run on a node.
1402	MaxPods *int32 `json:"maxPods,omitempty"`
1403	// OsType - OsType to be used to specify os type. Choose from Linux and Windows. Default to Linux. Possible values include: 'Linux', 'Windows'
1404	OsType OSType `json:"osType,omitempty"`
1405	// MaxCount - Maximum number of nodes for auto-scaling
1406	MaxCount *int32 `json:"maxCount,omitempty"`
1407	// MinCount - Minimum number of nodes for auto-scaling
1408	MinCount *int32 `json:"minCount,omitempty"`
1409	// EnableAutoScaling - Whether to enable auto-scaler
1410	EnableAutoScaling *bool `json:"enableAutoScaling,omitempty"`
1411	// Type - AgentPoolType represents types of an agent pool. Possible values include: 'VirtualMachineScaleSets', 'AvailabilitySet'
1412	Type AgentPoolType `json:"type,omitempty"`
1413	// Mode - AgentPoolMode represents mode of an agent pool. Possible values include: 'System', 'User'
1414	Mode AgentPoolMode `json:"mode,omitempty"`
1415	// OrchestratorVersion - Version of orchestrator specified when creating the managed cluster.
1416	OrchestratorVersion *string `json:"orchestratorVersion,omitempty"`
1417	// NodeImageVersion - READ-ONLY; Version of node image
1418	NodeImageVersion *string `json:"nodeImageVersion,omitempty"`
1419	// UpgradeSettings - Settings for upgrading the agentpool
1420	UpgradeSettings *AgentPoolUpgradeSettings `json:"upgradeSettings,omitempty"`
1421	// ProvisioningState - READ-ONLY; The current deployment or provisioning state, which only appears in the response.
1422	ProvisioningState *string `json:"provisioningState,omitempty"`
1423	// PowerState - READ-ONLY; Describes whether the Agent Pool is Running or Stopped
1424	PowerState *PowerState `json:"powerState,omitempty"`
1425	// AvailabilityZones - Availability zones for nodes. Must use VirtualMachineScaleSets AgentPoolType.
1426	AvailabilityZones *[]string `json:"availabilityZones,omitempty"`
1427	// EnableNodePublicIP - Enable public IP for nodes
1428	EnableNodePublicIP *bool `json:"enableNodePublicIP,omitempty"`
1429	// NodePublicIPPrefixID - Public IP Prefix ID. VM nodes use IPs assigned from this Public IP Prefix.
1430	NodePublicIPPrefixID *string `json:"nodePublicIPPrefixID,omitempty"`
1431	// ScaleSetPriority - ScaleSetPriority to be used to specify virtual machine scale set priority. Default to regular. Possible values include: 'Spot', 'Regular'
1432	ScaleSetPriority ScaleSetPriority `json:"scaleSetPriority,omitempty"`
1433	// ScaleSetEvictionPolicy - ScaleSetEvictionPolicy to be used to specify eviction policy for Spot virtual machine scale set. Default to Delete. Possible values include: 'Delete', 'Deallocate'
1434	ScaleSetEvictionPolicy ScaleSetEvictionPolicy `json:"scaleSetEvictionPolicy,omitempty"`
1435	// SpotMaxPrice - SpotMaxPrice to be used to specify the maximum price you are willing to pay in US Dollars. Possible values are any decimal value greater than zero or -1 which indicates default price to be up-to on-demand.
1436	SpotMaxPrice *float64 `json:"spotMaxPrice,omitempty"`
1437	// Tags - Agent pool tags to be persisted on the agent pool virtual machine scale set.
1438	Tags map[string]*string `json:"tags"`
1439	// NodeLabels - Agent pool node labels to be persisted across all nodes in agent pool.
1440	NodeLabels map[string]*string `json:"nodeLabels"`
1441	// NodeTaints - Taints added to new nodes during node pool create and scale. For example, key=value:NoSchedule.
1442	NodeTaints *[]string `json:"nodeTaints,omitempty"`
1443	// ProximityPlacementGroupID - The ID for Proximity Placement Group.
1444	ProximityPlacementGroupID *string `json:"proximityPlacementGroupID,omitempty"`
1445	// KubeletConfig - KubeletConfig specifies the configuration of kubelet on agent nodes.
1446	KubeletConfig *KubeletConfig `json:"kubeletConfig,omitempty"`
1447	// LinuxOSConfig - LinuxOSConfig specifies the OS configuration of linux agent nodes.
1448	LinuxOSConfig *LinuxOSConfig `json:"linuxOSConfig,omitempty"`
1449	// EnableEncryptionAtHost - Whether to enable EncryptionAtHost
1450	EnableEncryptionAtHost *bool `json:"enableEncryptionAtHost,omitempty"`
1451}
1452
1453// MarshalJSON is the custom marshaler for ManagedClusterAgentPoolProfileProperties.
1454func (mcappp ManagedClusterAgentPoolProfileProperties) MarshalJSON() ([]byte, error) {
1455	objectMap := make(map[string]interface{})
1456	if mcappp.Count != nil {
1457		objectMap["count"] = mcappp.Count
1458	}
1459	if mcappp.VMSize != "" {
1460		objectMap["vmSize"] = mcappp.VMSize
1461	}
1462	if mcappp.OsDiskSizeGB != nil {
1463		objectMap["osDiskSizeGB"] = mcappp.OsDiskSizeGB
1464	}
1465	if mcappp.OsDiskType != "" {
1466		objectMap["osDiskType"] = mcappp.OsDiskType
1467	}
1468	if mcappp.KubeletDiskType != "" {
1469		objectMap["kubeletDiskType"] = mcappp.KubeletDiskType
1470	}
1471	if mcappp.VnetSubnetID != nil {
1472		objectMap["vnetSubnetID"] = mcappp.VnetSubnetID
1473	}
1474	if mcappp.PodSubnetID != nil {
1475		objectMap["podSubnetID"] = mcappp.PodSubnetID
1476	}
1477	if mcappp.MaxPods != nil {
1478		objectMap["maxPods"] = mcappp.MaxPods
1479	}
1480	if mcappp.OsType != "" {
1481		objectMap["osType"] = mcappp.OsType
1482	}
1483	if mcappp.MaxCount != nil {
1484		objectMap["maxCount"] = mcappp.MaxCount
1485	}
1486	if mcappp.MinCount != nil {
1487		objectMap["minCount"] = mcappp.MinCount
1488	}
1489	if mcappp.EnableAutoScaling != nil {
1490		objectMap["enableAutoScaling"] = mcappp.EnableAutoScaling
1491	}
1492	if mcappp.Type != "" {
1493		objectMap["type"] = mcappp.Type
1494	}
1495	if mcappp.Mode != "" {
1496		objectMap["mode"] = mcappp.Mode
1497	}
1498	if mcappp.OrchestratorVersion != nil {
1499		objectMap["orchestratorVersion"] = mcappp.OrchestratorVersion
1500	}
1501	if mcappp.UpgradeSettings != nil {
1502		objectMap["upgradeSettings"] = mcappp.UpgradeSettings
1503	}
1504	if mcappp.AvailabilityZones != nil {
1505		objectMap["availabilityZones"] = mcappp.AvailabilityZones
1506	}
1507	if mcappp.EnableNodePublicIP != nil {
1508		objectMap["enableNodePublicIP"] = mcappp.EnableNodePublicIP
1509	}
1510	if mcappp.NodePublicIPPrefixID != nil {
1511		objectMap["nodePublicIPPrefixID"] = mcappp.NodePublicIPPrefixID
1512	}
1513	if mcappp.ScaleSetPriority != "" {
1514		objectMap["scaleSetPriority"] = mcappp.ScaleSetPriority
1515	}
1516	if mcappp.ScaleSetEvictionPolicy != "" {
1517		objectMap["scaleSetEvictionPolicy"] = mcappp.ScaleSetEvictionPolicy
1518	}
1519	if mcappp.SpotMaxPrice != nil {
1520		objectMap["spotMaxPrice"] = mcappp.SpotMaxPrice
1521	}
1522	if mcappp.Tags != nil {
1523		objectMap["tags"] = mcappp.Tags
1524	}
1525	if mcappp.NodeLabels != nil {
1526		objectMap["nodeLabels"] = mcappp.NodeLabels
1527	}
1528	if mcappp.NodeTaints != nil {
1529		objectMap["nodeTaints"] = mcappp.NodeTaints
1530	}
1531	if mcappp.ProximityPlacementGroupID != nil {
1532		objectMap["proximityPlacementGroupID"] = mcappp.ProximityPlacementGroupID
1533	}
1534	if mcappp.KubeletConfig != nil {
1535		objectMap["kubeletConfig"] = mcappp.KubeletConfig
1536	}
1537	if mcappp.LinuxOSConfig != nil {
1538		objectMap["linuxOSConfig"] = mcappp.LinuxOSConfig
1539	}
1540	if mcappp.EnableEncryptionAtHost != nil {
1541		objectMap["enableEncryptionAtHost"] = mcappp.EnableEncryptionAtHost
1542	}
1543	return json.Marshal(objectMap)
1544}
1545
1546// ManagedClusterAPIServerAccessProfile access profile for managed cluster API server.
1547type ManagedClusterAPIServerAccessProfile struct {
1548	// AuthorizedIPRanges - Authorized IP Ranges to kubernetes API server.
1549	AuthorizedIPRanges *[]string `json:"authorizedIPRanges,omitempty"`
1550	// EnablePrivateCluster - Whether to create the cluster as a private cluster or not.
1551	EnablePrivateCluster *bool `json:"enablePrivateCluster,omitempty"`
1552	// PrivateDNSZone - Private dns zone mode for private cluster.
1553	PrivateDNSZone *string `json:"privateDNSZone,omitempty"`
1554}
1555
1556// ManagedClusterAutoUpgradeProfile auto upgrade profile for a managed cluster.
1557type ManagedClusterAutoUpgradeProfile struct {
1558	// UpgradeChannel - upgrade channel for auto upgrade. Possible values include: 'UpgradeChannelRapid', 'UpgradeChannelStable', 'UpgradeChannelPatch', 'UpgradeChannelNone'
1559	UpgradeChannel UpgradeChannel `json:"upgradeChannel,omitempty"`
1560}
1561
1562// ManagedClusterIdentity identity for the managed cluster.
1563type ManagedClusterIdentity struct {
1564	// PrincipalID - READ-ONLY; The principal id of the system assigned identity which is used by master components.
1565	PrincipalID *string `json:"principalId,omitempty"`
1566	// TenantID - READ-ONLY; The tenant id of the system assigned identity which is used by master components.
1567	TenantID *string `json:"tenantId,omitempty"`
1568	// 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: 'ResourceIdentityTypeSystemAssigned', 'ResourceIdentityTypeUserAssigned', 'ResourceIdentityTypeNone'
1569	Type ResourceIdentityType `json:"type,omitempty"`
1570	// UserAssignedIdentities - The user identity associated with the managed cluster. This identity will be used in control plane and only one user assigned identity is allowed. The user identity dictionary key references will be ARM resource ids in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.
1571	UserAssignedIdentities map[string]*ManagedClusterIdentityUserAssignedIdentitiesValue `json:"userAssignedIdentities"`
1572}
1573
1574// MarshalJSON is the custom marshaler for ManagedClusterIdentity.
1575func (mci ManagedClusterIdentity) MarshalJSON() ([]byte, error) {
1576	objectMap := make(map[string]interface{})
1577	if mci.Type != "" {
1578		objectMap["type"] = mci.Type
1579	}
1580	if mci.UserAssignedIdentities != nil {
1581		objectMap["userAssignedIdentities"] = mci.UserAssignedIdentities
1582	}
1583	return json.Marshal(objectMap)
1584}
1585
1586// ManagedClusterIdentityUserAssignedIdentitiesValue ...
1587type ManagedClusterIdentityUserAssignedIdentitiesValue struct {
1588	// PrincipalID - READ-ONLY; The principal id of user assigned identity.
1589	PrincipalID *string `json:"principalId,omitempty"`
1590	// ClientID - READ-ONLY; The client id of user assigned identity.
1591	ClientID *string `json:"clientId,omitempty"`
1592}
1593
1594// MarshalJSON is the custom marshaler for ManagedClusterIdentityUserAssignedIdentitiesValue.
1595func (mciAiv ManagedClusterIdentityUserAssignedIdentitiesValue) MarshalJSON() ([]byte, error) {
1596	objectMap := make(map[string]interface{})
1597	return json.Marshal(objectMap)
1598}
1599
1600// ManagedClusterListResult the response from the List Managed Clusters operation.
1601type ManagedClusterListResult struct {
1602	autorest.Response `json:"-"`
1603	// Value - The list of managed clusters.
1604	Value *[]ManagedCluster `json:"value,omitempty"`
1605	// NextLink - READ-ONLY; The URL to get the next set of managed cluster results.
1606	NextLink *string `json:"nextLink,omitempty"`
1607}
1608
1609// MarshalJSON is the custom marshaler for ManagedClusterListResult.
1610func (mclr ManagedClusterListResult) MarshalJSON() ([]byte, error) {
1611	objectMap := make(map[string]interface{})
1612	if mclr.Value != nil {
1613		objectMap["value"] = mclr.Value
1614	}
1615	return json.Marshal(objectMap)
1616}
1617
1618// ManagedClusterListResultIterator provides access to a complete listing of ManagedCluster values.
1619type ManagedClusterListResultIterator struct {
1620	i    int
1621	page ManagedClusterListResultPage
1622}
1623
1624// NextWithContext advances to the next value.  If there was an error making
1625// the request the iterator does not advance and the error is returned.
1626func (iter *ManagedClusterListResultIterator) NextWithContext(ctx context.Context) (err error) {
1627	if tracing.IsEnabled() {
1628		ctx = tracing.StartSpan(ctx, fqdn+"/ManagedClusterListResultIterator.NextWithContext")
1629		defer func() {
1630			sc := -1
1631			if iter.Response().Response.Response != nil {
1632				sc = iter.Response().Response.Response.StatusCode
1633			}
1634			tracing.EndSpan(ctx, sc, err)
1635		}()
1636	}
1637	iter.i++
1638	if iter.i < len(iter.page.Values()) {
1639		return nil
1640	}
1641	err = iter.page.NextWithContext(ctx)
1642	if err != nil {
1643		iter.i--
1644		return err
1645	}
1646	iter.i = 0
1647	return nil
1648}
1649
1650// Next advances to the next value.  If there was an error making
1651// the request the iterator does not advance and the error is returned.
1652// Deprecated: Use NextWithContext() instead.
1653func (iter *ManagedClusterListResultIterator) Next() error {
1654	return iter.NextWithContext(context.Background())
1655}
1656
1657// NotDone returns true if the enumeration should be started or is not yet complete.
1658func (iter ManagedClusterListResultIterator) NotDone() bool {
1659	return iter.page.NotDone() && iter.i < len(iter.page.Values())
1660}
1661
1662// Response returns the raw server response from the last page request.
1663func (iter ManagedClusterListResultIterator) Response() ManagedClusterListResult {
1664	return iter.page.Response()
1665}
1666
1667// Value returns the current value or a zero-initialized value if the
1668// iterator has advanced beyond the end of the collection.
1669func (iter ManagedClusterListResultIterator) Value() ManagedCluster {
1670	if !iter.page.NotDone() {
1671		return ManagedCluster{}
1672	}
1673	return iter.page.Values()[iter.i]
1674}
1675
1676// Creates a new instance of the ManagedClusterListResultIterator type.
1677func NewManagedClusterListResultIterator(page ManagedClusterListResultPage) ManagedClusterListResultIterator {
1678	return ManagedClusterListResultIterator{page: page}
1679}
1680
1681// IsEmpty returns true if the ListResult contains no values.
1682func (mclr ManagedClusterListResult) IsEmpty() bool {
1683	return mclr.Value == nil || len(*mclr.Value) == 0
1684}
1685
1686// hasNextLink returns true if the NextLink is not empty.
1687func (mclr ManagedClusterListResult) hasNextLink() bool {
1688	return mclr.NextLink != nil && len(*mclr.NextLink) != 0
1689}
1690
1691// managedClusterListResultPreparer prepares a request to retrieve the next set of results.
1692// It returns nil if no more results exist.
1693func (mclr ManagedClusterListResult) managedClusterListResultPreparer(ctx context.Context) (*http.Request, error) {
1694	if !mclr.hasNextLink() {
1695		return nil, nil
1696	}
1697	return autorest.Prepare((&http.Request{}).WithContext(ctx),
1698		autorest.AsJSON(),
1699		autorest.AsGet(),
1700		autorest.WithBaseURL(to.String(mclr.NextLink)))
1701}
1702
1703// ManagedClusterListResultPage contains a page of ManagedCluster values.
1704type ManagedClusterListResultPage struct {
1705	fn   func(context.Context, ManagedClusterListResult) (ManagedClusterListResult, error)
1706	mclr ManagedClusterListResult
1707}
1708
1709// NextWithContext advances to the next page of values.  If there was an error making
1710// the request the page does not advance and the error is returned.
1711func (page *ManagedClusterListResultPage) NextWithContext(ctx context.Context) (err error) {
1712	if tracing.IsEnabled() {
1713		ctx = tracing.StartSpan(ctx, fqdn+"/ManagedClusterListResultPage.NextWithContext")
1714		defer func() {
1715			sc := -1
1716			if page.Response().Response.Response != nil {
1717				sc = page.Response().Response.Response.StatusCode
1718			}
1719			tracing.EndSpan(ctx, sc, err)
1720		}()
1721	}
1722	for {
1723		next, err := page.fn(ctx, page.mclr)
1724		if err != nil {
1725			return err
1726		}
1727		page.mclr = next
1728		if !next.hasNextLink() || !next.IsEmpty() {
1729			break
1730		}
1731	}
1732	return nil
1733}
1734
1735// Next advances to the next page of values.  If there was an error making
1736// the request the page does not advance and the error is returned.
1737// Deprecated: Use NextWithContext() instead.
1738func (page *ManagedClusterListResultPage) Next() error {
1739	return page.NextWithContext(context.Background())
1740}
1741
1742// NotDone returns true if the page enumeration should be started or is not yet complete.
1743func (page ManagedClusterListResultPage) NotDone() bool {
1744	return !page.mclr.IsEmpty()
1745}
1746
1747// Response returns the raw server response from the last page request.
1748func (page ManagedClusterListResultPage) Response() ManagedClusterListResult {
1749	return page.mclr
1750}
1751
1752// Values returns the slice of values for the current page or nil if there are no values.
1753func (page ManagedClusterListResultPage) Values() []ManagedCluster {
1754	if page.mclr.IsEmpty() {
1755		return nil
1756	}
1757	return *page.mclr.Value
1758}
1759
1760// Creates a new instance of the ManagedClusterListResultPage type.
1761func NewManagedClusterListResultPage(cur ManagedClusterListResult, getNextPage func(context.Context, ManagedClusterListResult) (ManagedClusterListResult, error)) ManagedClusterListResultPage {
1762	return ManagedClusterListResultPage{
1763		fn:   getNextPage,
1764		mclr: cur,
1765	}
1766}
1767
1768// ManagedClusterLoadBalancerProfile profile of the managed cluster load balancer.
1769type ManagedClusterLoadBalancerProfile struct {
1770	// ManagedOutboundIPs - Desired managed outbound IPs for the cluster load balancer.
1771	ManagedOutboundIPs *ManagedClusterLoadBalancerProfileManagedOutboundIPs `json:"managedOutboundIPs,omitempty"`
1772	// OutboundIPPrefixes - Desired outbound IP Prefix resources for the cluster load balancer.
1773	OutboundIPPrefixes *ManagedClusterLoadBalancerProfileOutboundIPPrefixes `json:"outboundIPPrefixes,omitempty"`
1774	// OutboundIPs - Desired outbound IP resources for the cluster load balancer.
1775	OutboundIPs *ManagedClusterLoadBalancerProfileOutboundIPs `json:"outboundIPs,omitempty"`
1776	// EffectiveOutboundIPs - The effective outbound IP resources of the cluster load balancer.
1777	EffectiveOutboundIPs *[]ResourceReference `json:"effectiveOutboundIPs,omitempty"`
1778	// AllocatedOutboundPorts - Desired number of allocated SNAT ports per VM. Allowed values must be in the range of 0 to 64000 (inclusive). The default value is 0 which results in Azure dynamically allocating ports.
1779	AllocatedOutboundPorts *int32 `json:"allocatedOutboundPorts,omitempty"`
1780	// IdleTimeoutInMinutes - Desired outbound flow idle timeout in minutes. Allowed values must be in the range of 4 to 120 (inclusive). The default value is 30 minutes.
1781	IdleTimeoutInMinutes *int32 `json:"idleTimeoutInMinutes,omitempty"`
1782}
1783
1784// ManagedClusterLoadBalancerProfileManagedOutboundIPs desired managed outbound IPs for the cluster load
1785// balancer.
1786type ManagedClusterLoadBalancerProfileManagedOutboundIPs struct {
1787	// 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.
1788	Count *int32 `json:"count,omitempty"`
1789}
1790
1791// ManagedClusterLoadBalancerProfileOutboundIPPrefixes desired outbound IP Prefix resources for the cluster
1792// load balancer.
1793type ManagedClusterLoadBalancerProfileOutboundIPPrefixes struct {
1794	// PublicIPPrefixes - A list of public IP prefix resources.
1795	PublicIPPrefixes *[]ResourceReference `json:"publicIPPrefixes,omitempty"`
1796}
1797
1798// ManagedClusterLoadBalancerProfileOutboundIPs desired outbound IP resources for the cluster load
1799// balancer.
1800type ManagedClusterLoadBalancerProfileOutboundIPs struct {
1801	// PublicIPs - A list of public IP resources.
1802	PublicIPs *[]ResourceReference `json:"publicIPs,omitempty"`
1803}
1804
1805// ManagedClusterPodIdentity ...
1806type ManagedClusterPodIdentity struct {
1807	// Name - Name of the pod identity.
1808	Name *string `json:"name,omitempty"`
1809	// Namespace - Namespace of the pod identity.
1810	Namespace *string `json:"namespace,omitempty"`
1811	// Identity - Information of the user assigned identity.
1812	Identity *UserAssignedIdentity `json:"identity,omitempty"`
1813	// ProvisioningState - READ-ONLY; The current provisioning state of the pod identity. Possible values include: 'Assigned', 'Updating', 'Deleting', 'Failed'
1814	ProvisioningState ManagedClusterPodIdentityProvisioningState `json:"provisioningState,omitempty"`
1815	// ProvisioningInfo - READ-ONLY
1816	ProvisioningInfo *ManagedClusterPodIdentityProvisioningInfo `json:"provisioningInfo,omitempty"`
1817}
1818
1819// MarshalJSON is the custom marshaler for ManagedClusterPodIdentity.
1820func (mcpi ManagedClusterPodIdentity) MarshalJSON() ([]byte, error) {
1821	objectMap := make(map[string]interface{})
1822	if mcpi.Name != nil {
1823		objectMap["name"] = mcpi.Name
1824	}
1825	if mcpi.Namespace != nil {
1826		objectMap["namespace"] = mcpi.Namespace
1827	}
1828	if mcpi.Identity != nil {
1829		objectMap["identity"] = mcpi.Identity
1830	}
1831	return json.Marshal(objectMap)
1832}
1833
1834// ManagedClusterPodIdentityException ...
1835type ManagedClusterPodIdentityException struct {
1836	// Name - Name of the pod identity exception.
1837	Name *string `json:"name,omitempty"`
1838	// Namespace - Namespace of the pod identity exception.
1839	Namespace *string `json:"namespace,omitempty"`
1840	// PodLabels - Pod labels to match.
1841	PodLabels map[string]*string `json:"podLabels"`
1842}
1843
1844// MarshalJSON is the custom marshaler for ManagedClusterPodIdentityException.
1845func (mcpie ManagedClusterPodIdentityException) MarshalJSON() ([]byte, error) {
1846	objectMap := make(map[string]interface{})
1847	if mcpie.Name != nil {
1848		objectMap["name"] = mcpie.Name
1849	}
1850	if mcpie.Namespace != nil {
1851		objectMap["namespace"] = mcpie.Namespace
1852	}
1853	if mcpie.PodLabels != nil {
1854		objectMap["podLabels"] = mcpie.PodLabels
1855	}
1856	return json.Marshal(objectMap)
1857}
1858
1859// ManagedClusterPodIdentityProfile ...
1860type ManagedClusterPodIdentityProfile struct {
1861	// Enabled - Whether the pod identity addon is enabled.
1862	Enabled *bool `json:"enabled,omitempty"`
1863	// AllowNetworkPluginKubenet - Customer consent for enabling AAD pod identity addon in cluster using Kubenet network plugin.
1864	AllowNetworkPluginKubenet *bool `json:"allowNetworkPluginKubenet,omitempty"`
1865	// UserAssignedIdentities - User assigned pod identity settings.
1866	UserAssignedIdentities *[]ManagedClusterPodIdentity `json:"userAssignedIdentities,omitempty"`
1867	// UserAssignedIdentityExceptions - User assigned pod identity exception settings.
1868	UserAssignedIdentityExceptions *[]ManagedClusterPodIdentityException `json:"userAssignedIdentityExceptions,omitempty"`
1869}
1870
1871// ManagedClusterPodIdentityProvisioningInfo ...
1872type ManagedClusterPodIdentityProvisioningInfo struct {
1873	// Error - Pod identity assignment error (if any).
1874	Error *CloudError `json:"error,omitempty"`
1875}
1876
1877// ManagedClusterPoolUpgradeProfile the list of available upgrade versions.
1878type ManagedClusterPoolUpgradeProfile struct {
1879	// KubernetesVersion - Kubernetes version (major, minor, patch).
1880	KubernetesVersion *string `json:"kubernetesVersion,omitempty"`
1881	// Name - Pool name.
1882	Name *string `json:"name,omitempty"`
1883	// OsType - OsType to be used to specify os type. Choose from Linux and Windows. Default to Linux. Possible values include: 'Linux', 'Windows'
1884	OsType OSType `json:"osType,omitempty"`
1885	// Upgrades - List of orchestrator types and versions available for upgrade.
1886	Upgrades *[]ManagedClusterPoolUpgradeProfileUpgradesItem `json:"upgrades,omitempty"`
1887}
1888
1889// ManagedClusterPoolUpgradeProfileUpgradesItem ...
1890type ManagedClusterPoolUpgradeProfileUpgradesItem struct {
1891	// KubernetesVersion - Kubernetes version (major, minor, patch).
1892	KubernetesVersion *string `json:"kubernetesVersion,omitempty"`
1893	// IsPreview - Whether Kubernetes version is currently in preview.
1894	IsPreview *bool `json:"isPreview,omitempty"`
1895}
1896
1897// ManagedClusterProperties properties of the managed cluster.
1898type ManagedClusterProperties struct {
1899	// ProvisioningState - READ-ONLY; The current deployment or provisioning state, which only appears in the response.
1900	ProvisioningState *string `json:"provisioningState,omitempty"`
1901	// PowerState - READ-ONLY; Represents the Power State of the cluster
1902	PowerState *PowerState `json:"powerState,omitempty"`
1903	// MaxAgentPools - READ-ONLY; The max number of agent pools for the managed cluster.
1904	MaxAgentPools *int32 `json:"maxAgentPools,omitempty"`
1905	// KubernetesVersion - Version of Kubernetes specified when creating the managed cluster.
1906	KubernetesVersion *string `json:"kubernetesVersion,omitempty"`
1907	// DNSPrefix - DNS prefix specified when creating the managed cluster.
1908	DNSPrefix *string `json:"dnsPrefix,omitempty"`
1909	// FqdnSubdomain - FQDN subdomain specified when creating private cluster with custom private dns zone.
1910	FqdnSubdomain *string `json:"fqdnSubdomain,omitempty"`
1911	// Fqdn - READ-ONLY; FQDN for the master pool.
1912	Fqdn *string `json:"fqdn,omitempty"`
1913	// PrivateFQDN - READ-ONLY; FQDN of private cluster.
1914	PrivateFQDN *string `json:"privateFQDN,omitempty"`
1915	// AzurePortalFQDN - READ-ONLY; FQDN for the master pool which used by proxy config.
1916	AzurePortalFQDN *string `json:"azurePortalFQDN,omitempty"`
1917	// AgentPoolProfiles - Properties of the agent pool.
1918	AgentPoolProfiles *[]ManagedClusterAgentPoolProfile `json:"agentPoolProfiles,omitempty"`
1919	// LinuxProfile - Profile for Linux VMs in the container service cluster.
1920	LinuxProfile *LinuxProfile `json:"linuxProfile,omitempty"`
1921	// WindowsProfile - Profile for Windows VMs in the container service cluster.
1922	WindowsProfile *ManagedClusterWindowsProfile `json:"windowsProfile,omitempty"`
1923	// ServicePrincipalProfile - Information about a service principal identity for the cluster to use for manipulating Azure APIs.
1924	ServicePrincipalProfile *ManagedClusterServicePrincipalProfile `json:"servicePrincipalProfile,omitempty"`
1925	// AddonProfiles - Profile of managed cluster add-on.
1926	AddonProfiles map[string]*ManagedClusterAddonProfile `json:"addonProfiles"`
1927	// PodIdentityProfile - Profile of managed cluster pod identity.
1928	PodIdentityProfile *ManagedClusterPodIdentityProfile `json:"podIdentityProfile,omitempty"`
1929	// NodeResourceGroup - Name of the resource group containing agent pool nodes.
1930	NodeResourceGroup *string `json:"nodeResourceGroup,omitempty"`
1931	// EnableRBAC - Whether to enable Kubernetes Role-Based Access Control.
1932	EnableRBAC *bool `json:"enableRBAC,omitempty"`
1933	// EnablePodSecurityPolicy - (DEPRECATING) Whether to enable Kubernetes pod security policy (preview). This feature is set for removal on October 15th, 2020. Learn more at aka.ms/aks/azpodpolicy.
1934	EnablePodSecurityPolicy *bool `json:"enablePodSecurityPolicy,omitempty"`
1935	// NetworkProfile - Profile of network configuration.
1936	NetworkProfile *NetworkProfile `json:"networkProfile,omitempty"`
1937	// AadProfile - Profile of Azure Active Directory configuration.
1938	AadProfile *ManagedClusterAADProfile `json:"aadProfile,omitempty"`
1939	// AutoUpgradeProfile - Profile of auto upgrade configuration.
1940	AutoUpgradeProfile *ManagedClusterAutoUpgradeProfile `json:"autoUpgradeProfile,omitempty"`
1941	// AutoScalerProfile - Parameters to be applied to the cluster-autoscaler when enabled
1942	AutoScalerProfile *ManagedClusterPropertiesAutoScalerProfile `json:"autoScalerProfile,omitempty"`
1943	// APIServerAccessProfile - Access profile for managed cluster API server.
1944	APIServerAccessProfile *ManagedClusterAPIServerAccessProfile `json:"apiServerAccessProfile,omitempty"`
1945	// DiskEncryptionSetID - ResourceId of the disk encryption set to use for enabling encryption at rest.
1946	DiskEncryptionSetID *string `json:"diskEncryptionSetID,omitempty"`
1947	// IdentityProfile - Identities associated with the cluster.
1948	IdentityProfile map[string]*ManagedClusterPropertiesIdentityProfileValue `json:"identityProfile"`
1949}
1950
1951// MarshalJSON is the custom marshaler for ManagedClusterProperties.
1952func (mcp ManagedClusterProperties) MarshalJSON() ([]byte, error) {
1953	objectMap := make(map[string]interface{})
1954	if mcp.KubernetesVersion != nil {
1955		objectMap["kubernetesVersion"] = mcp.KubernetesVersion
1956	}
1957	if mcp.DNSPrefix != nil {
1958		objectMap["dnsPrefix"] = mcp.DNSPrefix
1959	}
1960	if mcp.FqdnSubdomain != nil {
1961		objectMap["fqdnSubdomain"] = mcp.FqdnSubdomain
1962	}
1963	if mcp.AgentPoolProfiles != nil {
1964		objectMap["agentPoolProfiles"] = mcp.AgentPoolProfiles
1965	}
1966	if mcp.LinuxProfile != nil {
1967		objectMap["linuxProfile"] = mcp.LinuxProfile
1968	}
1969	if mcp.WindowsProfile != nil {
1970		objectMap["windowsProfile"] = mcp.WindowsProfile
1971	}
1972	if mcp.ServicePrincipalProfile != nil {
1973		objectMap["servicePrincipalProfile"] = mcp.ServicePrincipalProfile
1974	}
1975	if mcp.AddonProfiles != nil {
1976		objectMap["addonProfiles"] = mcp.AddonProfiles
1977	}
1978	if mcp.PodIdentityProfile != nil {
1979		objectMap["podIdentityProfile"] = mcp.PodIdentityProfile
1980	}
1981	if mcp.NodeResourceGroup != nil {
1982		objectMap["nodeResourceGroup"] = mcp.NodeResourceGroup
1983	}
1984	if mcp.EnableRBAC != nil {
1985		objectMap["enableRBAC"] = mcp.EnableRBAC
1986	}
1987	if mcp.EnablePodSecurityPolicy != nil {
1988		objectMap["enablePodSecurityPolicy"] = mcp.EnablePodSecurityPolicy
1989	}
1990	if mcp.NetworkProfile != nil {
1991		objectMap["networkProfile"] = mcp.NetworkProfile
1992	}
1993	if mcp.AadProfile != nil {
1994		objectMap["aadProfile"] = mcp.AadProfile
1995	}
1996	if mcp.AutoUpgradeProfile != nil {
1997		objectMap["autoUpgradeProfile"] = mcp.AutoUpgradeProfile
1998	}
1999	if mcp.AutoScalerProfile != nil {
2000		objectMap["autoScalerProfile"] = mcp.AutoScalerProfile
2001	}
2002	if mcp.APIServerAccessProfile != nil {
2003		objectMap["apiServerAccessProfile"] = mcp.APIServerAccessProfile
2004	}
2005	if mcp.DiskEncryptionSetID != nil {
2006		objectMap["diskEncryptionSetID"] = mcp.DiskEncryptionSetID
2007	}
2008	if mcp.IdentityProfile != nil {
2009		objectMap["identityProfile"] = mcp.IdentityProfile
2010	}
2011	return json.Marshal(objectMap)
2012}
2013
2014// ManagedClusterPropertiesAutoScalerProfile parameters to be applied to the cluster-autoscaler when
2015// enabled
2016type ManagedClusterPropertiesAutoScalerProfile struct {
2017	BalanceSimilarNodeGroups *string `json:"balance-similar-node-groups,omitempty"`
2018	// Expander - Possible values include: 'LeastWaste', 'MostPods', 'Priority', 'Random'
2019	Expander                      Expander `json:"expander,omitempty"`
2020	MaxEmptyBulkDelete            *string  `json:"max-empty-bulk-delete,omitempty"`
2021	MaxGracefulTerminationSec     *string  `json:"max-graceful-termination-sec,omitempty"`
2022	MaxNodeProvisionTime          *string  `json:"max-node-provision-time,omitempty"`
2023	MaxTotalUnreadyPercentage     *string  `json:"max-total-unready-percentage,omitempty"`
2024	NewPodScaleUpDelay            *string  `json:"new-pod-scale-up-delay,omitempty"`
2025	OkTotalUnreadyCount           *string  `json:"ok-total-unready-count,omitempty"`
2026	ScanInterval                  *string  `json:"scan-interval,omitempty"`
2027	ScaleDownDelayAfterAdd        *string  `json:"scale-down-delay-after-add,omitempty"`
2028	ScaleDownDelayAfterDelete     *string  `json:"scale-down-delay-after-delete,omitempty"`
2029	ScaleDownDelayAfterFailure    *string  `json:"scale-down-delay-after-failure,omitempty"`
2030	ScaleDownUnneededTime         *string  `json:"scale-down-unneeded-time,omitempty"`
2031	ScaleDownUnreadyTime          *string  `json:"scale-down-unready-time,omitempty"`
2032	ScaleDownUtilizationThreshold *string  `json:"scale-down-utilization-threshold,omitempty"`
2033	SkipNodesWithLocalStorage     *string  `json:"skip-nodes-with-local-storage,omitempty"`
2034	SkipNodesWithSystemPods       *string  `json:"skip-nodes-with-system-pods,omitempty"`
2035}
2036
2037// ManagedClusterPropertiesIdentityProfileValue ...
2038type ManagedClusterPropertiesIdentityProfileValue struct {
2039	// ResourceID - The resource id of the user assigned identity.
2040	ResourceID *string `json:"resourceId,omitempty"`
2041	// ClientID - The client id of the user assigned identity.
2042	ClientID *string `json:"clientId,omitempty"`
2043	// ObjectID - The object id of the user assigned identity.
2044	ObjectID *string `json:"objectId,omitempty"`
2045}
2046
2047// ManagedClustersCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
2048// long-running operation.
2049type ManagedClustersCreateOrUpdateFuture struct {
2050	azure.FutureAPI
2051	// Result returns the result of the asynchronous operation.
2052	// If the operation has not completed it will return an error.
2053	Result func(ManagedClustersClient) (ManagedCluster, error)
2054}
2055
2056// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2057func (future *ManagedClustersCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
2058	var azFuture azure.Future
2059	if err := json.Unmarshal(body, &azFuture); err != nil {
2060		return err
2061	}
2062	future.FutureAPI = &azFuture
2063	future.Result = future.result
2064	return nil
2065}
2066
2067// result is the default implementation for ManagedClustersCreateOrUpdateFuture.Result.
2068func (future *ManagedClustersCreateOrUpdateFuture) result(client ManagedClustersClient) (mc ManagedCluster, err error) {
2069	var done bool
2070	done, err = future.DoneWithContext(context.Background(), client)
2071	if err != nil {
2072		err = autorest.NewErrorWithError(err, "containerservice.ManagedClustersCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
2073		return
2074	}
2075	if !done {
2076		mc.Response.Response = future.Response()
2077		err = azure.NewAsyncOpIncompleteError("containerservice.ManagedClustersCreateOrUpdateFuture")
2078		return
2079	}
2080	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2081	if mc.Response.Response, err = future.GetResult(sender); err == nil && mc.Response.Response.StatusCode != http.StatusNoContent {
2082		mc, err = client.CreateOrUpdateResponder(mc.Response.Response)
2083		if err != nil {
2084			err = autorest.NewErrorWithError(err, "containerservice.ManagedClustersCreateOrUpdateFuture", "Result", mc.Response.Response, "Failure responding to request")
2085		}
2086	}
2087	return
2088}
2089
2090// ManagedClustersDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
2091// operation.
2092type ManagedClustersDeleteFuture struct {
2093	azure.FutureAPI
2094	// Result returns the result of the asynchronous operation.
2095	// If the operation has not completed it will return an error.
2096	Result func(ManagedClustersClient) (autorest.Response, error)
2097}
2098
2099// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2100func (future *ManagedClustersDeleteFuture) UnmarshalJSON(body []byte) error {
2101	var azFuture azure.Future
2102	if err := json.Unmarshal(body, &azFuture); err != nil {
2103		return err
2104	}
2105	future.FutureAPI = &azFuture
2106	future.Result = future.result
2107	return nil
2108}
2109
2110// result is the default implementation for ManagedClustersDeleteFuture.Result.
2111func (future *ManagedClustersDeleteFuture) result(client ManagedClustersClient) (ar autorest.Response, err error) {
2112	var done bool
2113	done, err = future.DoneWithContext(context.Background(), client)
2114	if err != nil {
2115		err = autorest.NewErrorWithError(err, "containerservice.ManagedClustersDeleteFuture", "Result", future.Response(), "Polling failure")
2116		return
2117	}
2118	if !done {
2119		ar.Response = future.Response()
2120		err = azure.NewAsyncOpIncompleteError("containerservice.ManagedClustersDeleteFuture")
2121		return
2122	}
2123	ar.Response = future.Response()
2124	return
2125}
2126
2127// ManagedClusterServicePrincipalProfile information about a service principal identity for the cluster to
2128// use for manipulating Azure APIs.
2129type ManagedClusterServicePrincipalProfile struct {
2130	// ClientID - The ID for the service principal.
2131	ClientID *string `json:"clientId,omitempty"`
2132	// Secret - The secret password associated with the service principal in plain text.
2133	Secret *string `json:"secret,omitempty"`
2134}
2135
2136// ManagedClusterSKU ...
2137type ManagedClusterSKU struct {
2138	// Name - Name of a managed cluster SKU. Possible values include: 'ManagedClusterSKUNameBasic'
2139	Name ManagedClusterSKUName `json:"name,omitempty"`
2140	// Tier - Tier of a managed cluster SKU. Possible values include: 'Paid', 'Free'
2141	Tier ManagedClusterSKUTier `json:"tier,omitempty"`
2142}
2143
2144// ManagedClustersResetAADProfileFuture an abstraction for monitoring and retrieving the results of a
2145// long-running operation.
2146type ManagedClustersResetAADProfileFuture struct {
2147	azure.FutureAPI
2148	// Result returns the result of the asynchronous operation.
2149	// If the operation has not completed it will return an error.
2150	Result func(ManagedClustersClient) (autorest.Response, error)
2151}
2152
2153// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2154func (future *ManagedClustersResetAADProfileFuture) UnmarshalJSON(body []byte) error {
2155	var azFuture azure.Future
2156	if err := json.Unmarshal(body, &azFuture); err != nil {
2157		return err
2158	}
2159	future.FutureAPI = &azFuture
2160	future.Result = future.result
2161	return nil
2162}
2163
2164// result is the default implementation for ManagedClustersResetAADProfileFuture.Result.
2165func (future *ManagedClustersResetAADProfileFuture) result(client ManagedClustersClient) (ar autorest.Response, err error) {
2166	var done bool
2167	done, err = future.DoneWithContext(context.Background(), client)
2168	if err != nil {
2169		err = autorest.NewErrorWithError(err, "containerservice.ManagedClustersResetAADProfileFuture", "Result", future.Response(), "Polling failure")
2170		return
2171	}
2172	if !done {
2173		ar.Response = future.Response()
2174		err = azure.NewAsyncOpIncompleteError("containerservice.ManagedClustersResetAADProfileFuture")
2175		return
2176	}
2177	ar.Response = future.Response()
2178	return
2179}
2180
2181// ManagedClustersResetServicePrincipalProfileFuture an abstraction for monitoring and retrieving the
2182// results of a long-running operation.
2183type ManagedClustersResetServicePrincipalProfileFuture struct {
2184	azure.FutureAPI
2185	// Result returns the result of the asynchronous operation.
2186	// If the operation has not completed it will return an error.
2187	Result func(ManagedClustersClient) (autorest.Response, error)
2188}
2189
2190// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2191func (future *ManagedClustersResetServicePrincipalProfileFuture) UnmarshalJSON(body []byte) error {
2192	var azFuture azure.Future
2193	if err := json.Unmarshal(body, &azFuture); err != nil {
2194		return err
2195	}
2196	future.FutureAPI = &azFuture
2197	future.Result = future.result
2198	return nil
2199}
2200
2201// result is the default implementation for ManagedClustersResetServicePrincipalProfileFuture.Result.
2202func (future *ManagedClustersResetServicePrincipalProfileFuture) result(client ManagedClustersClient) (ar autorest.Response, err error) {
2203	var done bool
2204	done, err = future.DoneWithContext(context.Background(), client)
2205	if err != nil {
2206		err = autorest.NewErrorWithError(err, "containerservice.ManagedClustersResetServicePrincipalProfileFuture", "Result", future.Response(), "Polling failure")
2207		return
2208	}
2209	if !done {
2210		ar.Response = future.Response()
2211		err = azure.NewAsyncOpIncompleteError("containerservice.ManagedClustersResetServicePrincipalProfileFuture")
2212		return
2213	}
2214	ar.Response = future.Response()
2215	return
2216}
2217
2218// ManagedClustersRotateClusterCertificatesFuture an abstraction for monitoring and retrieving the results
2219// of a long-running operation.
2220type ManagedClustersRotateClusterCertificatesFuture struct {
2221	azure.FutureAPI
2222	// Result returns the result of the asynchronous operation.
2223	// If the operation has not completed it will return an error.
2224	Result func(ManagedClustersClient) (autorest.Response, error)
2225}
2226
2227// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2228func (future *ManagedClustersRotateClusterCertificatesFuture) UnmarshalJSON(body []byte) error {
2229	var azFuture azure.Future
2230	if err := json.Unmarshal(body, &azFuture); err != nil {
2231		return err
2232	}
2233	future.FutureAPI = &azFuture
2234	future.Result = future.result
2235	return nil
2236}
2237
2238// result is the default implementation for ManagedClustersRotateClusterCertificatesFuture.Result.
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		ar.Response = future.Response()
2248		err = azure.NewAsyncOpIncompleteError("containerservice.ManagedClustersRotateClusterCertificatesFuture")
2249		return
2250	}
2251	ar.Response = future.Response()
2252	return
2253}
2254
2255// ManagedClustersStartFuture an abstraction for monitoring and retrieving the results of a long-running
2256// operation.
2257type ManagedClustersStartFuture struct {
2258	azure.FutureAPI
2259	// Result returns the result of the asynchronous operation.
2260	// If the operation has not completed it will return an error.
2261	Result func(ManagedClustersClient) (autorest.Response, error)
2262}
2263
2264// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2265func (future *ManagedClustersStartFuture) UnmarshalJSON(body []byte) error {
2266	var azFuture azure.Future
2267	if err := json.Unmarshal(body, &azFuture); err != nil {
2268		return err
2269	}
2270	future.FutureAPI = &azFuture
2271	future.Result = future.result
2272	return nil
2273}
2274
2275// result is the default implementation for ManagedClustersStartFuture.Result.
2276func (future *ManagedClustersStartFuture) result(client ManagedClustersClient) (ar autorest.Response, err error) {
2277	var done bool
2278	done, err = future.DoneWithContext(context.Background(), client)
2279	if err != nil {
2280		err = autorest.NewErrorWithError(err, "containerservice.ManagedClustersStartFuture", "Result", future.Response(), "Polling failure")
2281		return
2282	}
2283	if !done {
2284		ar.Response = future.Response()
2285		err = azure.NewAsyncOpIncompleteError("containerservice.ManagedClustersStartFuture")
2286		return
2287	}
2288	ar.Response = future.Response()
2289	return
2290}
2291
2292// ManagedClustersStopFuture an abstraction for monitoring and retrieving the results of a long-running
2293// operation.
2294type ManagedClustersStopFuture struct {
2295	azure.FutureAPI
2296	// Result returns the result of the asynchronous operation.
2297	// If the operation has not completed it will return an error.
2298	Result func(ManagedClustersClient) (autorest.Response, error)
2299}
2300
2301// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2302func (future *ManagedClustersStopFuture) UnmarshalJSON(body []byte) error {
2303	var azFuture azure.Future
2304	if err := json.Unmarshal(body, &azFuture); err != nil {
2305		return err
2306	}
2307	future.FutureAPI = &azFuture
2308	future.Result = future.result
2309	return nil
2310}
2311
2312// result is the default implementation for ManagedClustersStopFuture.Result.
2313func (future *ManagedClustersStopFuture) result(client ManagedClustersClient) (ar autorest.Response, err error) {
2314	var done bool
2315	done, err = future.DoneWithContext(context.Background(), client)
2316	if err != nil {
2317		err = autorest.NewErrorWithError(err, "containerservice.ManagedClustersStopFuture", "Result", future.Response(), "Polling failure")
2318		return
2319	}
2320	if !done {
2321		ar.Response = future.Response()
2322		err = azure.NewAsyncOpIncompleteError("containerservice.ManagedClustersStopFuture")
2323		return
2324	}
2325	ar.Response = future.Response()
2326	return
2327}
2328
2329// ManagedClustersUpdateTagsFuture an abstraction for monitoring and retrieving the results of a
2330// long-running operation.
2331type ManagedClustersUpdateTagsFuture struct {
2332	azure.FutureAPI
2333	// Result returns the result of the asynchronous operation.
2334	// If the operation has not completed it will return an error.
2335	Result func(ManagedClustersClient) (ManagedCluster, error)
2336}
2337
2338// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2339func (future *ManagedClustersUpdateTagsFuture) UnmarshalJSON(body []byte) error {
2340	var azFuture azure.Future
2341	if err := json.Unmarshal(body, &azFuture); err != nil {
2342		return err
2343	}
2344	future.FutureAPI = &azFuture
2345	future.Result = future.result
2346	return nil
2347}
2348
2349// result is the default implementation for ManagedClustersUpdateTagsFuture.Result.
2350func (future *ManagedClustersUpdateTagsFuture) result(client ManagedClustersClient) (mc ManagedCluster, err error) {
2351	var done bool
2352	done, err = future.DoneWithContext(context.Background(), client)
2353	if err != nil {
2354		err = autorest.NewErrorWithError(err, "containerservice.ManagedClustersUpdateTagsFuture", "Result", future.Response(), "Polling failure")
2355		return
2356	}
2357	if !done {
2358		mc.Response.Response = future.Response()
2359		err = azure.NewAsyncOpIncompleteError("containerservice.ManagedClustersUpdateTagsFuture")
2360		return
2361	}
2362	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2363	if mc.Response.Response, err = future.GetResult(sender); err == nil && mc.Response.Response.StatusCode != http.StatusNoContent {
2364		mc, err = client.UpdateTagsResponder(mc.Response.Response)
2365		if err != nil {
2366			err = autorest.NewErrorWithError(err, "containerservice.ManagedClustersUpdateTagsFuture", "Result", mc.Response.Response, "Failure responding to request")
2367		}
2368	}
2369	return
2370}
2371
2372// ManagedClusterUpgradeProfile the list of available upgrades for compute pools.
2373type ManagedClusterUpgradeProfile struct {
2374	autorest.Response `json:"-"`
2375	// ID - READ-ONLY; Id of upgrade profile.
2376	ID *string `json:"id,omitempty"`
2377	// Name - READ-ONLY; Name of upgrade profile.
2378	Name *string `json:"name,omitempty"`
2379	// Type - READ-ONLY; Type of upgrade profile.
2380	Type *string `json:"type,omitempty"`
2381	// ManagedClusterUpgradeProfileProperties - Properties of upgrade profile.
2382	*ManagedClusterUpgradeProfileProperties `json:"properties,omitempty"`
2383}
2384
2385// MarshalJSON is the custom marshaler for ManagedClusterUpgradeProfile.
2386func (mcup ManagedClusterUpgradeProfile) MarshalJSON() ([]byte, error) {
2387	objectMap := make(map[string]interface{})
2388	if mcup.ManagedClusterUpgradeProfileProperties != nil {
2389		objectMap["properties"] = mcup.ManagedClusterUpgradeProfileProperties
2390	}
2391	return json.Marshal(objectMap)
2392}
2393
2394// UnmarshalJSON is the custom unmarshaler for ManagedClusterUpgradeProfile struct.
2395func (mcup *ManagedClusterUpgradeProfile) UnmarshalJSON(body []byte) error {
2396	var m map[string]*json.RawMessage
2397	err := json.Unmarshal(body, &m)
2398	if err != nil {
2399		return err
2400	}
2401	for k, v := range m {
2402		switch k {
2403		case "id":
2404			if v != nil {
2405				var ID string
2406				err = json.Unmarshal(*v, &ID)
2407				if err != nil {
2408					return err
2409				}
2410				mcup.ID = &ID
2411			}
2412		case "name":
2413			if v != nil {
2414				var name string
2415				err = json.Unmarshal(*v, &name)
2416				if err != nil {
2417					return err
2418				}
2419				mcup.Name = &name
2420			}
2421		case "type":
2422			if v != nil {
2423				var typeVar string
2424				err = json.Unmarshal(*v, &typeVar)
2425				if err != nil {
2426					return err
2427				}
2428				mcup.Type = &typeVar
2429			}
2430		case "properties":
2431			if v != nil {
2432				var managedClusterUpgradeProfileProperties ManagedClusterUpgradeProfileProperties
2433				err = json.Unmarshal(*v, &managedClusterUpgradeProfileProperties)
2434				if err != nil {
2435					return err
2436				}
2437				mcup.ManagedClusterUpgradeProfileProperties = &managedClusterUpgradeProfileProperties
2438			}
2439		}
2440	}
2441
2442	return nil
2443}
2444
2445// ManagedClusterUpgradeProfileProperties control plane and agent pool upgrade profiles.
2446type ManagedClusterUpgradeProfileProperties struct {
2447	// ControlPlaneProfile - The list of available upgrade versions for the control plane.
2448	ControlPlaneProfile *ManagedClusterPoolUpgradeProfile `json:"controlPlaneProfile,omitempty"`
2449	// AgentPoolProfiles - The list of available upgrade versions for agent pools.
2450	AgentPoolProfiles *[]ManagedClusterPoolUpgradeProfile `json:"agentPoolProfiles,omitempty"`
2451}
2452
2453// ManagedClusterWindowsProfile profile for Windows VMs in the container service cluster.
2454type ManagedClusterWindowsProfile struct {
2455	// AdminUsername - Specifies the name of the administrator account. <br><br> **restriction:** Cannot end in "." <br><br> **Disallowed values:** "administrator", "admin", "user", "user1", "test", "user2", "test1", "user3", "admin1", "1", "123", "a", "actuser", "adm", "admin2", "aspnet", "backup", "console", "david", "guest", "john", "owner", "root", "server", "sql", "support", "support_388945a0", "sys", "test2", "test3", "user4", "user5". <br><br> **Minimum-length:** 1 character <br><br> **Max-length:** 20 characters
2456	AdminUsername *string `json:"adminUsername,omitempty"`
2457	// AdminPassword - Specifies the password of the administrator account. <br><br> **Minimum-length:** 8 characters <br><br> **Max-length:** 123 characters <br><br> **Complexity requirements:** 3 out of 4 conditions below need to be fulfilled <br> Has lower characters <br>Has upper characters <br> Has a digit <br> Has a special character (Regex match [\W_]) <br><br> **Disallowed values:** "abc@123", "P@$$w0rd", "P@ssw0rd", "P@ssword123", "Pa$$word", "pass@word1", "Password!", "Password1", "Password22", "iloveyou!"
2458	AdminPassword *string `json:"adminPassword,omitempty"`
2459	// LicenseType - The licenseType to use for Windows VMs. Windows_Server is used to enable Azure Hybrid User Benefits for Windows VMs. Possible values include: 'None', 'WindowsServer'
2460	LicenseType LicenseType `json:"licenseType,omitempty"`
2461}
2462
2463// MasterProfile profile for the container service master.
2464type MasterProfile struct {
2465	// Count - Number of masters (VMs) in the container service cluster. Allowed values are 1, 3, and 5. The default value is 1.
2466	Count *int32 `json:"count,omitempty"`
2467	// DNSPrefix - DNS prefix to be used to create the FQDN for the master pool.
2468	DNSPrefix *string `json:"dnsPrefix,omitempty"`
2469	// VMSize - Size of agent VMs. Possible values include: 'StandardA1', 'StandardA10', 'StandardA11', 'StandardA1V2', 'StandardA2', 'StandardA2V2', 'StandardA2mV2', 'StandardA3', 'StandardA4', 'StandardA4V2', 'StandardA4mV2', 'StandardA5', 'StandardA6', 'StandardA7', 'StandardA8', 'StandardA8V2', 'StandardA8mV2', 'StandardA9', 'StandardB2ms', 'StandardB2s', 'StandardB4ms', 'StandardB8ms', 'StandardD1', 'StandardD11', 'StandardD11V2', 'StandardD11V2Promo', 'StandardD12', 'StandardD12V2', 'StandardD12V2Promo', 'StandardD13', 'StandardD13V2', 'StandardD13V2Promo', 'StandardD14', 'StandardD14V2', 'StandardD14V2Promo', 'StandardD15V2', 'StandardD16V3', 'StandardD16sV3', 'StandardD1V2', 'StandardD2', 'StandardD2V2', 'StandardD2V2Promo', 'StandardD2V3', 'StandardD2sV3', 'StandardD3', 'StandardD32V3', 'StandardD32sV3', 'StandardD3V2', 'StandardD3V2Promo', 'StandardD4', 'StandardD4V2', 'StandardD4V2Promo', 'StandardD4V3', 'StandardD4sV3', 'StandardD5V2', 'StandardD5V2Promo', 'StandardD64V3', 'StandardD64sV3', 'StandardD8V3', 'StandardD8sV3', 'StandardDS1', 'StandardDS11', 'StandardDS11V2', 'StandardDS11V2Promo', 'StandardDS12', 'StandardDS12V2', 'StandardDS12V2Promo', 'StandardDS13', 'StandardDS132V2', 'StandardDS134V2', 'StandardDS13V2', 'StandardDS13V2Promo', 'StandardDS14', 'StandardDS144V2', 'StandardDS148V2', 'StandardDS14V2', 'StandardDS14V2Promo', 'StandardDS15V2', 'StandardDS1V2', 'StandardDS2', 'StandardDS2V2', 'StandardDS2V2Promo', 'StandardDS3', 'StandardDS3V2', 'StandardDS3V2Promo', 'StandardDS4', 'StandardDS4V2', 'StandardDS4V2Promo', 'StandardDS5V2', 'StandardDS5V2Promo', 'StandardE16V3', 'StandardE16sV3', 'StandardE2V3', 'StandardE2sV3', 'StandardE3216sV3', 'StandardE328sV3', 'StandardE32V3', 'StandardE32sV3', 'StandardE4V3', 'StandardE4sV3', 'StandardE6416sV3', 'StandardE6432sV3', 'StandardE64V3', 'StandardE64sV3', 'StandardE8V3', 'StandardE8sV3', 'StandardF1', 'StandardF16', 'StandardF16s', 'StandardF16sV2', 'StandardF1s', 'StandardF2', 'StandardF2s', 'StandardF2sV2', 'StandardF32sV2', 'StandardF4', 'StandardF4s', 'StandardF4sV2', 'StandardF64sV2', 'StandardF72sV2', 'StandardF8', 'StandardF8s', 'StandardF8sV2', 'StandardG1', 'StandardG2', 'StandardG3', 'StandardG4', 'StandardG5', 'StandardGS1', 'StandardGS2', 'StandardGS3', 'StandardGS4', 'StandardGS44', 'StandardGS48', 'StandardGS5', 'StandardGS516', 'StandardGS58', 'StandardH16', 'StandardH16m', 'StandardH16mr', 'StandardH16r', 'StandardH8', 'StandardH8m', 'StandardL16s', 'StandardL32s', 'StandardL4s', 'StandardL8s', 'StandardM12832ms', 'StandardM12864ms', 'StandardM128ms', 'StandardM128s', 'StandardM6416ms', 'StandardM6432ms', 'StandardM64ms', 'StandardM64s', 'StandardNC12', 'StandardNC12sV2', 'StandardNC12sV3', 'StandardNC24', 'StandardNC24r', 'StandardNC24rsV2', 'StandardNC24rsV3', 'StandardNC24sV2', 'StandardNC24sV3', 'StandardNC6', 'StandardNC6sV2', 'StandardNC6sV3', 'StandardND12s', 'StandardND24rs', 'StandardND24s', 'StandardND6s', 'StandardNV12', 'StandardNV24', 'StandardNV6'
2470	VMSize VMSizeTypes `json:"vmSize,omitempty"`
2471	// 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.
2472	OsDiskSizeGB *int32 `json:"osDiskSizeGB,omitempty"`
2473	// VnetSubnetID - VNet SubnetID specifies the VNet's subnet identifier.
2474	VnetSubnetID *string `json:"vnetSubnetID,omitempty"`
2475	// FirstConsecutiveStaticIP - FirstConsecutiveStaticIP used to specify the first static ip of masters.
2476	FirstConsecutiveStaticIP *string `json:"firstConsecutiveStaticIP,omitempty"`
2477	// 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'
2478	StorageProfile StorageProfileTypes `json:"storageProfile,omitempty"`
2479	// Fqdn - READ-ONLY; FQDN for the master pool.
2480	Fqdn *string `json:"fqdn,omitempty"`
2481}
2482
2483// MarshalJSON is the custom marshaler for MasterProfile.
2484func (mp MasterProfile) MarshalJSON() ([]byte, error) {
2485	objectMap := make(map[string]interface{})
2486	if mp.Count != nil {
2487		objectMap["count"] = mp.Count
2488	}
2489	if mp.DNSPrefix != nil {
2490		objectMap["dnsPrefix"] = mp.DNSPrefix
2491	}
2492	if mp.VMSize != "" {
2493		objectMap["vmSize"] = mp.VMSize
2494	}
2495	if mp.OsDiskSizeGB != nil {
2496		objectMap["osDiskSizeGB"] = mp.OsDiskSizeGB
2497	}
2498	if mp.VnetSubnetID != nil {
2499		objectMap["vnetSubnetID"] = mp.VnetSubnetID
2500	}
2501	if mp.FirstConsecutiveStaticIP != nil {
2502		objectMap["firstConsecutiveStaticIP"] = mp.FirstConsecutiveStaticIP
2503	}
2504	if mp.StorageProfile != "" {
2505		objectMap["storageProfile"] = mp.StorageProfile
2506	}
2507	return json.Marshal(objectMap)
2508}
2509
2510// NetworkProfile profile of network configuration.
2511type NetworkProfile struct {
2512	// NetworkPlugin - Network plugin used for building Kubernetes network. Possible values include: 'Azure', 'Kubenet'
2513	NetworkPlugin NetworkPlugin `json:"networkPlugin,omitempty"`
2514	// NetworkPolicy - Network policy used for building Kubernetes network. Possible values include: 'NetworkPolicyCalico', 'NetworkPolicyAzure'
2515	NetworkPolicy NetworkPolicy `json:"networkPolicy,omitempty"`
2516	// NetworkMode - Network mode used for building Kubernetes network. Possible values include: 'Transparent', 'Bridge'
2517	NetworkMode NetworkMode `json:"networkMode,omitempty"`
2518	// PodCidr - A CIDR notation IP range from which to assign pod IPs when kubenet is used.
2519	PodCidr *string `json:"podCidr,omitempty"`
2520	// ServiceCidr - A CIDR notation IP range from which to assign service cluster IPs. It must not overlap with any Subnet IP ranges.
2521	ServiceCidr *string `json:"serviceCidr,omitempty"`
2522	// DNSServiceIP - An IP address assigned to the Kubernetes DNS service. It must be within the Kubernetes service address range specified in serviceCidr.
2523	DNSServiceIP *string `json:"dnsServiceIP,omitempty"`
2524	// 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.
2525	DockerBridgeCidr *string `json:"dockerBridgeCidr,omitempty"`
2526	// OutboundType - The outbound (egress) routing method. Possible values include: 'LoadBalancer', 'UserDefinedRouting'
2527	OutboundType OutboundType `json:"outboundType,omitempty"`
2528	// LoadBalancerSku - The load balancer sku for the managed cluster. Possible values include: 'Standard', 'Basic'
2529	LoadBalancerSku LoadBalancerSku `json:"loadBalancerSku,omitempty"`
2530	// LoadBalancerProfile - Profile of the cluster load balancer.
2531	LoadBalancerProfile *ManagedClusterLoadBalancerProfile `json:"loadBalancerProfile,omitempty"`
2532}
2533
2534// OperationListResult the List Compute Operation operation response.
2535type OperationListResult struct {
2536	autorest.Response `json:"-"`
2537	// Value - READ-ONLY; The list of compute operations
2538	Value *[]OperationValue `json:"value,omitempty"`
2539}
2540
2541// MarshalJSON is the custom marshaler for OperationListResult.
2542func (olr OperationListResult) MarshalJSON() ([]byte, error) {
2543	objectMap := make(map[string]interface{})
2544	return json.Marshal(objectMap)
2545}
2546
2547// OperationValue describes the properties of a Compute Operation value.
2548type OperationValue struct {
2549	// Origin - READ-ONLY; The origin of the compute operation.
2550	Origin *string `json:"origin,omitempty"`
2551	// Name - READ-ONLY; The name of the compute operation.
2552	Name *string `json:"name,omitempty"`
2553	// OperationValueDisplay - Describes the properties of a Compute Operation Value Display.
2554	*OperationValueDisplay `json:"display,omitempty"`
2555}
2556
2557// MarshalJSON is the custom marshaler for OperationValue.
2558func (ov OperationValue) MarshalJSON() ([]byte, error) {
2559	objectMap := make(map[string]interface{})
2560	if ov.OperationValueDisplay != nil {
2561		objectMap["display"] = ov.OperationValueDisplay
2562	}
2563	return json.Marshal(objectMap)
2564}
2565
2566// UnmarshalJSON is the custom unmarshaler for OperationValue struct.
2567func (ov *OperationValue) UnmarshalJSON(body []byte) error {
2568	var m map[string]*json.RawMessage
2569	err := json.Unmarshal(body, &m)
2570	if err != nil {
2571		return err
2572	}
2573	for k, v := range m {
2574		switch k {
2575		case "origin":
2576			if v != nil {
2577				var origin string
2578				err = json.Unmarshal(*v, &origin)
2579				if err != nil {
2580					return err
2581				}
2582				ov.Origin = &origin
2583			}
2584		case "name":
2585			if v != nil {
2586				var name string
2587				err = json.Unmarshal(*v, &name)
2588				if err != nil {
2589					return err
2590				}
2591				ov.Name = &name
2592			}
2593		case "display":
2594			if v != nil {
2595				var operationValueDisplay OperationValueDisplay
2596				err = json.Unmarshal(*v, &operationValueDisplay)
2597				if err != nil {
2598					return err
2599				}
2600				ov.OperationValueDisplay = &operationValueDisplay
2601			}
2602		}
2603	}
2604
2605	return nil
2606}
2607
2608// OperationValueDisplay describes the properties of a Compute Operation Value Display.
2609type OperationValueDisplay struct {
2610	// Operation - READ-ONLY; The display name of the compute operation.
2611	Operation *string `json:"operation,omitempty"`
2612	// Resource - READ-ONLY; The display name of the resource the operation applies to.
2613	Resource *string `json:"resource,omitempty"`
2614	// Description - READ-ONLY; The description of the operation.
2615	Description *string `json:"description,omitempty"`
2616	// Provider - READ-ONLY; The resource provider for the operation.
2617	Provider *string `json:"provider,omitempty"`
2618}
2619
2620// MarshalJSON is the custom marshaler for OperationValueDisplay.
2621func (ovd OperationValueDisplay) MarshalJSON() ([]byte, error) {
2622	objectMap := make(map[string]interface{})
2623	return json.Marshal(objectMap)
2624}
2625
2626// PowerState describes the Power State of the cluster
2627type PowerState struct {
2628	// Code - Tells whether the cluster is Running or Stopped. Possible values include: 'Running', 'Stopped'
2629	Code Code `json:"code,omitempty"`
2630}
2631
2632// PrivateEndpoint private endpoint which a connection belongs to.
2633type PrivateEndpoint struct {
2634	// ID - The resource Id for private endpoint
2635	ID *string `json:"id,omitempty"`
2636}
2637
2638// PrivateEndpointConnection a private endpoint connection
2639type PrivateEndpointConnection struct {
2640	autorest.Response `json:"-"`
2641	// ID - READ-ONLY; The ID of the private endpoint connection.
2642	ID *string `json:"id,omitempty"`
2643	// Name - READ-ONLY; The name of the private endpoint connection.
2644	Name *string `json:"name,omitempty"`
2645	// Type - READ-ONLY; The resource type.
2646	Type *string `json:"type,omitempty"`
2647	// PrivateEndpointConnectionProperties - The properties of a private endpoint connection.
2648	*PrivateEndpointConnectionProperties `json:"properties,omitempty"`
2649}
2650
2651// MarshalJSON is the custom marshaler for PrivateEndpointConnection.
2652func (pec PrivateEndpointConnection) MarshalJSON() ([]byte, error) {
2653	objectMap := make(map[string]interface{})
2654	if pec.PrivateEndpointConnectionProperties != nil {
2655		objectMap["properties"] = pec.PrivateEndpointConnectionProperties
2656	}
2657	return json.Marshal(objectMap)
2658}
2659
2660// UnmarshalJSON is the custom unmarshaler for PrivateEndpointConnection struct.
2661func (pec *PrivateEndpointConnection) UnmarshalJSON(body []byte) error {
2662	var m map[string]*json.RawMessage
2663	err := json.Unmarshal(body, &m)
2664	if err != nil {
2665		return err
2666	}
2667	for k, v := range m {
2668		switch k {
2669		case "id":
2670			if v != nil {
2671				var ID string
2672				err = json.Unmarshal(*v, &ID)
2673				if err != nil {
2674					return err
2675				}
2676				pec.ID = &ID
2677			}
2678		case "name":
2679			if v != nil {
2680				var name string
2681				err = json.Unmarshal(*v, &name)
2682				if err != nil {
2683					return err
2684				}
2685				pec.Name = &name
2686			}
2687		case "type":
2688			if v != nil {
2689				var typeVar string
2690				err = json.Unmarshal(*v, &typeVar)
2691				if err != nil {
2692					return err
2693				}
2694				pec.Type = &typeVar
2695			}
2696		case "properties":
2697			if v != nil {
2698				var privateEndpointConnectionProperties PrivateEndpointConnectionProperties
2699				err = json.Unmarshal(*v, &privateEndpointConnectionProperties)
2700				if err != nil {
2701					return err
2702				}
2703				pec.PrivateEndpointConnectionProperties = &privateEndpointConnectionProperties
2704			}
2705		}
2706	}
2707
2708	return nil
2709}
2710
2711// PrivateEndpointConnectionListResult a list of private endpoint connections
2712type PrivateEndpointConnectionListResult struct {
2713	autorest.Response `json:"-"`
2714	// Value - The collection value.
2715	Value *[]PrivateEndpointConnection `json:"value,omitempty"`
2716}
2717
2718// PrivateEndpointConnectionProperties properties of a private endpoint connection.
2719type PrivateEndpointConnectionProperties struct {
2720	// ProvisioningState - READ-ONLY; The current provisioning state. Possible values include: 'PrivateEndpointConnectionProvisioningStateSucceeded', 'PrivateEndpointConnectionProvisioningStateCreating', 'PrivateEndpointConnectionProvisioningStateDeleting', 'PrivateEndpointConnectionProvisioningStateFailed'
2721	ProvisioningState PrivateEndpointConnectionProvisioningState `json:"provisioningState,omitempty"`
2722	// PrivateEndpoint - The resource of private endpoint.
2723	PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"`
2724	// PrivateLinkServiceConnectionState - A collection of information about the state of the connection between service consumer and provider.
2725	PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"`
2726}
2727
2728// MarshalJSON is the custom marshaler for PrivateEndpointConnectionProperties.
2729func (pecp PrivateEndpointConnectionProperties) MarshalJSON() ([]byte, error) {
2730	objectMap := make(map[string]interface{})
2731	if pecp.PrivateEndpoint != nil {
2732		objectMap["privateEndpoint"] = pecp.PrivateEndpoint
2733	}
2734	if pecp.PrivateLinkServiceConnectionState != nil {
2735		objectMap["privateLinkServiceConnectionState"] = pecp.PrivateLinkServiceConnectionState
2736	}
2737	return json.Marshal(objectMap)
2738}
2739
2740// PrivateEndpointConnectionsDeleteFuture an abstraction for monitoring and retrieving the results of a
2741// long-running operation.
2742type PrivateEndpointConnectionsDeleteFuture struct {
2743	azure.FutureAPI
2744	// Result returns the result of the asynchronous operation.
2745	// If the operation has not completed it will return an error.
2746	Result func(PrivateEndpointConnectionsClient) (autorest.Response, error)
2747}
2748
2749// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2750func (future *PrivateEndpointConnectionsDeleteFuture) UnmarshalJSON(body []byte) error {
2751	var azFuture azure.Future
2752	if err := json.Unmarshal(body, &azFuture); err != nil {
2753		return err
2754	}
2755	future.FutureAPI = &azFuture
2756	future.Result = future.result
2757	return nil
2758}
2759
2760// result is the default implementation for PrivateEndpointConnectionsDeleteFuture.Result.
2761func (future *PrivateEndpointConnectionsDeleteFuture) result(client PrivateEndpointConnectionsClient) (ar autorest.Response, err error) {
2762	var done bool
2763	done, err = future.DoneWithContext(context.Background(), client)
2764	if err != nil {
2765		err = autorest.NewErrorWithError(err, "containerservice.PrivateEndpointConnectionsDeleteFuture", "Result", future.Response(), "Polling failure")
2766		return
2767	}
2768	if !done {
2769		ar.Response = future.Response()
2770		err = azure.NewAsyncOpIncompleteError("containerservice.PrivateEndpointConnectionsDeleteFuture")
2771		return
2772	}
2773	ar.Response = future.Response()
2774	return
2775}
2776
2777// PrivateLinkResource a private link resource
2778type PrivateLinkResource struct {
2779	autorest.Response `json:"-"`
2780	// ID - The ID of the private link resource.
2781	ID *string `json:"id,omitempty"`
2782	// Name - The name of the private link resource.
2783	Name *string `json:"name,omitempty"`
2784	// Type - The resource type.
2785	Type *string `json:"type,omitempty"`
2786	// GroupID - The group ID of the resource.
2787	GroupID *string `json:"groupId,omitempty"`
2788	// RequiredMembers - RequiredMembers of the resource
2789	RequiredMembers *[]string `json:"requiredMembers,omitempty"`
2790	// PrivateLinkServiceID - READ-ONLY; The private link service ID of the resource, this field is exposed only to NRP internally.
2791	PrivateLinkServiceID *string `json:"privateLinkServiceID,omitempty"`
2792}
2793
2794// MarshalJSON is the custom marshaler for PrivateLinkResource.
2795func (plr PrivateLinkResource) MarshalJSON() ([]byte, error) {
2796	objectMap := make(map[string]interface{})
2797	if plr.ID != nil {
2798		objectMap["id"] = plr.ID
2799	}
2800	if plr.Name != nil {
2801		objectMap["name"] = plr.Name
2802	}
2803	if plr.Type != nil {
2804		objectMap["type"] = plr.Type
2805	}
2806	if plr.GroupID != nil {
2807		objectMap["groupId"] = plr.GroupID
2808	}
2809	if plr.RequiredMembers != nil {
2810		objectMap["requiredMembers"] = plr.RequiredMembers
2811	}
2812	return json.Marshal(objectMap)
2813}
2814
2815// PrivateLinkResourcesListResult a list of private link resources
2816type PrivateLinkResourcesListResult struct {
2817	autorest.Response `json:"-"`
2818	// Value - The collection value.
2819	Value *[]PrivateLinkResource `json:"value,omitempty"`
2820}
2821
2822// PrivateLinkServiceConnectionState the state of a private link service connection.
2823type PrivateLinkServiceConnectionState struct {
2824	// Status - The private link service connection status. Possible values include: 'Pending', 'Approved', 'Rejected', 'Disconnected'
2825	Status ConnectionStatus `json:"status,omitempty"`
2826	// Description - The private link service connection description.
2827	Description *string `json:"description,omitempty"`
2828}
2829
2830// Resource the Resource model definition.
2831type Resource struct {
2832	// ID - READ-ONLY; Resource Id
2833	ID *string `json:"id,omitempty"`
2834	// Name - READ-ONLY; Resource name
2835	Name *string `json:"name,omitempty"`
2836	// Type - READ-ONLY; Resource type
2837	Type *string `json:"type,omitempty"`
2838	// Location - Resource location
2839	Location *string `json:"location,omitempty"`
2840	// Tags - Resource tags
2841	Tags map[string]*string `json:"tags"`
2842}
2843
2844// MarshalJSON is the custom marshaler for Resource.
2845func (r Resource) MarshalJSON() ([]byte, error) {
2846	objectMap := make(map[string]interface{})
2847	if r.Location != nil {
2848		objectMap["location"] = r.Location
2849	}
2850	if r.Tags != nil {
2851		objectMap["tags"] = r.Tags
2852	}
2853	return json.Marshal(objectMap)
2854}
2855
2856// ResourceReference a reference to an Azure resource.
2857type ResourceReference struct {
2858	// ID - The fully qualified Azure resource id.
2859	ID *string `json:"id,omitempty"`
2860}
2861
2862// SSHConfiguration SSH configuration for Linux-based VMs running on Azure.
2863type SSHConfiguration struct {
2864	// PublicKeys - The list of SSH public keys used to authenticate with Linux-based VMs. Only expect one key specified.
2865	PublicKeys *[]SSHPublicKey `json:"publicKeys,omitempty"`
2866}
2867
2868// SSHPublicKey contains information about SSH certificate public key data.
2869type SSHPublicKey struct {
2870	// KeyData - Certificate public key used to authenticate with VMs through SSH. The certificate must be in PEM format with or without headers.
2871	KeyData *string `json:"keyData,omitempty"`
2872}
2873
2874// SubResource reference to another subresource.
2875type SubResource struct {
2876	// ID - READ-ONLY; Resource ID.
2877	ID *string `json:"id,omitempty"`
2878	// Name - READ-ONLY; The name of the resource that is unique within a resource group. This name can be used to access the resource.
2879	Name *string `json:"name,omitempty"`
2880	// Type - READ-ONLY; Resource type
2881	Type *string `json:"type,omitempty"`
2882}
2883
2884// MarshalJSON is the custom marshaler for SubResource.
2885func (sr SubResource) MarshalJSON() ([]byte, error) {
2886	objectMap := make(map[string]interface{})
2887	return json.Marshal(objectMap)
2888}
2889
2890// SysctlConfig sysctl settings for Linux agent nodes.
2891type SysctlConfig struct {
2892	// NetCoreSomaxconn - Sysctl setting net.core.somaxconn.
2893	NetCoreSomaxconn *int32 `json:"netCoreSomaxconn,omitempty"`
2894	// NetCoreNetdevMaxBacklog - Sysctl setting net.core.netdev_max_backlog.
2895	NetCoreNetdevMaxBacklog *int32 `json:"netCoreNetdevMaxBacklog,omitempty"`
2896	// NetCoreRmemDefault - Sysctl setting net.core.rmem_default.
2897	NetCoreRmemDefault *int32 `json:"netCoreRmemDefault,omitempty"`
2898	// NetCoreRmemMax - Sysctl setting net.core.rmem_max.
2899	NetCoreRmemMax *int32 `json:"netCoreRmemMax,omitempty"`
2900	// NetCoreWmemDefault - Sysctl setting net.core.wmem_default.
2901	NetCoreWmemDefault *int32 `json:"netCoreWmemDefault,omitempty"`
2902	// NetCoreWmemMax - Sysctl setting net.core.wmem_max.
2903	NetCoreWmemMax *int32 `json:"netCoreWmemMax,omitempty"`
2904	// NetCoreOptmemMax - Sysctl setting net.core.optmem_max.
2905	NetCoreOptmemMax *int32 `json:"netCoreOptmemMax,omitempty"`
2906	// NetIpv4TCPMaxSynBacklog - Sysctl setting net.ipv4.tcp_max_syn_backlog.
2907	NetIpv4TCPMaxSynBacklog *int32 `json:"netIpv4TcpMaxSynBacklog,omitempty"`
2908	// NetIpv4TCPMaxTwBuckets - Sysctl setting net.ipv4.tcp_max_tw_buckets.
2909	NetIpv4TCPMaxTwBuckets *int32 `json:"netIpv4TcpMaxTwBuckets,omitempty"`
2910	// NetIpv4TCPFinTimeout - Sysctl setting net.ipv4.tcp_fin_timeout.
2911	NetIpv4TCPFinTimeout *int32 `json:"netIpv4TcpFinTimeout,omitempty"`
2912	// NetIpv4TCPKeepaliveTime - Sysctl setting net.ipv4.tcp_keepalive_time.
2913	NetIpv4TCPKeepaliveTime *int32 `json:"netIpv4TcpKeepaliveTime,omitempty"`
2914	// NetIpv4TCPKeepaliveProbes - Sysctl setting net.ipv4.tcp_keepalive_probes.
2915	NetIpv4TCPKeepaliveProbes *int32 `json:"netIpv4TcpKeepaliveProbes,omitempty"`
2916	// NetIpv4TcpkeepaliveIntvl - Sysctl setting net.ipv4.tcp_keepalive_intvl.
2917	NetIpv4TcpkeepaliveIntvl *int32 `json:"netIpv4TcpkeepaliveIntvl,omitempty"`
2918	// NetIpv4TCPTwReuse - Sysctl setting net.ipv4.tcp_tw_reuse.
2919	NetIpv4TCPTwReuse *bool `json:"netIpv4TcpTwReuse,omitempty"`
2920	// NetIpv4IPLocalPortRange - Sysctl setting net.ipv4.ip_local_port_range.
2921	NetIpv4IPLocalPortRange *string `json:"netIpv4IpLocalPortRange,omitempty"`
2922	// NetIpv4NeighDefaultGcThresh1 - Sysctl setting net.ipv4.neigh.default.gc_thresh1.
2923	NetIpv4NeighDefaultGcThresh1 *int32 `json:"netIpv4NeighDefaultGcThresh1,omitempty"`
2924	// NetIpv4NeighDefaultGcThresh2 - Sysctl setting net.ipv4.neigh.default.gc_thresh2.
2925	NetIpv4NeighDefaultGcThresh2 *int32 `json:"netIpv4NeighDefaultGcThresh2,omitempty"`
2926	// NetIpv4NeighDefaultGcThresh3 - Sysctl setting net.ipv4.neigh.default.gc_thresh3.
2927	NetIpv4NeighDefaultGcThresh3 *int32 `json:"netIpv4NeighDefaultGcThresh3,omitempty"`
2928	// NetNetfilterNfConntrackMax - Sysctl setting net.netfilter.nf_conntrack_max.
2929	NetNetfilterNfConntrackMax *int32 `json:"netNetfilterNfConntrackMax,omitempty"`
2930	// NetNetfilterNfConntrackBuckets - Sysctl setting net.netfilter.nf_conntrack_buckets.
2931	NetNetfilterNfConntrackBuckets *int32 `json:"netNetfilterNfConntrackBuckets,omitempty"`
2932	// FsInotifyMaxUserWatches - Sysctl setting fs.inotify.max_user_watches.
2933	FsInotifyMaxUserWatches *int32 `json:"fsInotifyMaxUserWatches,omitempty"`
2934	// FsFileMax - Sysctl setting fs.file-max.
2935	FsFileMax *int32 `json:"fsFileMax,omitempty"`
2936	// FsAioMaxNr - Sysctl setting fs.aio-max-nr.
2937	FsAioMaxNr *int32 `json:"fsAioMaxNr,omitempty"`
2938	// FsNrOpen - Sysctl setting fs.nr_open.
2939	FsNrOpen *int32 `json:"fsNrOpen,omitempty"`
2940	// KernelThreadsMax - Sysctl setting kernel.threads-max.
2941	KernelThreadsMax *int32 `json:"kernelThreadsMax,omitempty"`
2942	// VMMaxMapCount - Sysctl setting vm.max_map_count.
2943	VMMaxMapCount *int32 `json:"vmMaxMapCount,omitempty"`
2944	// VMSwappiness - Sysctl setting vm.swappiness.
2945	VMSwappiness *int32 `json:"vmSwappiness,omitempty"`
2946	// VMVfsCachePressure - Sysctl setting vm.vfs_cache_pressure.
2947	VMVfsCachePressure *int32 `json:"vmVfsCachePressure,omitempty"`
2948}
2949
2950// SystemData metadata pertaining to creation and last modification of the resource.
2951type SystemData struct {
2952	// CreatedBy - The identity that created the resource.
2953	CreatedBy *string `json:"createdBy,omitempty"`
2954	// CreatedByType - The type of identity that created the resource. Possible values include: 'CreatedByTypeUser', 'CreatedByTypeApplication', 'CreatedByTypeManagedIdentity', 'CreatedByTypeKey'
2955	CreatedByType CreatedByType `json:"createdByType,omitempty"`
2956	// CreatedAt - The timestamp of resource creation (UTC).
2957	CreatedAt *date.Time `json:"createdAt,omitempty"`
2958	// LastModifiedBy - The identity that last modified the resource.
2959	LastModifiedBy *string `json:"lastModifiedBy,omitempty"`
2960	// LastModifiedByType - The type of identity that last modified the resource. Possible values include: 'CreatedByTypeUser', 'CreatedByTypeApplication', 'CreatedByTypeManagedIdentity', 'CreatedByTypeKey'
2961	LastModifiedByType CreatedByType `json:"lastModifiedByType,omitempty"`
2962	// LastModifiedAt - The type of identity that last modified the resource.
2963	LastModifiedAt *date.Time `json:"lastModifiedAt,omitempty"`
2964}
2965
2966// TagsObject tags object for patch operations.
2967type TagsObject struct {
2968	// Tags - Resource tags.
2969	Tags map[string]*string `json:"tags"`
2970}
2971
2972// MarshalJSON is the custom marshaler for TagsObject.
2973func (toVar TagsObject) MarshalJSON() ([]byte, error) {
2974	objectMap := make(map[string]interface{})
2975	if toVar.Tags != nil {
2976		objectMap["tags"] = toVar.Tags
2977	}
2978	return json.Marshal(objectMap)
2979}
2980
2981// TimeInWeek time in a week.
2982type TimeInWeek struct {
2983	// Day - A day in a week. Possible values include: 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'
2984	Day WeekDay `json:"day,omitempty"`
2985	// HourSlots - hour slots in a day.
2986	HourSlots *[]int32 `json:"hourSlots,omitempty"`
2987}
2988
2989// TimeSpan the time span with start and end properties.
2990type TimeSpan struct {
2991	// Start - The start of a time span
2992	Start *date.Time `json:"start,omitempty"`
2993	// End - The end of a time span
2994	End *date.Time `json:"end,omitempty"`
2995}
2996
2997// UserAssignedIdentity ...
2998type UserAssignedIdentity struct {
2999	// ResourceID - The resource id of the user assigned identity.
3000	ResourceID *string `json:"resourceId,omitempty"`
3001	// ClientID - The client id of the user assigned identity.
3002	ClientID *string `json:"clientId,omitempty"`
3003	// ObjectID - The object id of the user assigned identity.
3004	ObjectID *string `json:"objectId,omitempty"`
3005}
3006
3007// VMDiagnostics profile for diagnostics on the container service VMs.
3008type VMDiagnostics struct {
3009	// Enabled - Whether the VM diagnostic agent is provisioned on the VM.
3010	Enabled *bool `json:"enabled,omitempty"`
3011	// StorageURI - READ-ONLY; The URI of the storage account where diagnostics are stored.
3012	StorageURI *string `json:"storageUri,omitempty"`
3013}
3014
3015// MarshalJSON is the custom marshaler for VMDiagnostics.
3016func (vd VMDiagnostics) MarshalJSON() ([]byte, error) {
3017	objectMap := make(map[string]interface{})
3018	if vd.Enabled != nil {
3019		objectMap["enabled"] = vd.Enabled
3020	}
3021	return json.Marshal(objectMap)
3022}
3023