1package containerservice 2 3// Copyright (c) Microsoft and contributors. All rights reserved. 4// 5// Licensed under the Apache License, Version 2.0 (the "License"); 6// you may not use this file except in compliance with the License. 7// You may obtain a copy of the License at 8// http://www.apache.org/licenses/LICENSE-2.0 9// 10// Unless required by applicable law or agreed to in writing, software 11// distributed under the License is distributed on an "AS IS" BASIS, 12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13// 14// See the License for the specific language governing permissions and 15// limitations under the License. 16// 17// Code generated by Microsoft (R) AutoRest Code Generator. 18// Changes may cause incorrect behavior and will be lost if the code is regenerated. 19 20import ( 21 "context" 22 "encoding/json" 23 "github.com/Azure/go-autorest/autorest" 24 "github.com/Azure/go-autorest/autorest/azure" 25 "github.com/Azure/go-autorest/autorest/to" 26 "github.com/Azure/go-autorest/tracing" 27 "net/http" 28) 29 30// The package's fully qualified name. 31const fqdn = "github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2020-11-01/containerservice" 32 33// AccessProfile profile for enabling a user to access a managed cluster. 34type AccessProfile struct { 35 // KubeConfig - Base64-encoded Kubernetes configuration file. 36 KubeConfig *[]byte `json:"kubeConfig,omitempty"` 37} 38 39// AgentPool agent Pool. 40type AgentPool struct { 41 autorest.Response `json:"-"` 42 // ManagedClusterAgentPoolProfileProperties - Properties of an agent pool. 43 *ManagedClusterAgentPoolProfileProperties `json:"properties,omitempty"` 44 // ID - READ-ONLY; Resource ID. 45 ID *string `json:"id,omitempty"` 46 // Name - READ-ONLY; The name of the resource that is unique within a resource group. This name can be used to access the resource. 47 Name *string `json:"name,omitempty"` 48 // Type - READ-ONLY; Resource type 49 Type *string `json:"type,omitempty"` 50} 51 52// MarshalJSON is the custom marshaler for AgentPool. 53func (ap AgentPool) MarshalJSON() ([]byte, error) { 54 objectMap := make(map[string]interface{}) 55 if ap.ManagedClusterAgentPoolProfileProperties != nil { 56 objectMap["properties"] = ap.ManagedClusterAgentPoolProfileProperties 57 } 58 return json.Marshal(objectMap) 59} 60 61// UnmarshalJSON is the custom unmarshaler for AgentPool struct. 62func (ap *AgentPool) UnmarshalJSON(body []byte) error { 63 var m map[string]*json.RawMessage 64 err := json.Unmarshal(body, &m) 65 if err != nil { 66 return err 67 } 68 for k, v := range m { 69 switch k { 70 case "properties": 71 if v != nil { 72 var managedClusterAgentPoolProfileProperties ManagedClusterAgentPoolProfileProperties 73 err = json.Unmarshal(*v, &managedClusterAgentPoolProfileProperties) 74 if err != nil { 75 return err 76 } 77 ap.ManagedClusterAgentPoolProfileProperties = &managedClusterAgentPoolProfileProperties 78 } 79 case "id": 80 if v != nil { 81 var ID string 82 err = json.Unmarshal(*v, &ID) 83 if err != nil { 84 return err 85 } 86 ap.ID = &ID 87 } 88 case "name": 89 if v != nil { 90 var name string 91 err = json.Unmarshal(*v, &name) 92 if err != nil { 93 return err 94 } 95 ap.Name = &name 96 } 97 case "type": 98 if v != nil { 99 var typeVar string 100 err = json.Unmarshal(*v, &typeVar) 101 if err != nil { 102 return err 103 } 104 ap.Type = &typeVar 105 } 106 } 107 } 108 109 return nil 110} 111 112// AgentPoolAvailableVersions the list of available versions for an agent pool. 113type AgentPoolAvailableVersions struct { 114 autorest.Response `json:"-"` 115 // ID - READ-ONLY; Id of the agent pool available versions. 116 ID *string `json:"id,omitempty"` 117 // Name - READ-ONLY; Name of the agent pool available versions. 118 Name *string `json:"name,omitempty"` 119 // Type - READ-ONLY; Type of the agent pool available versions. 120 Type *string `json:"type,omitempty"` 121 // AgentPoolAvailableVersionsProperties - Properties of agent pool available versions. 122 *AgentPoolAvailableVersionsProperties `json:"properties,omitempty"` 123} 124 125// MarshalJSON is the custom marshaler for AgentPoolAvailableVersions. 126func (apav AgentPoolAvailableVersions) MarshalJSON() ([]byte, error) { 127 objectMap := make(map[string]interface{}) 128 if apav.AgentPoolAvailableVersionsProperties != nil { 129 objectMap["properties"] = apav.AgentPoolAvailableVersionsProperties 130 } 131 return json.Marshal(objectMap) 132} 133 134// UnmarshalJSON is the custom unmarshaler for AgentPoolAvailableVersions struct. 135func (apav *AgentPoolAvailableVersions) UnmarshalJSON(body []byte) error { 136 var m map[string]*json.RawMessage 137 err := json.Unmarshal(body, &m) 138 if err != nil { 139 return err 140 } 141 for k, v := range m { 142 switch k { 143 case "id": 144 if v != nil { 145 var ID string 146 err = json.Unmarshal(*v, &ID) 147 if err != nil { 148 return err 149 } 150 apav.ID = &ID 151 } 152 case "name": 153 if v != nil { 154 var name string 155 err = json.Unmarshal(*v, &name) 156 if err != nil { 157 return err 158 } 159 apav.Name = &name 160 } 161 case "type": 162 if v != nil { 163 var typeVar string 164 err = json.Unmarshal(*v, &typeVar) 165 if err != nil { 166 return err 167 } 168 apav.Type = &typeVar 169 } 170 case "properties": 171 if v != nil { 172 var agentPoolAvailableVersionsProperties AgentPoolAvailableVersionsProperties 173 err = json.Unmarshal(*v, &agentPoolAvailableVersionsProperties) 174 if err != nil { 175 return err 176 } 177 apav.AgentPoolAvailableVersionsProperties = &agentPoolAvailableVersionsProperties 178 } 179 } 180 } 181 182 return nil 183} 184 185// AgentPoolAvailableVersionsProperties the list of available agent pool versions. 186type AgentPoolAvailableVersionsProperties struct { 187 // AgentPoolVersions - List of versions available for agent pool. 188 AgentPoolVersions *[]AgentPoolAvailableVersionsPropertiesAgentPoolVersionsItem `json:"agentPoolVersions,omitempty"` 189} 190 191// AgentPoolAvailableVersionsPropertiesAgentPoolVersionsItem ... 192type AgentPoolAvailableVersionsPropertiesAgentPoolVersionsItem struct { 193 // Default - Whether this version is the default agent pool version. 194 Default *bool `json:"default,omitempty"` 195 // KubernetesVersion - Kubernetes version (major, minor, patch). 196 KubernetesVersion *string `json:"kubernetesVersion,omitempty"` 197 // IsPreview - Whether Kubernetes version is currently in preview. 198 IsPreview *bool `json:"isPreview,omitempty"` 199} 200 201// AgentPoolListResult the response from the List Agent Pools operation. 202type AgentPoolListResult struct { 203 autorest.Response `json:"-"` 204 // Value - The list of agent pools. 205 Value *[]AgentPool `json:"value,omitempty"` 206 // NextLink - READ-ONLY; The URL to get the next set of agent pool results. 207 NextLink *string `json:"nextLink,omitempty"` 208} 209 210// MarshalJSON is the custom marshaler for AgentPoolListResult. 211func (aplr AgentPoolListResult) MarshalJSON() ([]byte, error) { 212 objectMap := make(map[string]interface{}) 213 if aplr.Value != nil { 214 objectMap["value"] = aplr.Value 215 } 216 return json.Marshal(objectMap) 217} 218 219// AgentPoolListResultIterator provides access to a complete listing of AgentPool values. 220type AgentPoolListResultIterator struct { 221 i int 222 page AgentPoolListResultPage 223} 224 225// NextWithContext advances to the next value. If there was an error making 226// the request the iterator does not advance and the error is returned. 227func (iter *AgentPoolListResultIterator) NextWithContext(ctx context.Context) (err error) { 228 if tracing.IsEnabled() { 229 ctx = tracing.StartSpan(ctx, fqdn+"/AgentPoolListResultIterator.NextWithContext") 230 defer func() { 231 sc := -1 232 if iter.Response().Response.Response != nil { 233 sc = iter.Response().Response.Response.StatusCode 234 } 235 tracing.EndSpan(ctx, sc, err) 236 }() 237 } 238 iter.i++ 239 if iter.i < len(iter.page.Values()) { 240 return nil 241 } 242 err = iter.page.NextWithContext(ctx) 243 if err != nil { 244 iter.i-- 245 return err 246 } 247 iter.i = 0 248 return nil 249} 250 251// Next advances to the next value. If there was an error making 252// the request the iterator does not advance and the error is returned. 253// Deprecated: Use NextWithContext() instead. 254func (iter *AgentPoolListResultIterator) Next() error { 255 return iter.NextWithContext(context.Background()) 256} 257 258// NotDone returns true if the enumeration should be started or is not yet complete. 259func (iter AgentPoolListResultIterator) NotDone() bool { 260 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 261} 262 263// Response returns the raw server response from the last page request. 264func (iter AgentPoolListResultIterator) Response() AgentPoolListResult { 265 return iter.page.Response() 266} 267 268// Value returns the current value or a zero-initialized value if the 269// iterator has advanced beyond the end of the collection. 270func (iter AgentPoolListResultIterator) Value() AgentPool { 271 if !iter.page.NotDone() { 272 return AgentPool{} 273 } 274 return iter.page.Values()[iter.i] 275} 276 277// Creates a new instance of the AgentPoolListResultIterator type. 278func NewAgentPoolListResultIterator(page AgentPoolListResultPage) AgentPoolListResultIterator { 279 return AgentPoolListResultIterator{page: page} 280} 281 282// IsEmpty returns true if the ListResult contains no values. 283func (aplr AgentPoolListResult) IsEmpty() bool { 284 return aplr.Value == nil || len(*aplr.Value) == 0 285} 286 287// hasNextLink returns true if the NextLink is not empty. 288func (aplr AgentPoolListResult) hasNextLink() bool { 289 return aplr.NextLink != nil && len(*aplr.NextLink) != 0 290} 291 292// agentPoolListResultPreparer prepares a request to retrieve the next set of results. 293// It returns nil if no more results exist. 294func (aplr AgentPoolListResult) agentPoolListResultPreparer(ctx context.Context) (*http.Request, error) { 295 if !aplr.hasNextLink() { 296 return nil, nil 297 } 298 return autorest.Prepare((&http.Request{}).WithContext(ctx), 299 autorest.AsJSON(), 300 autorest.AsGet(), 301 autorest.WithBaseURL(to.String(aplr.NextLink))) 302} 303 304// AgentPoolListResultPage contains a page of AgentPool values. 305type AgentPoolListResultPage struct { 306 fn func(context.Context, AgentPoolListResult) (AgentPoolListResult, error) 307 aplr AgentPoolListResult 308} 309 310// NextWithContext advances to the next page of values. If there was an error making 311// the request the page does not advance and the error is returned. 312func (page *AgentPoolListResultPage) NextWithContext(ctx context.Context) (err error) { 313 if tracing.IsEnabled() { 314 ctx = tracing.StartSpan(ctx, fqdn+"/AgentPoolListResultPage.NextWithContext") 315 defer func() { 316 sc := -1 317 if page.Response().Response.Response != nil { 318 sc = page.Response().Response.Response.StatusCode 319 } 320 tracing.EndSpan(ctx, sc, err) 321 }() 322 } 323 for { 324 next, err := page.fn(ctx, page.aplr) 325 if err != nil { 326 return err 327 } 328 page.aplr = next 329 if !next.hasNextLink() || !next.IsEmpty() { 330 break 331 } 332 } 333 return nil 334} 335 336// Next advances to the next page of values. If there was an error making 337// the request the page does not advance and the error is returned. 338// Deprecated: Use NextWithContext() instead. 339func (page *AgentPoolListResultPage) Next() error { 340 return page.NextWithContext(context.Background()) 341} 342 343// NotDone returns true if the page enumeration should be started or is not yet complete. 344func (page AgentPoolListResultPage) NotDone() bool { 345 return !page.aplr.IsEmpty() 346} 347 348// Response returns the raw server response from the last page request. 349func (page AgentPoolListResultPage) Response() AgentPoolListResult { 350 return page.aplr 351} 352 353// Values returns the slice of values for the current page or nil if there are no values. 354func (page AgentPoolListResultPage) Values() []AgentPool { 355 if page.aplr.IsEmpty() { 356 return nil 357 } 358 return *page.aplr.Value 359} 360 361// Creates a new instance of the AgentPoolListResultPage type. 362func NewAgentPoolListResultPage(cur AgentPoolListResult, getNextPage func(context.Context, AgentPoolListResult) (AgentPoolListResult, error)) AgentPoolListResultPage { 363 return AgentPoolListResultPage{ 364 fn: getNextPage, 365 aplr: cur, 366 } 367} 368 369// AgentPoolsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a 370// long-running operation. 371type AgentPoolsCreateOrUpdateFuture struct { 372 azure.FutureAPI 373 // Result returns the result of the asynchronous operation. 374 // If the operation has not completed it will return an error. 375 Result func(AgentPoolsClient) (AgentPool, error) 376} 377 378// AgentPoolsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running 379// operation. 380type AgentPoolsDeleteFuture struct { 381 azure.FutureAPI 382 // Result returns the result of the asynchronous operation. 383 // If the operation has not completed it will return an error. 384 Result func(AgentPoolsClient) (autorest.Response, error) 385} 386 387// AgentPoolsUpgradeNodeImageVersionFuture an abstraction for monitoring and retrieving the results of a 388// long-running operation. 389type AgentPoolsUpgradeNodeImageVersionFuture struct { 390 azure.FutureAPI 391 // Result returns the result of the asynchronous operation. 392 // If the operation has not completed it will return an error. 393 Result func(AgentPoolsClient) (AgentPool, error) 394} 395 396// AgentPoolUpgradeProfile the list of available upgrades for an agent pool. 397type AgentPoolUpgradeProfile struct { 398 autorest.Response `json:"-"` 399 // ID - READ-ONLY; Id of the agent pool upgrade profile. 400 ID *string `json:"id,omitempty"` 401 // Name - READ-ONLY; Name of the agent pool upgrade profile. 402 Name *string `json:"name,omitempty"` 403 // Type - READ-ONLY; Type of the agent pool upgrade profile. 404 Type *string `json:"type,omitempty"` 405 // AgentPoolUpgradeProfileProperties - Properties of agent pool upgrade profile. 406 *AgentPoolUpgradeProfileProperties `json:"properties,omitempty"` 407} 408 409// MarshalJSON is the custom marshaler for AgentPoolUpgradeProfile. 410func (apup AgentPoolUpgradeProfile) MarshalJSON() ([]byte, error) { 411 objectMap := make(map[string]interface{}) 412 if apup.AgentPoolUpgradeProfileProperties != nil { 413 objectMap["properties"] = apup.AgentPoolUpgradeProfileProperties 414 } 415 return json.Marshal(objectMap) 416} 417 418// UnmarshalJSON is the custom unmarshaler for AgentPoolUpgradeProfile struct. 419func (apup *AgentPoolUpgradeProfile) UnmarshalJSON(body []byte) error { 420 var m map[string]*json.RawMessage 421 err := json.Unmarshal(body, &m) 422 if err != nil { 423 return err 424 } 425 for k, v := range m { 426 switch k { 427 case "id": 428 if v != nil { 429 var ID string 430 err = json.Unmarshal(*v, &ID) 431 if err != nil { 432 return err 433 } 434 apup.ID = &ID 435 } 436 case "name": 437 if v != nil { 438 var name string 439 err = json.Unmarshal(*v, &name) 440 if err != nil { 441 return err 442 } 443 apup.Name = &name 444 } 445 case "type": 446 if v != nil { 447 var typeVar string 448 err = json.Unmarshal(*v, &typeVar) 449 if err != nil { 450 return err 451 } 452 apup.Type = &typeVar 453 } 454 case "properties": 455 if v != nil { 456 var agentPoolUpgradeProfileProperties AgentPoolUpgradeProfileProperties 457 err = json.Unmarshal(*v, &agentPoolUpgradeProfileProperties) 458 if err != nil { 459 return err 460 } 461 apup.AgentPoolUpgradeProfileProperties = &agentPoolUpgradeProfileProperties 462 } 463 } 464 } 465 466 return nil 467} 468 469// AgentPoolUpgradeProfileProperties the list of available upgrade versions. 470type AgentPoolUpgradeProfileProperties struct { 471 // KubernetesVersion - Kubernetes version (major, minor, patch). 472 KubernetesVersion *string `json:"kubernetesVersion,omitempty"` 473 // OsType - OsType to be used to specify os type. Choose from Linux and Windows. Default to Linux. Possible values include: 'Linux', 'Windows' 474 OsType OSType `json:"osType,omitempty"` 475 // Upgrades - List of orchestrator types and versions available for upgrade. 476 Upgrades *[]AgentPoolUpgradeProfilePropertiesUpgradesItem `json:"upgrades,omitempty"` 477 // LatestNodeImageVersion - LatestNodeImageVersion is the latest AKS supported node image version. 478 LatestNodeImageVersion *string `json:"latestNodeImageVersion,omitempty"` 479} 480 481// AgentPoolUpgradeProfilePropertiesUpgradesItem ... 482type AgentPoolUpgradeProfilePropertiesUpgradesItem struct { 483 // KubernetesVersion - Kubernetes version (major, minor, patch). 484 KubernetesVersion *string `json:"kubernetesVersion,omitempty"` 485 // IsPreview - Whether Kubernetes version is currently in preview. 486 IsPreview *bool `json:"isPreview,omitempty"` 487} 488 489// AgentPoolUpgradeSettings settings for upgrading an agentpool 490type AgentPoolUpgradeSettings struct { 491 // MaxSurge - Count or percentage of additional nodes to be added during upgrade. If empty uses AKS default 492 MaxSurge *string `json:"maxSurge,omitempty"` 493} 494 495// CloudError an error response from the Container service. 496type CloudError struct { 497 // Error - Details about the error. 498 Error *CloudErrorBody `json:"error,omitempty"` 499} 500 501// CloudErrorBody an error response from the Container service. 502type CloudErrorBody struct { 503 // Code - An identifier for the error. Codes are invariant and are intended to be consumed programmatically. 504 Code *string `json:"code,omitempty"` 505 // Message - A message describing the error, intended to be suitable for display in a user interface. 506 Message *string `json:"message,omitempty"` 507 // Target - The target of the particular error. For example, the name of the property in error. 508 Target *string `json:"target,omitempty"` 509 // Details - A list of additional details about the error. 510 Details *[]CloudErrorBody `json:"details,omitempty"` 511} 512 513// CredentialResult the credential result response. 514type CredentialResult struct { 515 // Name - READ-ONLY; The name of the credential. 516 Name *string `json:"name,omitempty"` 517 // Value - READ-ONLY; Base64-encoded Kubernetes configuration file. 518 Value *[]byte `json:"value,omitempty"` 519} 520 521// CredentialResults the list of credential result response. 522type CredentialResults struct { 523 autorest.Response `json:"-"` 524 // Kubeconfigs - READ-ONLY; Base64-encoded Kubernetes configuration file. 525 Kubeconfigs *[]CredentialResult `json:"kubeconfigs,omitempty"` 526} 527 528// DiagnosticsProfile profile for diagnostics on the container service cluster. 529type DiagnosticsProfile struct { 530 // VMDiagnostics - Profile for diagnostics on the container service VMs. 531 VMDiagnostics *VMDiagnostics `json:"vmDiagnostics,omitempty"` 532} 533 534// KubeletConfig kubelet configurations of agent nodes. 535type KubeletConfig struct { 536 // CPUManagerPolicy - CPU Manager policy to use. 537 CPUManagerPolicy *string `json:"cpuManagerPolicy,omitempty"` 538 // CPUCfsQuota - Enable CPU CFS quota enforcement for containers that specify CPU limits. 539 CPUCfsQuota *bool `json:"cpuCfsQuota,omitempty"` 540 // CPUCfsQuotaPeriod - Sets CPU CFS quota period value. 541 CPUCfsQuotaPeriod *string `json:"cpuCfsQuotaPeriod,omitempty"` 542 // ImageGcHighThreshold - The percent of disk usage after which image garbage collection is always run. 543 ImageGcHighThreshold *int32 `json:"imageGcHighThreshold,omitempty"` 544 // ImageGcLowThreshold - The percent of disk usage before which image garbage collection is never run. 545 ImageGcLowThreshold *int32 `json:"imageGcLowThreshold,omitempty"` 546 // TopologyManagerPolicy - Topology Manager policy to use. 547 TopologyManagerPolicy *string `json:"topologyManagerPolicy,omitempty"` 548 // AllowedUnsafeSysctls - Allowlist of unsafe sysctls or unsafe sysctl patterns (ending in `*`). 549 AllowedUnsafeSysctls *[]string `json:"allowedUnsafeSysctls,omitempty"` 550 // FailSwapOn - If set to true it will make the Kubelet fail to start if swap is enabled on the node. 551 FailSwapOn *bool `json:"failSwapOn,omitempty"` 552} 553 554// LinuxOSConfig OS configurations of Linux agent nodes. 555type LinuxOSConfig struct { 556 // Sysctls - Sysctl settings for Linux agent nodes. 557 Sysctls *SysctlConfig `json:"sysctls,omitempty"` 558 // TransparentHugePageEnabled - Transparent Huge Page enabled configuration. 559 TransparentHugePageEnabled *string `json:"transparentHugePageEnabled,omitempty"` 560 // TransparentHugePageDefrag - Transparent Huge Page defrag configuration. 561 TransparentHugePageDefrag *string `json:"transparentHugePageDefrag,omitempty"` 562 // SwapFileSizeMB - SwapFileSizeMB specifies size in MB of a swap file will be created on each node. 563 SwapFileSizeMB *int32 `json:"swapFileSizeMB,omitempty"` 564} 565 566// LinuxProfile profile for Linux VMs in the container service cluster. 567type LinuxProfile struct { 568 // AdminUsername - The administrator username to use for Linux VMs. 569 AdminUsername *string `json:"adminUsername,omitempty"` 570 // SSH - SSH configuration for Linux-based VMs running on Azure. 571 SSH *SSHConfiguration `json:"ssh,omitempty"` 572} 573 574// ManagedCluster managed cluster. 575type ManagedCluster struct { 576 autorest.Response `json:"-"` 577 // ManagedClusterProperties - Properties of a managed cluster. 578 *ManagedClusterProperties `json:"properties,omitempty"` 579 // Identity - The identity of the managed cluster, if configured. 580 Identity *ManagedClusterIdentity `json:"identity,omitempty"` 581 // Sku - The managed cluster SKU. 582 Sku *ManagedClusterSKU `json:"sku,omitempty"` 583 // ID - READ-ONLY; Resource Id 584 ID *string `json:"id,omitempty"` 585 // Name - READ-ONLY; Resource name 586 Name *string `json:"name,omitempty"` 587 // Type - READ-ONLY; Resource type 588 Type *string `json:"type,omitempty"` 589 // Location - Resource location 590 Location *string `json:"location,omitempty"` 591 // Tags - Resource tags 592 Tags map[string]*string `json:"tags"` 593} 594 595// MarshalJSON is the custom marshaler for ManagedCluster. 596func (mc ManagedCluster) MarshalJSON() ([]byte, error) { 597 objectMap := make(map[string]interface{}) 598 if mc.ManagedClusterProperties != nil { 599 objectMap["properties"] = mc.ManagedClusterProperties 600 } 601 if mc.Identity != nil { 602 objectMap["identity"] = mc.Identity 603 } 604 if mc.Sku != nil { 605 objectMap["sku"] = mc.Sku 606 } 607 if mc.Location != nil { 608 objectMap["location"] = mc.Location 609 } 610 if mc.Tags != nil { 611 objectMap["tags"] = mc.Tags 612 } 613 return json.Marshal(objectMap) 614} 615 616// UnmarshalJSON is the custom unmarshaler for ManagedCluster struct. 617func (mc *ManagedCluster) UnmarshalJSON(body []byte) error { 618 var m map[string]*json.RawMessage 619 err := json.Unmarshal(body, &m) 620 if err != nil { 621 return err 622 } 623 for k, v := range m { 624 switch k { 625 case "properties": 626 if v != nil { 627 var managedClusterProperties ManagedClusterProperties 628 err = json.Unmarshal(*v, &managedClusterProperties) 629 if err != nil { 630 return err 631 } 632 mc.ManagedClusterProperties = &managedClusterProperties 633 } 634 case "identity": 635 if v != nil { 636 var identity ManagedClusterIdentity 637 err = json.Unmarshal(*v, &identity) 638 if err != nil { 639 return err 640 } 641 mc.Identity = &identity 642 } 643 case "sku": 644 if v != nil { 645 var sku ManagedClusterSKU 646 err = json.Unmarshal(*v, &sku) 647 if err != nil { 648 return err 649 } 650 mc.Sku = &sku 651 } 652 case "id": 653 if v != nil { 654 var ID string 655 err = json.Unmarshal(*v, &ID) 656 if err != nil { 657 return err 658 } 659 mc.ID = &ID 660 } 661 case "name": 662 if v != nil { 663 var name string 664 err = json.Unmarshal(*v, &name) 665 if err != nil { 666 return err 667 } 668 mc.Name = &name 669 } 670 case "type": 671 if v != nil { 672 var typeVar string 673 err = json.Unmarshal(*v, &typeVar) 674 if err != nil { 675 return err 676 } 677 mc.Type = &typeVar 678 } 679 case "location": 680 if v != nil { 681 var location string 682 err = json.Unmarshal(*v, &location) 683 if err != nil { 684 return err 685 } 686 mc.Location = &location 687 } 688 case "tags": 689 if v != nil { 690 var tags map[string]*string 691 err = json.Unmarshal(*v, &tags) 692 if err != nil { 693 return err 694 } 695 mc.Tags = tags 696 } 697 } 698 } 699 700 return nil 701} 702 703// ManagedClusterAADProfile aADProfile specifies attributes for Azure Active Directory integration. 704type ManagedClusterAADProfile struct { 705 // Managed - Whether to enable managed AAD. 706 Managed *bool `json:"managed,omitempty"` 707 // EnableAzureRBAC - Whether to enable Azure RBAC for Kubernetes authorization. 708 EnableAzureRBAC *bool `json:"enableAzureRBAC,omitempty"` 709 // AdminGroupObjectIDs - AAD group object IDs that will have admin role of the cluster. 710 AdminGroupObjectIDs *[]string `json:"adminGroupObjectIDs,omitempty"` 711 // ClientAppID - The client AAD application ID. 712 ClientAppID *string `json:"clientAppID,omitempty"` 713 // ServerAppID - The server AAD application ID. 714 ServerAppID *string `json:"serverAppID,omitempty"` 715 // ServerAppSecret - The server AAD application secret. 716 ServerAppSecret *string `json:"serverAppSecret,omitempty"` 717 // TenantID - The AAD tenant ID to use for authentication. If not specified, will use the tenant of the deployment subscription. 718 TenantID *string `json:"tenantID,omitempty"` 719} 720 721// ManagedClusterAccessProfile managed cluster Access Profile. 722type ManagedClusterAccessProfile struct { 723 autorest.Response `json:"-"` 724 // AccessProfile - AccessProfile of a managed cluster. 725 *AccessProfile `json:"properties,omitempty"` 726 // ID - READ-ONLY; Resource Id 727 ID *string `json:"id,omitempty"` 728 // Name - READ-ONLY; Resource name 729 Name *string `json:"name,omitempty"` 730 // Type - READ-ONLY; Resource type 731 Type *string `json:"type,omitempty"` 732 // Location - Resource location 733 Location *string `json:"location,omitempty"` 734 // Tags - Resource tags 735 Tags map[string]*string `json:"tags"` 736} 737 738// MarshalJSON is the custom marshaler for ManagedClusterAccessProfile. 739func (mcap ManagedClusterAccessProfile) MarshalJSON() ([]byte, error) { 740 objectMap := make(map[string]interface{}) 741 if mcap.AccessProfile != nil { 742 objectMap["properties"] = mcap.AccessProfile 743 } 744 if mcap.Location != nil { 745 objectMap["location"] = mcap.Location 746 } 747 if mcap.Tags != nil { 748 objectMap["tags"] = mcap.Tags 749 } 750 return json.Marshal(objectMap) 751} 752 753// UnmarshalJSON is the custom unmarshaler for ManagedClusterAccessProfile struct. 754func (mcap *ManagedClusterAccessProfile) UnmarshalJSON(body []byte) error { 755 var m map[string]*json.RawMessage 756 err := json.Unmarshal(body, &m) 757 if err != nil { 758 return err 759 } 760 for k, v := range m { 761 switch k { 762 case "properties": 763 if v != nil { 764 var accessProfile AccessProfile 765 err = json.Unmarshal(*v, &accessProfile) 766 if err != nil { 767 return err 768 } 769 mcap.AccessProfile = &accessProfile 770 } 771 case "id": 772 if v != nil { 773 var ID string 774 err = json.Unmarshal(*v, &ID) 775 if err != nil { 776 return err 777 } 778 mcap.ID = &ID 779 } 780 case "name": 781 if v != nil { 782 var name string 783 err = json.Unmarshal(*v, &name) 784 if err != nil { 785 return err 786 } 787 mcap.Name = &name 788 } 789 case "type": 790 if v != nil { 791 var typeVar string 792 err = json.Unmarshal(*v, &typeVar) 793 if err != nil { 794 return err 795 } 796 mcap.Type = &typeVar 797 } 798 case "location": 799 if v != nil { 800 var location string 801 err = json.Unmarshal(*v, &location) 802 if err != nil { 803 return err 804 } 805 mcap.Location = &location 806 } 807 case "tags": 808 if v != nil { 809 var tags map[string]*string 810 err = json.Unmarshal(*v, &tags) 811 if err != nil { 812 return err 813 } 814 mcap.Tags = tags 815 } 816 } 817 } 818 819 return nil 820} 821 822// ManagedClusterAddonProfile a Kubernetes add-on profile for a managed cluster. 823type ManagedClusterAddonProfile struct { 824 // Enabled - Whether the add-on is enabled or not. 825 Enabled *bool `json:"enabled,omitempty"` 826 // Config - Key-value pairs for configuring an add-on. 827 Config map[string]*string `json:"config"` 828 // Identity - READ-ONLY; Information of user assigned identity used by this add-on. 829 Identity *ManagedClusterAddonProfileIdentity `json:"identity,omitempty"` 830} 831 832// MarshalJSON is the custom marshaler for ManagedClusterAddonProfile. 833func (mcap ManagedClusterAddonProfile) MarshalJSON() ([]byte, error) { 834 objectMap := make(map[string]interface{}) 835 if mcap.Enabled != nil { 836 objectMap["enabled"] = mcap.Enabled 837 } 838 if mcap.Config != nil { 839 objectMap["config"] = mcap.Config 840 } 841 return json.Marshal(objectMap) 842} 843 844// ManagedClusterAddonProfileIdentity information of user assigned identity used by this add-on. 845type ManagedClusterAddonProfileIdentity struct { 846 // ResourceID - The resource id of the user assigned identity. 847 ResourceID *string `json:"resourceId,omitempty"` 848 // ClientID - The client id of the user assigned identity. 849 ClientID *string `json:"clientId,omitempty"` 850 // ObjectID - The object id of the user assigned identity. 851 ObjectID *string `json:"objectId,omitempty"` 852} 853 854// ManagedClusterAgentPoolProfile profile for the container service agent pool. 855type ManagedClusterAgentPoolProfile struct { 856 // Name - Unique name of the agent pool profile in the context of the subscription and resource group. 857 Name *string `json:"name,omitempty"` 858 // 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. 859 Count *int32 `json:"count,omitempty"` 860 // 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' 861 VMSize VMSizeTypes `json:"vmSize,omitempty"` 862 // 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. 863 OsDiskSizeGB *int32 `json:"osDiskSizeGB,omitempty"` 864 // 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' 865 OsDiskType OSDiskType `json:"osDiskType,omitempty"` 866 // VnetSubnetID - VNet SubnetID specifies the VNet's subnet identifier for nodes and maybe pods 867 VnetSubnetID *string `json:"vnetSubnetID,omitempty"` 868 // PodSubnetID - Pod SubnetID specifies the VNet's subnet identifier for pods. 869 PodSubnetID *string `json:"podSubnetID,omitempty"` 870 // MaxPods - Maximum number of pods that can run on a node. 871 MaxPods *int32 `json:"maxPods,omitempty"` 872 // OsType - OsType to be used to specify os type. Choose from Linux and Windows. Default to Linux. Possible values include: 'Linux', 'Windows' 873 OsType OSType `json:"osType,omitempty"` 874 // MaxCount - Maximum number of nodes for auto-scaling 875 MaxCount *int32 `json:"maxCount,omitempty"` 876 // MinCount - Minimum number of nodes for auto-scaling 877 MinCount *int32 `json:"minCount,omitempty"` 878 // EnableAutoScaling - Whether to enable auto-scaler 879 EnableAutoScaling *bool `json:"enableAutoScaling,omitempty"` 880 // Type - AgentPoolType represents types of an agent pool. Possible values include: 'VirtualMachineScaleSets', 'AvailabilitySet' 881 Type AgentPoolType `json:"type,omitempty"` 882 // Mode - AgentPoolMode represents mode of an agent pool. Possible values include: 'System', 'User' 883 Mode AgentPoolMode `json:"mode,omitempty"` 884 // OrchestratorVersion - Version of orchestrator specified when creating the managed cluster. 885 OrchestratorVersion *string `json:"orchestratorVersion,omitempty"` 886 // NodeImageVersion - READ-ONLY; Version of node image 887 NodeImageVersion *string `json:"nodeImageVersion,omitempty"` 888 // UpgradeSettings - Settings for upgrading the agentpool 889 UpgradeSettings *AgentPoolUpgradeSettings `json:"upgradeSettings,omitempty"` 890 // ProvisioningState - READ-ONLY; The current deployment or provisioning state, which only appears in the response. 891 ProvisioningState *string `json:"provisioningState,omitempty"` 892 // PowerState - READ-ONLY; Describes whether the Agent Pool is Running or Stopped 893 PowerState *PowerState `json:"powerState,omitempty"` 894 // AvailabilityZones - Availability zones for nodes. Must use VirtualMachineScaleSets AgentPoolType. 895 AvailabilityZones *[]string `json:"availabilityZones,omitempty"` 896 // EnableNodePublicIP - Enable public IP for nodes 897 EnableNodePublicIP *bool `json:"enableNodePublicIP,omitempty"` 898 // ScaleSetPriority - ScaleSetPriority to be used to specify virtual machine scale set priority. Default to regular. Possible values include: 'Spot', 'Regular' 899 ScaleSetPriority ScaleSetPriority `json:"scaleSetPriority,omitempty"` 900 // ScaleSetEvictionPolicy - ScaleSetEvictionPolicy to be used to specify eviction policy for Spot virtual machine scale set. Default to Delete. Possible values include: 'Delete', 'Deallocate' 901 ScaleSetEvictionPolicy ScaleSetEvictionPolicy `json:"scaleSetEvictionPolicy,omitempty"` 902 // 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. 903 SpotMaxPrice *float64 `json:"spotMaxPrice,omitempty"` 904 // Tags - Agent pool tags to be persisted on the agent pool virtual machine scale set. 905 Tags map[string]*string `json:"tags"` 906 // NodeLabels - Agent pool node labels to be persisted across all nodes in agent pool. 907 NodeLabels map[string]*string `json:"nodeLabels"` 908 // NodeTaints - Taints added to new nodes during node pool create and scale. For example, key=value:NoSchedule. 909 NodeTaints *[]string `json:"nodeTaints,omitempty"` 910 // ProximityPlacementGroupID - The ID for Proximity Placement Group. 911 ProximityPlacementGroupID *string `json:"proximityPlacementGroupID,omitempty"` 912 // KubeletConfig - KubeletConfig specifies the configuration of kubelet on agent nodes. 913 KubeletConfig *KubeletConfig `json:"kubeletConfig,omitempty"` 914 // LinuxOSConfig - LinuxOSConfig specifies the OS configuration of linux agent nodes. 915 LinuxOSConfig *LinuxOSConfig `json:"linuxOSConfig,omitempty"` 916} 917 918// MarshalJSON is the custom marshaler for ManagedClusterAgentPoolProfile. 919func (mcapp ManagedClusterAgentPoolProfile) MarshalJSON() ([]byte, error) { 920 objectMap := make(map[string]interface{}) 921 if mcapp.Name != nil { 922 objectMap["name"] = mcapp.Name 923 } 924 if mcapp.Count != nil { 925 objectMap["count"] = mcapp.Count 926 } 927 if mcapp.VMSize != "" { 928 objectMap["vmSize"] = mcapp.VMSize 929 } 930 if mcapp.OsDiskSizeGB != nil { 931 objectMap["osDiskSizeGB"] = mcapp.OsDiskSizeGB 932 } 933 if mcapp.OsDiskType != "" { 934 objectMap["osDiskType"] = mcapp.OsDiskType 935 } 936 if mcapp.VnetSubnetID != nil { 937 objectMap["vnetSubnetID"] = mcapp.VnetSubnetID 938 } 939 if mcapp.PodSubnetID != nil { 940 objectMap["podSubnetID"] = mcapp.PodSubnetID 941 } 942 if mcapp.MaxPods != nil { 943 objectMap["maxPods"] = mcapp.MaxPods 944 } 945 if mcapp.OsType != "" { 946 objectMap["osType"] = mcapp.OsType 947 } 948 if mcapp.MaxCount != nil { 949 objectMap["maxCount"] = mcapp.MaxCount 950 } 951 if mcapp.MinCount != nil { 952 objectMap["minCount"] = mcapp.MinCount 953 } 954 if mcapp.EnableAutoScaling != nil { 955 objectMap["enableAutoScaling"] = mcapp.EnableAutoScaling 956 } 957 if mcapp.Type != "" { 958 objectMap["type"] = mcapp.Type 959 } 960 if mcapp.Mode != "" { 961 objectMap["mode"] = mcapp.Mode 962 } 963 if mcapp.OrchestratorVersion != nil { 964 objectMap["orchestratorVersion"] = mcapp.OrchestratorVersion 965 } 966 if mcapp.UpgradeSettings != nil { 967 objectMap["upgradeSettings"] = mcapp.UpgradeSettings 968 } 969 if mcapp.AvailabilityZones != nil { 970 objectMap["availabilityZones"] = mcapp.AvailabilityZones 971 } 972 if mcapp.EnableNodePublicIP != nil { 973 objectMap["enableNodePublicIP"] = mcapp.EnableNodePublicIP 974 } 975 if mcapp.ScaleSetPriority != "" { 976 objectMap["scaleSetPriority"] = mcapp.ScaleSetPriority 977 } 978 if mcapp.ScaleSetEvictionPolicy != "" { 979 objectMap["scaleSetEvictionPolicy"] = mcapp.ScaleSetEvictionPolicy 980 } 981 if mcapp.SpotMaxPrice != nil { 982 objectMap["spotMaxPrice"] = mcapp.SpotMaxPrice 983 } 984 if mcapp.Tags != nil { 985 objectMap["tags"] = mcapp.Tags 986 } 987 if mcapp.NodeLabels != nil { 988 objectMap["nodeLabels"] = mcapp.NodeLabels 989 } 990 if mcapp.NodeTaints != nil { 991 objectMap["nodeTaints"] = mcapp.NodeTaints 992 } 993 if mcapp.ProximityPlacementGroupID != nil { 994 objectMap["proximityPlacementGroupID"] = mcapp.ProximityPlacementGroupID 995 } 996 if mcapp.KubeletConfig != nil { 997 objectMap["kubeletConfig"] = mcapp.KubeletConfig 998 } 999 if mcapp.LinuxOSConfig != nil { 1000 objectMap["linuxOSConfig"] = mcapp.LinuxOSConfig 1001 } 1002 return json.Marshal(objectMap) 1003} 1004 1005// ManagedClusterAgentPoolProfileProperties properties for the container service agent pool profile. 1006type ManagedClusterAgentPoolProfileProperties struct { 1007 // 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. 1008 Count *int32 `json:"count,omitempty"` 1009 // 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' 1010 VMSize VMSizeTypes `json:"vmSize,omitempty"` 1011 // 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. 1012 OsDiskSizeGB *int32 `json:"osDiskSizeGB,omitempty"` 1013 // 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' 1014 OsDiskType OSDiskType `json:"osDiskType,omitempty"` 1015 // VnetSubnetID - VNet SubnetID specifies the VNet's subnet identifier for nodes and maybe pods 1016 VnetSubnetID *string `json:"vnetSubnetID,omitempty"` 1017 // PodSubnetID - Pod SubnetID specifies the VNet's subnet identifier for pods. 1018 PodSubnetID *string `json:"podSubnetID,omitempty"` 1019 // MaxPods - Maximum number of pods that can run on a node. 1020 MaxPods *int32 `json:"maxPods,omitempty"` 1021 // OsType - OsType to be used to specify os type. Choose from Linux and Windows. Default to Linux. Possible values include: 'Linux', 'Windows' 1022 OsType OSType `json:"osType,omitempty"` 1023 // MaxCount - Maximum number of nodes for auto-scaling 1024 MaxCount *int32 `json:"maxCount,omitempty"` 1025 // MinCount - Minimum number of nodes for auto-scaling 1026 MinCount *int32 `json:"minCount,omitempty"` 1027 // EnableAutoScaling - Whether to enable auto-scaler 1028 EnableAutoScaling *bool `json:"enableAutoScaling,omitempty"` 1029 // Type - AgentPoolType represents types of an agent pool. Possible values include: 'VirtualMachineScaleSets', 'AvailabilitySet' 1030 Type AgentPoolType `json:"type,omitempty"` 1031 // Mode - AgentPoolMode represents mode of an agent pool. Possible values include: 'System', 'User' 1032 Mode AgentPoolMode `json:"mode,omitempty"` 1033 // OrchestratorVersion - Version of orchestrator specified when creating the managed cluster. 1034 OrchestratorVersion *string `json:"orchestratorVersion,omitempty"` 1035 // NodeImageVersion - READ-ONLY; Version of node image 1036 NodeImageVersion *string `json:"nodeImageVersion,omitempty"` 1037 // UpgradeSettings - Settings for upgrading the agentpool 1038 UpgradeSettings *AgentPoolUpgradeSettings `json:"upgradeSettings,omitempty"` 1039 // ProvisioningState - READ-ONLY; The current deployment or provisioning state, which only appears in the response. 1040 ProvisioningState *string `json:"provisioningState,omitempty"` 1041 // PowerState - READ-ONLY; Describes whether the Agent Pool is Running or Stopped 1042 PowerState *PowerState `json:"powerState,omitempty"` 1043 // AvailabilityZones - Availability zones for nodes. Must use VirtualMachineScaleSets AgentPoolType. 1044 AvailabilityZones *[]string `json:"availabilityZones,omitempty"` 1045 // EnableNodePublicIP - Enable public IP for nodes 1046 EnableNodePublicIP *bool `json:"enableNodePublicIP,omitempty"` 1047 // ScaleSetPriority - ScaleSetPriority to be used to specify virtual machine scale set priority. Default to regular. Possible values include: 'Spot', 'Regular' 1048 ScaleSetPriority ScaleSetPriority `json:"scaleSetPriority,omitempty"` 1049 // ScaleSetEvictionPolicy - ScaleSetEvictionPolicy to be used to specify eviction policy for Spot virtual machine scale set. Default to Delete. Possible values include: 'Delete', 'Deallocate' 1050 ScaleSetEvictionPolicy ScaleSetEvictionPolicy `json:"scaleSetEvictionPolicy,omitempty"` 1051 // 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. 1052 SpotMaxPrice *float64 `json:"spotMaxPrice,omitempty"` 1053 // Tags - Agent pool tags to be persisted on the agent pool virtual machine scale set. 1054 Tags map[string]*string `json:"tags"` 1055 // NodeLabels - Agent pool node labels to be persisted across all nodes in agent pool. 1056 NodeLabels map[string]*string `json:"nodeLabels"` 1057 // NodeTaints - Taints added to new nodes during node pool create and scale. For example, key=value:NoSchedule. 1058 NodeTaints *[]string `json:"nodeTaints,omitempty"` 1059 // ProximityPlacementGroupID - The ID for Proximity Placement Group. 1060 ProximityPlacementGroupID *string `json:"proximityPlacementGroupID,omitempty"` 1061 // KubeletConfig - KubeletConfig specifies the configuration of kubelet on agent nodes. 1062 KubeletConfig *KubeletConfig `json:"kubeletConfig,omitempty"` 1063 // LinuxOSConfig - LinuxOSConfig specifies the OS configuration of linux agent nodes. 1064 LinuxOSConfig *LinuxOSConfig `json:"linuxOSConfig,omitempty"` 1065} 1066 1067// MarshalJSON is the custom marshaler for ManagedClusterAgentPoolProfileProperties. 1068func (mcappp ManagedClusterAgentPoolProfileProperties) MarshalJSON() ([]byte, error) { 1069 objectMap := make(map[string]interface{}) 1070 if mcappp.Count != nil { 1071 objectMap["count"] = mcappp.Count 1072 } 1073 if mcappp.VMSize != "" { 1074 objectMap["vmSize"] = mcappp.VMSize 1075 } 1076 if mcappp.OsDiskSizeGB != nil { 1077 objectMap["osDiskSizeGB"] = mcappp.OsDiskSizeGB 1078 } 1079 if mcappp.OsDiskType != "" { 1080 objectMap["osDiskType"] = mcappp.OsDiskType 1081 } 1082 if mcappp.VnetSubnetID != nil { 1083 objectMap["vnetSubnetID"] = mcappp.VnetSubnetID 1084 } 1085 if mcappp.PodSubnetID != nil { 1086 objectMap["podSubnetID"] = mcappp.PodSubnetID 1087 } 1088 if mcappp.MaxPods != nil { 1089 objectMap["maxPods"] = mcappp.MaxPods 1090 } 1091 if mcappp.OsType != "" { 1092 objectMap["osType"] = mcappp.OsType 1093 } 1094 if mcappp.MaxCount != nil { 1095 objectMap["maxCount"] = mcappp.MaxCount 1096 } 1097 if mcappp.MinCount != nil { 1098 objectMap["minCount"] = mcappp.MinCount 1099 } 1100 if mcappp.EnableAutoScaling != nil { 1101 objectMap["enableAutoScaling"] = mcappp.EnableAutoScaling 1102 } 1103 if mcappp.Type != "" { 1104 objectMap["type"] = mcappp.Type 1105 } 1106 if mcappp.Mode != "" { 1107 objectMap["mode"] = mcappp.Mode 1108 } 1109 if mcappp.OrchestratorVersion != nil { 1110 objectMap["orchestratorVersion"] = mcappp.OrchestratorVersion 1111 } 1112 if mcappp.UpgradeSettings != nil { 1113 objectMap["upgradeSettings"] = mcappp.UpgradeSettings 1114 } 1115 if mcappp.AvailabilityZones != nil { 1116 objectMap["availabilityZones"] = mcappp.AvailabilityZones 1117 } 1118 if mcappp.EnableNodePublicIP != nil { 1119 objectMap["enableNodePublicIP"] = mcappp.EnableNodePublicIP 1120 } 1121 if mcappp.ScaleSetPriority != "" { 1122 objectMap["scaleSetPriority"] = mcappp.ScaleSetPriority 1123 } 1124 if mcappp.ScaleSetEvictionPolicy != "" { 1125 objectMap["scaleSetEvictionPolicy"] = mcappp.ScaleSetEvictionPolicy 1126 } 1127 if mcappp.SpotMaxPrice != nil { 1128 objectMap["spotMaxPrice"] = mcappp.SpotMaxPrice 1129 } 1130 if mcappp.Tags != nil { 1131 objectMap["tags"] = mcappp.Tags 1132 } 1133 if mcappp.NodeLabels != nil { 1134 objectMap["nodeLabels"] = mcappp.NodeLabels 1135 } 1136 if mcappp.NodeTaints != nil { 1137 objectMap["nodeTaints"] = mcappp.NodeTaints 1138 } 1139 if mcappp.ProximityPlacementGroupID != nil { 1140 objectMap["proximityPlacementGroupID"] = mcappp.ProximityPlacementGroupID 1141 } 1142 if mcappp.KubeletConfig != nil { 1143 objectMap["kubeletConfig"] = mcappp.KubeletConfig 1144 } 1145 if mcappp.LinuxOSConfig != nil { 1146 objectMap["linuxOSConfig"] = mcappp.LinuxOSConfig 1147 } 1148 return json.Marshal(objectMap) 1149} 1150 1151// ManagedClusterAPIServerAccessProfile access profile for managed cluster API server. 1152type ManagedClusterAPIServerAccessProfile struct { 1153 // AuthorizedIPRanges - Authorized IP Ranges to kubernetes API server. 1154 AuthorizedIPRanges *[]string `json:"authorizedIPRanges,omitempty"` 1155 // EnablePrivateCluster - Whether to create the cluster as a private cluster or not. 1156 EnablePrivateCluster *bool `json:"enablePrivateCluster,omitempty"` 1157 // PrivateDNSZone - Private dns zone mode for private cluster. 1158 PrivateDNSZone *string `json:"privateDNSZone,omitempty"` 1159} 1160 1161// ManagedClusterAutoUpgradeProfile auto upgrade profile for a managed cluster. 1162type ManagedClusterAutoUpgradeProfile struct { 1163 // UpgradeChannel - upgrade channel for auto upgrade. Possible values include: 'UpgradeChannelRapid', 'UpgradeChannelStable', 'UpgradeChannelPatch', 'UpgradeChannelNone' 1164 UpgradeChannel UpgradeChannel `json:"upgradeChannel,omitempty"` 1165} 1166 1167// ManagedClusterIdentity identity for the managed cluster. 1168type ManagedClusterIdentity struct { 1169 // PrincipalID - READ-ONLY; The principal id of the system assigned identity which is used by master components. 1170 PrincipalID *string `json:"principalId,omitempty"` 1171 // TenantID - READ-ONLY; The tenant id of the system assigned identity which is used by master components. 1172 TenantID *string `json:"tenantId,omitempty"` 1173 // 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' 1174 Type ResourceIdentityType `json:"type,omitempty"` 1175 // 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}'. 1176 UserAssignedIdentities map[string]*ManagedClusterIdentityUserAssignedIdentitiesValue `json:"userAssignedIdentities"` 1177} 1178 1179// MarshalJSON is the custom marshaler for ManagedClusterIdentity. 1180func (mci ManagedClusterIdentity) MarshalJSON() ([]byte, error) { 1181 objectMap := make(map[string]interface{}) 1182 if mci.Type != "" { 1183 objectMap["type"] = mci.Type 1184 } 1185 if mci.UserAssignedIdentities != nil { 1186 objectMap["userAssignedIdentities"] = mci.UserAssignedIdentities 1187 } 1188 return json.Marshal(objectMap) 1189} 1190 1191// ManagedClusterIdentityUserAssignedIdentitiesValue ... 1192type ManagedClusterIdentityUserAssignedIdentitiesValue struct { 1193 // PrincipalID - READ-ONLY; The principal id of user assigned identity. 1194 PrincipalID *string `json:"principalId,omitempty"` 1195 // ClientID - READ-ONLY; The client id of user assigned identity. 1196 ClientID *string `json:"clientId,omitempty"` 1197} 1198 1199// ManagedClusterListResult the response from the List Managed Clusters operation. 1200type ManagedClusterListResult struct { 1201 autorest.Response `json:"-"` 1202 // Value - The list of managed clusters. 1203 Value *[]ManagedCluster `json:"value,omitempty"` 1204 // NextLink - READ-ONLY; The URL to get the next set of managed cluster results. 1205 NextLink *string `json:"nextLink,omitempty"` 1206} 1207 1208// MarshalJSON is the custom marshaler for ManagedClusterListResult. 1209func (mclr ManagedClusterListResult) MarshalJSON() ([]byte, error) { 1210 objectMap := make(map[string]interface{}) 1211 if mclr.Value != nil { 1212 objectMap["value"] = mclr.Value 1213 } 1214 return json.Marshal(objectMap) 1215} 1216 1217// ManagedClusterListResultIterator provides access to a complete listing of ManagedCluster values. 1218type ManagedClusterListResultIterator struct { 1219 i int 1220 page ManagedClusterListResultPage 1221} 1222 1223// NextWithContext advances to the next value. If there was an error making 1224// the request the iterator does not advance and the error is returned. 1225func (iter *ManagedClusterListResultIterator) NextWithContext(ctx context.Context) (err error) { 1226 if tracing.IsEnabled() { 1227 ctx = tracing.StartSpan(ctx, fqdn+"/ManagedClusterListResultIterator.NextWithContext") 1228 defer func() { 1229 sc := -1 1230 if iter.Response().Response.Response != nil { 1231 sc = iter.Response().Response.Response.StatusCode 1232 } 1233 tracing.EndSpan(ctx, sc, err) 1234 }() 1235 } 1236 iter.i++ 1237 if iter.i < len(iter.page.Values()) { 1238 return nil 1239 } 1240 err = iter.page.NextWithContext(ctx) 1241 if err != nil { 1242 iter.i-- 1243 return err 1244 } 1245 iter.i = 0 1246 return nil 1247} 1248 1249// Next advances to the next value. If there was an error making 1250// the request the iterator does not advance and the error is returned. 1251// Deprecated: Use NextWithContext() instead. 1252func (iter *ManagedClusterListResultIterator) Next() error { 1253 return iter.NextWithContext(context.Background()) 1254} 1255 1256// NotDone returns true if the enumeration should be started or is not yet complete. 1257func (iter ManagedClusterListResultIterator) NotDone() bool { 1258 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 1259} 1260 1261// Response returns the raw server response from the last page request. 1262func (iter ManagedClusterListResultIterator) Response() ManagedClusterListResult { 1263 return iter.page.Response() 1264} 1265 1266// Value returns the current value or a zero-initialized value if the 1267// iterator has advanced beyond the end of the collection. 1268func (iter ManagedClusterListResultIterator) Value() ManagedCluster { 1269 if !iter.page.NotDone() { 1270 return ManagedCluster{} 1271 } 1272 return iter.page.Values()[iter.i] 1273} 1274 1275// Creates a new instance of the ManagedClusterListResultIterator type. 1276func NewManagedClusterListResultIterator(page ManagedClusterListResultPage) ManagedClusterListResultIterator { 1277 return ManagedClusterListResultIterator{page: page} 1278} 1279 1280// IsEmpty returns true if the ListResult contains no values. 1281func (mclr ManagedClusterListResult) IsEmpty() bool { 1282 return mclr.Value == nil || len(*mclr.Value) == 0 1283} 1284 1285// hasNextLink returns true if the NextLink is not empty. 1286func (mclr ManagedClusterListResult) hasNextLink() bool { 1287 return mclr.NextLink != nil && len(*mclr.NextLink) != 0 1288} 1289 1290// managedClusterListResultPreparer prepares a request to retrieve the next set of results. 1291// It returns nil if no more results exist. 1292func (mclr ManagedClusterListResult) managedClusterListResultPreparer(ctx context.Context) (*http.Request, error) { 1293 if !mclr.hasNextLink() { 1294 return nil, nil 1295 } 1296 return autorest.Prepare((&http.Request{}).WithContext(ctx), 1297 autorest.AsJSON(), 1298 autorest.AsGet(), 1299 autorest.WithBaseURL(to.String(mclr.NextLink))) 1300} 1301 1302// ManagedClusterListResultPage contains a page of ManagedCluster values. 1303type ManagedClusterListResultPage struct { 1304 fn func(context.Context, ManagedClusterListResult) (ManagedClusterListResult, error) 1305 mclr ManagedClusterListResult 1306} 1307 1308// NextWithContext advances to the next page of values. If there was an error making 1309// the request the page does not advance and the error is returned. 1310func (page *ManagedClusterListResultPage) NextWithContext(ctx context.Context) (err error) { 1311 if tracing.IsEnabled() { 1312 ctx = tracing.StartSpan(ctx, fqdn+"/ManagedClusterListResultPage.NextWithContext") 1313 defer func() { 1314 sc := -1 1315 if page.Response().Response.Response != nil { 1316 sc = page.Response().Response.Response.StatusCode 1317 } 1318 tracing.EndSpan(ctx, sc, err) 1319 }() 1320 } 1321 for { 1322 next, err := page.fn(ctx, page.mclr) 1323 if err != nil { 1324 return err 1325 } 1326 page.mclr = next 1327 if !next.hasNextLink() || !next.IsEmpty() { 1328 break 1329 } 1330 } 1331 return nil 1332} 1333 1334// Next advances to the next page of values. If there was an error making 1335// the request the page does not advance and the error is returned. 1336// Deprecated: Use NextWithContext() instead. 1337func (page *ManagedClusterListResultPage) Next() error { 1338 return page.NextWithContext(context.Background()) 1339} 1340 1341// NotDone returns true if the page enumeration should be started or is not yet complete. 1342func (page ManagedClusterListResultPage) NotDone() bool { 1343 return !page.mclr.IsEmpty() 1344} 1345 1346// Response returns the raw server response from the last page request. 1347func (page ManagedClusterListResultPage) Response() ManagedClusterListResult { 1348 return page.mclr 1349} 1350 1351// Values returns the slice of values for the current page or nil if there are no values. 1352func (page ManagedClusterListResultPage) Values() []ManagedCluster { 1353 if page.mclr.IsEmpty() { 1354 return nil 1355 } 1356 return *page.mclr.Value 1357} 1358 1359// Creates a new instance of the ManagedClusterListResultPage type. 1360func NewManagedClusterListResultPage(cur ManagedClusterListResult, getNextPage func(context.Context, ManagedClusterListResult) (ManagedClusterListResult, error)) ManagedClusterListResultPage { 1361 return ManagedClusterListResultPage{ 1362 fn: getNextPage, 1363 mclr: cur, 1364 } 1365} 1366 1367// ManagedClusterLoadBalancerProfile profile of the managed cluster load balancer. 1368type ManagedClusterLoadBalancerProfile struct { 1369 // ManagedOutboundIPs - Desired managed outbound IPs for the cluster load balancer. 1370 ManagedOutboundIPs *ManagedClusterLoadBalancerProfileManagedOutboundIPs `json:"managedOutboundIPs,omitempty"` 1371 // OutboundIPPrefixes - Desired outbound IP Prefix resources for the cluster load balancer. 1372 OutboundIPPrefixes *ManagedClusterLoadBalancerProfileOutboundIPPrefixes `json:"outboundIPPrefixes,omitempty"` 1373 // OutboundIPs - Desired outbound IP resources for the cluster load balancer. 1374 OutboundIPs *ManagedClusterLoadBalancerProfileOutboundIPs `json:"outboundIPs,omitempty"` 1375 // EffectiveOutboundIPs - The effective outbound IP resources of the cluster load balancer. 1376 EffectiveOutboundIPs *[]ResourceReference `json:"effectiveOutboundIPs,omitempty"` 1377 // 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. 1378 AllocatedOutboundPorts *int32 `json:"allocatedOutboundPorts,omitempty"` 1379 // 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. 1380 IdleTimeoutInMinutes *int32 `json:"idleTimeoutInMinutes,omitempty"` 1381} 1382 1383// ManagedClusterLoadBalancerProfileManagedOutboundIPs desired managed outbound IPs for the cluster load 1384// balancer. 1385type ManagedClusterLoadBalancerProfileManagedOutboundIPs struct { 1386 // 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. 1387 Count *int32 `json:"count,omitempty"` 1388} 1389 1390// ManagedClusterLoadBalancerProfileOutboundIPPrefixes desired outbound IP Prefix resources for the cluster 1391// load balancer. 1392type ManagedClusterLoadBalancerProfileOutboundIPPrefixes struct { 1393 // PublicIPPrefixes - A list of public IP prefix resources. 1394 PublicIPPrefixes *[]ResourceReference `json:"publicIPPrefixes,omitempty"` 1395} 1396 1397// ManagedClusterLoadBalancerProfileOutboundIPs desired outbound IP resources for the cluster load 1398// balancer. 1399type ManagedClusterLoadBalancerProfileOutboundIPs struct { 1400 // PublicIPs - A list of public IP resources. 1401 PublicIPs *[]ResourceReference `json:"publicIPs,omitempty"` 1402} 1403 1404// ManagedClusterPodIdentity ... 1405type ManagedClusterPodIdentity struct { 1406 // Name - Name of the pod identity. 1407 Name *string `json:"name,omitempty"` 1408 // Namespace - Namespace of the pod identity. 1409 Namespace *string `json:"namespace,omitempty"` 1410 // Identity - Information of the user assigned identity. 1411 Identity *UserAssignedIdentity `json:"identity,omitempty"` 1412 // ProvisioningState - READ-ONLY; The current provisioning state of the pod identity. Possible values include: 'Assigned', 'Updating', 'Deleting', 'Failed' 1413 ProvisioningState ManagedClusterPodIdentityProvisioningState `json:"provisioningState,omitempty"` 1414 // ProvisioningInfo - READ-ONLY 1415 ProvisioningInfo *ManagedClusterPodIdentityProvisioningInfo `json:"provisioningInfo,omitempty"` 1416} 1417 1418// MarshalJSON is the custom marshaler for ManagedClusterPodIdentity. 1419func (mcpi ManagedClusterPodIdentity) MarshalJSON() ([]byte, error) { 1420 objectMap := make(map[string]interface{}) 1421 if mcpi.Name != nil { 1422 objectMap["name"] = mcpi.Name 1423 } 1424 if mcpi.Namespace != nil { 1425 objectMap["namespace"] = mcpi.Namespace 1426 } 1427 if mcpi.Identity != nil { 1428 objectMap["identity"] = mcpi.Identity 1429 } 1430 return json.Marshal(objectMap) 1431} 1432 1433// ManagedClusterPodIdentityException ... 1434type ManagedClusterPodIdentityException struct { 1435 // Name - Name of the pod identity exception. 1436 Name *string `json:"name,omitempty"` 1437 // Namespace - Namespace of the pod identity exception. 1438 Namespace *string `json:"namespace,omitempty"` 1439 // PodLabels - Pod labels to match. 1440 PodLabels map[string]*string `json:"podLabels"` 1441} 1442 1443// MarshalJSON is the custom marshaler for ManagedClusterPodIdentityException. 1444func (mcpie ManagedClusterPodIdentityException) MarshalJSON() ([]byte, error) { 1445 objectMap := make(map[string]interface{}) 1446 if mcpie.Name != nil { 1447 objectMap["name"] = mcpie.Name 1448 } 1449 if mcpie.Namespace != nil { 1450 objectMap["namespace"] = mcpie.Namespace 1451 } 1452 if mcpie.PodLabels != nil { 1453 objectMap["podLabels"] = mcpie.PodLabels 1454 } 1455 return json.Marshal(objectMap) 1456} 1457 1458// ManagedClusterPodIdentityProfile ... 1459type ManagedClusterPodIdentityProfile struct { 1460 // Enabled - Whether the pod identity addon is enabled. 1461 Enabled *bool `json:"enabled,omitempty"` 1462 // UserAssignedIdentities - User assigned pod identity settings. 1463 UserAssignedIdentities *[]ManagedClusterPodIdentity `json:"userAssignedIdentities,omitempty"` 1464 // UserAssignedIdentityExceptions - User assigned pod identity exception settings. 1465 UserAssignedIdentityExceptions *[]ManagedClusterPodIdentityException `json:"userAssignedIdentityExceptions,omitempty"` 1466} 1467 1468// ManagedClusterPodIdentityProvisioningInfo ... 1469type ManagedClusterPodIdentityProvisioningInfo struct { 1470 // Error - Pod identity assignment error (if any). 1471 Error *CloudError `json:"error,omitempty"` 1472} 1473 1474// ManagedClusterPoolUpgradeProfile the list of available upgrade versions. 1475type ManagedClusterPoolUpgradeProfile struct { 1476 // KubernetesVersion - Kubernetes version (major, minor, patch). 1477 KubernetesVersion *string `json:"kubernetesVersion,omitempty"` 1478 // Name - Pool name. 1479 Name *string `json:"name,omitempty"` 1480 // OsType - OsType to be used to specify os type. Choose from Linux and Windows. Default to Linux. Possible values include: 'Linux', 'Windows' 1481 OsType OSType `json:"osType,omitempty"` 1482 // Upgrades - List of orchestrator types and versions available for upgrade. 1483 Upgrades *[]ManagedClusterPoolUpgradeProfileUpgradesItem `json:"upgrades,omitempty"` 1484} 1485 1486// ManagedClusterPoolUpgradeProfileUpgradesItem ... 1487type ManagedClusterPoolUpgradeProfileUpgradesItem struct { 1488 // KubernetesVersion - Kubernetes version (major, minor, patch). 1489 KubernetesVersion *string `json:"kubernetesVersion,omitempty"` 1490 // IsPreview - Whether Kubernetes version is currently in preview. 1491 IsPreview *bool `json:"isPreview,omitempty"` 1492} 1493 1494// ManagedClusterProperties properties of the managed cluster. 1495type ManagedClusterProperties struct { 1496 // ProvisioningState - READ-ONLY; The current deployment or provisioning state, which only appears in the response. 1497 ProvisioningState *string `json:"provisioningState,omitempty"` 1498 // PowerState - READ-ONLY; Represents the Power State of the cluster 1499 PowerState *PowerState `json:"powerState,omitempty"` 1500 // MaxAgentPools - READ-ONLY; The max number of agent pools for the managed cluster. 1501 MaxAgentPools *int32 `json:"maxAgentPools,omitempty"` 1502 // KubernetesVersion - Version of Kubernetes specified when creating the managed cluster. 1503 KubernetesVersion *string `json:"kubernetesVersion,omitempty"` 1504 // DNSPrefix - DNS prefix specified when creating the managed cluster. 1505 DNSPrefix *string `json:"dnsPrefix,omitempty"` 1506 // Fqdn - READ-ONLY; FQDN for the master pool. 1507 Fqdn *string `json:"fqdn,omitempty"` 1508 // PrivateFQDN - READ-ONLY; FQDN of private cluster. 1509 PrivateFQDN *string `json:"privateFQDN,omitempty"` 1510 // AgentPoolProfiles - Properties of the agent pool. 1511 AgentPoolProfiles *[]ManagedClusterAgentPoolProfile `json:"agentPoolProfiles,omitempty"` 1512 // LinuxProfile - Profile for Linux VMs in the container service cluster. 1513 LinuxProfile *LinuxProfile `json:"linuxProfile,omitempty"` 1514 // WindowsProfile - Profile for Windows VMs in the container service cluster. 1515 WindowsProfile *ManagedClusterWindowsProfile `json:"windowsProfile,omitempty"` 1516 // ServicePrincipalProfile - Information about a service principal identity for the cluster to use for manipulating Azure APIs. 1517 ServicePrincipalProfile *ManagedClusterServicePrincipalProfile `json:"servicePrincipalProfile,omitempty"` 1518 // AddonProfiles - Profile of managed cluster add-on. 1519 AddonProfiles map[string]*ManagedClusterAddonProfile `json:"addonProfiles"` 1520 // PodIdentityProfile - Profile of managed cluster pod identity. 1521 PodIdentityProfile *ManagedClusterPodIdentityProfile `json:"podIdentityProfile,omitempty"` 1522 // NodeResourceGroup - Name of the resource group containing agent pool nodes. 1523 NodeResourceGroup *string `json:"nodeResourceGroup,omitempty"` 1524 // EnableRBAC - Whether to enable Kubernetes Role-Based Access Control. 1525 EnableRBAC *bool `json:"enableRBAC,omitempty"` 1526 // 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. 1527 EnablePodSecurityPolicy *bool `json:"enablePodSecurityPolicy,omitempty"` 1528 // NetworkProfile - Profile of network configuration. 1529 NetworkProfile *NetworkProfile `json:"networkProfile,omitempty"` 1530 // AadProfile - Profile of Azure Active Directory configuration. 1531 AadProfile *ManagedClusterAADProfile `json:"aadProfile,omitempty"` 1532 // AutoUpgradeProfile - Profile of auto upgrade configuration. 1533 AutoUpgradeProfile *ManagedClusterAutoUpgradeProfile `json:"autoUpgradeProfile,omitempty"` 1534 // AutoScalerProfile - Parameters to be applied to the cluster-autoscaler when enabled 1535 AutoScalerProfile *ManagedClusterPropertiesAutoScalerProfile `json:"autoScalerProfile,omitempty"` 1536 // APIServerAccessProfile - Access profile for managed cluster API server. 1537 APIServerAccessProfile *ManagedClusterAPIServerAccessProfile `json:"apiServerAccessProfile,omitempty"` 1538 // DiskEncryptionSetID - ResourceId of the disk encryption set to use for enabling encryption at rest. 1539 DiskEncryptionSetID *string `json:"diskEncryptionSetID,omitempty"` 1540 // IdentityProfile - Identities associated with the cluster. 1541 IdentityProfile map[string]*ManagedClusterPropertiesIdentityProfileValue `json:"identityProfile"` 1542} 1543 1544// MarshalJSON is the custom marshaler for ManagedClusterProperties. 1545func (mcp ManagedClusterProperties) MarshalJSON() ([]byte, error) { 1546 objectMap := make(map[string]interface{}) 1547 if mcp.KubernetesVersion != nil { 1548 objectMap["kubernetesVersion"] = mcp.KubernetesVersion 1549 } 1550 if mcp.DNSPrefix != nil { 1551 objectMap["dnsPrefix"] = mcp.DNSPrefix 1552 } 1553 if mcp.AgentPoolProfiles != nil { 1554 objectMap["agentPoolProfiles"] = mcp.AgentPoolProfiles 1555 } 1556 if mcp.LinuxProfile != nil { 1557 objectMap["linuxProfile"] = mcp.LinuxProfile 1558 } 1559 if mcp.WindowsProfile != nil { 1560 objectMap["windowsProfile"] = mcp.WindowsProfile 1561 } 1562 if mcp.ServicePrincipalProfile != nil { 1563 objectMap["servicePrincipalProfile"] = mcp.ServicePrincipalProfile 1564 } 1565 if mcp.AddonProfiles != nil { 1566 objectMap["addonProfiles"] = mcp.AddonProfiles 1567 } 1568 if mcp.PodIdentityProfile != nil { 1569 objectMap["podIdentityProfile"] = mcp.PodIdentityProfile 1570 } 1571 if mcp.NodeResourceGroup != nil { 1572 objectMap["nodeResourceGroup"] = mcp.NodeResourceGroup 1573 } 1574 if mcp.EnableRBAC != nil { 1575 objectMap["enableRBAC"] = mcp.EnableRBAC 1576 } 1577 if mcp.EnablePodSecurityPolicy != nil { 1578 objectMap["enablePodSecurityPolicy"] = mcp.EnablePodSecurityPolicy 1579 } 1580 if mcp.NetworkProfile != nil { 1581 objectMap["networkProfile"] = mcp.NetworkProfile 1582 } 1583 if mcp.AadProfile != nil { 1584 objectMap["aadProfile"] = mcp.AadProfile 1585 } 1586 if mcp.AutoUpgradeProfile != nil { 1587 objectMap["autoUpgradeProfile"] = mcp.AutoUpgradeProfile 1588 } 1589 if mcp.AutoScalerProfile != nil { 1590 objectMap["autoScalerProfile"] = mcp.AutoScalerProfile 1591 } 1592 if mcp.APIServerAccessProfile != nil { 1593 objectMap["apiServerAccessProfile"] = mcp.APIServerAccessProfile 1594 } 1595 if mcp.DiskEncryptionSetID != nil { 1596 objectMap["diskEncryptionSetID"] = mcp.DiskEncryptionSetID 1597 } 1598 if mcp.IdentityProfile != nil { 1599 objectMap["identityProfile"] = mcp.IdentityProfile 1600 } 1601 return json.Marshal(objectMap) 1602} 1603 1604// ManagedClusterPropertiesAutoScalerProfile parameters to be applied to the cluster-autoscaler when 1605// enabled 1606type ManagedClusterPropertiesAutoScalerProfile struct { 1607 BalanceSimilarNodeGroups *string `json:"balance-similar-node-groups,omitempty"` 1608 // Expander - Possible values include: 'LeastWaste', 'MostPods', 'Random' 1609 Expander Expander `json:"expander,omitempty"` 1610 MaxEmptyBulkDelete *string `json:"max-empty-bulk-delete,omitempty"` 1611 MaxGracefulTerminationSec *string `json:"max-graceful-termination-sec,omitempty"` 1612 MaxTotalUnreadyPercentage *string `json:"max-total-unready-percentage,omitempty"` 1613 NewPodScaleUpDelay *string `json:"new-pod-scale-up-delay,omitempty"` 1614 OkTotalUnreadyCount *string `json:"ok-total-unready-count,omitempty"` 1615 ScanInterval *string `json:"scan-interval,omitempty"` 1616 ScaleDownDelayAfterAdd *string `json:"scale-down-delay-after-add,omitempty"` 1617 ScaleDownDelayAfterDelete *string `json:"scale-down-delay-after-delete,omitempty"` 1618 ScaleDownDelayAfterFailure *string `json:"scale-down-delay-after-failure,omitempty"` 1619 ScaleDownUnneededTime *string `json:"scale-down-unneeded-time,omitempty"` 1620 ScaleDownUnreadyTime *string `json:"scale-down-unready-time,omitempty"` 1621 ScaleDownUtilizationThreshold *string `json:"scale-down-utilization-threshold,omitempty"` 1622 SkipNodesWithLocalStorage *string `json:"skip-nodes-with-local-storage,omitempty"` 1623 SkipNodesWithSystemPods *string `json:"skip-nodes-with-system-pods,omitempty"` 1624} 1625 1626// ManagedClusterPropertiesIdentityProfileValue ... 1627type ManagedClusterPropertiesIdentityProfileValue struct { 1628 // ResourceID - The resource id of the user assigned identity. 1629 ResourceID *string `json:"resourceId,omitempty"` 1630 // ClientID - The client id of the user assigned identity. 1631 ClientID *string `json:"clientId,omitempty"` 1632 // ObjectID - The object id of the user assigned identity. 1633 ObjectID *string `json:"objectId,omitempty"` 1634} 1635 1636// ManagedClustersCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a 1637// long-running operation. 1638type ManagedClustersCreateOrUpdateFuture struct { 1639 azure.FutureAPI 1640 // Result returns the result of the asynchronous operation. 1641 // If the operation has not completed it will return an error. 1642 Result func(ManagedClustersClient) (ManagedCluster, error) 1643} 1644 1645// ManagedClustersDeleteFuture an abstraction for monitoring and retrieving the results of a long-running 1646// operation. 1647type ManagedClustersDeleteFuture struct { 1648 azure.FutureAPI 1649 // Result returns the result of the asynchronous operation. 1650 // If the operation has not completed it will return an error. 1651 Result func(ManagedClustersClient) (autorest.Response, error) 1652} 1653 1654// ManagedClusterServicePrincipalProfile information about a service principal identity for the cluster to 1655// use for manipulating Azure APIs. 1656type ManagedClusterServicePrincipalProfile struct { 1657 // ClientID - The ID for the service principal. 1658 ClientID *string `json:"clientId,omitempty"` 1659 // Secret - The secret password associated with the service principal in plain text. 1660 Secret *string `json:"secret,omitempty"` 1661} 1662 1663// ManagedClusterSKU ... 1664type ManagedClusterSKU struct { 1665 // Name - Name of a managed cluster SKU. Possible values include: 'ManagedClusterSKUNameBasic' 1666 Name ManagedClusterSKUName `json:"name,omitempty"` 1667 // Tier - Tier of a managed cluster SKU. Possible values include: 'Paid', 'Free' 1668 Tier ManagedClusterSKUTier `json:"tier,omitempty"` 1669} 1670 1671// ManagedClustersResetAADProfileFuture an abstraction for monitoring and retrieving the results of a 1672// long-running operation. 1673type ManagedClustersResetAADProfileFuture struct { 1674 azure.FutureAPI 1675 // Result returns the result of the asynchronous operation. 1676 // If the operation has not completed it will return an error. 1677 Result func(ManagedClustersClient) (autorest.Response, error) 1678} 1679 1680// ManagedClustersResetServicePrincipalProfileFuture an abstraction for monitoring and retrieving the 1681// results of a long-running operation. 1682type ManagedClustersResetServicePrincipalProfileFuture struct { 1683 azure.FutureAPI 1684 // Result returns the result of the asynchronous operation. 1685 // If the operation has not completed it will return an error. 1686 Result func(ManagedClustersClient) (autorest.Response, error) 1687} 1688 1689// ManagedClustersRotateClusterCertificatesFuture an abstraction for monitoring and retrieving the results 1690// of a long-running operation. 1691type ManagedClustersRotateClusterCertificatesFuture struct { 1692 azure.FutureAPI 1693 // Result returns the result of the asynchronous operation. 1694 // If the operation has not completed it will return an error. 1695 Result func(ManagedClustersClient) (autorest.Response, error) 1696} 1697 1698// ManagedClustersStartFuture an abstraction for monitoring and retrieving the results of a long-running 1699// operation. 1700type ManagedClustersStartFuture struct { 1701 azure.FutureAPI 1702 // Result returns the result of the asynchronous operation. 1703 // If the operation has not completed it will return an error. 1704 Result func(ManagedClustersClient) (autorest.Response, error) 1705} 1706 1707// ManagedClustersStopFuture an abstraction for monitoring and retrieving the results of a long-running 1708// operation. 1709type ManagedClustersStopFuture struct { 1710 azure.FutureAPI 1711 // Result returns the result of the asynchronous operation. 1712 // If the operation has not completed it will return an error. 1713 Result func(ManagedClustersClient) (autorest.Response, error) 1714} 1715 1716// ManagedClustersUpdateTagsFuture an abstraction for monitoring and retrieving the results of a 1717// long-running operation. 1718type ManagedClustersUpdateTagsFuture struct { 1719 azure.FutureAPI 1720 // Result returns the result of the asynchronous operation. 1721 // If the operation has not completed it will return an error. 1722 Result func(ManagedClustersClient) (ManagedCluster, error) 1723} 1724 1725// ManagedClusterUpgradeProfile the list of available upgrades for compute pools. 1726type ManagedClusterUpgradeProfile struct { 1727 autorest.Response `json:"-"` 1728 // ID - READ-ONLY; Id of upgrade profile. 1729 ID *string `json:"id,omitempty"` 1730 // Name - READ-ONLY; Name of upgrade profile. 1731 Name *string `json:"name,omitempty"` 1732 // Type - READ-ONLY; Type of upgrade profile. 1733 Type *string `json:"type,omitempty"` 1734 // ManagedClusterUpgradeProfileProperties - Properties of upgrade profile. 1735 *ManagedClusterUpgradeProfileProperties `json:"properties,omitempty"` 1736} 1737 1738// MarshalJSON is the custom marshaler for ManagedClusterUpgradeProfile. 1739func (mcup ManagedClusterUpgradeProfile) MarshalJSON() ([]byte, error) { 1740 objectMap := make(map[string]interface{}) 1741 if mcup.ManagedClusterUpgradeProfileProperties != nil { 1742 objectMap["properties"] = mcup.ManagedClusterUpgradeProfileProperties 1743 } 1744 return json.Marshal(objectMap) 1745} 1746 1747// UnmarshalJSON is the custom unmarshaler for ManagedClusterUpgradeProfile struct. 1748func (mcup *ManagedClusterUpgradeProfile) UnmarshalJSON(body []byte) error { 1749 var m map[string]*json.RawMessage 1750 err := json.Unmarshal(body, &m) 1751 if err != nil { 1752 return err 1753 } 1754 for k, v := range m { 1755 switch k { 1756 case "id": 1757 if v != nil { 1758 var ID string 1759 err = json.Unmarshal(*v, &ID) 1760 if err != nil { 1761 return err 1762 } 1763 mcup.ID = &ID 1764 } 1765 case "name": 1766 if v != nil { 1767 var name string 1768 err = json.Unmarshal(*v, &name) 1769 if err != nil { 1770 return err 1771 } 1772 mcup.Name = &name 1773 } 1774 case "type": 1775 if v != nil { 1776 var typeVar string 1777 err = json.Unmarshal(*v, &typeVar) 1778 if err != nil { 1779 return err 1780 } 1781 mcup.Type = &typeVar 1782 } 1783 case "properties": 1784 if v != nil { 1785 var managedClusterUpgradeProfileProperties ManagedClusterUpgradeProfileProperties 1786 err = json.Unmarshal(*v, &managedClusterUpgradeProfileProperties) 1787 if err != nil { 1788 return err 1789 } 1790 mcup.ManagedClusterUpgradeProfileProperties = &managedClusterUpgradeProfileProperties 1791 } 1792 } 1793 } 1794 1795 return nil 1796} 1797 1798// ManagedClusterUpgradeProfileProperties control plane and agent pool upgrade profiles. 1799type ManagedClusterUpgradeProfileProperties struct { 1800 // ControlPlaneProfile - The list of available upgrade versions for the control plane. 1801 ControlPlaneProfile *ManagedClusterPoolUpgradeProfile `json:"controlPlaneProfile,omitempty"` 1802 // AgentPoolProfiles - The list of available upgrade versions for agent pools. 1803 AgentPoolProfiles *[]ManagedClusterPoolUpgradeProfile `json:"agentPoolProfiles,omitempty"` 1804} 1805 1806// ManagedClusterWindowsProfile profile for Windows VMs in the container service cluster. 1807type ManagedClusterWindowsProfile struct { 1808 // 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 1809 AdminUsername *string `json:"adminUsername,omitempty"` 1810 // 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!" 1811 AdminPassword *string `json:"adminPassword,omitempty"` 1812 // 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' 1813 LicenseType LicenseType `json:"licenseType,omitempty"` 1814} 1815 1816// MasterProfile profile for the container service master. 1817type MasterProfile struct { 1818 // Count - Number of masters (VMs) in the container service cluster. Allowed values are 1, 3, and 5. The default value is 1. 1819 Count *int32 `json:"count,omitempty"` 1820 // DNSPrefix - DNS prefix to be used to create the FQDN for the master pool. 1821 DNSPrefix *string `json:"dnsPrefix,omitempty"` 1822 // 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' 1823 VMSize VMSizeTypes `json:"vmSize,omitempty"` 1824 // 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. 1825 OsDiskSizeGB *int32 `json:"osDiskSizeGB,omitempty"` 1826 // VnetSubnetID - VNet SubnetID specifies the VNet's subnet identifier. 1827 VnetSubnetID *string `json:"vnetSubnetID,omitempty"` 1828 // FirstConsecutiveStaticIP - FirstConsecutiveStaticIP used to specify the first static ip of masters. 1829 FirstConsecutiveStaticIP *string `json:"firstConsecutiveStaticIP,omitempty"` 1830 // 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' 1831 StorageProfile StorageProfileTypes `json:"storageProfile,omitempty"` 1832 // Fqdn - READ-ONLY; FQDN for the master pool. 1833 Fqdn *string `json:"fqdn,omitempty"` 1834} 1835 1836// MarshalJSON is the custom marshaler for MasterProfile. 1837func (mp MasterProfile) MarshalJSON() ([]byte, error) { 1838 objectMap := make(map[string]interface{}) 1839 if mp.Count != nil { 1840 objectMap["count"] = mp.Count 1841 } 1842 if mp.DNSPrefix != nil { 1843 objectMap["dnsPrefix"] = mp.DNSPrefix 1844 } 1845 if mp.VMSize != "" { 1846 objectMap["vmSize"] = mp.VMSize 1847 } 1848 if mp.OsDiskSizeGB != nil { 1849 objectMap["osDiskSizeGB"] = mp.OsDiskSizeGB 1850 } 1851 if mp.VnetSubnetID != nil { 1852 objectMap["vnetSubnetID"] = mp.VnetSubnetID 1853 } 1854 if mp.FirstConsecutiveStaticIP != nil { 1855 objectMap["firstConsecutiveStaticIP"] = mp.FirstConsecutiveStaticIP 1856 } 1857 if mp.StorageProfile != "" { 1858 objectMap["storageProfile"] = mp.StorageProfile 1859 } 1860 return json.Marshal(objectMap) 1861} 1862 1863// NetworkProfile profile of network configuration. 1864type NetworkProfile struct { 1865 // NetworkPlugin - Network plugin used for building Kubernetes network. Possible values include: 'Azure', 'Kubenet' 1866 NetworkPlugin NetworkPlugin `json:"networkPlugin,omitempty"` 1867 // NetworkPolicy - Network policy used for building Kubernetes network. Possible values include: 'NetworkPolicyCalico', 'NetworkPolicyAzure' 1868 NetworkPolicy NetworkPolicy `json:"networkPolicy,omitempty"` 1869 // NetworkMode - Network mode used for building Kubernetes network. Possible values include: 'Transparent', 'Bridge' 1870 NetworkMode NetworkMode `json:"networkMode,omitempty"` 1871 // PodCidr - A CIDR notation IP range from which to assign pod IPs when kubenet is used. 1872 PodCidr *string `json:"podCidr,omitempty"` 1873 // ServiceCidr - A CIDR notation IP range from which to assign service cluster IPs. It must not overlap with any Subnet IP ranges. 1874 ServiceCidr *string `json:"serviceCidr,omitempty"` 1875 // DNSServiceIP - An IP address assigned to the Kubernetes DNS service. It must be within the Kubernetes service address range specified in serviceCidr. 1876 DNSServiceIP *string `json:"dnsServiceIP,omitempty"` 1877 // 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. 1878 DockerBridgeCidr *string `json:"dockerBridgeCidr,omitempty"` 1879 // OutboundType - The outbound (egress) routing method. Possible values include: 'LoadBalancer', 'UserDefinedRouting' 1880 OutboundType OutboundType `json:"outboundType,omitempty"` 1881 // LoadBalancerSku - The load balancer sku for the managed cluster. Possible values include: 'Standard', 'Basic' 1882 LoadBalancerSku LoadBalancerSku `json:"loadBalancerSku,omitempty"` 1883 // LoadBalancerProfile - Profile of the cluster load balancer. 1884 LoadBalancerProfile *ManagedClusterLoadBalancerProfile `json:"loadBalancerProfile,omitempty"` 1885} 1886 1887// OperationListResult the List Compute Operation operation response. 1888type OperationListResult struct { 1889 autorest.Response `json:"-"` 1890 // Value - READ-ONLY; The list of compute operations 1891 Value *[]OperationValue `json:"value,omitempty"` 1892} 1893 1894// OperationValue describes the properties of a Compute Operation value. 1895type OperationValue struct { 1896 // Origin - READ-ONLY; The origin of the compute operation. 1897 Origin *string `json:"origin,omitempty"` 1898 // Name - READ-ONLY; The name of the compute operation. 1899 Name *string `json:"name,omitempty"` 1900 // OperationValueDisplay - Describes the properties of a Compute Operation Value Display. 1901 *OperationValueDisplay `json:"display,omitempty"` 1902} 1903 1904// MarshalJSON is the custom marshaler for OperationValue. 1905func (ov OperationValue) MarshalJSON() ([]byte, error) { 1906 objectMap := make(map[string]interface{}) 1907 if ov.OperationValueDisplay != nil { 1908 objectMap["display"] = ov.OperationValueDisplay 1909 } 1910 return json.Marshal(objectMap) 1911} 1912 1913// UnmarshalJSON is the custom unmarshaler for OperationValue struct. 1914func (ov *OperationValue) UnmarshalJSON(body []byte) error { 1915 var m map[string]*json.RawMessage 1916 err := json.Unmarshal(body, &m) 1917 if err != nil { 1918 return err 1919 } 1920 for k, v := range m { 1921 switch k { 1922 case "origin": 1923 if v != nil { 1924 var origin string 1925 err = json.Unmarshal(*v, &origin) 1926 if err != nil { 1927 return err 1928 } 1929 ov.Origin = &origin 1930 } 1931 case "name": 1932 if v != nil { 1933 var name string 1934 err = json.Unmarshal(*v, &name) 1935 if err != nil { 1936 return err 1937 } 1938 ov.Name = &name 1939 } 1940 case "display": 1941 if v != nil { 1942 var operationValueDisplay OperationValueDisplay 1943 err = json.Unmarshal(*v, &operationValueDisplay) 1944 if err != nil { 1945 return err 1946 } 1947 ov.OperationValueDisplay = &operationValueDisplay 1948 } 1949 } 1950 } 1951 1952 return nil 1953} 1954 1955// OperationValueDisplay describes the properties of a Compute Operation Value Display. 1956type OperationValueDisplay struct { 1957 // Operation - READ-ONLY; The display name of the compute operation. 1958 Operation *string `json:"operation,omitempty"` 1959 // Resource - READ-ONLY; The display name of the resource the operation applies to. 1960 Resource *string `json:"resource,omitempty"` 1961 // Description - READ-ONLY; The description of the operation. 1962 Description *string `json:"description,omitempty"` 1963 // Provider - READ-ONLY; The resource provider for the operation. 1964 Provider *string `json:"provider,omitempty"` 1965} 1966 1967// PowerState describes the Power State of the cluster 1968type PowerState struct { 1969 // Code - Tells whether the cluster is Running or Stopped. Possible values include: 'Running', 'Stopped' 1970 Code Code `json:"code,omitempty"` 1971} 1972 1973// PrivateEndpoint private endpoint which a connection belongs to. 1974type PrivateEndpoint struct { 1975 // ID - The resource Id for private endpoint 1976 ID *string `json:"id,omitempty"` 1977} 1978 1979// PrivateEndpointConnection a private endpoint connection 1980type PrivateEndpointConnection struct { 1981 autorest.Response `json:"-"` 1982 // ID - READ-ONLY; The ID of the private endpoint connection. 1983 ID *string `json:"id,omitempty"` 1984 // Name - READ-ONLY; The name of the private endpoint connection. 1985 Name *string `json:"name,omitempty"` 1986 // Type - READ-ONLY; The resource type. 1987 Type *string `json:"type,omitempty"` 1988 // PrivateEndpointConnectionProperties - The properties of a private endpoint connection. 1989 *PrivateEndpointConnectionProperties `json:"properties,omitempty"` 1990} 1991 1992// MarshalJSON is the custom marshaler for PrivateEndpointConnection. 1993func (pec PrivateEndpointConnection) MarshalJSON() ([]byte, error) { 1994 objectMap := make(map[string]interface{}) 1995 if pec.PrivateEndpointConnectionProperties != nil { 1996 objectMap["properties"] = pec.PrivateEndpointConnectionProperties 1997 } 1998 return json.Marshal(objectMap) 1999} 2000 2001// UnmarshalJSON is the custom unmarshaler for PrivateEndpointConnection struct. 2002func (pec *PrivateEndpointConnection) UnmarshalJSON(body []byte) error { 2003 var m map[string]*json.RawMessage 2004 err := json.Unmarshal(body, &m) 2005 if err != nil { 2006 return err 2007 } 2008 for k, v := range m { 2009 switch k { 2010 case "id": 2011 if v != nil { 2012 var ID string 2013 err = json.Unmarshal(*v, &ID) 2014 if err != nil { 2015 return err 2016 } 2017 pec.ID = &ID 2018 } 2019 case "name": 2020 if v != nil { 2021 var name string 2022 err = json.Unmarshal(*v, &name) 2023 if err != nil { 2024 return err 2025 } 2026 pec.Name = &name 2027 } 2028 case "type": 2029 if v != nil { 2030 var typeVar string 2031 err = json.Unmarshal(*v, &typeVar) 2032 if err != nil { 2033 return err 2034 } 2035 pec.Type = &typeVar 2036 } 2037 case "properties": 2038 if v != nil { 2039 var privateEndpointConnectionProperties PrivateEndpointConnectionProperties 2040 err = json.Unmarshal(*v, &privateEndpointConnectionProperties) 2041 if err != nil { 2042 return err 2043 } 2044 pec.PrivateEndpointConnectionProperties = &privateEndpointConnectionProperties 2045 } 2046 } 2047 } 2048 2049 return nil 2050} 2051 2052// PrivateEndpointConnectionListResult a list of private endpoint connections 2053type PrivateEndpointConnectionListResult struct { 2054 autorest.Response `json:"-"` 2055 // Value - The collection value. 2056 Value *[]PrivateEndpointConnection `json:"value,omitempty"` 2057} 2058 2059// PrivateEndpointConnectionProperties properties of a private endpoint connection. 2060type PrivateEndpointConnectionProperties struct { 2061 // ProvisioningState - READ-ONLY; The current provisioning state. Possible values include: 'PrivateEndpointConnectionProvisioningStateSucceeded', 'PrivateEndpointConnectionProvisioningStateCreating', 'PrivateEndpointConnectionProvisioningStateDeleting', 'PrivateEndpointConnectionProvisioningStateFailed' 2062 ProvisioningState PrivateEndpointConnectionProvisioningState `json:"provisioningState,omitempty"` 2063 // PrivateEndpoint - The resource of private endpoint. 2064 PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` 2065 // PrivateLinkServiceConnectionState - A collection of information about the state of the connection between service consumer and provider. 2066 PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` 2067} 2068 2069// MarshalJSON is the custom marshaler for PrivateEndpointConnectionProperties. 2070func (pecp PrivateEndpointConnectionProperties) MarshalJSON() ([]byte, error) { 2071 objectMap := make(map[string]interface{}) 2072 if pecp.PrivateEndpoint != nil { 2073 objectMap["privateEndpoint"] = pecp.PrivateEndpoint 2074 } 2075 if pecp.PrivateLinkServiceConnectionState != nil { 2076 objectMap["privateLinkServiceConnectionState"] = pecp.PrivateLinkServiceConnectionState 2077 } 2078 return json.Marshal(objectMap) 2079} 2080 2081// PrivateEndpointConnectionsDeleteFuture an abstraction for monitoring and retrieving the results of a 2082// long-running operation. 2083type PrivateEndpointConnectionsDeleteFuture struct { 2084 azure.FutureAPI 2085 // Result returns the result of the asynchronous operation. 2086 // If the operation has not completed it will return an error. 2087 Result func(PrivateEndpointConnectionsClient) (autorest.Response, error) 2088} 2089 2090// PrivateLinkResource a private link resource 2091type PrivateLinkResource struct { 2092 autorest.Response `json:"-"` 2093 // ID - The ID of the private link resource. 2094 ID *string `json:"id,omitempty"` 2095 // Name - The name of the private link resource. 2096 Name *string `json:"name,omitempty"` 2097 // Type - The resource type. 2098 Type *string `json:"type,omitempty"` 2099 // GroupID - The group ID of the resource. 2100 GroupID *string `json:"groupId,omitempty"` 2101 // RequiredMembers - RequiredMembers of the resource 2102 RequiredMembers *[]string `json:"requiredMembers,omitempty"` 2103 // PrivateLinkServiceID - READ-ONLY; The private link service ID of the resource, this field is exposed only to NRP internally. 2104 PrivateLinkServiceID *string `json:"privateLinkServiceID,omitempty"` 2105} 2106 2107// MarshalJSON is the custom marshaler for PrivateLinkResource. 2108func (plr PrivateLinkResource) MarshalJSON() ([]byte, error) { 2109 objectMap := make(map[string]interface{}) 2110 if plr.ID != nil { 2111 objectMap["id"] = plr.ID 2112 } 2113 if plr.Name != nil { 2114 objectMap["name"] = plr.Name 2115 } 2116 if plr.Type != nil { 2117 objectMap["type"] = plr.Type 2118 } 2119 if plr.GroupID != nil { 2120 objectMap["groupId"] = plr.GroupID 2121 } 2122 if plr.RequiredMembers != nil { 2123 objectMap["requiredMembers"] = plr.RequiredMembers 2124 } 2125 return json.Marshal(objectMap) 2126} 2127 2128// PrivateLinkResourcesListResult a list of private link resources 2129type PrivateLinkResourcesListResult struct { 2130 autorest.Response `json:"-"` 2131 // Value - The collection value. 2132 Value *[]PrivateLinkResource `json:"value,omitempty"` 2133} 2134 2135// PrivateLinkServiceConnectionState the state of a private link service connection. 2136type PrivateLinkServiceConnectionState struct { 2137 // Status - The private link service connection status. Possible values include: 'Pending', 'Approved', 'Rejected', 'Disconnected' 2138 Status ConnectionStatus `json:"status,omitempty"` 2139 // Description - The private link service connection description. 2140 Description *string `json:"description,omitempty"` 2141} 2142 2143// Resource the Resource model definition. 2144type Resource struct { 2145 // ID - READ-ONLY; Resource Id 2146 ID *string `json:"id,omitempty"` 2147 // Name - READ-ONLY; Resource name 2148 Name *string `json:"name,omitempty"` 2149 // Type - READ-ONLY; Resource type 2150 Type *string `json:"type,omitempty"` 2151 // Location - Resource location 2152 Location *string `json:"location,omitempty"` 2153 // Tags - Resource tags 2154 Tags map[string]*string `json:"tags"` 2155} 2156 2157// MarshalJSON is the custom marshaler for Resource. 2158func (r Resource) MarshalJSON() ([]byte, error) { 2159 objectMap := make(map[string]interface{}) 2160 if r.Location != nil { 2161 objectMap["location"] = r.Location 2162 } 2163 if r.Tags != nil { 2164 objectMap["tags"] = r.Tags 2165 } 2166 return json.Marshal(objectMap) 2167} 2168 2169// ResourceReference a reference to an Azure resource. 2170type ResourceReference struct { 2171 // ID - The fully qualified Azure resource id. 2172 ID *string `json:"id,omitempty"` 2173} 2174 2175// SSHConfiguration SSH configuration for Linux-based VMs running on Azure. 2176type SSHConfiguration struct { 2177 // PublicKeys - The list of SSH public keys used to authenticate with Linux-based VMs. Only expect one key specified. 2178 PublicKeys *[]SSHPublicKey `json:"publicKeys,omitempty"` 2179} 2180 2181// SSHPublicKey contains information about SSH certificate public key data. 2182type SSHPublicKey struct { 2183 // KeyData - Certificate public key used to authenticate with VMs through SSH. The certificate must be in PEM format with or without headers. 2184 KeyData *string `json:"keyData,omitempty"` 2185} 2186 2187// SubResource reference to another subresource. 2188type SubResource struct { 2189 // ID - READ-ONLY; Resource ID. 2190 ID *string `json:"id,omitempty"` 2191 // Name - READ-ONLY; The name of the resource that is unique within a resource group. This name can be used to access the resource. 2192 Name *string `json:"name,omitempty"` 2193 // Type - READ-ONLY; Resource type 2194 Type *string `json:"type,omitempty"` 2195} 2196 2197// SysctlConfig sysctl settings for Linux agent nodes. 2198type SysctlConfig struct { 2199 // NetCoreSomaxconn - Sysctl setting net.core.somaxconn. 2200 NetCoreSomaxconn *int32 `json:"netCoreSomaxconn,omitempty"` 2201 // NetCoreNetdevMaxBacklog - Sysctl setting net.core.netdev_max_backlog. 2202 NetCoreNetdevMaxBacklog *int32 `json:"netCoreNetdevMaxBacklog,omitempty"` 2203 // NetCoreRmemMax - Sysctl setting net.core.rmem_max. 2204 NetCoreRmemMax *int32 `json:"netCoreRmemMax,omitempty"` 2205 // NetCoreWmemMax - Sysctl setting net.core.wmem_max. 2206 NetCoreWmemMax *int32 `json:"netCoreWmemMax,omitempty"` 2207 // NetCoreOptmemMax - Sysctl setting net.core.optmem_max. 2208 NetCoreOptmemMax *int32 `json:"netCoreOptmemMax,omitempty"` 2209 // NetIpv4TCPMaxSynBacklog - Sysctl setting net.ipv4.tcp_max_syn_backlog. 2210 NetIpv4TCPMaxSynBacklog *int32 `json:"netIpv4TcpMaxSynBacklog,omitempty"` 2211 // NetIpv4TCPMaxTwBuckets - Sysctl setting net.ipv4.tcp_max_tw_buckets. 2212 NetIpv4TCPMaxTwBuckets *int32 `json:"netIpv4TcpMaxTwBuckets,omitempty"` 2213 // NetIpv4TCPFinTimeout - Sysctl setting net.ipv4.tcp_fin_timeout. 2214 NetIpv4TCPFinTimeout *int32 `json:"netIpv4TcpFinTimeout,omitempty"` 2215 // NetIpv4TCPKeepaliveTime - Sysctl setting net.ipv4.tcp_keepalive_time. 2216 NetIpv4TCPKeepaliveTime *int32 `json:"netIpv4TcpKeepaliveTime,omitempty"` 2217 // NetIpv4TCPKeepaliveProbes - Sysctl setting net.ipv4.tcp_keepalive_probes. 2218 NetIpv4TCPKeepaliveProbes *int32 `json:"netIpv4TcpKeepaliveProbes,omitempty"` 2219 // NetIpv4TcpkeepaliveIntvl - Sysctl setting net.ipv4.tcp_keepalive_intvl. 2220 NetIpv4TcpkeepaliveIntvl *int32 `json:"netIpv4TcpkeepaliveIntvl,omitempty"` 2221 // NetIpv4TCPRmem - Sysctl setting net.ipv4.tcp_rmem. 2222 NetIpv4TCPRmem *int32 `json:"netIpv4TcpRmem,omitempty"` 2223 // NetIpv4TCPWmem - Sysctl setting net.ipv4.tcp_wmem. 2224 NetIpv4TCPWmem *int32 `json:"netIpv4TcpWmem,omitempty"` 2225 // NetIpv4TCPTwReuse - Sysctl setting net.ipv4.tcp_tw_reuse. 2226 NetIpv4TCPTwReuse *bool `json:"netIpv4TcpTwReuse,omitempty"` 2227 // NetIpv4IPLocalPortRange - Sysctl setting net.ipv4.ip_local_port_range. 2228 NetIpv4IPLocalPortRange *string `json:"netIpv4IpLocalPortRange,omitempty"` 2229 // NetIpv4NeighDefaultGcThresh1 - Sysctl setting net.ipv4.neigh.default.gc_thresh1. 2230 NetIpv4NeighDefaultGcThresh1 *int32 `json:"netIpv4NeighDefaultGcThresh1,omitempty"` 2231 // NetIpv4NeighDefaultGcThresh2 - Sysctl setting net.ipv4.neigh.default.gc_thresh2. 2232 NetIpv4NeighDefaultGcThresh2 *int32 `json:"netIpv4NeighDefaultGcThresh2,omitempty"` 2233 // NetIpv4NeighDefaultGcThresh3 - Sysctl setting net.ipv4.neigh.default.gc_thresh3. 2234 NetIpv4NeighDefaultGcThresh3 *int32 `json:"netIpv4NeighDefaultGcThresh3,omitempty"` 2235 // NetNetfilterNfConntrackMax - Sysctl setting net.netfilter.nf_conntrack_max. 2236 NetNetfilterNfConntrackMax *int32 `json:"netNetfilterNfConntrackMax,omitempty"` 2237 // NetNetfilterNfConntrackBuckets - Sysctl setting net.netfilter.nf_conntrack_buckets. 2238 NetNetfilterNfConntrackBuckets *int32 `json:"netNetfilterNfConntrackBuckets,omitempty"` 2239 // FsInotifyMaxUserWatches - Sysctl setting fs.inotify.max_user_watches. 2240 FsInotifyMaxUserWatches *int32 `json:"fsInotifyMaxUserWatches,omitempty"` 2241 // FsFileMax - Sysctl setting fs.file-max. 2242 FsFileMax *int32 `json:"fsFileMax,omitempty"` 2243 // FsAioMaxNr - Sysctl setting fs.aio-max-nr. 2244 FsAioMaxNr *int32 `json:"fsAioMaxNr,omitempty"` 2245 // FsNrOpen - Sysctl setting fs.nr_open. 2246 FsNrOpen *int32 `json:"fsNrOpen,omitempty"` 2247 // KernelThreadsMax - Sysctl setting kernel.threads-max. 2248 KernelThreadsMax *int32 `json:"kernelThreadsMax,omitempty"` 2249 // VMMaxMapCount - Sysctl setting vm.max_map_count. 2250 VMMaxMapCount *int32 `json:"vmMaxMapCount,omitempty"` 2251 // VMSwappiness - Sysctl setting vm.swappiness. 2252 VMSwappiness *int32 `json:"vmSwappiness,omitempty"` 2253 // VMVfsCachePressure - Sysctl setting vm.vfs_cache_pressure. 2254 VMVfsCachePressure *int32 `json:"vmVfsCachePressure,omitempty"` 2255} 2256 2257// TagsObject tags object for patch operations. 2258type TagsObject struct { 2259 // Tags - Resource tags. 2260 Tags map[string]*string `json:"tags"` 2261} 2262 2263// MarshalJSON is the custom marshaler for TagsObject. 2264func (toVar TagsObject) MarshalJSON() ([]byte, error) { 2265 objectMap := make(map[string]interface{}) 2266 if toVar.Tags != nil { 2267 objectMap["tags"] = toVar.Tags 2268 } 2269 return json.Marshal(objectMap) 2270} 2271 2272// UserAssignedIdentity ... 2273type UserAssignedIdentity struct { 2274 // ResourceID - The resource id of the user assigned identity. 2275 ResourceID *string `json:"resourceId,omitempty"` 2276 // ClientID - The client id of the user assigned identity. 2277 ClientID *string `json:"clientId,omitempty"` 2278 // ObjectID - The object id of the user assigned identity. 2279 ObjectID *string `json:"objectId,omitempty"` 2280} 2281 2282// VMDiagnostics profile for diagnostics on the container service VMs. 2283type VMDiagnostics struct { 2284 // Enabled - Whether the VM diagnostic agent is provisioned on the VM. 2285 Enabled *bool `json:"enabled,omitempty"` 2286 // StorageURI - READ-ONLY; The URI of the storage account where diagnostics are stored. 2287 StorageURI *string `json:"storageUri,omitempty"` 2288} 2289 2290// MarshalJSON is the custom marshaler for VMDiagnostics. 2291func (vd VMDiagnostics) MarshalJSON() ([]byte, error) { 2292 objectMap := make(map[string]interface{}) 2293 if vd.Enabled != nil { 2294 objectMap["enabled"] = vd.Enabled 2295 } 2296 return json.Marshal(objectMap) 2297} 2298