1package virtualmachineimagebuilder 2 3// Copyright (c) Microsoft Corporation. All rights reserved. 4// Licensed under the MIT License. See License.txt in the project root for license information. 5// 6// Code generated by Microsoft (R) AutoRest Code Generator. 7// Changes may cause incorrect behavior and will be lost if the code is regenerated. 8 9import ( 10 "context" 11 "encoding/json" 12 "github.com/Azure/go-autorest/autorest" 13 "github.com/Azure/go-autorest/autorest/azure" 14 "github.com/Azure/go-autorest/autorest/date" 15 "github.com/Azure/go-autorest/autorest/to" 16 "github.com/Azure/go-autorest/tracing" 17 "net/http" 18) 19 20// The package's fully qualified name. 21const fqdn = "github.com/Azure/azure-sdk-for-go/services/preview/virtualmachineimagebuilder/mgmt/2019-05-01-preview/virtualmachineimagebuilder" 22 23// APIError api error. 24type APIError struct { 25 // Details - The Api error details 26 Details *[]APIErrorBase `json:"details,omitempty"` 27 // InnerError - The Api inner error 28 InnerError *InnerError `json:"innerError,omitempty"` 29 // Code - The error code. 30 Code *string `json:"code,omitempty"` 31 // Target - The target of the particular error. 32 Target *string `json:"target,omitempty"` 33 // Message - The error message. 34 Message *string `json:"message,omitempty"` 35} 36 37// APIErrorBase api error base. 38type APIErrorBase struct { 39 // Code - The error code. 40 Code *string `json:"code,omitempty"` 41 // Target - The target of the particular error. 42 Target *string `json:"target,omitempty"` 43 // Message - The error message. 44 Message *string `json:"message,omitempty"` 45} 46 47// ImageTemplate image template is an ARM resource managed by Microsoft.VirtualMachineImages provider 48type ImageTemplate struct { 49 autorest.Response `json:"-"` 50 // ImageTemplateProperties - The properties of the image template 51 *ImageTemplateProperties `json:"properties,omitempty"` 52 // Identity - The identity of the image template, if configured. 53 Identity *ImageTemplateIdentity `json:"identity,omitempty"` 54 // ID - READ-ONLY; Resource Id 55 ID *string `json:"id,omitempty"` 56 // Name - READ-ONLY; Resource name 57 Name *string `json:"name,omitempty"` 58 // Type - READ-ONLY; Resource type 59 Type *string `json:"type,omitempty"` 60 // Location - Resource location 61 Location *string `json:"location,omitempty"` 62 // Tags - Resource tags 63 Tags map[string]*string `json:"tags"` 64} 65 66// MarshalJSON is the custom marshaler for ImageTemplate. 67func (it ImageTemplate) MarshalJSON() ([]byte, error) { 68 objectMap := make(map[string]interface{}) 69 if it.ImageTemplateProperties != nil { 70 objectMap["properties"] = it.ImageTemplateProperties 71 } 72 if it.Identity != nil { 73 objectMap["identity"] = it.Identity 74 } 75 if it.Location != nil { 76 objectMap["location"] = it.Location 77 } 78 if it.Tags != nil { 79 objectMap["tags"] = it.Tags 80 } 81 return json.Marshal(objectMap) 82} 83 84// UnmarshalJSON is the custom unmarshaler for ImageTemplate struct. 85func (it *ImageTemplate) UnmarshalJSON(body []byte) error { 86 var m map[string]*json.RawMessage 87 err := json.Unmarshal(body, &m) 88 if err != nil { 89 return err 90 } 91 for k, v := range m { 92 switch k { 93 case "properties": 94 if v != nil { 95 var imageTemplateProperties ImageTemplateProperties 96 err = json.Unmarshal(*v, &imageTemplateProperties) 97 if err != nil { 98 return err 99 } 100 it.ImageTemplateProperties = &imageTemplateProperties 101 } 102 case "identity": 103 if v != nil { 104 var identity ImageTemplateIdentity 105 err = json.Unmarshal(*v, &identity) 106 if err != nil { 107 return err 108 } 109 it.Identity = &identity 110 } 111 case "id": 112 if v != nil { 113 var ID string 114 err = json.Unmarshal(*v, &ID) 115 if err != nil { 116 return err 117 } 118 it.ID = &ID 119 } 120 case "name": 121 if v != nil { 122 var name string 123 err = json.Unmarshal(*v, &name) 124 if err != nil { 125 return err 126 } 127 it.Name = &name 128 } 129 case "type": 130 if v != nil { 131 var typeVar string 132 err = json.Unmarshal(*v, &typeVar) 133 if err != nil { 134 return err 135 } 136 it.Type = &typeVar 137 } 138 case "location": 139 if v != nil { 140 var location string 141 err = json.Unmarshal(*v, &location) 142 if err != nil { 143 return err 144 } 145 it.Location = &location 146 } 147 case "tags": 148 if v != nil { 149 var tags map[string]*string 150 err = json.Unmarshal(*v, &tags) 151 if err != nil { 152 return err 153 } 154 it.Tags = tags 155 } 156 } 157 } 158 159 return nil 160} 161 162// BasicImageTemplateCustomizer describes a unit of image customization 163type BasicImageTemplateCustomizer interface { 164 AsImageTemplateShellCustomizer() (*ImageTemplateShellCustomizer, bool) 165 AsImageTemplateRestartCustomizer() (*ImageTemplateRestartCustomizer, bool) 166 AsImageTemplatePowerShellCustomizer() (*ImageTemplatePowerShellCustomizer, bool) 167 AsImageTemplateFileCustomizer() (*ImageTemplateFileCustomizer, bool) 168 AsImageTemplateCustomizer() (*ImageTemplateCustomizer, bool) 169} 170 171// ImageTemplateCustomizer describes a unit of image customization 172type ImageTemplateCustomizer struct { 173 // Name - Friendly Name to provide context on what this customization step does 174 Name *string `json:"name,omitempty"` 175 // Type - Possible values include: 'TypeImageTemplateCustomizer', 'TypeShell', 'TypeWindowsRestart', 'TypePowerShell', 'TypeFile' 176 Type TypeBasicImageTemplateCustomizer `json:"type,omitempty"` 177} 178 179func unmarshalBasicImageTemplateCustomizer(body []byte) (BasicImageTemplateCustomizer, error) { 180 var m map[string]interface{} 181 err := json.Unmarshal(body, &m) 182 if err != nil { 183 return nil, err 184 } 185 186 switch m["type"] { 187 case string(TypeShell): 188 var itsc ImageTemplateShellCustomizer 189 err := json.Unmarshal(body, &itsc) 190 return itsc, err 191 case string(TypeWindowsRestart): 192 var itrc ImageTemplateRestartCustomizer 193 err := json.Unmarshal(body, &itrc) 194 return itrc, err 195 case string(TypePowerShell): 196 var itpsc ImageTemplatePowerShellCustomizer 197 err := json.Unmarshal(body, &itpsc) 198 return itpsc, err 199 case string(TypeFile): 200 var itfc ImageTemplateFileCustomizer 201 err := json.Unmarshal(body, &itfc) 202 return itfc, err 203 default: 204 var itc ImageTemplateCustomizer 205 err := json.Unmarshal(body, &itc) 206 return itc, err 207 } 208} 209func unmarshalBasicImageTemplateCustomizerArray(body []byte) ([]BasicImageTemplateCustomizer, error) { 210 var rawMessages []*json.RawMessage 211 err := json.Unmarshal(body, &rawMessages) 212 if err != nil { 213 return nil, err 214 } 215 216 itcArray := make([]BasicImageTemplateCustomizer, len(rawMessages)) 217 218 for index, rawMessage := range rawMessages { 219 itc, err := unmarshalBasicImageTemplateCustomizer(*rawMessage) 220 if err != nil { 221 return nil, err 222 } 223 itcArray[index] = itc 224 } 225 return itcArray, nil 226} 227 228// MarshalJSON is the custom marshaler for ImageTemplateCustomizer. 229func (itc ImageTemplateCustomizer) MarshalJSON() ([]byte, error) { 230 itc.Type = TypeImageTemplateCustomizer 231 objectMap := make(map[string]interface{}) 232 if itc.Name != nil { 233 objectMap["name"] = itc.Name 234 } 235 if itc.Type != "" { 236 objectMap["type"] = itc.Type 237 } 238 return json.Marshal(objectMap) 239} 240 241// AsImageTemplateShellCustomizer is the BasicImageTemplateCustomizer implementation for ImageTemplateCustomizer. 242func (itc ImageTemplateCustomizer) AsImageTemplateShellCustomizer() (*ImageTemplateShellCustomizer, bool) { 243 return nil, false 244} 245 246// AsImageTemplateRestartCustomizer is the BasicImageTemplateCustomizer implementation for ImageTemplateCustomizer. 247func (itc ImageTemplateCustomizer) AsImageTemplateRestartCustomizer() (*ImageTemplateRestartCustomizer, bool) { 248 return nil, false 249} 250 251// AsImageTemplatePowerShellCustomizer is the BasicImageTemplateCustomizer implementation for ImageTemplateCustomizer. 252func (itc ImageTemplateCustomizer) AsImageTemplatePowerShellCustomizer() (*ImageTemplatePowerShellCustomizer, bool) { 253 return nil, false 254} 255 256// AsImageTemplateFileCustomizer is the BasicImageTemplateCustomizer implementation for ImageTemplateCustomizer. 257func (itc ImageTemplateCustomizer) AsImageTemplateFileCustomizer() (*ImageTemplateFileCustomizer, bool) { 258 return nil, false 259} 260 261// AsImageTemplateCustomizer is the BasicImageTemplateCustomizer implementation for ImageTemplateCustomizer. 262func (itc ImageTemplateCustomizer) AsImageTemplateCustomizer() (*ImageTemplateCustomizer, bool) { 263 return &itc, true 264} 265 266// AsBasicImageTemplateCustomizer is the BasicImageTemplateCustomizer implementation for ImageTemplateCustomizer. 267func (itc ImageTemplateCustomizer) AsBasicImageTemplateCustomizer() (BasicImageTemplateCustomizer, bool) { 268 return &itc, true 269} 270 271// BasicImageTemplateDistributor generic distribution object 272type BasicImageTemplateDistributor interface { 273 AsImageTemplateManagedImageDistributor() (*ImageTemplateManagedImageDistributor, bool) 274 AsImageTemplateSharedImageDistributor() (*ImageTemplateSharedImageDistributor, bool) 275 AsImageTemplateVhdDistributor() (*ImageTemplateVhdDistributor, bool) 276 AsImageTemplateDistributor() (*ImageTemplateDistributor, bool) 277} 278 279// ImageTemplateDistributor generic distribution object 280type ImageTemplateDistributor struct { 281 // RunOutputName - The name to be used for the associated RunOutput. 282 RunOutputName *string `json:"runOutputName,omitempty"` 283 // ArtifactTags - Tags that will be applied to the artifact once it has been created/updated by the distributor. 284 ArtifactTags map[string]*string `json:"artifactTags"` 285 // Type - Possible values include: 'TypeBasicImageTemplateDistributorTypeImageTemplateDistributor', 'TypeBasicImageTemplateDistributorTypeManagedImage', 'TypeBasicImageTemplateDistributorTypeSharedImage', 'TypeBasicImageTemplateDistributorTypeVHD' 286 Type TypeBasicImageTemplateDistributor `json:"type,omitempty"` 287} 288 289func unmarshalBasicImageTemplateDistributor(body []byte) (BasicImageTemplateDistributor, error) { 290 var m map[string]interface{} 291 err := json.Unmarshal(body, &m) 292 if err != nil { 293 return nil, err 294 } 295 296 switch m["type"] { 297 case string(TypeBasicImageTemplateDistributorTypeManagedImage): 298 var itmid ImageTemplateManagedImageDistributor 299 err := json.Unmarshal(body, &itmid) 300 return itmid, err 301 case string(TypeBasicImageTemplateDistributorTypeSharedImage): 302 var itsid ImageTemplateSharedImageDistributor 303 err := json.Unmarshal(body, &itsid) 304 return itsid, err 305 case string(TypeBasicImageTemplateDistributorTypeVHD): 306 var itvd ImageTemplateVhdDistributor 307 err := json.Unmarshal(body, &itvd) 308 return itvd, err 309 default: 310 var itd ImageTemplateDistributor 311 err := json.Unmarshal(body, &itd) 312 return itd, err 313 } 314} 315func unmarshalBasicImageTemplateDistributorArray(body []byte) ([]BasicImageTemplateDistributor, error) { 316 var rawMessages []*json.RawMessage 317 err := json.Unmarshal(body, &rawMessages) 318 if err != nil { 319 return nil, err 320 } 321 322 itdArray := make([]BasicImageTemplateDistributor, len(rawMessages)) 323 324 for index, rawMessage := range rawMessages { 325 itd, err := unmarshalBasicImageTemplateDistributor(*rawMessage) 326 if err != nil { 327 return nil, err 328 } 329 itdArray[index] = itd 330 } 331 return itdArray, nil 332} 333 334// MarshalJSON is the custom marshaler for ImageTemplateDistributor. 335func (itd ImageTemplateDistributor) MarshalJSON() ([]byte, error) { 336 itd.Type = TypeBasicImageTemplateDistributorTypeImageTemplateDistributor 337 objectMap := make(map[string]interface{}) 338 if itd.RunOutputName != nil { 339 objectMap["runOutputName"] = itd.RunOutputName 340 } 341 if itd.ArtifactTags != nil { 342 objectMap["artifactTags"] = itd.ArtifactTags 343 } 344 if itd.Type != "" { 345 objectMap["type"] = itd.Type 346 } 347 return json.Marshal(objectMap) 348} 349 350// AsImageTemplateManagedImageDistributor is the BasicImageTemplateDistributor implementation for ImageTemplateDistributor. 351func (itd ImageTemplateDistributor) AsImageTemplateManagedImageDistributor() (*ImageTemplateManagedImageDistributor, bool) { 352 return nil, false 353} 354 355// AsImageTemplateSharedImageDistributor is the BasicImageTemplateDistributor implementation for ImageTemplateDistributor. 356func (itd ImageTemplateDistributor) AsImageTemplateSharedImageDistributor() (*ImageTemplateSharedImageDistributor, bool) { 357 return nil, false 358} 359 360// AsImageTemplateVhdDistributor is the BasicImageTemplateDistributor implementation for ImageTemplateDistributor. 361func (itd ImageTemplateDistributor) AsImageTemplateVhdDistributor() (*ImageTemplateVhdDistributor, bool) { 362 return nil, false 363} 364 365// AsImageTemplateDistributor is the BasicImageTemplateDistributor implementation for ImageTemplateDistributor. 366func (itd ImageTemplateDistributor) AsImageTemplateDistributor() (*ImageTemplateDistributor, bool) { 367 return &itd, true 368} 369 370// AsBasicImageTemplateDistributor is the BasicImageTemplateDistributor implementation for ImageTemplateDistributor. 371func (itd ImageTemplateDistributor) AsBasicImageTemplateDistributor() (BasicImageTemplateDistributor, bool) { 372 return &itd, true 373} 374 375// ImageTemplateFileCustomizer uploads files to VMs (Linux, Windows). Corresponds to Packer file 376// provisioner 377type ImageTemplateFileCustomizer struct { 378 // SourceURI - The URI of the file to be uploaded for customizing the VM. It can be a github link, SAS URI for Azure Storage, etc 379 SourceURI *string `json:"sourceUri,omitempty"` 380 // Sha256Checksum - SHA256 checksum of the file provided in the sourceUri field above 381 Sha256Checksum *string `json:"sha256Checksum,omitempty"` 382 // Destination - The absolute path to a file (with nested directory structures already created) where the file (from sourceUri) will be uploaded to in the VM 383 Destination *string `json:"destination,omitempty"` 384 // Name - Friendly Name to provide context on what this customization step does 385 Name *string `json:"name,omitempty"` 386 // Type - Possible values include: 'TypeImageTemplateCustomizer', 'TypeShell', 'TypeWindowsRestart', 'TypePowerShell', 'TypeFile' 387 Type TypeBasicImageTemplateCustomizer `json:"type,omitempty"` 388} 389 390// MarshalJSON is the custom marshaler for ImageTemplateFileCustomizer. 391func (itfc ImageTemplateFileCustomizer) MarshalJSON() ([]byte, error) { 392 itfc.Type = TypeFile 393 objectMap := make(map[string]interface{}) 394 if itfc.SourceURI != nil { 395 objectMap["sourceUri"] = itfc.SourceURI 396 } 397 if itfc.Sha256Checksum != nil { 398 objectMap["sha256Checksum"] = itfc.Sha256Checksum 399 } 400 if itfc.Destination != nil { 401 objectMap["destination"] = itfc.Destination 402 } 403 if itfc.Name != nil { 404 objectMap["name"] = itfc.Name 405 } 406 if itfc.Type != "" { 407 objectMap["type"] = itfc.Type 408 } 409 return json.Marshal(objectMap) 410} 411 412// AsImageTemplateShellCustomizer is the BasicImageTemplateCustomizer implementation for ImageTemplateFileCustomizer. 413func (itfc ImageTemplateFileCustomizer) AsImageTemplateShellCustomizer() (*ImageTemplateShellCustomizer, bool) { 414 return nil, false 415} 416 417// AsImageTemplateRestartCustomizer is the BasicImageTemplateCustomizer implementation for ImageTemplateFileCustomizer. 418func (itfc ImageTemplateFileCustomizer) AsImageTemplateRestartCustomizer() (*ImageTemplateRestartCustomizer, bool) { 419 return nil, false 420} 421 422// AsImageTemplatePowerShellCustomizer is the BasicImageTemplateCustomizer implementation for ImageTemplateFileCustomizer. 423func (itfc ImageTemplateFileCustomizer) AsImageTemplatePowerShellCustomizer() (*ImageTemplatePowerShellCustomizer, bool) { 424 return nil, false 425} 426 427// AsImageTemplateFileCustomizer is the BasicImageTemplateCustomizer implementation for ImageTemplateFileCustomizer. 428func (itfc ImageTemplateFileCustomizer) AsImageTemplateFileCustomizer() (*ImageTemplateFileCustomizer, bool) { 429 return &itfc, true 430} 431 432// AsImageTemplateCustomizer is the BasicImageTemplateCustomizer implementation for ImageTemplateFileCustomizer. 433func (itfc ImageTemplateFileCustomizer) AsImageTemplateCustomizer() (*ImageTemplateCustomizer, bool) { 434 return nil, false 435} 436 437// AsBasicImageTemplateCustomizer is the BasicImageTemplateCustomizer implementation for ImageTemplateFileCustomizer. 438func (itfc ImageTemplateFileCustomizer) AsBasicImageTemplateCustomizer() (BasicImageTemplateCustomizer, bool) { 439 return &itfc, true 440} 441 442// ImageTemplateIdentity identity for the image template. 443type ImageTemplateIdentity struct { 444 // Type - The type of identity used for the image template. The type 'None' will remove any identities from the image template. Possible values include: 'UserAssigned', 'None' 445 Type ResourceIdentityType `json:"type,omitempty"` 446 // UserAssignedIdentities - The list of user identities associated with the image template. The user identity dictionary key references will be ARM resource ids in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'. 447 UserAssignedIdentities map[string]*ImageTemplateIdentityUserAssignedIdentitiesValue `json:"userAssignedIdentities"` 448} 449 450// MarshalJSON is the custom marshaler for ImageTemplateIdentity. 451func (iti ImageTemplateIdentity) MarshalJSON() ([]byte, error) { 452 objectMap := make(map[string]interface{}) 453 if iti.Type != "" { 454 objectMap["type"] = iti.Type 455 } 456 if iti.UserAssignedIdentities != nil { 457 objectMap["userAssignedIdentities"] = iti.UserAssignedIdentities 458 } 459 return json.Marshal(objectMap) 460} 461 462// ImageTemplateIdentityUserAssignedIdentitiesValue ... 463type ImageTemplateIdentityUserAssignedIdentitiesValue struct { 464 // PrincipalID - READ-ONLY; The principal id of user assigned identity. 465 PrincipalID *string `json:"principalId,omitempty"` 466 // ClientID - READ-ONLY; The client id of user assigned identity. 467 ClientID *string `json:"clientId,omitempty"` 468} 469 470// MarshalJSON is the custom marshaler for ImageTemplateIdentityUserAssignedIdentitiesValue. 471func (itiAiv ImageTemplateIdentityUserAssignedIdentitiesValue) MarshalJSON() ([]byte, error) { 472 objectMap := make(map[string]interface{}) 473 return json.Marshal(objectMap) 474} 475 476// ImageTemplateIsoSource describes an image source that is an installation ISO. Currently only supports 477// Red Hat Enterprise Linux 7.2-7.5 ISO's. 478type ImageTemplateIsoSource struct { 479 // SourceURI - URI to get the ISO image. This URI has to be accessible to the resource provider at the time of the image template creation. 480 SourceURI *string `json:"sourceUri,omitempty"` 481 // Sha256Checksum - SHA256 Checksum of the ISO image. 482 Sha256Checksum *string `json:"sha256Checksum,omitempty"` 483 // Type - Possible values include: 'TypeImageTemplateSource', 'TypeISO', 'TypePlatformImage', 'TypeManagedImage', 'TypeSharedImageVersion' 484 Type Type `json:"type,omitempty"` 485} 486 487// MarshalJSON is the custom marshaler for ImageTemplateIsoSource. 488func (itis ImageTemplateIsoSource) MarshalJSON() ([]byte, error) { 489 itis.Type = TypeISO 490 objectMap := make(map[string]interface{}) 491 if itis.SourceURI != nil { 492 objectMap["sourceUri"] = itis.SourceURI 493 } 494 if itis.Sha256Checksum != nil { 495 objectMap["sha256Checksum"] = itis.Sha256Checksum 496 } 497 if itis.Type != "" { 498 objectMap["type"] = itis.Type 499 } 500 return json.Marshal(objectMap) 501} 502 503// AsImageTemplateIsoSource is the BasicImageTemplateSource implementation for ImageTemplateIsoSource. 504func (itis ImageTemplateIsoSource) AsImageTemplateIsoSource() (*ImageTemplateIsoSource, bool) { 505 return &itis, true 506} 507 508// AsImageTemplatePlatformImageSource is the BasicImageTemplateSource implementation for ImageTemplateIsoSource. 509func (itis ImageTemplateIsoSource) AsImageTemplatePlatformImageSource() (*ImageTemplatePlatformImageSource, bool) { 510 return nil, false 511} 512 513// AsImageTemplateManagedImageSource is the BasicImageTemplateSource implementation for ImageTemplateIsoSource. 514func (itis ImageTemplateIsoSource) AsImageTemplateManagedImageSource() (*ImageTemplateManagedImageSource, bool) { 515 return nil, false 516} 517 518// AsImageTemplateSharedImageVersionSource is the BasicImageTemplateSource implementation for ImageTemplateIsoSource. 519func (itis ImageTemplateIsoSource) AsImageTemplateSharedImageVersionSource() (*ImageTemplateSharedImageVersionSource, bool) { 520 return nil, false 521} 522 523// AsImageTemplateSource is the BasicImageTemplateSource implementation for ImageTemplateIsoSource. 524func (itis ImageTemplateIsoSource) AsImageTemplateSource() (*ImageTemplateSource, bool) { 525 return nil, false 526} 527 528// AsBasicImageTemplateSource is the BasicImageTemplateSource implementation for ImageTemplateIsoSource. 529func (itis ImageTemplateIsoSource) AsBasicImageTemplateSource() (BasicImageTemplateSource, bool) { 530 return &itis, true 531} 532 533// ImageTemplateLastRunStatus describes the latest status of running an image template 534type ImageTemplateLastRunStatus struct { 535 // StartTime - Start time of the last run (UTC) 536 StartTime *date.Time `json:"startTime,omitempty"` 537 // EndTime - End time of the last run (UTC) 538 EndTime *date.Time `json:"endTime,omitempty"` 539 // RunState - State of the last run. Possible values include: 'RunStateRunning', 'RunStateSucceeded', 'RunStatePartiallySucceeded', 'RunStateFailed' 540 RunState RunState `json:"runState,omitempty"` 541 // RunSubState - Sub-state of the last run. Possible values include: 'Queued', 'Building', 'Customizing', 'Distributing' 542 RunSubState RunSubState `json:"runSubState,omitempty"` 543 // Message - Verbose information about the last run state 544 Message *string `json:"message,omitempty"` 545} 546 547// ImageTemplateListResult the result of List image templates operation 548type ImageTemplateListResult struct { 549 autorest.Response `json:"-"` 550 // Value - An array of image templates 551 Value *[]ImageTemplate `json:"value,omitempty"` 552 // NextLink - The continuation token. 553 NextLink *string `json:"nextLink,omitempty"` 554} 555 556// ImageTemplateListResultIterator provides access to a complete listing of ImageTemplate values. 557type ImageTemplateListResultIterator struct { 558 i int 559 page ImageTemplateListResultPage 560} 561 562// NextWithContext advances to the next value. If there was an error making 563// the request the iterator does not advance and the error is returned. 564func (iter *ImageTemplateListResultIterator) NextWithContext(ctx context.Context) (err error) { 565 if tracing.IsEnabled() { 566 ctx = tracing.StartSpan(ctx, fqdn+"/ImageTemplateListResultIterator.NextWithContext") 567 defer func() { 568 sc := -1 569 if iter.Response().Response.Response != nil { 570 sc = iter.Response().Response.Response.StatusCode 571 } 572 tracing.EndSpan(ctx, sc, err) 573 }() 574 } 575 iter.i++ 576 if iter.i < len(iter.page.Values()) { 577 return nil 578 } 579 err = iter.page.NextWithContext(ctx) 580 if err != nil { 581 iter.i-- 582 return err 583 } 584 iter.i = 0 585 return nil 586} 587 588// Next advances to the next value. If there was an error making 589// the request the iterator does not advance and the error is returned. 590// Deprecated: Use NextWithContext() instead. 591func (iter *ImageTemplateListResultIterator) Next() error { 592 return iter.NextWithContext(context.Background()) 593} 594 595// NotDone returns true if the enumeration should be started or is not yet complete. 596func (iter ImageTemplateListResultIterator) NotDone() bool { 597 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 598} 599 600// Response returns the raw server response from the last page request. 601func (iter ImageTemplateListResultIterator) Response() ImageTemplateListResult { 602 return iter.page.Response() 603} 604 605// Value returns the current value or a zero-initialized value if the 606// iterator has advanced beyond the end of the collection. 607func (iter ImageTemplateListResultIterator) Value() ImageTemplate { 608 if !iter.page.NotDone() { 609 return ImageTemplate{} 610 } 611 return iter.page.Values()[iter.i] 612} 613 614// Creates a new instance of the ImageTemplateListResultIterator type. 615func NewImageTemplateListResultIterator(page ImageTemplateListResultPage) ImageTemplateListResultIterator { 616 return ImageTemplateListResultIterator{page: page} 617} 618 619// IsEmpty returns true if the ListResult contains no values. 620func (itlr ImageTemplateListResult) IsEmpty() bool { 621 return itlr.Value == nil || len(*itlr.Value) == 0 622} 623 624// hasNextLink returns true if the NextLink is not empty. 625func (itlr ImageTemplateListResult) hasNextLink() bool { 626 return itlr.NextLink != nil && len(*itlr.NextLink) != 0 627} 628 629// imageTemplateListResultPreparer prepares a request to retrieve the next set of results. 630// It returns nil if no more results exist. 631func (itlr ImageTemplateListResult) imageTemplateListResultPreparer(ctx context.Context) (*http.Request, error) { 632 if !itlr.hasNextLink() { 633 return nil, nil 634 } 635 return autorest.Prepare((&http.Request{}).WithContext(ctx), 636 autorest.AsJSON(), 637 autorest.AsGet(), 638 autorest.WithBaseURL(to.String(itlr.NextLink))) 639} 640 641// ImageTemplateListResultPage contains a page of ImageTemplate values. 642type ImageTemplateListResultPage struct { 643 fn func(context.Context, ImageTemplateListResult) (ImageTemplateListResult, error) 644 itlr ImageTemplateListResult 645} 646 647// NextWithContext advances to the next page of values. If there was an error making 648// the request the page does not advance and the error is returned. 649func (page *ImageTemplateListResultPage) NextWithContext(ctx context.Context) (err error) { 650 if tracing.IsEnabled() { 651 ctx = tracing.StartSpan(ctx, fqdn+"/ImageTemplateListResultPage.NextWithContext") 652 defer func() { 653 sc := -1 654 if page.Response().Response.Response != nil { 655 sc = page.Response().Response.Response.StatusCode 656 } 657 tracing.EndSpan(ctx, sc, err) 658 }() 659 } 660 for { 661 next, err := page.fn(ctx, page.itlr) 662 if err != nil { 663 return err 664 } 665 page.itlr = next 666 if !next.hasNextLink() || !next.IsEmpty() { 667 break 668 } 669 } 670 return nil 671} 672 673// Next advances to the next page of values. If there was an error making 674// the request the page does not advance and the error is returned. 675// Deprecated: Use NextWithContext() instead. 676func (page *ImageTemplateListResultPage) Next() error { 677 return page.NextWithContext(context.Background()) 678} 679 680// NotDone returns true if the page enumeration should be started or is not yet complete. 681func (page ImageTemplateListResultPage) NotDone() bool { 682 return !page.itlr.IsEmpty() 683} 684 685// Response returns the raw server response from the last page request. 686func (page ImageTemplateListResultPage) Response() ImageTemplateListResult { 687 return page.itlr 688} 689 690// Values returns the slice of values for the current page or nil if there are no values. 691func (page ImageTemplateListResultPage) Values() []ImageTemplate { 692 if page.itlr.IsEmpty() { 693 return nil 694 } 695 return *page.itlr.Value 696} 697 698// Creates a new instance of the ImageTemplateListResultPage type. 699func NewImageTemplateListResultPage(cur ImageTemplateListResult, getNextPage func(context.Context, ImageTemplateListResult) (ImageTemplateListResult, error)) ImageTemplateListResultPage { 700 return ImageTemplateListResultPage{ 701 fn: getNextPage, 702 itlr: cur, 703 } 704} 705 706// ImageTemplateManagedImageDistributor distribute as a Managed Disk Image. 707type ImageTemplateManagedImageDistributor struct { 708 // ImageID - Resource Id of the Managed Disk Image 709 ImageID *string `json:"imageId,omitempty"` 710 // Location - Azure location for the image, should match if image already exists 711 Location *string `json:"location,omitempty"` 712 // RunOutputName - The name to be used for the associated RunOutput. 713 RunOutputName *string `json:"runOutputName,omitempty"` 714 // ArtifactTags - Tags that will be applied to the artifact once it has been created/updated by the distributor. 715 ArtifactTags map[string]*string `json:"artifactTags"` 716 // Type - Possible values include: 'TypeBasicImageTemplateDistributorTypeImageTemplateDistributor', 'TypeBasicImageTemplateDistributorTypeManagedImage', 'TypeBasicImageTemplateDistributorTypeSharedImage', 'TypeBasicImageTemplateDistributorTypeVHD' 717 Type TypeBasicImageTemplateDistributor `json:"type,omitempty"` 718} 719 720// MarshalJSON is the custom marshaler for ImageTemplateManagedImageDistributor. 721func (itmid ImageTemplateManagedImageDistributor) MarshalJSON() ([]byte, error) { 722 itmid.Type = TypeBasicImageTemplateDistributorTypeManagedImage 723 objectMap := make(map[string]interface{}) 724 if itmid.ImageID != nil { 725 objectMap["imageId"] = itmid.ImageID 726 } 727 if itmid.Location != nil { 728 objectMap["location"] = itmid.Location 729 } 730 if itmid.RunOutputName != nil { 731 objectMap["runOutputName"] = itmid.RunOutputName 732 } 733 if itmid.ArtifactTags != nil { 734 objectMap["artifactTags"] = itmid.ArtifactTags 735 } 736 if itmid.Type != "" { 737 objectMap["type"] = itmid.Type 738 } 739 return json.Marshal(objectMap) 740} 741 742// AsImageTemplateManagedImageDistributor is the BasicImageTemplateDistributor implementation for ImageTemplateManagedImageDistributor. 743func (itmid ImageTemplateManagedImageDistributor) AsImageTemplateManagedImageDistributor() (*ImageTemplateManagedImageDistributor, bool) { 744 return &itmid, true 745} 746 747// AsImageTemplateSharedImageDistributor is the BasicImageTemplateDistributor implementation for ImageTemplateManagedImageDistributor. 748func (itmid ImageTemplateManagedImageDistributor) AsImageTemplateSharedImageDistributor() (*ImageTemplateSharedImageDistributor, bool) { 749 return nil, false 750} 751 752// AsImageTemplateVhdDistributor is the BasicImageTemplateDistributor implementation for ImageTemplateManagedImageDistributor. 753func (itmid ImageTemplateManagedImageDistributor) AsImageTemplateVhdDistributor() (*ImageTemplateVhdDistributor, bool) { 754 return nil, false 755} 756 757// AsImageTemplateDistributor is the BasicImageTemplateDistributor implementation for ImageTemplateManagedImageDistributor. 758func (itmid ImageTemplateManagedImageDistributor) AsImageTemplateDistributor() (*ImageTemplateDistributor, bool) { 759 return nil, false 760} 761 762// AsBasicImageTemplateDistributor is the BasicImageTemplateDistributor implementation for ImageTemplateManagedImageDistributor. 763func (itmid ImageTemplateManagedImageDistributor) AsBasicImageTemplateDistributor() (BasicImageTemplateDistributor, bool) { 764 return &itmid, true 765} 766 767// ImageTemplateManagedImageSource describes an image source that is a managed image in customer 768// subscription. 769type ImageTemplateManagedImageSource struct { 770 // ImageID - ARM resource id of the managed image in customer subscription 771 ImageID *string `json:"imageId,omitempty"` 772 // Type - Possible values include: 'TypeImageTemplateSource', 'TypeISO', 'TypePlatformImage', 'TypeManagedImage', 'TypeSharedImageVersion' 773 Type Type `json:"type,omitempty"` 774} 775 776// MarshalJSON is the custom marshaler for ImageTemplateManagedImageSource. 777func (itmis ImageTemplateManagedImageSource) MarshalJSON() ([]byte, error) { 778 itmis.Type = TypeManagedImage 779 objectMap := make(map[string]interface{}) 780 if itmis.ImageID != nil { 781 objectMap["imageId"] = itmis.ImageID 782 } 783 if itmis.Type != "" { 784 objectMap["type"] = itmis.Type 785 } 786 return json.Marshal(objectMap) 787} 788 789// AsImageTemplateIsoSource is the BasicImageTemplateSource implementation for ImageTemplateManagedImageSource. 790func (itmis ImageTemplateManagedImageSource) AsImageTemplateIsoSource() (*ImageTemplateIsoSource, bool) { 791 return nil, false 792} 793 794// AsImageTemplatePlatformImageSource is the BasicImageTemplateSource implementation for ImageTemplateManagedImageSource. 795func (itmis ImageTemplateManagedImageSource) AsImageTemplatePlatformImageSource() (*ImageTemplatePlatformImageSource, bool) { 796 return nil, false 797} 798 799// AsImageTemplateManagedImageSource is the BasicImageTemplateSource implementation for ImageTemplateManagedImageSource. 800func (itmis ImageTemplateManagedImageSource) AsImageTemplateManagedImageSource() (*ImageTemplateManagedImageSource, bool) { 801 return &itmis, true 802} 803 804// AsImageTemplateSharedImageVersionSource is the BasicImageTemplateSource implementation for ImageTemplateManagedImageSource. 805func (itmis ImageTemplateManagedImageSource) AsImageTemplateSharedImageVersionSource() (*ImageTemplateSharedImageVersionSource, bool) { 806 return nil, false 807} 808 809// AsImageTemplateSource is the BasicImageTemplateSource implementation for ImageTemplateManagedImageSource. 810func (itmis ImageTemplateManagedImageSource) AsImageTemplateSource() (*ImageTemplateSource, bool) { 811 return nil, false 812} 813 814// AsBasicImageTemplateSource is the BasicImageTemplateSource implementation for ImageTemplateManagedImageSource. 815func (itmis ImageTemplateManagedImageSource) AsBasicImageTemplateSource() (BasicImageTemplateSource, bool) { 816 return &itmis, true 817} 818 819// ImageTemplatePlatformImageSource describes an image source from [Azure Gallery 820// Images](https://docs.microsoft.com/en-us/rest/api/compute/virtualmachineimages). 821type ImageTemplatePlatformImageSource struct { 822 // Publisher - Image Publisher in [Azure Gallery Images](https://docs.microsoft.com/en-us/rest/api/compute/virtualmachineimages). 823 Publisher *string `json:"publisher,omitempty"` 824 // Offer - Image offer from the [Azure Gallery Images](https://docs.microsoft.com/en-us/rest/api/compute/virtualmachineimages). 825 Offer *string `json:"offer,omitempty"` 826 // Sku - Image sku from the [Azure Gallery Images](https://docs.microsoft.com/en-us/rest/api/compute/virtualmachineimages). 827 Sku *string `json:"sku,omitempty"` 828 // Version - Image version from the [Azure Gallery Images](https://docs.microsoft.com/en-us/rest/api/compute/virtualmachineimages). 829 Version *string `json:"version,omitempty"` 830 // Type - Possible values include: 'TypeImageTemplateSource', 'TypeISO', 'TypePlatformImage', 'TypeManagedImage', 'TypeSharedImageVersion' 831 Type Type `json:"type,omitempty"` 832} 833 834// MarshalJSON is the custom marshaler for ImageTemplatePlatformImageSource. 835func (itpis ImageTemplatePlatformImageSource) MarshalJSON() ([]byte, error) { 836 itpis.Type = TypePlatformImage 837 objectMap := make(map[string]interface{}) 838 if itpis.Publisher != nil { 839 objectMap["publisher"] = itpis.Publisher 840 } 841 if itpis.Offer != nil { 842 objectMap["offer"] = itpis.Offer 843 } 844 if itpis.Sku != nil { 845 objectMap["sku"] = itpis.Sku 846 } 847 if itpis.Version != nil { 848 objectMap["version"] = itpis.Version 849 } 850 if itpis.Type != "" { 851 objectMap["type"] = itpis.Type 852 } 853 return json.Marshal(objectMap) 854} 855 856// AsImageTemplateIsoSource is the BasicImageTemplateSource implementation for ImageTemplatePlatformImageSource. 857func (itpis ImageTemplatePlatformImageSource) AsImageTemplateIsoSource() (*ImageTemplateIsoSource, bool) { 858 return nil, false 859} 860 861// AsImageTemplatePlatformImageSource is the BasicImageTemplateSource implementation for ImageTemplatePlatformImageSource. 862func (itpis ImageTemplatePlatformImageSource) AsImageTemplatePlatformImageSource() (*ImageTemplatePlatformImageSource, bool) { 863 return &itpis, true 864} 865 866// AsImageTemplateManagedImageSource is the BasicImageTemplateSource implementation for ImageTemplatePlatformImageSource. 867func (itpis ImageTemplatePlatformImageSource) AsImageTemplateManagedImageSource() (*ImageTemplateManagedImageSource, bool) { 868 return nil, false 869} 870 871// AsImageTemplateSharedImageVersionSource is the BasicImageTemplateSource implementation for ImageTemplatePlatformImageSource. 872func (itpis ImageTemplatePlatformImageSource) AsImageTemplateSharedImageVersionSource() (*ImageTemplateSharedImageVersionSource, bool) { 873 return nil, false 874} 875 876// AsImageTemplateSource is the BasicImageTemplateSource implementation for ImageTemplatePlatformImageSource. 877func (itpis ImageTemplatePlatformImageSource) AsImageTemplateSource() (*ImageTemplateSource, bool) { 878 return nil, false 879} 880 881// AsBasicImageTemplateSource is the BasicImageTemplateSource implementation for ImageTemplatePlatformImageSource. 882func (itpis ImageTemplatePlatformImageSource) AsBasicImageTemplateSource() (BasicImageTemplateSource, bool) { 883 return &itpis, true 884} 885 886// ImageTemplatePowerShellCustomizer runs the specified PowerShell on the VM (Windows). Corresponds to 887// Packer powershell provisioner. Exactly one of 'scriptUri' or 'inline' can be specified. 888type ImageTemplatePowerShellCustomizer struct { 889 // ScriptURI - URI of the PowerShell script to be run for customizing. It can be a github link, SAS URI for Azure Storage, etc 890 ScriptURI *string `json:"scriptUri,omitempty"` 891 // Sha256Checksum - SHA256 checksum of the power shell script provided in the scriptUri field above 892 Sha256Checksum *string `json:"sha256Checksum,omitempty"` 893 // Inline - Array of PowerShell commands to execute 894 Inline *[]string `json:"inline,omitempty"` 895 // RunElevated - If specified, the PowerShell script will be run with elevated privileges 896 RunElevated *bool `json:"runElevated,omitempty"` 897 // ValidExitCodes - Valid exit codes for the PowerShell script. [Default: 0] 898 ValidExitCodes *[]int32 `json:"validExitCodes,omitempty"` 899 // Name - Friendly Name to provide context on what this customization step does 900 Name *string `json:"name,omitempty"` 901 // Type - Possible values include: 'TypeImageTemplateCustomizer', 'TypeShell', 'TypeWindowsRestart', 'TypePowerShell', 'TypeFile' 902 Type TypeBasicImageTemplateCustomizer `json:"type,omitempty"` 903} 904 905// MarshalJSON is the custom marshaler for ImageTemplatePowerShellCustomizer. 906func (itpsc ImageTemplatePowerShellCustomizer) MarshalJSON() ([]byte, error) { 907 itpsc.Type = TypePowerShell 908 objectMap := make(map[string]interface{}) 909 if itpsc.ScriptURI != nil { 910 objectMap["scriptUri"] = itpsc.ScriptURI 911 } 912 if itpsc.Sha256Checksum != nil { 913 objectMap["sha256Checksum"] = itpsc.Sha256Checksum 914 } 915 if itpsc.Inline != nil { 916 objectMap["inline"] = itpsc.Inline 917 } 918 if itpsc.RunElevated != nil { 919 objectMap["runElevated"] = itpsc.RunElevated 920 } 921 if itpsc.ValidExitCodes != nil { 922 objectMap["validExitCodes"] = itpsc.ValidExitCodes 923 } 924 if itpsc.Name != nil { 925 objectMap["name"] = itpsc.Name 926 } 927 if itpsc.Type != "" { 928 objectMap["type"] = itpsc.Type 929 } 930 return json.Marshal(objectMap) 931} 932 933// AsImageTemplateShellCustomizer is the BasicImageTemplateCustomizer implementation for ImageTemplatePowerShellCustomizer. 934func (itpsc ImageTemplatePowerShellCustomizer) AsImageTemplateShellCustomizer() (*ImageTemplateShellCustomizer, bool) { 935 return nil, false 936} 937 938// AsImageTemplateRestartCustomizer is the BasicImageTemplateCustomizer implementation for ImageTemplatePowerShellCustomizer. 939func (itpsc ImageTemplatePowerShellCustomizer) AsImageTemplateRestartCustomizer() (*ImageTemplateRestartCustomizer, bool) { 940 return nil, false 941} 942 943// AsImageTemplatePowerShellCustomizer is the BasicImageTemplateCustomizer implementation for ImageTemplatePowerShellCustomizer. 944func (itpsc ImageTemplatePowerShellCustomizer) AsImageTemplatePowerShellCustomizer() (*ImageTemplatePowerShellCustomizer, bool) { 945 return &itpsc, true 946} 947 948// AsImageTemplateFileCustomizer is the BasicImageTemplateCustomizer implementation for ImageTemplatePowerShellCustomizer. 949func (itpsc ImageTemplatePowerShellCustomizer) AsImageTemplateFileCustomizer() (*ImageTemplateFileCustomizer, bool) { 950 return nil, false 951} 952 953// AsImageTemplateCustomizer is the BasicImageTemplateCustomizer implementation for ImageTemplatePowerShellCustomizer. 954func (itpsc ImageTemplatePowerShellCustomizer) AsImageTemplateCustomizer() (*ImageTemplateCustomizer, bool) { 955 return nil, false 956} 957 958// AsBasicImageTemplateCustomizer is the BasicImageTemplateCustomizer implementation for ImageTemplatePowerShellCustomizer. 959func (itpsc ImageTemplatePowerShellCustomizer) AsBasicImageTemplateCustomizer() (BasicImageTemplateCustomizer, bool) { 960 return &itpsc, true 961} 962 963// ImageTemplateProperties describes the properties of an image template 964type ImageTemplateProperties struct { 965 // Source - Specifies the properties used to describe the source image. 966 Source BasicImageTemplateSource `json:"source,omitempty"` 967 // Customize - Specifies the properties used to describe the customization steps of the image, like Image source etc 968 Customize *[]BasicImageTemplateCustomizer `json:"customize,omitempty"` 969 // Distribute - The distribution targets where the image output needs to go to. 970 Distribute *[]BasicImageTemplateDistributor `json:"distribute,omitempty"` 971 // ProvisioningState - READ-ONLY; Provisioning state of the resource. Possible values include: 'Creating', 'Updating', 'Succeeded', 'Failed', 'Deleting' 972 ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` 973 // ProvisioningError - READ-ONLY; Provisioning error, if any 974 ProvisioningError *ProvisioningError `json:"provisioningError,omitempty"` 975 // LastRunStatus - READ-ONLY; State of 'run' that is currently executing or was last executed. 976 LastRunStatus *ImageTemplateLastRunStatus `json:"lastRunStatus,omitempty"` 977 // BuildTimeoutInMinutes - Maximum duration to wait while building the image template. Omit or specify 0 to use the default (4 hours). 978 BuildTimeoutInMinutes *int32 `json:"buildTimeoutInMinutes,omitempty"` 979 // VMProfile - Describes how virtual machine is set up to build images 980 VMProfile *ImageTemplateVMProfile `json:"vmProfile,omitempty"` 981} 982 983// MarshalJSON is the custom marshaler for ImageTemplateProperties. 984func (itp ImageTemplateProperties) MarshalJSON() ([]byte, error) { 985 objectMap := make(map[string]interface{}) 986 objectMap["source"] = itp.Source 987 if itp.Customize != nil { 988 objectMap["customize"] = itp.Customize 989 } 990 if itp.Distribute != nil { 991 objectMap["distribute"] = itp.Distribute 992 } 993 if itp.BuildTimeoutInMinutes != nil { 994 objectMap["buildTimeoutInMinutes"] = itp.BuildTimeoutInMinutes 995 } 996 if itp.VMProfile != nil { 997 objectMap["vmProfile"] = itp.VMProfile 998 } 999 return json.Marshal(objectMap) 1000} 1001 1002// UnmarshalJSON is the custom unmarshaler for ImageTemplateProperties struct. 1003func (itp *ImageTemplateProperties) UnmarshalJSON(body []byte) error { 1004 var m map[string]*json.RawMessage 1005 err := json.Unmarshal(body, &m) 1006 if err != nil { 1007 return err 1008 } 1009 for k, v := range m { 1010 switch k { 1011 case "source": 1012 if v != nil { 1013 source, err := unmarshalBasicImageTemplateSource(*v) 1014 if err != nil { 1015 return err 1016 } 1017 itp.Source = source 1018 } 1019 case "customize": 1020 if v != nil { 1021 customize, err := unmarshalBasicImageTemplateCustomizerArray(*v) 1022 if err != nil { 1023 return err 1024 } 1025 itp.Customize = &customize 1026 } 1027 case "distribute": 1028 if v != nil { 1029 distribute, err := unmarshalBasicImageTemplateDistributorArray(*v) 1030 if err != nil { 1031 return err 1032 } 1033 itp.Distribute = &distribute 1034 } 1035 case "provisioningState": 1036 if v != nil { 1037 var provisioningState ProvisioningState 1038 err = json.Unmarshal(*v, &provisioningState) 1039 if err != nil { 1040 return err 1041 } 1042 itp.ProvisioningState = provisioningState 1043 } 1044 case "provisioningError": 1045 if v != nil { 1046 var provisioningError ProvisioningError 1047 err = json.Unmarshal(*v, &provisioningError) 1048 if err != nil { 1049 return err 1050 } 1051 itp.ProvisioningError = &provisioningError 1052 } 1053 case "lastRunStatus": 1054 if v != nil { 1055 var lastRunStatus ImageTemplateLastRunStatus 1056 err = json.Unmarshal(*v, &lastRunStatus) 1057 if err != nil { 1058 return err 1059 } 1060 itp.LastRunStatus = &lastRunStatus 1061 } 1062 case "buildTimeoutInMinutes": 1063 if v != nil { 1064 var buildTimeoutInMinutes int32 1065 err = json.Unmarshal(*v, &buildTimeoutInMinutes) 1066 if err != nil { 1067 return err 1068 } 1069 itp.BuildTimeoutInMinutes = &buildTimeoutInMinutes 1070 } 1071 case "vmProfile": 1072 if v != nil { 1073 var VMProfile ImageTemplateVMProfile 1074 err = json.Unmarshal(*v, &VMProfile) 1075 if err != nil { 1076 return err 1077 } 1078 itp.VMProfile = &VMProfile 1079 } 1080 } 1081 } 1082 1083 return nil 1084} 1085 1086// ImageTemplateRestartCustomizer reboots a VM and waits for it to come back online (Windows). Corresponds 1087// to Packer windows-restart provisioner 1088type ImageTemplateRestartCustomizer struct { 1089 // RestartCommand - Command to execute the restart [Default: 'shutdown /r /f /t 0 /c "packer restart"'] 1090 RestartCommand *string `json:"restartCommand,omitempty"` 1091 // RestartCheckCommand - Command to check if restart succeeded [Default: ''] 1092 RestartCheckCommand *string `json:"restartCheckCommand,omitempty"` 1093 // RestartTimeout - Restart timeout specified as a string of magnitude and unit, e.g. '5m' (5 minutes) or '2h' (2 hours) [Default: '5m'] 1094 RestartTimeout *string `json:"restartTimeout,omitempty"` 1095 // Name - Friendly Name to provide context on what this customization step does 1096 Name *string `json:"name,omitempty"` 1097 // Type - Possible values include: 'TypeImageTemplateCustomizer', 'TypeShell', 'TypeWindowsRestart', 'TypePowerShell', 'TypeFile' 1098 Type TypeBasicImageTemplateCustomizer `json:"type,omitempty"` 1099} 1100 1101// MarshalJSON is the custom marshaler for ImageTemplateRestartCustomizer. 1102func (itrc ImageTemplateRestartCustomizer) MarshalJSON() ([]byte, error) { 1103 itrc.Type = TypeWindowsRestart 1104 objectMap := make(map[string]interface{}) 1105 if itrc.RestartCommand != nil { 1106 objectMap["restartCommand"] = itrc.RestartCommand 1107 } 1108 if itrc.RestartCheckCommand != nil { 1109 objectMap["restartCheckCommand"] = itrc.RestartCheckCommand 1110 } 1111 if itrc.RestartTimeout != nil { 1112 objectMap["restartTimeout"] = itrc.RestartTimeout 1113 } 1114 if itrc.Name != nil { 1115 objectMap["name"] = itrc.Name 1116 } 1117 if itrc.Type != "" { 1118 objectMap["type"] = itrc.Type 1119 } 1120 return json.Marshal(objectMap) 1121} 1122 1123// AsImageTemplateShellCustomizer is the BasicImageTemplateCustomizer implementation for ImageTemplateRestartCustomizer. 1124func (itrc ImageTemplateRestartCustomizer) AsImageTemplateShellCustomizer() (*ImageTemplateShellCustomizer, bool) { 1125 return nil, false 1126} 1127 1128// AsImageTemplateRestartCustomizer is the BasicImageTemplateCustomizer implementation for ImageTemplateRestartCustomizer. 1129func (itrc ImageTemplateRestartCustomizer) AsImageTemplateRestartCustomizer() (*ImageTemplateRestartCustomizer, bool) { 1130 return &itrc, true 1131} 1132 1133// AsImageTemplatePowerShellCustomizer is the BasicImageTemplateCustomizer implementation for ImageTemplateRestartCustomizer. 1134func (itrc ImageTemplateRestartCustomizer) AsImageTemplatePowerShellCustomizer() (*ImageTemplatePowerShellCustomizer, bool) { 1135 return nil, false 1136} 1137 1138// AsImageTemplateFileCustomizer is the BasicImageTemplateCustomizer implementation for ImageTemplateRestartCustomizer. 1139func (itrc ImageTemplateRestartCustomizer) AsImageTemplateFileCustomizer() (*ImageTemplateFileCustomizer, bool) { 1140 return nil, false 1141} 1142 1143// AsImageTemplateCustomizer is the BasicImageTemplateCustomizer implementation for ImageTemplateRestartCustomizer. 1144func (itrc ImageTemplateRestartCustomizer) AsImageTemplateCustomizer() (*ImageTemplateCustomizer, bool) { 1145 return nil, false 1146} 1147 1148// AsBasicImageTemplateCustomizer is the BasicImageTemplateCustomizer implementation for ImageTemplateRestartCustomizer. 1149func (itrc ImageTemplateRestartCustomizer) AsBasicImageTemplateCustomizer() (BasicImageTemplateCustomizer, bool) { 1150 return &itrc, true 1151} 1152 1153// ImageTemplateSharedImageDistributor distribute via Shared Image Gallery. 1154type ImageTemplateSharedImageDistributor struct { 1155 // GalleryImageID - Resource Id of the Shared Image Gallery image 1156 GalleryImageID *string `json:"galleryImageId,omitempty"` 1157 // ReplicationRegions - A list of regions that the image will be replicated to 1158 ReplicationRegions *[]string `json:"replicationRegions,omitempty"` 1159 // RunOutputName - The name to be used for the associated RunOutput. 1160 RunOutputName *string `json:"runOutputName,omitempty"` 1161 // ArtifactTags - Tags that will be applied to the artifact once it has been created/updated by the distributor. 1162 ArtifactTags map[string]*string `json:"artifactTags"` 1163 // Type - Possible values include: 'TypeBasicImageTemplateDistributorTypeImageTemplateDistributor', 'TypeBasicImageTemplateDistributorTypeManagedImage', 'TypeBasicImageTemplateDistributorTypeSharedImage', 'TypeBasicImageTemplateDistributorTypeVHD' 1164 Type TypeBasicImageTemplateDistributor `json:"type,omitempty"` 1165} 1166 1167// MarshalJSON is the custom marshaler for ImageTemplateSharedImageDistributor. 1168func (itsid ImageTemplateSharedImageDistributor) MarshalJSON() ([]byte, error) { 1169 itsid.Type = TypeBasicImageTemplateDistributorTypeSharedImage 1170 objectMap := make(map[string]interface{}) 1171 if itsid.GalleryImageID != nil { 1172 objectMap["galleryImageId"] = itsid.GalleryImageID 1173 } 1174 if itsid.ReplicationRegions != nil { 1175 objectMap["replicationRegions"] = itsid.ReplicationRegions 1176 } 1177 if itsid.RunOutputName != nil { 1178 objectMap["runOutputName"] = itsid.RunOutputName 1179 } 1180 if itsid.ArtifactTags != nil { 1181 objectMap["artifactTags"] = itsid.ArtifactTags 1182 } 1183 if itsid.Type != "" { 1184 objectMap["type"] = itsid.Type 1185 } 1186 return json.Marshal(objectMap) 1187} 1188 1189// AsImageTemplateManagedImageDistributor is the BasicImageTemplateDistributor implementation for ImageTemplateSharedImageDistributor. 1190func (itsid ImageTemplateSharedImageDistributor) AsImageTemplateManagedImageDistributor() (*ImageTemplateManagedImageDistributor, bool) { 1191 return nil, false 1192} 1193 1194// AsImageTemplateSharedImageDistributor is the BasicImageTemplateDistributor implementation for ImageTemplateSharedImageDistributor. 1195func (itsid ImageTemplateSharedImageDistributor) AsImageTemplateSharedImageDistributor() (*ImageTemplateSharedImageDistributor, bool) { 1196 return &itsid, true 1197} 1198 1199// AsImageTemplateVhdDistributor is the BasicImageTemplateDistributor implementation for ImageTemplateSharedImageDistributor. 1200func (itsid ImageTemplateSharedImageDistributor) AsImageTemplateVhdDistributor() (*ImageTemplateVhdDistributor, bool) { 1201 return nil, false 1202} 1203 1204// AsImageTemplateDistributor is the BasicImageTemplateDistributor implementation for ImageTemplateSharedImageDistributor. 1205func (itsid ImageTemplateSharedImageDistributor) AsImageTemplateDistributor() (*ImageTemplateDistributor, bool) { 1206 return nil, false 1207} 1208 1209// AsBasicImageTemplateDistributor is the BasicImageTemplateDistributor implementation for ImageTemplateSharedImageDistributor. 1210func (itsid ImageTemplateSharedImageDistributor) AsBasicImageTemplateDistributor() (BasicImageTemplateDistributor, bool) { 1211 return &itsid, true 1212} 1213 1214// ImageTemplateSharedImageVersionSource describes an image source that is an image version in a shared 1215// image gallery. 1216type ImageTemplateSharedImageVersionSource struct { 1217 // ImageVersionID - ARM resource id of the image version in the shared image gallery 1218 ImageVersionID *string `json:"imageVersionId,omitempty"` 1219 // Type - Possible values include: 'TypeImageTemplateSource', 'TypeISO', 'TypePlatformImage', 'TypeManagedImage', 'TypeSharedImageVersion' 1220 Type Type `json:"type,omitempty"` 1221} 1222 1223// MarshalJSON is the custom marshaler for ImageTemplateSharedImageVersionSource. 1224func (itsivs ImageTemplateSharedImageVersionSource) MarshalJSON() ([]byte, error) { 1225 itsivs.Type = TypeSharedImageVersion 1226 objectMap := make(map[string]interface{}) 1227 if itsivs.ImageVersionID != nil { 1228 objectMap["imageVersionId"] = itsivs.ImageVersionID 1229 } 1230 if itsivs.Type != "" { 1231 objectMap["type"] = itsivs.Type 1232 } 1233 return json.Marshal(objectMap) 1234} 1235 1236// AsImageTemplateIsoSource is the BasicImageTemplateSource implementation for ImageTemplateSharedImageVersionSource. 1237func (itsivs ImageTemplateSharedImageVersionSource) AsImageTemplateIsoSource() (*ImageTemplateIsoSource, bool) { 1238 return nil, false 1239} 1240 1241// AsImageTemplatePlatformImageSource is the BasicImageTemplateSource implementation for ImageTemplateSharedImageVersionSource. 1242func (itsivs ImageTemplateSharedImageVersionSource) AsImageTemplatePlatformImageSource() (*ImageTemplatePlatformImageSource, bool) { 1243 return nil, false 1244} 1245 1246// AsImageTemplateManagedImageSource is the BasicImageTemplateSource implementation for ImageTemplateSharedImageVersionSource. 1247func (itsivs ImageTemplateSharedImageVersionSource) AsImageTemplateManagedImageSource() (*ImageTemplateManagedImageSource, bool) { 1248 return nil, false 1249} 1250 1251// AsImageTemplateSharedImageVersionSource is the BasicImageTemplateSource implementation for ImageTemplateSharedImageVersionSource. 1252func (itsivs ImageTemplateSharedImageVersionSource) AsImageTemplateSharedImageVersionSource() (*ImageTemplateSharedImageVersionSource, bool) { 1253 return &itsivs, true 1254} 1255 1256// AsImageTemplateSource is the BasicImageTemplateSource implementation for ImageTemplateSharedImageVersionSource. 1257func (itsivs ImageTemplateSharedImageVersionSource) AsImageTemplateSource() (*ImageTemplateSource, bool) { 1258 return nil, false 1259} 1260 1261// AsBasicImageTemplateSource is the BasicImageTemplateSource implementation for ImageTemplateSharedImageVersionSource. 1262func (itsivs ImageTemplateSharedImageVersionSource) AsBasicImageTemplateSource() (BasicImageTemplateSource, bool) { 1263 return &itsivs, true 1264} 1265 1266// ImageTemplateShellCustomizer runs a shell script during the customization phase (Linux). Corresponds to 1267// Packer shell provisioner. Exactly one of 'scriptUri' or 'inline' can be specified. 1268type ImageTemplateShellCustomizer struct { 1269 // ScriptURI - URI of the shell script to be run for customizing. It can be a github link, SAS URI for Azure Storage, etc 1270 ScriptURI *string `json:"scriptUri,omitempty"` 1271 // Sha256Checksum - SHA256 checksum of the shell script provided in the scriptUri field 1272 Sha256Checksum *string `json:"sha256Checksum,omitempty"` 1273 // Inline - Array of shell commands to execute 1274 Inline *[]string `json:"inline,omitempty"` 1275 // Name - Friendly Name to provide context on what this customization step does 1276 Name *string `json:"name,omitempty"` 1277 // Type - Possible values include: 'TypeImageTemplateCustomizer', 'TypeShell', 'TypeWindowsRestart', 'TypePowerShell', 'TypeFile' 1278 Type TypeBasicImageTemplateCustomizer `json:"type,omitempty"` 1279} 1280 1281// MarshalJSON is the custom marshaler for ImageTemplateShellCustomizer. 1282func (itsc ImageTemplateShellCustomizer) MarshalJSON() ([]byte, error) { 1283 itsc.Type = TypeShell 1284 objectMap := make(map[string]interface{}) 1285 if itsc.ScriptURI != nil { 1286 objectMap["scriptUri"] = itsc.ScriptURI 1287 } 1288 if itsc.Sha256Checksum != nil { 1289 objectMap["sha256Checksum"] = itsc.Sha256Checksum 1290 } 1291 if itsc.Inline != nil { 1292 objectMap["inline"] = itsc.Inline 1293 } 1294 if itsc.Name != nil { 1295 objectMap["name"] = itsc.Name 1296 } 1297 if itsc.Type != "" { 1298 objectMap["type"] = itsc.Type 1299 } 1300 return json.Marshal(objectMap) 1301} 1302 1303// AsImageTemplateShellCustomizer is the BasicImageTemplateCustomizer implementation for ImageTemplateShellCustomizer. 1304func (itsc ImageTemplateShellCustomizer) AsImageTemplateShellCustomizer() (*ImageTemplateShellCustomizer, bool) { 1305 return &itsc, true 1306} 1307 1308// AsImageTemplateRestartCustomizer is the BasicImageTemplateCustomizer implementation for ImageTemplateShellCustomizer. 1309func (itsc ImageTemplateShellCustomizer) AsImageTemplateRestartCustomizer() (*ImageTemplateRestartCustomizer, bool) { 1310 return nil, false 1311} 1312 1313// AsImageTemplatePowerShellCustomizer is the BasicImageTemplateCustomizer implementation for ImageTemplateShellCustomizer. 1314func (itsc ImageTemplateShellCustomizer) AsImageTemplatePowerShellCustomizer() (*ImageTemplatePowerShellCustomizer, bool) { 1315 return nil, false 1316} 1317 1318// AsImageTemplateFileCustomizer is the BasicImageTemplateCustomizer implementation for ImageTemplateShellCustomizer. 1319func (itsc ImageTemplateShellCustomizer) AsImageTemplateFileCustomizer() (*ImageTemplateFileCustomizer, bool) { 1320 return nil, false 1321} 1322 1323// AsImageTemplateCustomizer is the BasicImageTemplateCustomizer implementation for ImageTemplateShellCustomizer. 1324func (itsc ImageTemplateShellCustomizer) AsImageTemplateCustomizer() (*ImageTemplateCustomizer, bool) { 1325 return nil, false 1326} 1327 1328// AsBasicImageTemplateCustomizer is the BasicImageTemplateCustomizer implementation for ImageTemplateShellCustomizer. 1329func (itsc ImageTemplateShellCustomizer) AsBasicImageTemplateCustomizer() (BasicImageTemplateCustomizer, bool) { 1330 return &itsc, true 1331} 1332 1333// BasicImageTemplateSource describes a virtual machine image source for building, customizing and distributing 1334type BasicImageTemplateSource interface { 1335 AsImageTemplateIsoSource() (*ImageTemplateIsoSource, bool) 1336 AsImageTemplatePlatformImageSource() (*ImageTemplatePlatformImageSource, bool) 1337 AsImageTemplateManagedImageSource() (*ImageTemplateManagedImageSource, bool) 1338 AsImageTemplateSharedImageVersionSource() (*ImageTemplateSharedImageVersionSource, bool) 1339 AsImageTemplateSource() (*ImageTemplateSource, bool) 1340} 1341 1342// ImageTemplateSource describes a virtual machine image source for building, customizing and distributing 1343type ImageTemplateSource struct { 1344 // Type - Possible values include: 'TypeImageTemplateSource', 'TypeISO', 'TypePlatformImage', 'TypeManagedImage', 'TypeSharedImageVersion' 1345 Type Type `json:"type,omitempty"` 1346} 1347 1348func unmarshalBasicImageTemplateSource(body []byte) (BasicImageTemplateSource, error) { 1349 var m map[string]interface{} 1350 err := json.Unmarshal(body, &m) 1351 if err != nil { 1352 return nil, err 1353 } 1354 1355 switch m["type"] { 1356 case string(TypeISO): 1357 var itis ImageTemplateIsoSource 1358 err := json.Unmarshal(body, &itis) 1359 return itis, err 1360 case string(TypePlatformImage): 1361 var itpis ImageTemplatePlatformImageSource 1362 err := json.Unmarshal(body, &itpis) 1363 return itpis, err 1364 case string(TypeManagedImage): 1365 var itmis ImageTemplateManagedImageSource 1366 err := json.Unmarshal(body, &itmis) 1367 return itmis, err 1368 case string(TypeSharedImageVersion): 1369 var itsivs ImageTemplateSharedImageVersionSource 1370 err := json.Unmarshal(body, &itsivs) 1371 return itsivs, err 1372 default: 1373 var its ImageTemplateSource 1374 err := json.Unmarshal(body, &its) 1375 return its, err 1376 } 1377} 1378func unmarshalBasicImageTemplateSourceArray(body []byte) ([]BasicImageTemplateSource, error) { 1379 var rawMessages []*json.RawMessage 1380 err := json.Unmarshal(body, &rawMessages) 1381 if err != nil { 1382 return nil, err 1383 } 1384 1385 itsArray := make([]BasicImageTemplateSource, len(rawMessages)) 1386 1387 for index, rawMessage := range rawMessages { 1388 its, err := unmarshalBasicImageTemplateSource(*rawMessage) 1389 if err != nil { 1390 return nil, err 1391 } 1392 itsArray[index] = its 1393 } 1394 return itsArray, nil 1395} 1396 1397// MarshalJSON is the custom marshaler for ImageTemplateSource. 1398func (its ImageTemplateSource) MarshalJSON() ([]byte, error) { 1399 its.Type = TypeImageTemplateSource 1400 objectMap := make(map[string]interface{}) 1401 if its.Type != "" { 1402 objectMap["type"] = its.Type 1403 } 1404 return json.Marshal(objectMap) 1405} 1406 1407// AsImageTemplateIsoSource is the BasicImageTemplateSource implementation for ImageTemplateSource. 1408func (its ImageTemplateSource) AsImageTemplateIsoSource() (*ImageTemplateIsoSource, bool) { 1409 return nil, false 1410} 1411 1412// AsImageTemplatePlatformImageSource is the BasicImageTemplateSource implementation for ImageTemplateSource. 1413func (its ImageTemplateSource) AsImageTemplatePlatformImageSource() (*ImageTemplatePlatformImageSource, bool) { 1414 return nil, false 1415} 1416 1417// AsImageTemplateManagedImageSource is the BasicImageTemplateSource implementation for ImageTemplateSource. 1418func (its ImageTemplateSource) AsImageTemplateManagedImageSource() (*ImageTemplateManagedImageSource, bool) { 1419 return nil, false 1420} 1421 1422// AsImageTemplateSharedImageVersionSource is the BasicImageTemplateSource implementation for ImageTemplateSource. 1423func (its ImageTemplateSource) AsImageTemplateSharedImageVersionSource() (*ImageTemplateSharedImageVersionSource, bool) { 1424 return nil, false 1425} 1426 1427// AsImageTemplateSource is the BasicImageTemplateSource implementation for ImageTemplateSource. 1428func (its ImageTemplateSource) AsImageTemplateSource() (*ImageTemplateSource, bool) { 1429 return &its, true 1430} 1431 1432// AsBasicImageTemplateSource is the BasicImageTemplateSource implementation for ImageTemplateSource. 1433func (its ImageTemplateSource) AsBasicImageTemplateSource() (BasicImageTemplateSource, bool) { 1434 return &its, true 1435} 1436 1437// ImageTemplateUpdateParameters parameters for updating an image template. 1438type ImageTemplateUpdateParameters struct { 1439 // Identity - The identity of the image template, if configured. 1440 Identity *ImageTemplateIdentity `json:"identity,omitempty"` 1441 // Tags - The user-specified tags associated with the image template. 1442 Tags map[string]*string `json:"tags"` 1443} 1444 1445// MarshalJSON is the custom marshaler for ImageTemplateUpdateParameters. 1446func (itup ImageTemplateUpdateParameters) MarshalJSON() ([]byte, error) { 1447 objectMap := make(map[string]interface{}) 1448 if itup.Identity != nil { 1449 objectMap["identity"] = itup.Identity 1450 } 1451 if itup.Tags != nil { 1452 objectMap["tags"] = itup.Tags 1453 } 1454 return json.Marshal(objectMap) 1455} 1456 1457// ImageTemplateVhdDistributor distribute via VHD in a storage account. 1458type ImageTemplateVhdDistributor struct { 1459 // RunOutputName - The name to be used for the associated RunOutput. 1460 RunOutputName *string `json:"runOutputName,omitempty"` 1461 // ArtifactTags - Tags that will be applied to the artifact once it has been created/updated by the distributor. 1462 ArtifactTags map[string]*string `json:"artifactTags"` 1463 // Type - Possible values include: 'TypeBasicImageTemplateDistributorTypeImageTemplateDistributor', 'TypeBasicImageTemplateDistributorTypeManagedImage', 'TypeBasicImageTemplateDistributorTypeSharedImage', 'TypeBasicImageTemplateDistributorTypeVHD' 1464 Type TypeBasicImageTemplateDistributor `json:"type,omitempty"` 1465} 1466 1467// MarshalJSON is the custom marshaler for ImageTemplateVhdDistributor. 1468func (itvd ImageTemplateVhdDistributor) MarshalJSON() ([]byte, error) { 1469 itvd.Type = TypeBasicImageTemplateDistributorTypeVHD 1470 objectMap := make(map[string]interface{}) 1471 if itvd.RunOutputName != nil { 1472 objectMap["runOutputName"] = itvd.RunOutputName 1473 } 1474 if itvd.ArtifactTags != nil { 1475 objectMap["artifactTags"] = itvd.ArtifactTags 1476 } 1477 if itvd.Type != "" { 1478 objectMap["type"] = itvd.Type 1479 } 1480 return json.Marshal(objectMap) 1481} 1482 1483// AsImageTemplateManagedImageDistributor is the BasicImageTemplateDistributor implementation for ImageTemplateVhdDistributor. 1484func (itvd ImageTemplateVhdDistributor) AsImageTemplateManagedImageDistributor() (*ImageTemplateManagedImageDistributor, bool) { 1485 return nil, false 1486} 1487 1488// AsImageTemplateSharedImageDistributor is the BasicImageTemplateDistributor implementation for ImageTemplateVhdDistributor. 1489func (itvd ImageTemplateVhdDistributor) AsImageTemplateSharedImageDistributor() (*ImageTemplateSharedImageDistributor, bool) { 1490 return nil, false 1491} 1492 1493// AsImageTemplateVhdDistributor is the BasicImageTemplateDistributor implementation for ImageTemplateVhdDistributor. 1494func (itvd ImageTemplateVhdDistributor) AsImageTemplateVhdDistributor() (*ImageTemplateVhdDistributor, bool) { 1495 return &itvd, true 1496} 1497 1498// AsImageTemplateDistributor is the BasicImageTemplateDistributor implementation for ImageTemplateVhdDistributor. 1499func (itvd ImageTemplateVhdDistributor) AsImageTemplateDistributor() (*ImageTemplateDistributor, bool) { 1500 return nil, false 1501} 1502 1503// AsBasicImageTemplateDistributor is the BasicImageTemplateDistributor implementation for ImageTemplateVhdDistributor. 1504func (itvd ImageTemplateVhdDistributor) AsBasicImageTemplateDistributor() (BasicImageTemplateDistributor, bool) { 1505 return &itvd, true 1506} 1507 1508// ImageTemplateVMProfile describes the virtual machine used to build, customize and capture images 1509type ImageTemplateVMProfile struct { 1510 // VMSize - Size of the virtual machine used to build, customize and capture images. Omit or specify empty string to use the default (Standard_D1_v2). 1511 VMSize *string `json:"vmSize,omitempty"` 1512} 1513 1514// InnerError inner error details. 1515type InnerError struct { 1516 // ExceptionType - The exception type. 1517 ExceptionType *string `json:"exceptionType,omitempty"` 1518 // ErrorDetail - The internal error message or exception dump. 1519 ErrorDetail *string `json:"errorDetail,omitempty"` 1520} 1521 1522// Operation ... 1523type Operation struct { 1524 // Name - This is of the format {provider}/{resource}/{operation} 1525 Name *string `json:"name,omitempty"` 1526 Display *OperationDisplay `json:"display,omitempty"` 1527 Origin *string `json:"origin,omitempty"` 1528 Properties interface{} `json:"properties,omitempty"` 1529} 1530 1531// OperationDisplay ... 1532type OperationDisplay struct { 1533 Provider *string `json:"provider,omitempty"` 1534 // Operation - For example: read, write, delete, or listKeys/action 1535 Operation *string `json:"operation,omitempty"` 1536 Resource *string `json:"resource,omitempty"` 1537 Description *string `json:"description,omitempty"` 1538} 1539 1540// OperationListResult ... 1541type OperationListResult struct { 1542 autorest.Response `json:"-"` 1543 Value *[]Operation `json:"value,omitempty"` 1544 NextLink *string `json:"nextLink,omitempty"` 1545} 1546 1547// OperationListResultIterator provides access to a complete listing of Operation values. 1548type OperationListResultIterator struct { 1549 i int 1550 page OperationListResultPage 1551} 1552 1553// NextWithContext advances to the next value. If there was an error making 1554// the request the iterator does not advance and the error is returned. 1555func (iter *OperationListResultIterator) NextWithContext(ctx context.Context) (err error) { 1556 if tracing.IsEnabled() { 1557 ctx = tracing.StartSpan(ctx, fqdn+"/OperationListResultIterator.NextWithContext") 1558 defer func() { 1559 sc := -1 1560 if iter.Response().Response.Response != nil { 1561 sc = iter.Response().Response.Response.StatusCode 1562 } 1563 tracing.EndSpan(ctx, sc, err) 1564 }() 1565 } 1566 iter.i++ 1567 if iter.i < len(iter.page.Values()) { 1568 return nil 1569 } 1570 err = iter.page.NextWithContext(ctx) 1571 if err != nil { 1572 iter.i-- 1573 return err 1574 } 1575 iter.i = 0 1576 return nil 1577} 1578 1579// Next advances to the next value. If there was an error making 1580// the request the iterator does not advance and the error is returned. 1581// Deprecated: Use NextWithContext() instead. 1582func (iter *OperationListResultIterator) Next() error { 1583 return iter.NextWithContext(context.Background()) 1584} 1585 1586// NotDone returns true if the enumeration should be started or is not yet complete. 1587func (iter OperationListResultIterator) NotDone() bool { 1588 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 1589} 1590 1591// Response returns the raw server response from the last page request. 1592func (iter OperationListResultIterator) Response() OperationListResult { 1593 return iter.page.Response() 1594} 1595 1596// Value returns the current value or a zero-initialized value if the 1597// iterator has advanced beyond the end of the collection. 1598func (iter OperationListResultIterator) Value() Operation { 1599 if !iter.page.NotDone() { 1600 return Operation{} 1601 } 1602 return iter.page.Values()[iter.i] 1603} 1604 1605// Creates a new instance of the OperationListResultIterator type. 1606func NewOperationListResultIterator(page OperationListResultPage) OperationListResultIterator { 1607 return OperationListResultIterator{page: page} 1608} 1609 1610// IsEmpty returns true if the ListResult contains no values. 1611func (olr OperationListResult) IsEmpty() bool { 1612 return olr.Value == nil || len(*olr.Value) == 0 1613} 1614 1615// hasNextLink returns true if the NextLink is not empty. 1616func (olr OperationListResult) hasNextLink() bool { 1617 return olr.NextLink != nil && len(*olr.NextLink) != 0 1618} 1619 1620// operationListResultPreparer prepares a request to retrieve the next set of results. 1621// It returns nil if no more results exist. 1622func (olr OperationListResult) operationListResultPreparer(ctx context.Context) (*http.Request, error) { 1623 if !olr.hasNextLink() { 1624 return nil, nil 1625 } 1626 return autorest.Prepare((&http.Request{}).WithContext(ctx), 1627 autorest.AsJSON(), 1628 autorest.AsGet(), 1629 autorest.WithBaseURL(to.String(olr.NextLink))) 1630} 1631 1632// OperationListResultPage contains a page of Operation values. 1633type OperationListResultPage struct { 1634 fn func(context.Context, OperationListResult) (OperationListResult, error) 1635 olr OperationListResult 1636} 1637 1638// NextWithContext advances to the next page of values. If there was an error making 1639// the request the page does not advance and the error is returned. 1640func (page *OperationListResultPage) NextWithContext(ctx context.Context) (err error) { 1641 if tracing.IsEnabled() { 1642 ctx = tracing.StartSpan(ctx, fqdn+"/OperationListResultPage.NextWithContext") 1643 defer func() { 1644 sc := -1 1645 if page.Response().Response.Response != nil { 1646 sc = page.Response().Response.Response.StatusCode 1647 } 1648 tracing.EndSpan(ctx, sc, err) 1649 }() 1650 } 1651 for { 1652 next, err := page.fn(ctx, page.olr) 1653 if err != nil { 1654 return err 1655 } 1656 page.olr = next 1657 if !next.hasNextLink() || !next.IsEmpty() { 1658 break 1659 } 1660 } 1661 return nil 1662} 1663 1664// Next advances to the next page of values. If there was an error making 1665// the request the page does not advance and the error is returned. 1666// Deprecated: Use NextWithContext() instead. 1667func (page *OperationListResultPage) Next() error { 1668 return page.NextWithContext(context.Background()) 1669} 1670 1671// NotDone returns true if the page enumeration should be started or is not yet complete. 1672func (page OperationListResultPage) NotDone() bool { 1673 return !page.olr.IsEmpty() 1674} 1675 1676// Response returns the raw server response from the last page request. 1677func (page OperationListResultPage) Response() OperationListResult { 1678 return page.olr 1679} 1680 1681// Values returns the slice of values for the current page or nil if there are no values. 1682func (page OperationListResultPage) Values() []Operation { 1683 if page.olr.IsEmpty() { 1684 return nil 1685 } 1686 return *page.olr.Value 1687} 1688 1689// Creates a new instance of the OperationListResultPage type. 1690func NewOperationListResultPage(cur OperationListResult, getNextPage func(context.Context, OperationListResult) (OperationListResult, error)) OperationListResultPage { 1691 return OperationListResultPage{ 1692 fn: getNextPage, 1693 olr: cur, 1694 } 1695} 1696 1697// ProvisioningError describes the error happened when create or update an image template 1698type ProvisioningError struct { 1699 // ProvisioningErrorCode - Error code of the provisioning failure. Possible values include: 'BadSourceType', 'BadPIRSource', 'BadISOSource', 'BadManagedImageSource', 'BadSharedImageVersionSource', 'BadCustomizerType', 'UnsupportedCustomizerType', 'NoCustomizerScript', 'BadDistributeType', 'BadSharedImageDistribute', 'ServerError', 'Other' 1700 ProvisioningErrorCode ProvisioningErrorCode `json:"provisioningErrorCode,omitempty"` 1701 // Message - Verbose error message about the provisioning failure 1702 Message *string `json:"message,omitempty"` 1703} 1704 1705// Resource the Resource model definition. 1706type Resource struct { 1707 // ID - READ-ONLY; Resource Id 1708 ID *string `json:"id,omitempty"` 1709 // Name - READ-ONLY; Resource name 1710 Name *string `json:"name,omitempty"` 1711 // Type - READ-ONLY; Resource type 1712 Type *string `json:"type,omitempty"` 1713 // Location - Resource location 1714 Location *string `json:"location,omitempty"` 1715 // Tags - Resource tags 1716 Tags map[string]*string `json:"tags"` 1717} 1718 1719// MarshalJSON is the custom marshaler for Resource. 1720func (r Resource) MarshalJSON() ([]byte, error) { 1721 objectMap := make(map[string]interface{}) 1722 if r.Location != nil { 1723 objectMap["location"] = r.Location 1724 } 1725 if r.Tags != nil { 1726 objectMap["tags"] = r.Tags 1727 } 1728 return json.Marshal(objectMap) 1729} 1730 1731// RunOutput represents an output that was created by running an image template. 1732type RunOutput struct { 1733 autorest.Response `json:"-"` 1734 // RunOutputProperties - The properties of the run output 1735 *RunOutputProperties `json:"properties,omitempty"` 1736 // ID - READ-ONLY; Resource Id 1737 ID *string `json:"id,omitempty"` 1738 // Name - Resource name 1739 Name *string `json:"name,omitempty"` 1740 // Type - READ-ONLY; Resource type 1741 Type *string `json:"type,omitempty"` 1742} 1743 1744// MarshalJSON is the custom marshaler for RunOutput. 1745func (ro RunOutput) MarshalJSON() ([]byte, error) { 1746 objectMap := make(map[string]interface{}) 1747 if ro.RunOutputProperties != nil { 1748 objectMap["properties"] = ro.RunOutputProperties 1749 } 1750 if ro.Name != nil { 1751 objectMap["name"] = ro.Name 1752 } 1753 return json.Marshal(objectMap) 1754} 1755 1756// UnmarshalJSON is the custom unmarshaler for RunOutput struct. 1757func (ro *RunOutput) UnmarshalJSON(body []byte) error { 1758 var m map[string]*json.RawMessage 1759 err := json.Unmarshal(body, &m) 1760 if err != nil { 1761 return err 1762 } 1763 for k, v := range m { 1764 switch k { 1765 case "properties": 1766 if v != nil { 1767 var runOutputProperties RunOutputProperties 1768 err = json.Unmarshal(*v, &runOutputProperties) 1769 if err != nil { 1770 return err 1771 } 1772 ro.RunOutputProperties = &runOutputProperties 1773 } 1774 case "id": 1775 if v != nil { 1776 var ID string 1777 err = json.Unmarshal(*v, &ID) 1778 if err != nil { 1779 return err 1780 } 1781 ro.ID = &ID 1782 } 1783 case "name": 1784 if v != nil { 1785 var name string 1786 err = json.Unmarshal(*v, &name) 1787 if err != nil { 1788 return err 1789 } 1790 ro.Name = &name 1791 } 1792 case "type": 1793 if v != nil { 1794 var typeVar string 1795 err = json.Unmarshal(*v, &typeVar) 1796 if err != nil { 1797 return err 1798 } 1799 ro.Type = &typeVar 1800 } 1801 } 1802 } 1803 1804 return nil 1805} 1806 1807// RunOutputCollection the result of List run outputs operation 1808type RunOutputCollection struct { 1809 autorest.Response `json:"-"` 1810 // Value - An array of run outputs 1811 Value *[]RunOutput `json:"value,omitempty"` 1812 // NextLink - The continuation token. 1813 NextLink *string `json:"nextLink,omitempty"` 1814} 1815 1816// RunOutputCollectionIterator provides access to a complete listing of RunOutput values. 1817type RunOutputCollectionIterator struct { 1818 i int 1819 page RunOutputCollectionPage 1820} 1821 1822// NextWithContext advances to the next value. If there was an error making 1823// the request the iterator does not advance and the error is returned. 1824func (iter *RunOutputCollectionIterator) NextWithContext(ctx context.Context) (err error) { 1825 if tracing.IsEnabled() { 1826 ctx = tracing.StartSpan(ctx, fqdn+"/RunOutputCollectionIterator.NextWithContext") 1827 defer func() { 1828 sc := -1 1829 if iter.Response().Response.Response != nil { 1830 sc = iter.Response().Response.Response.StatusCode 1831 } 1832 tracing.EndSpan(ctx, sc, err) 1833 }() 1834 } 1835 iter.i++ 1836 if iter.i < len(iter.page.Values()) { 1837 return nil 1838 } 1839 err = iter.page.NextWithContext(ctx) 1840 if err != nil { 1841 iter.i-- 1842 return err 1843 } 1844 iter.i = 0 1845 return nil 1846} 1847 1848// Next advances to the next value. If there was an error making 1849// the request the iterator does not advance and the error is returned. 1850// Deprecated: Use NextWithContext() instead. 1851func (iter *RunOutputCollectionIterator) Next() error { 1852 return iter.NextWithContext(context.Background()) 1853} 1854 1855// NotDone returns true if the enumeration should be started or is not yet complete. 1856func (iter RunOutputCollectionIterator) NotDone() bool { 1857 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 1858} 1859 1860// Response returns the raw server response from the last page request. 1861func (iter RunOutputCollectionIterator) Response() RunOutputCollection { 1862 return iter.page.Response() 1863} 1864 1865// Value returns the current value or a zero-initialized value if the 1866// iterator has advanced beyond the end of the collection. 1867func (iter RunOutputCollectionIterator) Value() RunOutput { 1868 if !iter.page.NotDone() { 1869 return RunOutput{} 1870 } 1871 return iter.page.Values()[iter.i] 1872} 1873 1874// Creates a new instance of the RunOutputCollectionIterator type. 1875func NewRunOutputCollectionIterator(page RunOutputCollectionPage) RunOutputCollectionIterator { 1876 return RunOutputCollectionIterator{page: page} 1877} 1878 1879// IsEmpty returns true if the ListResult contains no values. 1880func (roc RunOutputCollection) IsEmpty() bool { 1881 return roc.Value == nil || len(*roc.Value) == 0 1882} 1883 1884// hasNextLink returns true if the NextLink is not empty. 1885func (roc RunOutputCollection) hasNextLink() bool { 1886 return roc.NextLink != nil && len(*roc.NextLink) != 0 1887} 1888 1889// runOutputCollectionPreparer prepares a request to retrieve the next set of results. 1890// It returns nil if no more results exist. 1891func (roc RunOutputCollection) runOutputCollectionPreparer(ctx context.Context) (*http.Request, error) { 1892 if !roc.hasNextLink() { 1893 return nil, nil 1894 } 1895 return autorest.Prepare((&http.Request{}).WithContext(ctx), 1896 autorest.AsJSON(), 1897 autorest.AsGet(), 1898 autorest.WithBaseURL(to.String(roc.NextLink))) 1899} 1900 1901// RunOutputCollectionPage contains a page of RunOutput values. 1902type RunOutputCollectionPage struct { 1903 fn func(context.Context, RunOutputCollection) (RunOutputCollection, error) 1904 roc RunOutputCollection 1905} 1906 1907// NextWithContext advances to the next page of values. If there was an error making 1908// the request the page does not advance and the error is returned. 1909func (page *RunOutputCollectionPage) NextWithContext(ctx context.Context) (err error) { 1910 if tracing.IsEnabled() { 1911 ctx = tracing.StartSpan(ctx, fqdn+"/RunOutputCollectionPage.NextWithContext") 1912 defer func() { 1913 sc := -1 1914 if page.Response().Response.Response != nil { 1915 sc = page.Response().Response.Response.StatusCode 1916 } 1917 tracing.EndSpan(ctx, sc, err) 1918 }() 1919 } 1920 for { 1921 next, err := page.fn(ctx, page.roc) 1922 if err != nil { 1923 return err 1924 } 1925 page.roc = next 1926 if !next.hasNextLink() || !next.IsEmpty() { 1927 break 1928 } 1929 } 1930 return nil 1931} 1932 1933// Next advances to the next page of values. If there was an error making 1934// the request the page does not advance and the error is returned. 1935// Deprecated: Use NextWithContext() instead. 1936func (page *RunOutputCollectionPage) Next() error { 1937 return page.NextWithContext(context.Background()) 1938} 1939 1940// NotDone returns true if the page enumeration should be started or is not yet complete. 1941func (page RunOutputCollectionPage) NotDone() bool { 1942 return !page.roc.IsEmpty() 1943} 1944 1945// Response returns the raw server response from the last page request. 1946func (page RunOutputCollectionPage) Response() RunOutputCollection { 1947 return page.roc 1948} 1949 1950// Values returns the slice of values for the current page or nil if there are no values. 1951func (page RunOutputCollectionPage) Values() []RunOutput { 1952 if page.roc.IsEmpty() { 1953 return nil 1954 } 1955 return *page.roc.Value 1956} 1957 1958// Creates a new instance of the RunOutputCollectionPage type. 1959func NewRunOutputCollectionPage(cur RunOutputCollection, getNextPage func(context.Context, RunOutputCollection) (RunOutputCollection, error)) RunOutputCollectionPage { 1960 return RunOutputCollectionPage{ 1961 fn: getNextPage, 1962 roc: cur, 1963 } 1964} 1965 1966// RunOutputProperties describes the properties of a run output 1967type RunOutputProperties struct { 1968 // ArtifactID - The resource id of the artifact. 1969 ArtifactID *string `json:"artifactId,omitempty"` 1970 // ArtifactURI - The location URI of the artifact. 1971 ArtifactURI *string `json:"artifactUri,omitempty"` 1972 // ProvisioningState - READ-ONLY; Provisioning state of the resource. Possible values include: 'Creating', 'Updating', 'Succeeded', 'Failed', 'Deleting' 1973 ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` 1974} 1975 1976// MarshalJSON is the custom marshaler for RunOutputProperties. 1977func (rop RunOutputProperties) MarshalJSON() ([]byte, error) { 1978 objectMap := make(map[string]interface{}) 1979 if rop.ArtifactID != nil { 1980 objectMap["artifactId"] = rop.ArtifactID 1981 } 1982 if rop.ArtifactURI != nil { 1983 objectMap["artifactUri"] = rop.ArtifactURI 1984 } 1985 return json.Marshal(objectMap) 1986} 1987 1988// SubResource the Sub Resource model definition. 1989type SubResource struct { 1990 // ID - READ-ONLY; Resource Id 1991 ID *string `json:"id,omitempty"` 1992 // Name - Resource name 1993 Name *string `json:"name,omitempty"` 1994 // Type - READ-ONLY; Resource type 1995 Type *string `json:"type,omitempty"` 1996} 1997 1998// MarshalJSON is the custom marshaler for SubResource. 1999func (sr SubResource) MarshalJSON() ([]byte, error) { 2000 objectMap := make(map[string]interface{}) 2001 if sr.Name != nil { 2002 objectMap["name"] = sr.Name 2003 } 2004 return json.Marshal(objectMap) 2005} 2006 2007// VirtualMachineImageTemplatesCreateOrUpdateFuture an abstraction for monitoring and retrieving the 2008// results of a long-running operation. 2009type VirtualMachineImageTemplatesCreateOrUpdateFuture struct { 2010 azure.FutureAPI 2011 // Result returns the result of the asynchronous operation. 2012 // If the operation has not completed it will return an error. 2013 Result func(VirtualMachineImageTemplatesClient) (ImageTemplate, error) 2014} 2015 2016// UnmarshalJSON is the custom unmarshaller for CreateFuture. 2017func (future *VirtualMachineImageTemplatesCreateOrUpdateFuture) UnmarshalJSON(body []byte) error { 2018 var azFuture azure.Future 2019 if err := json.Unmarshal(body, &azFuture); err != nil { 2020 return err 2021 } 2022 future.FutureAPI = &azFuture 2023 future.Result = future.result 2024 return nil 2025} 2026 2027// result is the default implementation for VirtualMachineImageTemplatesCreateOrUpdateFuture.Result. 2028func (future *VirtualMachineImageTemplatesCreateOrUpdateFuture) result(client VirtualMachineImageTemplatesClient) (it ImageTemplate, err error) { 2029 var done bool 2030 done, err = future.DoneWithContext(context.Background(), client) 2031 if err != nil { 2032 err = autorest.NewErrorWithError(err, "virtualmachineimagebuilder.VirtualMachineImageTemplatesCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") 2033 return 2034 } 2035 if !done { 2036 it.Response.Response = future.Response() 2037 err = azure.NewAsyncOpIncompleteError("virtualmachineimagebuilder.VirtualMachineImageTemplatesCreateOrUpdateFuture") 2038 return 2039 } 2040 sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 2041 if it.Response.Response, err = future.GetResult(sender); err == nil && it.Response.Response.StatusCode != http.StatusNoContent { 2042 it, err = client.CreateOrUpdateResponder(it.Response.Response) 2043 if err != nil { 2044 err = autorest.NewErrorWithError(err, "virtualmachineimagebuilder.VirtualMachineImageTemplatesCreateOrUpdateFuture", "Result", it.Response.Response, "Failure responding to request") 2045 } 2046 } 2047 return 2048} 2049 2050// VirtualMachineImageTemplatesDeleteFuture an abstraction for monitoring and retrieving the results of a 2051// long-running operation. 2052type VirtualMachineImageTemplatesDeleteFuture struct { 2053 azure.FutureAPI 2054 // Result returns the result of the asynchronous operation. 2055 // If the operation has not completed it will return an error. 2056 Result func(VirtualMachineImageTemplatesClient) (autorest.Response, error) 2057} 2058 2059// UnmarshalJSON is the custom unmarshaller for CreateFuture. 2060func (future *VirtualMachineImageTemplatesDeleteFuture) UnmarshalJSON(body []byte) error { 2061 var azFuture azure.Future 2062 if err := json.Unmarshal(body, &azFuture); err != nil { 2063 return err 2064 } 2065 future.FutureAPI = &azFuture 2066 future.Result = future.result 2067 return nil 2068} 2069 2070// result is the default implementation for VirtualMachineImageTemplatesDeleteFuture.Result. 2071func (future *VirtualMachineImageTemplatesDeleteFuture) result(client VirtualMachineImageTemplatesClient) (ar autorest.Response, err error) { 2072 var done bool 2073 done, err = future.DoneWithContext(context.Background(), client) 2074 if err != nil { 2075 err = autorest.NewErrorWithError(err, "virtualmachineimagebuilder.VirtualMachineImageTemplatesDeleteFuture", "Result", future.Response(), "Polling failure") 2076 return 2077 } 2078 if !done { 2079 ar.Response = future.Response() 2080 err = azure.NewAsyncOpIncompleteError("virtualmachineimagebuilder.VirtualMachineImageTemplatesDeleteFuture") 2081 return 2082 } 2083 ar.Response = future.Response() 2084 return 2085} 2086 2087// VirtualMachineImageTemplatesRunFuture an abstraction for monitoring and retrieving the results of a 2088// long-running operation. 2089type VirtualMachineImageTemplatesRunFuture struct { 2090 azure.FutureAPI 2091 // Result returns the result of the asynchronous operation. 2092 // If the operation has not completed it will return an error. 2093 Result func(VirtualMachineImageTemplatesClient) (autorest.Response, error) 2094} 2095 2096// UnmarshalJSON is the custom unmarshaller for CreateFuture. 2097func (future *VirtualMachineImageTemplatesRunFuture) UnmarshalJSON(body []byte) error { 2098 var azFuture azure.Future 2099 if err := json.Unmarshal(body, &azFuture); err != nil { 2100 return err 2101 } 2102 future.FutureAPI = &azFuture 2103 future.Result = future.result 2104 return nil 2105} 2106 2107// result is the default implementation for VirtualMachineImageTemplatesRunFuture.Result. 2108func (future *VirtualMachineImageTemplatesRunFuture) result(client VirtualMachineImageTemplatesClient) (ar autorest.Response, err error) { 2109 var done bool 2110 done, err = future.DoneWithContext(context.Background(), client) 2111 if err != nil { 2112 err = autorest.NewErrorWithError(err, "virtualmachineimagebuilder.VirtualMachineImageTemplatesRunFuture", "Result", future.Response(), "Polling failure") 2113 return 2114 } 2115 if !done { 2116 ar.Response = future.Response() 2117 err = azure.NewAsyncOpIncompleteError("virtualmachineimagebuilder.VirtualMachineImageTemplatesRunFuture") 2118 return 2119 } 2120 ar.Response = future.Response() 2121 return 2122} 2123 2124// VirtualMachineImageTemplatesUpdateFuture an abstraction for monitoring and retrieving the results of a 2125// long-running operation. 2126type VirtualMachineImageTemplatesUpdateFuture struct { 2127 azure.FutureAPI 2128 // Result returns the result of the asynchronous operation. 2129 // If the operation has not completed it will return an error. 2130 Result func(VirtualMachineImageTemplatesClient) (ImageTemplate, error) 2131} 2132 2133// UnmarshalJSON is the custom unmarshaller for CreateFuture. 2134func (future *VirtualMachineImageTemplatesUpdateFuture) UnmarshalJSON(body []byte) error { 2135 var azFuture azure.Future 2136 if err := json.Unmarshal(body, &azFuture); err != nil { 2137 return err 2138 } 2139 future.FutureAPI = &azFuture 2140 future.Result = future.result 2141 return nil 2142} 2143 2144// result is the default implementation for VirtualMachineImageTemplatesUpdateFuture.Result. 2145func (future *VirtualMachineImageTemplatesUpdateFuture) result(client VirtualMachineImageTemplatesClient) (it ImageTemplate, err error) { 2146 var done bool 2147 done, err = future.DoneWithContext(context.Background(), client) 2148 if err != nil { 2149 err = autorest.NewErrorWithError(err, "virtualmachineimagebuilder.VirtualMachineImageTemplatesUpdateFuture", "Result", future.Response(), "Polling failure") 2150 return 2151 } 2152 if !done { 2153 it.Response.Response = future.Response() 2154 err = azure.NewAsyncOpIncompleteError("virtualmachineimagebuilder.VirtualMachineImageTemplatesUpdateFuture") 2155 return 2156 } 2157 sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 2158 if it.Response.Response, err = future.GetResult(sender); err == nil && it.Response.Response.StatusCode != http.StatusNoContent { 2159 it, err = client.UpdateResponder(it.Response.Response) 2160 if err != nil { 2161 err = autorest.NewErrorWithError(err, "virtualmachineimagebuilder.VirtualMachineImageTemplatesUpdateFuture", "Result", it.Response.Response, "Failure responding to request") 2162 } 2163 } 2164 return 2165} 2166