1// +build go1.13
2
3// Copyright (c) Microsoft Corporation. All rights reserved.
4// Licensed under the MIT License. See License.txt in the project root for license information.
5// Code generated by Microsoft (R) AutoRest Code Generator.
6// Changes may cause incorrect behavior and will be lost if the code is regenerated.
7
8package armcompute
9
10import (
11	"context"
12	"encoding/json"
13	"fmt"
14	"net/http"
15	"time"
16)
17
18// The API entity reference.
19type APIEntityReference struct {
20	// The ARM resource id in the form of /subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/…
21	ID *string `json:"id,omitempty"`
22}
23
24// Api error.
25type APIError struct {
26	// The error code.
27	Code *string `json:"code,omitempty"`
28
29	// The Api error details
30	Details *[]APIErrorBase `json:"details,omitempty"`
31
32	// The Api inner error
33	Innererror *InnerError `json:"innererror,omitempty"`
34
35	// The error message.
36	Message *string `json:"message,omitempty"`
37
38	// The target of the particular error.
39	Target *string `json:"target,omitempty"`
40}
41
42// Api error base.
43type APIErrorBase struct {
44	// The error code.
45	Code *string `json:"code,omitempty"`
46
47	// The error message.
48	Message *string `json:"message,omitempty"`
49
50	// The target of the particular error.
51	Target *string `json:"target,omitempty"`
52}
53
54// A disk access SAS uri.
55type AccessURI struct {
56	// READ-ONLY; A SAS uri for accessing a disk.
57	AccessSas *string `json:"accessSAS,omitempty" azure:"ro"`
58}
59
60// AccessURIPollerResponse is the response envelope for operations that asynchronously return a AccessURI type.
61type AccessURIPollerResponse struct {
62	// PollUntilDone will poll the service endpoint until a terminal state is reached or an error is received
63	PollUntilDone func(ctx context.Context, frequency time.Duration) (AccessURIResponse, error)
64
65	// Poller contains an initialized poller.
66	Poller AccessURIPoller
67
68	// RawResponse contains the underlying HTTP response.
69	RawResponse *http.Response
70}
71
72// AccessURIResponse is the response envelope for operations that return a AccessURI type.
73type AccessURIResponse struct {
74	// A disk access SAS uri.
75	AccessURI *AccessURI
76
77	// RawResponse contains the underlying HTTP response.
78	RawResponse *http.Response
79}
80
81// Enables or disables a capability on the virtual machine or virtual machine scale set.
82type AdditionalCapabilities struct {
83	// The flag that enables or disables a capability to have one or more managed data disks with UltraSSDLRS storage account type on the VM or VMSS. Managed
84	// disks with storage account type UltraSSDLRS can
85	// be added to a virtual machine or virtual machine scale set only if this property is enabled.
86	UltraSsdEnabled *bool `json:"ultraSSDEnabled,omitempty"`
87}
88
89// Specifies additional XML formatted information that can be included in the Unattend.xml file, which is used by Windows Setup. Contents are defined by
90// setting name, component name, and the pass in
91// which the content is applied.
92type AdditionalUnattendContent struct {
93	// The component name. Currently, the only allowable value is Microsoft-Windows-Shell-Setup.
94	ComponentName *string `json:"componentName,omitempty"`
95
96	// Specifies the XML formatted content that is added to the unattend.xml file for the specified path and component. The XML must be less than 4KB and must
97	// include the root element for the setting or
98	// feature that is being inserted.
99	Content *string `json:"content,omitempty"`
100
101	// The pass name. Currently, the only allowable value is OobeSystem.
102	PassName *string `json:"passName,omitempty"`
103
104	// Specifies the name of the setting to which the content applies. Possible values are: FirstLogonCommands and AutoLogon.
105	SettingName *SettingNames `json:"settingName,omitempty"`
106}
107
108// The configuration parameters used for performing automatic OS upgrade.
109type AutomaticOSUpgradePolicy struct {
110	// Whether OS image rollback feature should be disabled. Default value is false.
111	DisableAutomaticRollback *bool `json:"disableAutomaticRollback,omitempty"`
112
113	// Indicates whether OS upgrades should automatically be applied to scale set instances in a rolling fashion when a newer version of the OS image becomes
114	// available. Default value is false.
115	// If this is set to true for Windows based scale sets, enableAutomaticUpdates
116	// [https://docs.microsoft.com/dotnet/api/microsoft.azure.management.compute.models.windowsconfiguration.enableautomaticupdates?view=azure-dotnet] is automatically
117	// set to false and cannot be set to true.
118	EnableAutomaticOSUpgrade *bool `json:"enableAutomaticOSUpgrade,omitempty"`
119}
120
121// Describes automatic OS upgrade properties on the image.
122type AutomaticOSUpgradeProperties struct {
123	// Specifies whether automatic OS upgrade is supported on the image.
124	AutomaticOSUpgradeSupported *bool `json:"automaticOSUpgradeSupported,omitempty"`
125}
126
127// Specifies the configuration parameters for automatic repairs on the virtual machine scale set.
128type AutomaticRepairsPolicy struct {
129	// Specifies whether automatic repairs should be enabled on the virtual machine scale set. The default value is false.
130	Enabled *bool `json:"enabled,omitempty"`
131
132	// The amount of time for which automatic repairs are suspended due to a state change on VM. The grace time starts after the state change has completed.
133	// This helps avoid premature or accidental repairs.
134	// The time duration should be specified in ISO 8601 format. The minimum allowed grace period is 30 minutes (PT30M), which is also the default value. The
135	// maximum allowed grace period is 90 minutes
136	// (PT90M).
137	GracePeriod *string `json:"gracePeriod,omitempty"`
138}
139
140// Specifies information about the availability set that the virtual machine should be assigned to. Virtual machines specified in the same availability
141// set are allocated to different nodes to maximize
142// availability. For more information about availability sets, see Manage the availability of virtual machines
143// [https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-manage-availability?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json].
144// For more information on Azure planned maintenance, see Planned maintenance for virtual machines in Azure
145// [https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-planned-maintenance?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json]
146// Currently, a VM can only be added to availability set at creation time. An existing VM cannot be added to an availability set.
147type AvailabilitySet struct {
148	Resource
149	// The instance view of a resource.
150	Properties *AvailabilitySetProperties `json:"properties,omitempty"`
151
152	// Sku of the availability set, only name is required to be set. See AvailabilitySetSkuTypes for possible set of values. Use 'Aligned' for virtual machines
153	// with managed disks and 'Classic' for virtual
154	// machines with unmanaged disks. Default value is 'Classic'.
155	SKU *SKU `json:"sku,omitempty"`
156}
157
158// The List Availability Set operation response.
159type AvailabilitySetListResult struct {
160	// The URI to fetch the next page of AvailabilitySets. Call ListNext() with this URI to fetch the next page of AvailabilitySets.
161	NextLink *string `json:"nextLink,omitempty"`
162
163	// The list of availability sets
164	Value *[]AvailabilitySet `json:"value,omitempty"`
165}
166
167// AvailabilitySetListResultResponse is the response envelope for operations that return a AvailabilitySetListResult type.
168type AvailabilitySetListResultResponse struct {
169	// The List Availability Set operation response.
170	AvailabilitySetListResult *AvailabilitySetListResult
171
172	// RawResponse contains the underlying HTTP response.
173	RawResponse *http.Response
174}
175
176// The instance view of a resource.
177type AvailabilitySetProperties struct {
178	// Fault Domain count.
179	PlatformFaultDomainCount *int32 `json:"platformFaultDomainCount,omitempty"`
180
181	// Update Domain count.
182	PlatformUpdateDomainCount *int32 `json:"platformUpdateDomainCount,omitempty"`
183
184	// Specifies information about the proximity placement group that the availability set should be assigned to.
185	// Minimum api-version: 2018-04-01.
186	ProximityPlacementGroup *SubResource `json:"proximityPlacementGroup,omitempty"`
187
188	// READ-ONLY; The resource status information.
189	Statuses *[]InstanceViewStatus `json:"statuses,omitempty" azure:"ro"`
190
191	// A list of references to all virtual machines in the availability set.
192	VirtualMachines *[]SubResource `json:"virtualMachines,omitempty"`
193}
194
195// AvailabilitySetResponse is the response envelope for operations that return a AvailabilitySet type.
196type AvailabilitySetResponse struct {
197	// Specifies information about the availability set that the virtual machine should be assigned to. Virtual machines specified in the same availability
198	// set are allocated to different nodes to maximize availability. For more information about availability sets, see [Manage the availability of virtual
199	// machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-manage-availability?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json).
200	// <br><br> For more information on Azure planned maintenance, see [Planned maintenance for virtual machines in Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-planned-maintenance?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json)
201	// <br><br> Currently, a VM can only be added to availability set at creation time. An existing VM cannot be added to an availability set.
202	AvailabilitySet *AvailabilitySet
203
204	// RawResponse contains the underlying HTTP response.
205	RawResponse *http.Response
206}
207
208// Specifies information about the availability set that the virtual machine should be assigned to. Only tags may be updated.
209type AvailabilitySetUpdate struct {
210	UpdateResource
211	// The instance view of a resource.
212	Properties *AvailabilitySetProperties `json:"properties,omitempty"`
213
214	// Sku of the availability set
215	SKU *SKU `json:"sku,omitempty"`
216}
217
218// AvailabilitySetsCreateOrUpdateOptions contains the optional parameters for the AvailabilitySets.CreateOrUpdate method.
219type AvailabilitySetsCreateOrUpdateOptions struct {
220	// placeholder for future optional parameters
221}
222
223// AvailabilitySetsDeleteOptions contains the optional parameters for the AvailabilitySets.Delete method.
224type AvailabilitySetsDeleteOptions struct {
225	// placeholder for future optional parameters
226}
227
228// AvailabilitySetsGetOptions contains the optional parameters for the AvailabilitySets.Get method.
229type AvailabilitySetsGetOptions struct {
230	// placeholder for future optional parameters
231}
232
233// AvailabilitySetsListAvailableSizesOptions contains the optional parameters for the AvailabilitySets.ListAvailableSizes method.
234type AvailabilitySetsListAvailableSizesOptions struct {
235	// placeholder for future optional parameters
236}
237
238// AvailabilitySetsListBySubscriptionOptions contains the optional parameters for the AvailabilitySets.ListBySubscription method.
239type AvailabilitySetsListBySubscriptionOptions struct {
240	// The expand expression to apply to the operation. Allowed values are 'instanceView'.
241	Expand *string
242}
243
244// AvailabilitySetsListOptions contains the optional parameters for the AvailabilitySets.List method.
245type AvailabilitySetsListOptions struct {
246	// placeholder for future optional parameters
247}
248
249// AvailabilitySetsUpdateOptions contains the optional parameters for the AvailabilitySets.Update method.
250type AvailabilitySetsUpdateOptions struct {
251	// placeholder for future optional parameters
252}
253
254// Describes the properties of an virtual machine instance view for available patch summary.
255type AvailablePatchSummary struct {
256	// READ-ONLY; The activity ID of the operation that produced this result. It is used to correlate across CRP and extension logs.
257	AssessmentActivityID *string `json:"assessmentActivityId,omitempty" azure:"ro"`
258
259	// READ-ONLY; The number of critical or security patches that have been detected as available and not yet installed.
260	CriticalAndSecurityPatchCount *int32 `json:"criticalAndSecurityPatchCount,omitempty" azure:"ro"`
261
262	// READ-ONLY; The errors that were encountered during execution of the operation. The details array contains the list of them.
263	Error *APIError `json:"error,omitempty" azure:"ro"`
264
265	// READ-ONLY; The UTC timestamp when the operation began.
266	LastModifiedTime *time.Time `json:"lastModifiedTime,omitempty" azure:"ro"`
267
268	// READ-ONLY; The number of all available patches excluding critical and security.
269	OtherPatchCount *int32 `json:"otherPatchCount,omitempty" azure:"ro"`
270
271	// READ-ONLY; The overall reboot status of the VM. It will be true when partially installed patches require a reboot to complete installation but the reboot
272	// has not yet occurred.
273	RebootPending *bool `json:"rebootPending,omitempty" azure:"ro"`
274
275	// READ-ONLY; The UTC timestamp when the operation began.
276	StartTime *time.Time `json:"startTime,omitempty" azure:"ro"`
277
278	// READ-ONLY; The overall success or failure status of the operation. It remains "InProgress" until the operation completes. At that point it will become
279	// "Failed", "Succeeded", or "CompletedWithWarnings."
280	Status *PatchOperationStatus `json:"status,omitempty" azure:"ro"`
281}
282
283// MarshalJSON implements the json.Marshaller interface for type AvailablePatchSummary.
284func (a AvailablePatchSummary) MarshalJSON() ([]byte, error) {
285	objectMap := make(map[string]interface{})
286	if a.AssessmentActivityID != nil {
287		objectMap["assessmentActivityId"] = a.AssessmentActivityID
288	}
289	if a.CriticalAndSecurityPatchCount != nil {
290		objectMap["criticalAndSecurityPatchCount"] = a.CriticalAndSecurityPatchCount
291	}
292	if a.Error != nil {
293		objectMap["error"] = a.Error
294	}
295	if a.LastModifiedTime != nil {
296		objectMap["lastModifiedTime"] = (*timeRFC3339)(a.LastModifiedTime)
297	}
298	if a.OtherPatchCount != nil {
299		objectMap["otherPatchCount"] = a.OtherPatchCount
300	}
301	if a.RebootPending != nil {
302		objectMap["rebootPending"] = a.RebootPending
303	}
304	if a.StartTime != nil {
305		objectMap["startTime"] = (*timeRFC3339)(a.StartTime)
306	}
307	if a.Status != nil {
308		objectMap["status"] = a.Status
309	}
310	return json.Marshal(objectMap)
311}
312
313// UnmarshalJSON implements the json.Unmarshaller interface for type AvailablePatchSummary.
314func (a *AvailablePatchSummary) UnmarshalJSON(data []byte) error {
315	var rawMsg map[string]*json.RawMessage
316	if err := json.Unmarshal(data, &rawMsg); err != nil {
317		return err
318	}
319	for key, val := range rawMsg {
320		var err error
321		switch key {
322		case "assessmentActivityId":
323			if val != nil {
324				err = json.Unmarshal(*val, &a.AssessmentActivityID)
325			}
326			delete(rawMsg, key)
327		case "criticalAndSecurityPatchCount":
328			if val != nil {
329				err = json.Unmarshal(*val, &a.CriticalAndSecurityPatchCount)
330			}
331			delete(rawMsg, key)
332		case "error":
333			if val != nil {
334				err = json.Unmarshal(*val, &a.Error)
335			}
336			delete(rawMsg, key)
337		case "lastModifiedTime":
338			if val != nil {
339				var aux timeRFC3339
340				err = json.Unmarshal(*val, &aux)
341				a.LastModifiedTime = (*time.Time)(&aux)
342			}
343			delete(rawMsg, key)
344		case "otherPatchCount":
345			if val != nil {
346				err = json.Unmarshal(*val, &a.OtherPatchCount)
347			}
348			delete(rawMsg, key)
349		case "rebootPending":
350			if val != nil {
351				err = json.Unmarshal(*val, &a.RebootPending)
352			}
353			delete(rawMsg, key)
354		case "startTime":
355			if val != nil {
356				var aux timeRFC3339
357				err = json.Unmarshal(*val, &aux)
358				a.StartTime = (*time.Time)(&aux)
359			}
360			delete(rawMsg, key)
361		case "status":
362			if val != nil {
363				err = json.Unmarshal(*val, &a.Status)
364			}
365			delete(rawMsg, key)
366		}
367		if err != nil {
368			return err
369		}
370	}
371	return nil
372}
373
374// Specifies the billing related details of a Azure Spot VM or VMSS.
375// Minimum api-version: 2019-03-01.
376type BillingProfile struct {
377	// Specifies the maximum price you are willing to pay for a Azure Spot VM/VMSS. This price is in US Dollars.
378	// This price will be compared with the current Azure Spot price for the VM size. Also, the prices are compared at the time of create/update of Azure Spot
379	// VM/VMSS and the operation will only succeed if
380	// the maxPrice is greater than the current Azure Spot price.
381	// The maxPrice will also be used for evicting a Azure Spot VM/VMSS if the current Azure Spot price goes beyond the maxPrice after creation of VM/VMSS.
382	// Possible values are:
383	// - Any decimal value greater than zero. Example: 0.01538
384	// -1 – indicates default price to be up-to on-demand.
385	// You can set the maxPrice to -1 to indicate that the Azure Spot VM/VMSS should not be evicted for price reasons. Also, the default max price is -1 if
386	// it is not provided by you.
387	// Minimum api-version: 2019-03-01.
388	MaxPrice *float64 `json:"maxPrice,omitempty"`
389}
390
391// Boot Diagnostics is a debugging feature which allows you to view Console Output and Screenshot to diagnose VM status.
392// You can easily view the output of your console log.
393// Azure also enables you to see a screenshot of the VM from the hypervisor.
394type BootDiagnostics struct {
395	// Whether boot diagnostics should be enabled on the Virtual Machine.
396	Enabled *bool `json:"enabled,omitempty"`
397
398	// Uri of the storage account to use for placing the console output and screenshot.
399	// If storageUri is not specified while enabling boot diagnostics, managed storage will be used.
400	StorageURI *string `json:"storageUri,omitempty"`
401}
402
403// The instance view of a virtual machine boot diagnostics.
404type BootDiagnosticsInstanceView struct {
405	// READ-ONLY; The console screenshot blob URI.
406	// NOTE: This will not be set if boot diagnostics is currently enabled with managed storage.
407	ConsoleScreenshotBlobURI *string `json:"consoleScreenshotBlobUri,omitempty" azure:"ro"`
408
409	// READ-ONLY; The serial console log blob Uri.
410	// NOTE: This will not be set if boot diagnostics is currently enabled with managed storage.
411	SerialConsoleLogBlobURI *string `json:"serialConsoleLogBlobUri,omitempty" azure:"ro"`
412
413	// READ-ONLY; The boot diagnostics status information for the VM.
414	// NOTE: It will be set only if there are errors encountered in enabling boot diagnostics.
415	Status *InstanceViewStatus `json:"status,omitempty" azure:"ro"`
416}
417
418// An error response from the Compute service.
419type CloudError struct {
420	// Api error.
421	InnerError *APIError `json:"error,omitempty"`
422}
423
424// Error implements the error interface for type CloudError.
425func (e CloudError) Error() string {
426	msg := ""
427	if e.InnerError != nil {
428		msg += "InnerError: \n"
429		if e.InnerError.Details != nil {
430			msg += fmt.Sprintf("\tDetails: %v\n", *e.InnerError.Details)
431		}
432		if e.InnerError.Innererror != nil {
433			msg += fmt.Sprintf("\tInnererror: %v\n", *e.InnerError.Innererror)
434		}
435		if e.InnerError.Code != nil {
436			msg += fmt.Sprintf("\tCode: %v\n", *e.InnerError.Code)
437		}
438		if e.InnerError.Target != nil {
439			msg += fmt.Sprintf("\tTarget: %v\n", *e.InnerError.Target)
440		}
441		if e.InnerError.Message != nil {
442			msg += fmt.Sprintf("\tMessage: %v\n", *e.InnerError.Message)
443		}
444	}
445	if msg == "" {
446		msg = "missing error info"
447	}
448	return msg
449}
450
451// The List Compute Operation operation response.
452type ComputeOperationListResult struct {
453	// READ-ONLY; The list of compute operations
454	Value *[]ComputeOperationValue `json:"value,omitempty" azure:"ro"`
455}
456
457// ComputeOperationListResultResponse is the response envelope for operations that return a ComputeOperationListResult type.
458type ComputeOperationListResultResponse struct {
459	// The List Compute Operation operation response.
460	ComputeOperationListResult *ComputeOperationListResult
461
462	// RawResponse contains the underlying HTTP response.
463	RawResponse *http.Response
464}
465
466// Describes the properties of a Compute Operation value.
467type ComputeOperationValue struct {
468	// Describes the properties of a Compute Operation Value Display.
469	Display *ComputeOperationValueDisplay `json:"display,omitempty"`
470
471	// READ-ONLY; The name of the compute operation.
472	Name *string `json:"name,omitempty" azure:"ro"`
473
474	// READ-ONLY; The origin of the compute operation.
475	Origin *string `json:"origin,omitempty" azure:"ro"`
476}
477
478// Describes the properties of a Compute Operation Value Display.
479type ComputeOperationValueDisplay struct {
480	// READ-ONLY; The description of the operation.
481	Description *string `json:"description,omitempty" azure:"ro"`
482
483	// READ-ONLY; The display name of the compute operation.
484	Operation *string `json:"operation,omitempty" azure:"ro"`
485
486	// READ-ONLY; The resource provider for the operation.
487	Provider *string `json:"provider,omitempty" azure:"ro"`
488
489	// READ-ONLY; The display name of the resource the operation applies to.
490	Resource *string `json:"resource,omitempty" azure:"ro"`
491}
492
493// Container service.
494type ContainerService struct {
495	Resource
496	// Properties of the container service.
497	Properties *ContainerServiceProperties `json:"properties,omitempty"`
498}
499
500// Profile for the container service agent pool.
501type ContainerServiceAgentPoolProfile struct {
502	// Number of agents (VMs) to host docker containers. Allowed values must be in the range of 1 to 100 (inclusive). The default value is 1.
503	Count *int32 `json:"count,omitempty"`
504
505	// DNS prefix to be used to create the FQDN for the agent pool.
506	DNSPrefix *string `json:"dnsPrefix,omitempty"`
507
508	// READ-ONLY; FQDN for the agent pool.
509	Fqdn *string `json:"fqdn,omitempty" azure:"ro"`
510
511	// Unique name of the agent pool profile in the context of the subscription and resource group.
512	Name *string `json:"name,omitempty"`
513
514	// Size of agent VMs.
515	VMSize *ContainerServiceVMSizeTypes `json:"vmSize,omitempty"`
516}
517
518// Properties to configure a custom container service cluster.
519type ContainerServiceCustomProfile struct {
520	// The name of the custom orchestrator to use.
521	Orchestrator *string `json:"orchestrator,omitempty"`
522}
523
524type ContainerServiceDiagnosticsProfile struct {
525	// Profile for the container service VM diagnostic agent.
526	VMDiagnostics *ContainerServiceVMDiagnostics `json:"vmDiagnostics,omitempty"`
527}
528
529// Profile for Linux VMs in the container service cluster.
530type ContainerServiceLinuxProfile struct {
531	// The administrator username to use for Linux VMs.
532	AdminUsername *string `json:"adminUsername,omitempty"`
533
534	// The ssh key configuration for Linux VMs.
535	SSH *ContainerServiceSSHConfiguration `json:"ssh,omitempty"`
536}
537
538// The response from the List Container Services operation.
539type ContainerServiceListResult struct {
540	// The URL to get the next set of container service results.
541	NextLink *string `json:"nextLink,omitempty"`
542
543	// the list of container services.
544	Value *[]ContainerService `json:"value,omitempty"`
545}
546
547// ContainerServiceListResultResponse is the response envelope for operations that return a ContainerServiceListResult type.
548type ContainerServiceListResultResponse struct {
549	// The response from the List Container Services operation.
550	ContainerServiceListResult *ContainerServiceListResult
551
552	// RawResponse contains the underlying HTTP response.
553	RawResponse *http.Response
554}
555
556// Profile for the container service master.
557type ContainerServiceMasterProfile struct {
558	// Number of masters (VMs) in the container service cluster. Allowed values are 1, 3, and 5. The default value is 1.
559	Count *Enum48 `json:"count,omitempty"`
560
561	// DNS prefix to be used to create the FQDN for master.
562	DNSPrefix *string `json:"dnsPrefix,omitempty"`
563
564	// READ-ONLY; FQDN for the master.
565	Fqdn *string `json:"fqdn,omitempty" azure:"ro"`
566}
567
568// Profile for the container service orchestrator.
569type ContainerServiceOrchestratorProfile struct {
570	// The orchestrator to use to manage container service cluster resources. Valid values are Swarm, DCOS, and Custom.
571	OrchestratorType *ContainerServiceOrchestratorTypes `json:"orchestratorType,omitempty"`
572}
573
574// ContainerServicePollerResponse is the response envelope for operations that asynchronously return a ContainerService type.
575type ContainerServicePollerResponse struct {
576	// PollUntilDone will poll the service endpoint until a terminal state is reached or an error is received
577	PollUntilDone func(ctx context.Context, frequency time.Duration) (ContainerServiceResponse, error)
578
579	// Poller contains an initialized poller.
580	Poller ContainerServicePoller
581
582	// RawResponse contains the underlying HTTP response.
583	RawResponse *http.Response
584}
585
586// Information about a service principal identity for the cluster to use for manipulating Azure APIs.
587type ContainerServicePrincipalProfile struct {
588	// The ID for the service principal.
589	ClientID *string `json:"clientId,omitempty"`
590
591	// The secret password associated with the service principal.
592	Secret *string `json:"secret,omitempty"`
593}
594
595// Properties of the container service.
596type ContainerServiceProperties struct {
597	// Properties of the agent pool.
598	AgentPoolProfiles *[]ContainerServiceAgentPoolProfile `json:"agentPoolProfiles,omitempty"`
599
600	// Properties for custom clusters.
601	CustomProfile *ContainerServiceCustomProfile `json:"customProfile,omitempty"`
602
603	// Properties of the diagnostic agent.
604	DiagnosticsProfile *ContainerServiceDiagnosticsProfile `json:"diagnosticsProfile,omitempty"`
605
606	// Properties of Linux VMs.
607	LinuxProfile *ContainerServiceLinuxProfile `json:"linuxProfile,omitempty"`
608
609	// Properties of master agents.
610	MasterProfile *ContainerServiceMasterProfile `json:"masterProfile,omitempty"`
611
612	// Properties of the orchestrator.
613	OrchestratorProfile *ContainerServiceOrchestratorProfile `json:"orchestratorProfile,omitempty"`
614
615	// READ-ONLY; the current deployment or provisioning state, which only appears in the response.
616	ProvisioningState *string `json:"provisioningState,omitempty" azure:"ro"`
617
618	// Properties for cluster service principals.
619	ServicePrincipalProfile *ContainerServicePrincipalProfile `json:"servicePrincipalProfile,omitempty"`
620
621	// Properties of Windows VMs.
622	WindowsProfile *ContainerServiceWindowsProfile `json:"windowsProfile,omitempty"`
623}
624
625// ContainerServiceResponse is the response envelope for operations that return a ContainerService type.
626type ContainerServiceResponse struct {
627	// Container service.
628	ContainerService *ContainerService
629
630	// RawResponse contains the underlying HTTP response.
631	RawResponse *http.Response
632}
633
634// SSH configuration for Linux-based VMs running on Azure.
635type ContainerServiceSSHConfiguration struct {
636	// the list of SSH public keys used to authenticate with Linux-based VMs.
637	PublicKeys *[]ContainerServiceSSHPublicKey `json:"publicKeys,omitempty"`
638}
639
640// Contains information about SSH certificate public key data.
641type ContainerServiceSSHPublicKey struct {
642	// Certificate public key used to authenticate with VMs through SSH. The certificate must be in PEM format with or without headers.
643	KeyData *string `json:"keyData,omitempty"`
644}
645
646// Profile for diagnostics on the container service VMs.
647type ContainerServiceVMDiagnostics struct {
648	// Whether the VM diagnostic agent is provisioned on the VM.
649	Enabled *bool `json:"enabled,omitempty"`
650
651	// READ-ONLY; The URI of the storage account where diagnostics are stored.
652	StorageURI *string `json:"storageUri,omitempty" azure:"ro"`
653}
654
655// Profile for Windows VMs in the container service cluster.
656type ContainerServiceWindowsProfile struct {
657	// The administrator password to use for Windows VMs.
658	AdminPassword *string `json:"adminPassword,omitempty"`
659
660	// The administrator username to use for Windows VMs.
661	AdminUsername *string `json:"adminUsername,omitempty"`
662}
663
664// ContainerServicesBeginCreateOrUpdateOptions contains the optional parameters for the ContainerServices.BeginCreateOrUpdate method.
665type ContainerServicesBeginCreateOrUpdateOptions struct {
666	// placeholder for future optional parameters
667}
668
669// ContainerServicesBeginDeleteOptions contains the optional parameters for the ContainerServices.BeginDelete method.
670type ContainerServicesBeginDeleteOptions struct {
671	// placeholder for future optional parameters
672}
673
674// ContainerServicesGetOptions contains the optional parameters for the ContainerServices.Get method.
675type ContainerServicesGetOptions struct {
676	// placeholder for future optional parameters
677}
678
679// ContainerServicesListByResourceGroupOptions contains the optional parameters for the ContainerServices.ListByResourceGroup method.
680type ContainerServicesListByResourceGroupOptions struct {
681	// placeholder for future optional parameters
682}
683
684// ContainerServicesListOptions contains the optional parameters for the ContainerServices.List method.
685type ContainerServicesListOptions struct {
686	// placeholder for future optional parameters
687}
688
689// Data used when creating a disk.
690type CreationData struct {
691	// This enumerates the possible sources of a disk's creation.
692	CreateOption *DiskCreateOption `json:"createOption,omitempty"`
693
694	// Required if creating from a Gallery Image. The id of the ImageDiskReference will be the ARM id of the shared galley image version from which to create
695	// a disk.
696	GalleryImageReference *ImageDiskReference `json:"galleryImageReference,omitempty"`
697
698	// Disk source information.
699	ImageReference *ImageDiskReference `json:"imageReference,omitempty"`
700
701	// Logical sector size in bytes for Ultra disks. Supported values are 512 ad 4096. 4096 is the default.
702	LogicalSectorSize *int32 `json:"logicalSectorSize,omitempty"`
703
704	// If createOption is Copy, this is the ARM id of the source snapshot or disk.
705	SourceResourceID *string `json:"sourceResourceId,omitempty"`
706
707	// If createOption is Import, this is the URI of a blob to be imported into a managed disk.
708	SourceURI *string `json:"sourceUri,omitempty"`
709
710	// READ-ONLY; If this field is set, this is the unique id identifying the source of this resource.
711	SourceUniqueID *string `json:"sourceUniqueId,omitempty" azure:"ro"`
712
713	// Required if createOption is Import. The Azure Resource Manager identifier of the storage account containing the blob to import as a disk.
714	StorageAccountID *string `json:"storageAccountId,omitempty"`
715
716	// If createOption is Upload, this is the size of the contents of the upload including the VHD footer. This value should be between 20972032 (20 MiB + 512
717	// bytes for the VHD footer) and 35183298347520
718	// bytes (32 TiB + 512 bytes for the VHD footer).
719	UploadSizeBytes *int64 `json:"uploadSizeBytes,omitempty"`
720}
721
722// Describes a data disk.
723type DataDisk struct {
724	// Specifies the caching requirements.
725	// Possible values are:
726	// None
727	// ReadOnly
728	// ReadWrite
729	// Default: None for Standard storage. ReadOnly for Premium storage
730	Caching *CachingTypes `json:"caching,omitempty"`
731
732	// Specifies how the virtual machine should be created.
733	// Possible values are:
734	// Attach \u2013 This value is used when you are using a specialized disk to create the virtual machine.
735	// FromImage \u2013 This value is used when you are using an image to create the virtual machine. If you are using a platform image, you also use the imageReference
736	// element described above. If you are
737	// using a marketplace image, you also use the plan element previously described.
738	CreateOption *DiskCreateOptionTypes `json:"createOption,omitempty"`
739
740	// READ-ONLY; Specifies the Read-Write IOPS for the managed disk when StorageAccountType is UltraSSD_LRS. Returned only for VirtualMachine ScaleSet VM disks.
741	// Can be updated only via updates to the VirtualMachine
742	// Scale Set.
743	DiskIopsReadWrite *int64 `json:"diskIOPSReadWrite,omitempty" azure:"ro"`
744
745	// READ-ONLY; Specifies the bandwidth in MB per second for the managed disk when StorageAccountType is UltraSSD_LRS. Returned only for VirtualMachine ScaleSet
746	// VM disks. Can be updated only via updates to the
747	// VirtualMachine Scale Set.
748	DiskMBpsReadWrite *int64 `json:"diskMBpsReadWrite,omitempty" azure:"ro"`
749
750	// Specifies the size of an empty data disk in gigabytes. This element can be used to overwrite the size of the disk in a virtual machine image.
751	// This value cannot be larger than 1023 GB
752	DiskSizeGb *int32 `json:"diskSizeGB,omitempty"`
753
754	// The source user image virtual hard disk. The virtual hard disk will be copied before being attached to the virtual machine. If SourceImage is provided,
755	// the destination virtual hard drive must not
756	// exist.
757	Image *VirtualHardDisk `json:"image,omitempty"`
758
759	// Specifies the logical unit number of the data disk. This value is used to identify data disks within the VM and therefore must be unique for each data
760	// disk attached to a VM.
761	Lun *int32 `json:"lun,omitempty"`
762
763	// The managed disk parameters.
764	ManagedDisk *ManagedDiskParameters `json:"managedDisk,omitempty"`
765
766	// The disk name.
767	Name *string `json:"name,omitempty"`
768
769	// Specifies whether the data disk is in process of detachment from the VirtualMachine/VirtualMachineScaleset
770	ToBeDetached *bool `json:"toBeDetached,omitempty"`
771
772	// The virtual hard disk.
773	Vhd *VirtualHardDisk `json:"vhd,omitempty"`
774
775	// Specifies whether writeAccelerator should be enabled or disabled on the disk.
776	WriteAcceleratorEnabled *bool `json:"writeAcceleratorEnabled,omitempty"`
777}
778
779// Contains the data disk images information.
780type DataDiskImage struct {
781	// READ-ONLY; Specifies the logical unit number of the data disk. This value is used to identify data disks within the VM and therefore must be unique for
782	// each data disk attached to a VM.
783	Lun *int32 `json:"lun,omitempty" azure:"ro"`
784}
785
786// Contains encryption settings for a data disk image.
787type DataDiskImageEncryption struct {
788	DiskImageEncryption
789	// This property specifies the logical unit number of the data disk. This value is used to identify data disks within the Virtual Machine and therefore
790	// must be unique for each data disk attached to the
791	// Virtual Machine.
792	Lun *int32 `json:"lun,omitempty"`
793}
794
795// Specifies information about the Dedicated host.
796type DedicatedHost struct {
797	Resource
798	// Properties of the dedicated host.
799	Properties *DedicatedHostProperties `json:"properties,omitempty"`
800
801	// SKU of the dedicated host for Hardware Generation and VM family. Only name is required to be set. List Microsoft.Compute SKUs for a list of possible
802	// values.
803	SKU *SKU `json:"sku,omitempty"`
804}
805
806// Represents the dedicated host unutilized capacity in terms of a specific VM size.
807type DedicatedHostAllocatableVM struct {
808	// Maximum number of VMs of size vmSize that can fit in the dedicated host's remaining capacity.
809	Count *float64 `json:"count,omitempty"`
810
811	// VM size in terms of which the unutilized capacity is represented.
812	VMSize *string `json:"vmSize,omitempty"`
813}
814
815// Dedicated host unutilized capacity.
816type DedicatedHostAvailableCapacity struct {
817	// The unutilized capacity of the dedicated host represented in terms of each VM size that is allowed to be deployed to the dedicated host.
818	AllocatableVMS *[]DedicatedHostAllocatableVM `json:"allocatableVMs,omitempty"`
819}
820
821// Specifies information about the dedicated host group that the dedicated hosts should be assigned to.
822// Currently, a dedicated host can only be added to a dedicated host group at creation time. An existing dedicated host cannot be added to another dedicated
823// host group.
824type DedicatedHostGroup struct {
825	Resource
826	// Dedicated Host Group Properties.
827	Properties *DedicatedHostGroupProperties `json:"properties,omitempty"`
828
829	// Availability Zone to use for this host group. Only single zone is supported. The zone can be assigned only during creation. If not provided, the group
830	// supports all zones in the region. If provided,
831	// enforces each host in the group to be in the same zone.
832	Zones *[]string `json:"zones,omitempty"`
833}
834
835type DedicatedHostGroupInstanceView struct {
836	// List of instance view of the dedicated hosts under the dedicated host group.
837	Hosts *[]DedicatedHostInstanceViewWithName `json:"hosts,omitempty"`
838}
839
840// The List Dedicated Host Group with resource group response.
841type DedicatedHostGroupListResult struct {
842	// The URI to fetch the next page of Dedicated Host Groups. Call ListNext() with this URI to fetch the next page of Dedicated Host Groups.
843	NextLink *string `json:"nextLink,omitempty"`
844
845	// The list of dedicated host groups
846	Value *[]DedicatedHostGroup `json:"value,omitempty"`
847}
848
849// DedicatedHostGroupListResultResponse is the response envelope for operations that return a DedicatedHostGroupListResult type.
850type DedicatedHostGroupListResultResponse struct {
851	// The List Dedicated Host Group with resource group response.
852	DedicatedHostGroupListResult *DedicatedHostGroupListResult
853
854	// RawResponse contains the underlying HTTP response.
855	RawResponse *http.Response
856}
857
858// Dedicated Host Group Properties.
859type DedicatedHostGroupProperties struct {
860	// READ-ONLY; A list of references to all dedicated hosts in the dedicated host group.
861	Hosts *[]SubResourceReadOnly `json:"hosts,omitempty" azure:"ro"`
862
863	// READ-ONLY; The dedicated host group instance view, which has the list of instance view of the dedicated hosts under the dedicated host group.
864	InstanceView *DedicatedHostGroupInstanceView `json:"instanceView,omitempty" azure:"ro"`
865
866	// Number of fault domains that the host group can span.
867	PlatformFaultDomainCount *int32 `json:"platformFaultDomainCount,omitempty"`
868
869	// Specifies whether virtual machines or virtual machine scale sets can be placed automatically on the dedicated host group. Automatic placement means resources
870	// are allocated on dedicated hosts, that are
871	// chosen by Azure, under the dedicated host group. The value is defaulted to 'false' when not provided.
872	// Minimum api-version: 2020-06-01.
873	SupportAutomaticPlacement *bool `json:"supportAutomaticPlacement,omitempty"`
874}
875
876// DedicatedHostGroupResponse is the response envelope for operations that return a DedicatedHostGroup type.
877type DedicatedHostGroupResponse struct {
878	// Specifies information about the dedicated host group that the dedicated hosts should be assigned to. <br><br> Currently, a dedicated host can only be
879	// added to a dedicated host group at creation time. An existing dedicated host cannot be added to another dedicated host group.
880	DedicatedHostGroup *DedicatedHostGroup
881
882	// RawResponse contains the underlying HTTP response.
883	RawResponse *http.Response
884}
885
886// Specifies information about the dedicated host group that the dedicated host should be assigned to. Only tags may be updated.
887type DedicatedHostGroupUpdate struct {
888	UpdateResource
889	// Dedicated Host Group Properties.
890	Properties *DedicatedHostGroupProperties `json:"properties,omitempty"`
891
892	// Availability Zone to use for this host group. Only single zone is supported. The zone can be assigned only during creation. If not provided, the group
893	// supports all zones in the region. If provided,
894	// enforces each host in the group to be in the same zone.
895	Zones *[]string `json:"zones,omitempty"`
896}
897
898// DedicatedHostGroupsCreateOrUpdateOptions contains the optional parameters for the DedicatedHostGroups.CreateOrUpdate method.
899type DedicatedHostGroupsCreateOrUpdateOptions struct {
900	// placeholder for future optional parameters
901}
902
903// DedicatedHostGroupsDeleteOptions contains the optional parameters for the DedicatedHostGroups.Delete method.
904type DedicatedHostGroupsDeleteOptions struct {
905	// placeholder for future optional parameters
906}
907
908// DedicatedHostGroupsGetOptions contains the optional parameters for the DedicatedHostGroups.Get method.
909type DedicatedHostGroupsGetOptions struct {
910	// The expand expression to apply on the operation. The response shows the list of instance view of the dedicated hosts under the dedicated host group.
911	Expand *string
912}
913
914// DedicatedHostGroupsListByResourceGroupOptions contains the optional parameters for the DedicatedHostGroups.ListByResourceGroup method.
915type DedicatedHostGroupsListByResourceGroupOptions struct {
916	// placeholder for future optional parameters
917}
918
919// DedicatedHostGroupsListBySubscriptionOptions contains the optional parameters for the DedicatedHostGroups.ListBySubscription method.
920type DedicatedHostGroupsListBySubscriptionOptions struct {
921	// placeholder for future optional parameters
922}
923
924// DedicatedHostGroupsUpdateOptions contains the optional parameters for the DedicatedHostGroups.Update method.
925type DedicatedHostGroupsUpdateOptions struct {
926	// placeholder for future optional parameters
927}
928
929// The instance view of a dedicated host.
930type DedicatedHostInstanceView struct {
931	// READ-ONLY; Specifies the unique id of the dedicated physical machine on which the dedicated host resides.
932	AssetID *string `json:"assetId,omitempty" azure:"ro"`
933
934	// Unutilized capacity of the dedicated host.
935	AvailableCapacity *DedicatedHostAvailableCapacity `json:"availableCapacity,omitempty"`
936
937	// The resource status information.
938	Statuses *[]InstanceViewStatus `json:"statuses,omitempty"`
939}
940
941// The instance view of a dedicated host that includes the name of the dedicated host. It is used for the response to the instance view of a dedicated host
942// group.
943type DedicatedHostInstanceViewWithName struct {
944	DedicatedHostInstanceView
945	// READ-ONLY; The name of the dedicated host.
946	Name *string `json:"name,omitempty" azure:"ro"`
947}
948
949// The list dedicated host operation response.
950type DedicatedHostListResult struct {
951	// The URI to fetch the next page of dedicated hosts. Call ListNext() with this URI to fetch the next page of dedicated hosts.
952	NextLink *string `json:"nextLink,omitempty"`
953
954	// The list of dedicated hosts
955	Value *[]DedicatedHost `json:"value,omitempty"`
956}
957
958// DedicatedHostListResultResponse is the response envelope for operations that return a DedicatedHostListResult type.
959type DedicatedHostListResultResponse struct {
960	// The list dedicated host operation response.
961	DedicatedHostListResult *DedicatedHostListResult
962
963	// RawResponse contains the underlying HTTP response.
964	RawResponse *http.Response
965}
966
967// DedicatedHostPollerResponse is the response envelope for operations that asynchronously return a DedicatedHost type.
968type DedicatedHostPollerResponse struct {
969	// PollUntilDone will poll the service endpoint until a terminal state is reached or an error is received
970	PollUntilDone func(ctx context.Context, frequency time.Duration) (DedicatedHostResponse, error)
971
972	// Poller contains an initialized poller.
973	Poller DedicatedHostPoller
974
975	// RawResponse contains the underlying HTTP response.
976	RawResponse *http.Response
977}
978
979// Properties of the dedicated host.
980type DedicatedHostProperties struct {
981	// Specifies whether the dedicated host should be replaced automatically in case of a failure. The value is defaulted to 'true' when not provided.
982	AutoReplaceOnFailure *bool `json:"autoReplaceOnFailure,omitempty"`
983
984	// READ-ONLY; A unique id generated and assigned to the dedicated host by the platform.
985	// Does not change throughout the lifetime of the host.
986	HostID *string `json:"hostId,omitempty" azure:"ro"`
987
988	// READ-ONLY; The dedicated host instance view.
989	InstanceView *DedicatedHostInstanceView `json:"instanceView,omitempty" azure:"ro"`
990
991	// Specifies the software license type that will be applied to the VMs deployed on the dedicated host.
992	// Possible values are:
993	// None
994	// WindowsServerHybrid
995	// WindowsServerPerpetual
996	// Default: None
997	LicenseType *DedicatedHostLicenseTypes `json:"licenseType,omitempty"`
998
999	// Fault domain of the dedicated host within a dedicated host group.
1000	PlatformFaultDomain *int32 `json:"platformFaultDomain,omitempty"`
1001
1002	// READ-ONLY; The provisioning state, which only appears in the response.
1003	ProvisioningState *string `json:"provisioningState,omitempty" azure:"ro"`
1004
1005	// READ-ONLY; The date when the host was first provisioned.
1006	ProvisioningTime *time.Time `json:"provisioningTime,omitempty" azure:"ro"`
1007
1008	// READ-ONLY; A list of references to all virtual machines in the Dedicated Host.
1009	VirtualMachines *[]SubResourceReadOnly `json:"virtualMachines,omitempty" azure:"ro"`
1010}
1011
1012// MarshalJSON implements the json.Marshaller interface for type DedicatedHostProperties.
1013func (d DedicatedHostProperties) MarshalJSON() ([]byte, error) {
1014	objectMap := make(map[string]interface{})
1015	if d.AutoReplaceOnFailure != nil {
1016		objectMap["autoReplaceOnFailure"] = d.AutoReplaceOnFailure
1017	}
1018	if d.HostID != nil {
1019		objectMap["hostId"] = d.HostID
1020	}
1021	if d.InstanceView != nil {
1022		objectMap["instanceView"] = d.InstanceView
1023	}
1024	if d.LicenseType != nil {
1025		objectMap["licenseType"] = d.LicenseType
1026	}
1027	if d.PlatformFaultDomain != nil {
1028		objectMap["platformFaultDomain"] = d.PlatformFaultDomain
1029	}
1030	if d.ProvisioningState != nil {
1031		objectMap["provisioningState"] = d.ProvisioningState
1032	}
1033	if d.ProvisioningTime != nil {
1034		objectMap["provisioningTime"] = (*timeRFC3339)(d.ProvisioningTime)
1035	}
1036	if d.VirtualMachines != nil {
1037		objectMap["virtualMachines"] = d.VirtualMachines
1038	}
1039	return json.Marshal(objectMap)
1040}
1041
1042// UnmarshalJSON implements the json.Unmarshaller interface for type DedicatedHostProperties.
1043func (d *DedicatedHostProperties) UnmarshalJSON(data []byte) error {
1044	var rawMsg map[string]*json.RawMessage
1045	if err := json.Unmarshal(data, &rawMsg); err != nil {
1046		return err
1047	}
1048	for key, val := range rawMsg {
1049		var err error
1050		switch key {
1051		case "autoReplaceOnFailure":
1052			if val != nil {
1053				err = json.Unmarshal(*val, &d.AutoReplaceOnFailure)
1054			}
1055			delete(rawMsg, key)
1056		case "hostId":
1057			if val != nil {
1058				err = json.Unmarshal(*val, &d.HostID)
1059			}
1060			delete(rawMsg, key)
1061		case "instanceView":
1062			if val != nil {
1063				err = json.Unmarshal(*val, &d.InstanceView)
1064			}
1065			delete(rawMsg, key)
1066		case "licenseType":
1067			if val != nil {
1068				err = json.Unmarshal(*val, &d.LicenseType)
1069			}
1070			delete(rawMsg, key)
1071		case "platformFaultDomain":
1072			if val != nil {
1073				err = json.Unmarshal(*val, &d.PlatformFaultDomain)
1074			}
1075			delete(rawMsg, key)
1076		case "provisioningState":
1077			if val != nil {
1078				err = json.Unmarshal(*val, &d.ProvisioningState)
1079			}
1080			delete(rawMsg, key)
1081		case "provisioningTime":
1082			if val != nil {
1083				var aux timeRFC3339
1084				err = json.Unmarshal(*val, &aux)
1085				d.ProvisioningTime = (*time.Time)(&aux)
1086			}
1087			delete(rawMsg, key)
1088		case "virtualMachines":
1089			if val != nil {
1090				err = json.Unmarshal(*val, &d.VirtualMachines)
1091			}
1092			delete(rawMsg, key)
1093		}
1094		if err != nil {
1095			return err
1096		}
1097	}
1098	return nil
1099}
1100
1101// DedicatedHostResponse is the response envelope for operations that return a DedicatedHost type.
1102type DedicatedHostResponse struct {
1103	// Specifies information about the Dedicated host.
1104	DedicatedHost *DedicatedHost
1105
1106	// RawResponse contains the underlying HTTP response.
1107	RawResponse *http.Response
1108}
1109
1110// Specifies information about the dedicated host. Only tags, autoReplaceOnFailure and licenseType may be updated.
1111type DedicatedHostUpdate struct {
1112	UpdateResource
1113	// Properties of the dedicated host.
1114	Properties *DedicatedHostProperties `json:"properties,omitempty"`
1115}
1116
1117// DedicatedHostsBeginCreateOrUpdateOptions contains the optional parameters for the DedicatedHosts.BeginCreateOrUpdate method.
1118type DedicatedHostsBeginCreateOrUpdateOptions struct {
1119	// placeholder for future optional parameters
1120}
1121
1122// DedicatedHostsBeginDeleteOptions contains the optional parameters for the DedicatedHosts.BeginDelete method.
1123type DedicatedHostsBeginDeleteOptions struct {
1124	// placeholder for future optional parameters
1125}
1126
1127// DedicatedHostsBeginUpdateOptions contains the optional parameters for the DedicatedHosts.BeginUpdate method.
1128type DedicatedHostsBeginUpdateOptions struct {
1129	// placeholder for future optional parameters
1130}
1131
1132// DedicatedHostsGetOptions contains the optional parameters for the DedicatedHosts.Get method.
1133type DedicatedHostsGetOptions struct {
1134	// The expand expression to apply on the operation.
1135	Expand *string
1136}
1137
1138// DedicatedHostsListByHostGroupOptions contains the optional parameters for the DedicatedHosts.ListByHostGroup method.
1139type DedicatedHostsListByHostGroupOptions struct {
1140	// placeholder for future optional parameters
1141}
1142
1143// Specifies the boot diagnostic settings state.
1144// Minimum api-version: 2015-06-15.
1145type DiagnosticsProfile struct {
1146	// Boot Diagnostics is a debugging feature which allows you to view Console Output and Screenshot to diagnose VM status.
1147	// You can easily view the output of your console log.
1148	// Azure also enables you to see a screenshot of the VM from the hypervisor.
1149	BootDiagnostics *BootDiagnostics `json:"bootDiagnostics,omitempty"`
1150}
1151
1152// Describes the parameters of ephemeral disk settings that can be specified for operating system disk.
1153// NOTE: The ephemeral disk settings can only be specified for managed disk.
1154type DiffDiskSettings struct {
1155	// Specifies the ephemeral disk settings for operating system disk.
1156	Option *DiffDiskOptions `json:"option,omitempty"`
1157
1158	// Specifies the ephemeral disk placement for operating system disk.
1159	// Possible values are:
1160	// CacheDisk
1161	// ResourceDisk
1162	// Default: CacheDisk if one is configured for the VM size otherwise ResourceDisk is used.
1163	// Refer to VM size documentation for Windows VM at https://docs.microsoft.com/en-us/azure/virtual-machines/windows/sizes and Linux VM at
1164	// https://docs.microsoft.com/en-us/azure/virtual-machines/linux/sizes to check which VM sizes exposes a cache disk.
1165	Placement *DiffDiskPlacement `json:"placement,omitempty"`
1166}
1167
1168// Describes the disallowed disk types.
1169type Disallowed struct {
1170	// A list of disk types.
1171	DiskTypes *[]string `json:"diskTypes,omitempty"`
1172}
1173
1174// Specifies the disallowed configuration for a virtual machine image.
1175type DisallowedConfiguration struct {
1176	// VM disk types which are disallowed.
1177	VMDiskType *VMDiskTypes `json:"vmDiskType,omitempty"`
1178}
1179
1180// Disk resource.
1181type Disk struct {
1182	Resource
1183	// The extended location where the disk will be created. Extended location cannot be changed.
1184	ExtendedLocation *ExtendedLocation `json:"extendedLocation,omitempty"`
1185
1186	// READ-ONLY; A relative URI containing the ID of the VM that has the disk attached.
1187	ManagedBy *string `json:"managedBy,omitempty" azure:"ro"`
1188
1189	// READ-ONLY; List of relative URIs containing the IDs of the VMs that have the disk attached. maxShares should be set to a value greater than one for disks
1190	// to allow attaching them to multiple VMs.
1191	ManagedByExtended *[]string `json:"managedByExtended,omitempty" azure:"ro"`
1192
1193	// Disk resource properties.
1194	Properties *DiskProperties `json:"properties,omitempty"`
1195
1196	// The disks sku name. Can be StandardLRS, PremiumLRS, StandardSSDLRS, or UltraSSDLRS.
1197	SKU *DiskSKU `json:"sku,omitempty"`
1198
1199	// The Logical zone list for Disk.
1200	Zones *[]string `json:"zones,omitempty"`
1201}
1202
1203// disk access resource.
1204type DiskAccess struct {
1205	Resource
1206	Properties *DiskAccessProperties `json:"properties,omitempty"`
1207}
1208
1209// The List disk access operation response.
1210type DiskAccessList struct {
1211	// The uri to fetch the next page of disk access resources. Call ListNext() with this to fetch the next page of disk access resources.
1212	NextLink *string `json:"nextLink,omitempty"`
1213
1214	// A list of disk access resources.
1215	Value *[]DiskAccess `json:"value,omitempty"`
1216}
1217
1218// DiskAccessListResponse is the response envelope for operations that return a DiskAccessList type.
1219type DiskAccessListResponse struct {
1220	// The List disk access operation response.
1221	DiskAccessList *DiskAccessList
1222
1223	// RawResponse contains the underlying HTTP response.
1224	RawResponse *http.Response
1225}
1226
1227// DiskAccessPollerResponse is the response envelope for operations that asynchronously return a DiskAccess type.
1228type DiskAccessPollerResponse struct {
1229	// PollUntilDone will poll the service endpoint until a terminal state is reached or an error is received
1230	PollUntilDone func(ctx context.Context, frequency time.Duration) (DiskAccessResponse, error)
1231
1232	// Poller contains an initialized poller.
1233	Poller DiskAccessPoller
1234
1235	// RawResponse contains the underlying HTTP response.
1236	RawResponse *http.Response
1237}
1238
1239type DiskAccessProperties struct {
1240	// READ-ONLY; A readonly collection of private endpoint connections created on the disk. Currently only one endpoint connection is supported.
1241	PrivateEndpointConnections *[]PrivateEndpointConnection `json:"privateEndpointConnections,omitempty" azure:"ro"`
1242
1243	// READ-ONLY; The disk access resource provisioning state.
1244	ProvisioningState *string `json:"provisioningState,omitempty" azure:"ro"`
1245
1246	// READ-ONLY; The time when the disk access was created.
1247	TimeCreated *time.Time `json:"timeCreated,omitempty" azure:"ro"`
1248}
1249
1250// MarshalJSON implements the json.Marshaller interface for type DiskAccessProperties.
1251func (d DiskAccessProperties) MarshalJSON() ([]byte, error) {
1252	objectMap := make(map[string]interface{})
1253	if d.PrivateEndpointConnections != nil {
1254		objectMap["privateEndpointConnections"] = d.PrivateEndpointConnections
1255	}
1256	if d.ProvisioningState != nil {
1257		objectMap["provisioningState"] = d.ProvisioningState
1258	}
1259	if d.TimeCreated != nil {
1260		objectMap["timeCreated"] = (*timeRFC3339)(d.TimeCreated)
1261	}
1262	return json.Marshal(objectMap)
1263}
1264
1265// UnmarshalJSON implements the json.Unmarshaller interface for type DiskAccessProperties.
1266func (d *DiskAccessProperties) UnmarshalJSON(data []byte) error {
1267	var rawMsg map[string]*json.RawMessage
1268	if err := json.Unmarshal(data, &rawMsg); err != nil {
1269		return err
1270	}
1271	for key, val := range rawMsg {
1272		var err error
1273		switch key {
1274		case "privateEndpointConnections":
1275			if val != nil {
1276				err = json.Unmarshal(*val, &d.PrivateEndpointConnections)
1277			}
1278			delete(rawMsg, key)
1279		case "provisioningState":
1280			if val != nil {
1281				err = json.Unmarshal(*val, &d.ProvisioningState)
1282			}
1283			delete(rawMsg, key)
1284		case "timeCreated":
1285			if val != nil {
1286				var aux timeRFC3339
1287				err = json.Unmarshal(*val, &aux)
1288				d.TimeCreated = (*time.Time)(&aux)
1289			}
1290			delete(rawMsg, key)
1291		}
1292		if err != nil {
1293			return err
1294		}
1295	}
1296	return nil
1297}
1298
1299// DiskAccessResponse is the response envelope for operations that return a DiskAccess type.
1300type DiskAccessResponse struct {
1301	// disk access resource.
1302	DiskAccess *DiskAccess
1303
1304	// RawResponse contains the underlying HTTP response.
1305	RawResponse *http.Response
1306}
1307
1308// Used for updating a disk access resource.
1309type DiskAccessUpdate struct {
1310	// Resource tags
1311	Tags *map[string]string `json:"tags,omitempty"`
1312}
1313
1314// DiskAccessesBeginCreateOrUpdateOptions contains the optional parameters for the DiskAccesses.BeginCreateOrUpdate method.
1315type DiskAccessesBeginCreateOrUpdateOptions struct {
1316	// placeholder for future optional parameters
1317}
1318
1319// DiskAccessesBeginDeleteAPrivateEndpointConnectionOptions contains the optional parameters for the DiskAccesses.BeginDeleteAPrivateEndpointConnection
1320// method.
1321type DiskAccessesBeginDeleteAPrivateEndpointConnectionOptions struct {
1322	// placeholder for future optional parameters
1323}
1324
1325// DiskAccessesBeginDeleteOptions contains the optional parameters for the DiskAccesses.BeginDelete method.
1326type DiskAccessesBeginDeleteOptions struct {
1327	// placeholder for future optional parameters
1328}
1329
1330// DiskAccessesBeginUpdateAPrivateEndpointConnectionOptions contains the optional parameters for the DiskAccesses.BeginUpdateAPrivateEndpointConnection
1331// method.
1332type DiskAccessesBeginUpdateAPrivateEndpointConnectionOptions struct {
1333	// placeholder for future optional parameters
1334}
1335
1336// DiskAccessesBeginUpdateOptions contains the optional parameters for the DiskAccesses.BeginUpdate method.
1337type DiskAccessesBeginUpdateOptions struct {
1338	// placeholder for future optional parameters
1339}
1340
1341// DiskAccessesGetAPrivateEndpointConnectionOptions contains the optional parameters for the DiskAccesses.GetAPrivateEndpointConnection method.
1342type DiskAccessesGetAPrivateEndpointConnectionOptions struct {
1343	// placeholder for future optional parameters
1344}
1345
1346// DiskAccessesGetOptions contains the optional parameters for the DiskAccesses.Get method.
1347type DiskAccessesGetOptions struct {
1348	// placeholder for future optional parameters
1349}
1350
1351// DiskAccessesGetPrivateLinkResourcesOptions contains the optional parameters for the DiskAccesses.GetPrivateLinkResources method.
1352type DiskAccessesGetPrivateLinkResourcesOptions struct {
1353	// placeholder for future optional parameters
1354}
1355
1356// DiskAccessesListByResourceGroupOptions contains the optional parameters for the DiskAccesses.ListByResourceGroup method.
1357type DiskAccessesListByResourceGroupOptions struct {
1358	// placeholder for future optional parameters
1359}
1360
1361// DiskAccessesListOptions contains the optional parameters for the DiskAccesses.List method.
1362type DiskAccessesListOptions struct {
1363	// placeholder for future optional parameters
1364}
1365
1366// DiskAccessesListPrivateEndpointConnectionsOptions contains the optional parameters for the DiskAccesses.ListPrivateEndpointConnections method.
1367type DiskAccessesListPrivateEndpointConnectionsOptions struct {
1368	// placeholder for future optional parameters
1369}
1370
1371// disk encryption set resource.
1372type DiskEncryptionSet struct {
1373	Resource
1374	// The managed identity for the disk encryption set. It should be given permission on the key vault before it can be used to encrypt disks.
1375	IDentity   *EncryptionSetIDentity   `json:"identity,omitempty"`
1376	Properties *EncryptionSetProperties `json:"properties,omitempty"`
1377}
1378
1379// The List disk encryption set operation response.
1380type DiskEncryptionSetList struct {
1381	// The uri to fetch the next page of disk encryption sets. Call ListNext() with this to fetch the next page of disk encryption sets.
1382	NextLink *string `json:"nextLink,omitempty"`
1383
1384	// A list of disk encryption sets.
1385	Value *[]DiskEncryptionSet `json:"value,omitempty"`
1386}
1387
1388// DiskEncryptionSetListResponse is the response envelope for operations that return a DiskEncryptionSetList type.
1389type DiskEncryptionSetListResponse struct {
1390	// The List disk encryption set operation response.
1391	DiskEncryptionSetList *DiskEncryptionSetList
1392
1393	// RawResponse contains the underlying HTTP response.
1394	RawResponse *http.Response
1395}
1396
1397// Describes the parameter of customer managed disk encryption set resource id that can be specified for disk.
1398// NOTE: The disk encryption set resource id can only be specified for managed disk. Please refer https://aka.ms/mdssewithcmkoverview for more details.
1399type DiskEncryptionSetParameters struct {
1400	SubResource
1401}
1402
1403// DiskEncryptionSetPollerResponse is the response envelope for operations that asynchronously return a DiskEncryptionSet type.
1404type DiskEncryptionSetPollerResponse struct {
1405	// PollUntilDone will poll the service endpoint until a terminal state is reached or an error is received
1406	PollUntilDone func(ctx context.Context, frequency time.Duration) (DiskEncryptionSetResponse, error)
1407
1408	// Poller contains an initialized poller.
1409	Poller DiskEncryptionSetPoller
1410
1411	// RawResponse contains the underlying HTTP response.
1412	RawResponse *http.Response
1413}
1414
1415// DiskEncryptionSetResponse is the response envelope for operations that return a DiskEncryptionSet type.
1416type DiskEncryptionSetResponse struct {
1417	// disk encryption set resource.
1418	DiskEncryptionSet *DiskEncryptionSet
1419
1420	// RawResponse contains the underlying HTTP response.
1421	RawResponse *http.Response
1422}
1423
1424// disk encryption set update resource.
1425type DiskEncryptionSetUpdate struct {
1426	// disk encryption set resource update properties.
1427	Properties *DiskEncryptionSetUpdateProperties `json:"properties,omitempty"`
1428
1429	// Resource tags
1430	Tags *map[string]string `json:"tags,omitempty"`
1431}
1432
1433// disk encryption set resource update properties.
1434type DiskEncryptionSetUpdateProperties struct {
1435	// Key Vault Key Url to be used for server side encryption of Managed Disks and Snapshots
1436	ActiveKey *KeyForDiskEncryptionSet `json:"activeKey,omitempty"`
1437
1438	// The type of key used to encrypt the data of the disk.
1439	EncryptionType *DiskEncryptionSetType `json:"encryptionType,omitempty"`
1440}
1441
1442// DiskEncryptionSetsBeginCreateOrUpdateOptions contains the optional parameters for the DiskEncryptionSets.BeginCreateOrUpdate method.
1443type DiskEncryptionSetsBeginCreateOrUpdateOptions struct {
1444	// placeholder for future optional parameters
1445}
1446
1447// DiskEncryptionSetsBeginDeleteOptions contains the optional parameters for the DiskEncryptionSets.BeginDelete method.
1448type DiskEncryptionSetsBeginDeleteOptions struct {
1449	// placeholder for future optional parameters
1450}
1451
1452// DiskEncryptionSetsBeginUpdateOptions contains the optional parameters for the DiskEncryptionSets.BeginUpdate method.
1453type DiskEncryptionSetsBeginUpdateOptions struct {
1454	// placeholder for future optional parameters
1455}
1456
1457// DiskEncryptionSetsGetOptions contains the optional parameters for the DiskEncryptionSets.Get method.
1458type DiskEncryptionSetsGetOptions struct {
1459	// placeholder for future optional parameters
1460}
1461
1462// DiskEncryptionSetsListAssociatedResourcesOptions contains the optional parameters for the DiskEncryptionSets.ListAssociatedResources method.
1463type DiskEncryptionSetsListAssociatedResourcesOptions struct {
1464	// placeholder for future optional parameters
1465}
1466
1467// DiskEncryptionSetsListByResourceGroupOptions contains the optional parameters for the DiskEncryptionSets.ListByResourceGroup method.
1468type DiskEncryptionSetsListByResourceGroupOptions struct {
1469	// placeholder for future optional parameters
1470}
1471
1472// DiskEncryptionSetsListOptions contains the optional parameters for the DiskEncryptionSets.List method.
1473type DiskEncryptionSetsListOptions struct {
1474	// placeholder for future optional parameters
1475}
1476
1477// Describes a Encryption Settings for a Disk
1478type DiskEncryptionSettings struct {
1479	// Specifies the location of the disk encryption key, which is a Key Vault Secret.
1480	DiskEncryptionKey *KeyVaultSecretReference `json:"diskEncryptionKey,omitempty"`
1481
1482	// Specifies whether disk encryption should be enabled on the virtual machine.
1483	Enabled *bool `json:"enabled,omitempty"`
1484
1485	// Specifies the location of the key encryption key in Key Vault.
1486	KeyEncryptionKey *KeyVaultKeyReference `json:"keyEncryptionKey,omitempty"`
1487}
1488
1489// This is the disk image encryption base class.
1490type DiskImageEncryption struct {
1491	// A relative URI containing the resource ID of the disk encryption set.
1492	DiskEncryptionSetID *string `json:"diskEncryptionSetId,omitempty"`
1493}
1494
1495// The instance view of the disk.
1496type DiskInstanceView struct {
1497	// Specifies the encryption settings for the OS Disk.
1498	// Minimum api-version: 2015-06-15
1499	EncryptionSettings *[]DiskEncryptionSettings `json:"encryptionSettings,omitempty"`
1500
1501	// The disk name.
1502	Name *string `json:"name,omitempty"`
1503
1504	// The resource status information.
1505	Statuses *[]InstanceViewStatus `json:"statuses,omitempty"`
1506}
1507
1508// The List Disks operation response.
1509type DiskList struct {
1510	// The uri to fetch the next page of disks. Call ListNext() with this to fetch the next page of disks.
1511	NextLink *string `json:"nextLink,omitempty"`
1512
1513	// A list of disks.
1514	Value *[]Disk `json:"value,omitempty"`
1515}
1516
1517// DiskListResponse is the response envelope for operations that return a DiskList type.
1518type DiskListResponse struct {
1519	// The List Disks operation response.
1520	DiskList *DiskList
1521
1522	// RawResponse contains the underlying HTTP response.
1523	RawResponse *http.Response
1524}
1525
1526// DiskPollerResponse is the response envelope for operations that asynchronously return a Disk type.
1527type DiskPollerResponse struct {
1528	// PollUntilDone will poll the service endpoint until a terminal state is reached or an error is received
1529	PollUntilDone func(ctx context.Context, frequency time.Duration) (DiskResponse, error)
1530
1531	// Poller contains an initialized poller.
1532	Poller DiskPoller
1533
1534	// RawResponse contains the underlying HTTP response.
1535	RawResponse *http.Response
1536}
1537
1538// Disk resource properties.
1539type DiskProperties struct {
1540	// Set to true to enable bursting beyond the provisioned performance target of the disk. Bursting is disabled by default. Does not apply to Ultra disks.
1541	BurstingEnabled *bool `json:"burstingEnabled,omitempty"`
1542
1543	// Disk source information. CreationData information cannot be changed after the disk has been created.
1544	CreationData *CreationData `json:"creationData,omitempty"`
1545
1546	// ARM id of the DiskAccess resource for using private endpoints on disks.
1547	DiskAccessID *string `json:"diskAccessId,omitempty"`
1548
1549	// The total number of IOPS that will be allowed across all VMs mounting the shared disk as ReadOnly. One operation can transfer between 4k and 256k bytes.
1550	DiskIopsReadOnly *int64 `json:"diskIOPSReadOnly,omitempty"`
1551
1552	// The number of IOPS allowed for this disk; only settable for UltraSSD disks. One operation can transfer between 4k and 256k bytes.
1553	DiskIopsReadWrite *int64 `json:"diskIOPSReadWrite,omitempty"`
1554
1555	// The total throughput (MBps) that will be allowed across all VMs mounting the shared disk as ReadOnly. MBps means millions of bytes per second - MB here
1556	// uses the ISO notation, of powers of 10.
1557	DiskMBpsReadOnly *int64 `json:"diskMBpsReadOnly,omitempty"`
1558
1559	// The bandwidth allowed for this disk; only settable for UltraSSD disks. MBps means millions of bytes per second - MB here uses the ISO notation, of powers
1560	// of 10.
1561	DiskMBpsReadWrite *int64 `json:"diskMBpsReadWrite,omitempty"`
1562
1563	// READ-ONLY; The size of the disk in bytes. This field is read only.
1564	DiskSizeBytes *int64 `json:"diskSizeBytes,omitempty" azure:"ro"`
1565
1566	// If creationData.createOption is Empty, this field is mandatory and it indicates the size of the disk to create. If this field is present for updates
1567	// or creation with other options, it indicates a
1568	// resize. Resizes are only allowed if the disk is not attached to a running VM, and can only increase the disk's size.
1569	DiskSizeGb *int32 `json:"diskSizeGB,omitempty"`
1570
1571	// READ-ONLY; The state of the disk.
1572	DiskState *DiskState `json:"diskState,omitempty" azure:"ro"`
1573
1574	// Encryption property can be used to encrypt data at rest with customer managed keys or platform managed keys.
1575	Encryption *Encryption `json:"encryption,omitempty"`
1576
1577	// Encryption settings collection used for Azure Disk Encryption, can contain multiple encryption settings per disk or snapshot.
1578	EncryptionSettingsCollection *EncryptionSettingsCollection `json:"encryptionSettingsCollection,omitempty"`
1579
1580	// The hypervisor generation of the Virtual Machine. Applicable to OS disks only.
1581	HyperVGeneration *HyperVGeneration `json:"hyperVGeneration,omitempty"`
1582
1583	// The maximum number of VMs that can attach to the disk at the same time. Value greater than one indicates a disk that can be mounted on multiple VMs at
1584	// the same time.
1585	MaxShares *int32 `json:"maxShares,omitempty"`
1586
1587	// Policy for accessing the disk via network.
1588	NetworkAccessPolicy *NetworkAccessPolicy `json:"networkAccessPolicy,omitempty"`
1589
1590	// The Operating System type.
1591	OSType *OperatingSystemTypes `json:"osType,omitempty"`
1592
1593	// READ-ONLY; The disk provisioning state.
1594	ProvisioningState *string `json:"provisioningState,omitempty" azure:"ro"`
1595
1596	// Purchase plan information for the the image from which the OS disk was created. E.g. - {name: 2019-Datacenter, publisher: MicrosoftWindowsServer, product:
1597	// WindowsServer}
1598	PurchasePlan *PurchasePlanAutoGenerated `json:"purchasePlan,omitempty"`
1599
1600	// READ-ONLY; Details of the list of all VMs that have the disk attached. maxShares should be set to a value greater than one for disks to allow attaching
1601	// them to multiple VMs.
1602	ShareInfo *[]ShareInfoElement `json:"shareInfo,omitempty" azure:"ro"`
1603
1604	// Performance tier of the disk (e.g, P4, S10) as described here: https://azure.microsoft.com/en-us/pricing/details/managed-disks/. Does not apply to Ultra
1605	// disks.
1606	Tier *string `json:"tier,omitempty"`
1607
1608	// READ-ONLY; The time when the disk was created.
1609	TimeCreated *time.Time `json:"timeCreated,omitempty" azure:"ro"`
1610
1611	// READ-ONLY; Unique Guid identifying the resource.
1612	UniqueID *string `json:"uniqueId,omitempty" azure:"ro"`
1613}
1614
1615// MarshalJSON implements the json.Marshaller interface for type DiskProperties.
1616func (d DiskProperties) MarshalJSON() ([]byte, error) {
1617	objectMap := make(map[string]interface{})
1618	if d.BurstingEnabled != nil {
1619		objectMap["burstingEnabled"] = d.BurstingEnabled
1620	}
1621	if d.CreationData != nil {
1622		objectMap["creationData"] = d.CreationData
1623	}
1624	if d.DiskAccessID != nil {
1625		objectMap["diskAccessId"] = d.DiskAccessID
1626	}
1627	if d.DiskIopsReadOnly != nil {
1628		objectMap["diskIOPSReadOnly"] = d.DiskIopsReadOnly
1629	}
1630	if d.DiskIopsReadWrite != nil {
1631		objectMap["diskIOPSReadWrite"] = d.DiskIopsReadWrite
1632	}
1633	if d.DiskMBpsReadOnly != nil {
1634		objectMap["diskMBpsReadOnly"] = d.DiskMBpsReadOnly
1635	}
1636	if d.DiskMBpsReadWrite != nil {
1637		objectMap["diskMBpsReadWrite"] = d.DiskMBpsReadWrite
1638	}
1639	if d.DiskSizeBytes != nil {
1640		objectMap["diskSizeBytes"] = d.DiskSizeBytes
1641	}
1642	if d.DiskSizeGb != nil {
1643		objectMap["diskSizeGB"] = d.DiskSizeGb
1644	}
1645	if d.DiskState != nil {
1646		objectMap["diskState"] = d.DiskState
1647	}
1648	if d.Encryption != nil {
1649		objectMap["encryption"] = d.Encryption
1650	}
1651	if d.EncryptionSettingsCollection != nil {
1652		objectMap["encryptionSettingsCollection"] = d.EncryptionSettingsCollection
1653	}
1654	if d.HyperVGeneration != nil {
1655		objectMap["hyperVGeneration"] = d.HyperVGeneration
1656	}
1657	if d.MaxShares != nil {
1658		objectMap["maxShares"] = d.MaxShares
1659	}
1660	if d.NetworkAccessPolicy != nil {
1661		objectMap["networkAccessPolicy"] = d.NetworkAccessPolicy
1662	}
1663	if d.OSType != nil {
1664		objectMap["osType"] = d.OSType
1665	}
1666	if d.ProvisioningState != nil {
1667		objectMap["provisioningState"] = d.ProvisioningState
1668	}
1669	if d.PurchasePlan != nil {
1670		objectMap["purchasePlan"] = d.PurchasePlan
1671	}
1672	if d.ShareInfo != nil {
1673		objectMap["shareInfo"] = d.ShareInfo
1674	}
1675	if d.Tier != nil {
1676		objectMap["tier"] = d.Tier
1677	}
1678	if d.TimeCreated != nil {
1679		objectMap["timeCreated"] = (*timeRFC3339)(d.TimeCreated)
1680	}
1681	if d.UniqueID != nil {
1682		objectMap["uniqueId"] = d.UniqueID
1683	}
1684	return json.Marshal(objectMap)
1685}
1686
1687// UnmarshalJSON implements the json.Unmarshaller interface for type DiskProperties.
1688func (d *DiskProperties) UnmarshalJSON(data []byte) error {
1689	var rawMsg map[string]*json.RawMessage
1690	if err := json.Unmarshal(data, &rawMsg); err != nil {
1691		return err
1692	}
1693	for key, val := range rawMsg {
1694		var err error
1695		switch key {
1696		case "burstingEnabled":
1697			if val != nil {
1698				err = json.Unmarshal(*val, &d.BurstingEnabled)
1699			}
1700			delete(rawMsg, key)
1701		case "creationData":
1702			if val != nil {
1703				err = json.Unmarshal(*val, &d.CreationData)
1704			}
1705			delete(rawMsg, key)
1706		case "diskAccessId":
1707			if val != nil {
1708				err = json.Unmarshal(*val, &d.DiskAccessID)
1709			}
1710			delete(rawMsg, key)
1711		case "diskIOPSReadOnly":
1712			if val != nil {
1713				err = json.Unmarshal(*val, &d.DiskIopsReadOnly)
1714			}
1715			delete(rawMsg, key)
1716		case "diskIOPSReadWrite":
1717			if val != nil {
1718				err = json.Unmarshal(*val, &d.DiskIopsReadWrite)
1719			}
1720			delete(rawMsg, key)
1721		case "diskMBpsReadOnly":
1722			if val != nil {
1723				err = json.Unmarshal(*val, &d.DiskMBpsReadOnly)
1724			}
1725			delete(rawMsg, key)
1726		case "diskMBpsReadWrite":
1727			if val != nil {
1728				err = json.Unmarshal(*val, &d.DiskMBpsReadWrite)
1729			}
1730			delete(rawMsg, key)
1731		case "diskSizeBytes":
1732			if val != nil {
1733				err = json.Unmarshal(*val, &d.DiskSizeBytes)
1734			}
1735			delete(rawMsg, key)
1736		case "diskSizeGB":
1737			if val != nil {
1738				err = json.Unmarshal(*val, &d.DiskSizeGb)
1739			}
1740			delete(rawMsg, key)
1741		case "diskState":
1742			if val != nil {
1743				err = json.Unmarshal(*val, &d.DiskState)
1744			}
1745			delete(rawMsg, key)
1746		case "encryption":
1747			if val != nil {
1748				err = json.Unmarshal(*val, &d.Encryption)
1749			}
1750			delete(rawMsg, key)
1751		case "encryptionSettingsCollection":
1752			if val != nil {
1753				err = json.Unmarshal(*val, &d.EncryptionSettingsCollection)
1754			}
1755			delete(rawMsg, key)
1756		case "hyperVGeneration":
1757			if val != nil {
1758				err = json.Unmarshal(*val, &d.HyperVGeneration)
1759			}
1760			delete(rawMsg, key)
1761		case "maxShares":
1762			if val != nil {
1763				err = json.Unmarshal(*val, &d.MaxShares)
1764			}
1765			delete(rawMsg, key)
1766		case "networkAccessPolicy":
1767			if val != nil {
1768				err = json.Unmarshal(*val, &d.NetworkAccessPolicy)
1769			}
1770			delete(rawMsg, key)
1771		case "osType":
1772			if val != nil {
1773				err = json.Unmarshal(*val, &d.OSType)
1774			}
1775			delete(rawMsg, key)
1776		case "provisioningState":
1777			if val != nil {
1778				err = json.Unmarshal(*val, &d.ProvisioningState)
1779			}
1780			delete(rawMsg, key)
1781		case "purchasePlan":
1782			if val != nil {
1783				err = json.Unmarshal(*val, &d.PurchasePlan)
1784			}
1785			delete(rawMsg, key)
1786		case "shareInfo":
1787			if val != nil {
1788				err = json.Unmarshal(*val, &d.ShareInfo)
1789			}
1790			delete(rawMsg, key)
1791		case "tier":
1792			if val != nil {
1793				err = json.Unmarshal(*val, &d.Tier)
1794			}
1795			delete(rawMsg, key)
1796		case "timeCreated":
1797			if val != nil {
1798				var aux timeRFC3339
1799				err = json.Unmarshal(*val, &aux)
1800				d.TimeCreated = (*time.Time)(&aux)
1801			}
1802			delete(rawMsg, key)
1803		case "uniqueId":
1804			if val != nil {
1805				err = json.Unmarshal(*val, &d.UniqueID)
1806			}
1807			delete(rawMsg, key)
1808		}
1809		if err != nil {
1810			return err
1811		}
1812	}
1813	return nil
1814}
1815
1816// DiskResponse is the response envelope for operations that return a Disk type.
1817type DiskResponse struct {
1818	// Disk resource.
1819	Disk *Disk
1820
1821	// RawResponse contains the underlying HTTP response.
1822	RawResponse *http.Response
1823}
1824
1825// Properties of disk restore point
1826type DiskRestorePoint struct {
1827	ProxyOnlyResource
1828	// Properties of an incremental disk restore point
1829	Properties *DiskRestorePointProperties `json:"properties,omitempty"`
1830}
1831
1832// DiskRestorePointGetOptions contains the optional parameters for the DiskRestorePoint.Get method.
1833type DiskRestorePointGetOptions struct {
1834	// placeholder for future optional parameters
1835}
1836
1837// The List Disk Restore Points operation response.
1838type DiskRestorePointList struct {
1839	// The uri to fetch the next page of disk restore points. Call ListNext() with this to fetch the next page of disk restore points.
1840	NextLink *string `json:"nextLink,omitempty"`
1841
1842	// A list of disk restore points.
1843	Value *[]DiskRestorePoint `json:"value,omitempty"`
1844}
1845
1846// DiskRestorePointListByRestorePointOptions contains the optional parameters for the DiskRestorePoint.ListByRestorePoint method.
1847type DiskRestorePointListByRestorePointOptions struct {
1848	// placeholder for future optional parameters
1849}
1850
1851// DiskRestorePointListResponse is the response envelope for operations that return a DiskRestorePointList type.
1852type DiskRestorePointListResponse struct {
1853	// The List Disk Restore Points operation response.
1854	DiskRestorePointList *DiskRestorePointList
1855
1856	// RawResponse contains the underlying HTTP response.
1857	RawResponse *http.Response
1858}
1859
1860// Properties of an incremental disk restore point
1861type DiskRestorePointProperties struct {
1862	// READ-ONLY; Encryption property can be used to encrypt data at rest with customer managed keys or platform managed keys.
1863	Encryption *Encryption `json:"encryption,omitempty" azure:"ro"`
1864
1865	// READ-ONLY; id of the backing snapshot's MIS family
1866	FamilyID *string `json:"familyId,omitempty" azure:"ro"`
1867
1868	// The hypervisor generation of the Virtual Machine. Applicable to OS disks only.
1869	HyperVGeneration *HyperVGeneration `json:"hyperVGeneration,omitempty"`
1870
1871	// READ-ONLY; The Operating System type.
1872	OSType *OperatingSystemTypes `json:"osType,omitempty" azure:"ro"`
1873
1874	// Purchase plan information for the the image from which the OS disk was created.
1875	PurchasePlan *PurchasePlanAutoGenerated `json:"purchasePlan,omitempty"`
1876
1877	// READ-ONLY; arm id of source disk
1878	SourceResourceID *string `json:"sourceResourceId,omitempty" azure:"ro"`
1879
1880	// READ-ONLY; unique incarnation id of the source disk
1881	SourceUniqueID *string `json:"sourceUniqueId,omitempty" azure:"ro"`
1882
1883	// READ-ONLY; The timestamp of restorePoint creation
1884	TimeCreated *time.Time `json:"timeCreated,omitempty" azure:"ro"`
1885}
1886
1887// MarshalJSON implements the json.Marshaller interface for type DiskRestorePointProperties.
1888func (d DiskRestorePointProperties) MarshalJSON() ([]byte, error) {
1889	objectMap := make(map[string]interface{})
1890	if d.Encryption != nil {
1891		objectMap["encryption"] = d.Encryption
1892	}
1893	if d.FamilyID != nil {
1894		objectMap["familyId"] = d.FamilyID
1895	}
1896	if d.HyperVGeneration != nil {
1897		objectMap["hyperVGeneration"] = d.HyperVGeneration
1898	}
1899	if d.OSType != nil {
1900		objectMap["osType"] = d.OSType
1901	}
1902	if d.PurchasePlan != nil {
1903		objectMap["purchasePlan"] = d.PurchasePlan
1904	}
1905	if d.SourceResourceID != nil {
1906		objectMap["sourceResourceId"] = d.SourceResourceID
1907	}
1908	if d.SourceUniqueID != nil {
1909		objectMap["sourceUniqueId"] = d.SourceUniqueID
1910	}
1911	if d.TimeCreated != nil {
1912		objectMap["timeCreated"] = (*timeRFC3339)(d.TimeCreated)
1913	}
1914	return json.Marshal(objectMap)
1915}
1916
1917// UnmarshalJSON implements the json.Unmarshaller interface for type DiskRestorePointProperties.
1918func (d *DiskRestorePointProperties) UnmarshalJSON(data []byte) error {
1919	var rawMsg map[string]*json.RawMessage
1920	if err := json.Unmarshal(data, &rawMsg); err != nil {
1921		return err
1922	}
1923	for key, val := range rawMsg {
1924		var err error
1925		switch key {
1926		case "encryption":
1927			if val != nil {
1928				err = json.Unmarshal(*val, &d.Encryption)
1929			}
1930			delete(rawMsg, key)
1931		case "familyId":
1932			if val != nil {
1933				err = json.Unmarshal(*val, &d.FamilyID)
1934			}
1935			delete(rawMsg, key)
1936		case "hyperVGeneration":
1937			if val != nil {
1938				err = json.Unmarshal(*val, &d.HyperVGeneration)
1939			}
1940			delete(rawMsg, key)
1941		case "osType":
1942			if val != nil {
1943				err = json.Unmarshal(*val, &d.OSType)
1944			}
1945			delete(rawMsg, key)
1946		case "purchasePlan":
1947			if val != nil {
1948				err = json.Unmarshal(*val, &d.PurchasePlan)
1949			}
1950			delete(rawMsg, key)
1951		case "sourceResourceId":
1952			if val != nil {
1953				err = json.Unmarshal(*val, &d.SourceResourceID)
1954			}
1955			delete(rawMsg, key)
1956		case "sourceUniqueId":
1957			if val != nil {
1958				err = json.Unmarshal(*val, &d.SourceUniqueID)
1959			}
1960			delete(rawMsg, key)
1961		case "timeCreated":
1962			if val != nil {
1963				var aux timeRFC3339
1964				err = json.Unmarshal(*val, &aux)
1965				d.TimeCreated = (*time.Time)(&aux)
1966			}
1967			delete(rawMsg, key)
1968		}
1969		if err != nil {
1970			return err
1971		}
1972	}
1973	return nil
1974}
1975
1976// DiskRestorePointResponse is the response envelope for operations that return a DiskRestorePoint type.
1977type DiskRestorePointResponse struct {
1978	// Properties of disk restore point
1979	DiskRestorePoint *DiskRestorePoint
1980
1981	// RawResponse contains the underlying HTTP response.
1982	RawResponse *http.Response
1983}
1984
1985// The disks sku name. Can be StandardLRS, PremiumLRS, StandardSSDLRS, or UltraSSDLRS.
1986type DiskSKU struct {
1987	// The sku name.
1988	Name *DiskStorageAccountTypes `json:"name,omitempty"`
1989
1990	// READ-ONLY; The sku tier.
1991	Tier *string `json:"tier,omitempty" azure:"ro"`
1992}
1993
1994// Disk update resource.
1995type DiskUpdate struct {
1996	// Disk resource update properties.
1997	Properties *DiskUpdateProperties `json:"properties,omitempty"`
1998
1999	// The disks sku name. Can be StandardLRS, PremiumLRS, StandardSSDLRS, or UltraSSDLRS.
2000	SKU *DiskSKU `json:"sku,omitempty"`
2001
2002	// Resource tags
2003	Tags *map[string]string `json:"tags,omitempty"`
2004}
2005
2006// Disk resource update properties.
2007type DiskUpdateProperties struct {
2008	// Set to true to enable bursting beyond the provisioned performance target of the disk. Bursting is disabled by default. Does not apply to Ultra disks.
2009	BurstingEnabled *bool `json:"burstingEnabled,omitempty"`
2010
2011	// ARM id of the DiskAccess resource for using private endpoints on disks.
2012	DiskAccessID *string `json:"diskAccessId,omitempty"`
2013
2014	// The total number of IOPS that will be allowed across all VMs mounting the shared disk as ReadOnly. One operation can transfer between 4k and 256k bytes.
2015	DiskIopsReadOnly *int64 `json:"diskIOPSReadOnly,omitempty"`
2016
2017	// The number of IOPS allowed for this disk; only settable for UltraSSD disks. One operation can transfer between 4k and 256k bytes.
2018	DiskIopsReadWrite *int64 `json:"diskIOPSReadWrite,omitempty"`
2019
2020	// The total throughput (MBps) that will be allowed across all VMs mounting the shared disk as ReadOnly. MBps means millions of bytes per second - MB here
2021	// uses the ISO notation, of powers of 10.
2022	DiskMBpsReadOnly *int64 `json:"diskMBpsReadOnly,omitempty"`
2023
2024	// The bandwidth allowed for this disk; only settable for UltraSSD disks. MBps means millions of bytes per second - MB here uses the ISO notation, of powers
2025	// of 10.
2026	DiskMBpsReadWrite *int64 `json:"diskMBpsReadWrite,omitempty"`
2027
2028	// If creationData.createOption is Empty, this field is mandatory and it indicates the size of the disk to create. If this field is present for updates
2029	// or creation with other options, it indicates a
2030	// resize. Resizes are only allowed if the disk is not attached to a running VM, and can only increase the disk's size.
2031	DiskSizeGb *int32 `json:"diskSizeGB,omitempty"`
2032
2033	// Encryption property can be used to encrypt data at rest with customer managed keys or platform managed keys.
2034	Encryption *Encryption `json:"encryption,omitempty"`
2035
2036	// Encryption settings collection used be Azure Disk Encryption, can contain multiple encryption settings per disk or snapshot.
2037	EncryptionSettingsCollection *EncryptionSettingsCollection `json:"encryptionSettingsCollection,omitempty"`
2038
2039	// The maximum number of VMs that can attach to the disk at the same time. Value greater than one indicates a disk that can be mounted on multiple VMs at
2040	// the same time.
2041	MaxShares *int32 `json:"maxShares,omitempty"`
2042
2043	// Policy for accessing the disk via network.
2044	NetworkAccessPolicy *NetworkAccessPolicy `json:"networkAccessPolicy,omitempty"`
2045
2046	// the Operating System type.
2047	OSType *OperatingSystemTypes `json:"osType,omitempty"`
2048
2049	// Purchase plan information to be added on the OS disk
2050	PurchasePlan *PurchasePlanAutoGenerated `json:"purchasePlan,omitempty"`
2051
2052	// Performance tier of the disk (e.g, P4, S10) as described here: https://azure.microsoft.com/en-us/pricing/details/managed-disks/. Does not apply to Ultra
2053	// disks.
2054	Tier *string `json:"tier,omitempty"`
2055}
2056
2057// DisksBeginCreateOrUpdateOptions contains the optional parameters for the Disks.BeginCreateOrUpdate method.
2058type DisksBeginCreateOrUpdateOptions struct {
2059	// placeholder for future optional parameters
2060}
2061
2062// DisksBeginDeleteOptions contains the optional parameters for the Disks.BeginDelete method.
2063type DisksBeginDeleteOptions struct {
2064	// placeholder for future optional parameters
2065}
2066
2067// DisksBeginGrantAccessOptions contains the optional parameters for the Disks.BeginGrantAccess method.
2068type DisksBeginGrantAccessOptions struct {
2069	// placeholder for future optional parameters
2070}
2071
2072// DisksBeginRevokeAccessOptions contains the optional parameters for the Disks.BeginRevokeAccess method.
2073type DisksBeginRevokeAccessOptions struct {
2074	// placeholder for future optional parameters
2075}
2076
2077// DisksBeginUpdateOptions contains the optional parameters for the Disks.BeginUpdate method.
2078type DisksBeginUpdateOptions struct {
2079	// placeholder for future optional parameters
2080}
2081
2082// DisksGetOptions contains the optional parameters for the Disks.Get method.
2083type DisksGetOptions struct {
2084	// placeholder for future optional parameters
2085}
2086
2087// DisksListByResourceGroupOptions contains the optional parameters for the Disks.ListByResourceGroup method.
2088type DisksListByResourceGroupOptions struct {
2089	// placeholder for future optional parameters
2090}
2091
2092// DisksListOptions contains the optional parameters for the Disks.List method.
2093type DisksListOptions struct {
2094	// placeholder for future optional parameters
2095}
2096
2097// Encryption at rest settings for disk or snapshot
2098type Encryption struct {
2099	// ResourceId of the disk encryption set to use for enabling encryption at rest.
2100	DiskEncryptionSetID *string `json:"diskEncryptionSetId,omitempty"`
2101
2102	// The type of key used to encrypt the data of the disk.
2103	Type *EncryptionType `json:"type,omitempty"`
2104}
2105
2106// Optional. Allows users to provide customer managed keys for encrypting the OS and data disks in the gallery artifact.
2107type EncryptionImages struct {
2108	// A list of encryption specifications for data disk images.
2109	DataDiskImages *[]DataDiskImageEncryption `json:"dataDiskImages,omitempty"`
2110
2111	// This is the disk image encryption base class.
2112	OSDiskImage *DiskImageEncryption `json:"osDiskImage,omitempty"`
2113}
2114
2115// The managed identity for the disk encryption set. It should be given permission on the key vault before it can be used to encrypt disks.
2116type EncryptionSetIDentity struct {
2117	// READ-ONLY; The object id of the Managed Identity Resource. This will be sent to the RP from ARM via the x-ms-identity-principal-id header in the PUT
2118	// request if the resource has a systemAssigned(implicit)
2119	// identity
2120	PrincipalID *string `json:"principalId,omitempty" azure:"ro"`
2121
2122	// READ-ONLY; The tenant id of the Managed Identity Resource. This will be sent to the RP from ARM via the x-ms-client-tenant-id header in the PUT request
2123	// if the resource has a systemAssigned(implicit) identity
2124	TenantID *string `json:"tenantId,omitempty" azure:"ro"`
2125
2126	// The type of Managed Identity used by the DiskEncryptionSet. Only SystemAssigned is supported for new creations. Disk Encryption Sets can be updated with
2127	// Identity type None during migration of
2128	// subscription to a new Azure Active Directory tenant; it will cause the encrypted resources to lose access to the keys.
2129	Type *DiskEncryptionSetIDentityType `json:"type,omitempty"`
2130}
2131
2132type EncryptionSetProperties struct {
2133	// The key vault key which is currently used by this disk encryption set.
2134	ActiveKey *KeyForDiskEncryptionSet `json:"activeKey,omitempty"`
2135
2136	// The type of key used to encrypt the data of the disk.
2137	EncryptionType *DiskEncryptionSetType `json:"encryptionType,omitempty"`
2138
2139	// READ-ONLY; A readonly collection of key vault keys previously used by this disk encryption set while a key rotation is in progress. It will be empty
2140	// if there is no ongoing key rotation.
2141	PreviousKeys *[]KeyForDiskEncryptionSet `json:"previousKeys,omitempty" azure:"ro"`
2142
2143	// READ-ONLY; The disk encryption set provisioning state.
2144	ProvisioningState *string `json:"provisioningState,omitempty" azure:"ro"`
2145}
2146
2147// Encryption settings for disk or snapshot
2148type EncryptionSettingsCollection struct {
2149	// Set this flag to true and provide DiskEncryptionKey and optional KeyEncryptionKey to enable encryption. Set this flag to false and remove DiskEncryptionKey
2150	// and KeyEncryptionKey to disable encryption.
2151	// If EncryptionSettings is null in the request object, the existing settings remain unchanged.
2152	Enabled *bool `json:"enabled,omitempty"`
2153
2154	// A collection of encryption settings, one for each disk volume.
2155	EncryptionSettings *[]EncryptionSettingsElement `json:"encryptionSettings,omitempty"`
2156
2157	// Describes what type of encryption is used for the disks. Once this field is set, it cannot be overwritten. '1.0' corresponds to Azure Disk Encryption
2158	// with AAD app.'1.1' corresponds to Azure Disk
2159	// Encryption.
2160	EncryptionSettingsVersion *string `json:"encryptionSettingsVersion,omitempty"`
2161}
2162
2163// Encryption settings for one disk volume.
2164type EncryptionSettingsElement struct {
2165	// Key Vault Secret Url and vault id of the disk encryption key
2166	DiskEncryptionKey *KeyVaultAndSecretReference `json:"diskEncryptionKey,omitempty"`
2167
2168	// Key Vault Key Url and vault id of the key encryption key. KeyEncryptionKey is optional and when provided is used to unwrap the disk encryption key.
2169	KeyEncryptionKey *KeyVaultAndKeyReference `json:"keyEncryptionKey,omitempty"`
2170}
2171
2172// The complex type of the extended location.
2173type ExtendedLocation struct {
2174	// The name of the extended location.
2175	Name *string `json:"name,omitempty"`
2176
2177	// The type of the extended location.
2178	Type *ExtendedLocationTypes `json:"type,omitempty"`
2179}
2180
2181// GalleriesBeginCreateOrUpdateOptions contains the optional parameters for the Galleries.BeginCreateOrUpdate method.
2182type GalleriesBeginCreateOrUpdateOptions struct {
2183	// placeholder for future optional parameters
2184}
2185
2186// GalleriesBeginDeleteOptions contains the optional parameters for the Galleries.BeginDelete method.
2187type GalleriesBeginDeleteOptions struct {
2188	// placeholder for future optional parameters
2189}
2190
2191// GalleriesBeginUpdateOptions contains the optional parameters for the Galleries.BeginUpdate method.
2192type GalleriesBeginUpdateOptions struct {
2193	// placeholder for future optional parameters
2194}
2195
2196// GalleriesGetOptions contains the optional parameters for the Galleries.Get method.
2197type GalleriesGetOptions struct {
2198	// The select expression to apply on the operation.
2199	SelectParameter *SelectPermissions
2200}
2201
2202// GalleriesListByResourceGroupOptions contains the optional parameters for the Galleries.ListByResourceGroup method.
2203type GalleriesListByResourceGroupOptions struct {
2204	// placeholder for future optional parameters
2205}
2206
2207// GalleriesListOptions contains the optional parameters for the Galleries.List method.
2208type GalleriesListOptions struct {
2209	// placeholder for future optional parameters
2210}
2211
2212// Specifies information about the Shared Image Gallery that you want to create or update.
2213type Gallery struct {
2214	Resource
2215	// Describes the properties of a Shared Image Gallery.
2216	Properties *GalleryProperties `json:"properties,omitempty"`
2217}
2218
2219// Specifies information about the gallery Application Definition that you want to create or update.
2220type GalleryApplication struct {
2221	Resource
2222	// Describes the properties of a gallery Application Definition.
2223	Properties *GalleryApplicationProperties `json:"properties,omitempty"`
2224}
2225
2226// The List Gallery Applications operation response.
2227type GalleryApplicationList struct {
2228	// The uri to fetch the next page of Application Definitions in the Application Gallery. Call ListNext() with this to fetch the next page of gallery Application
2229	// Definitions.
2230	NextLink *string `json:"nextLink,omitempty"`
2231
2232	// A list of Gallery Applications.
2233	Value *[]GalleryApplication `json:"value,omitempty"`
2234}
2235
2236// GalleryApplicationListResponse is the response envelope for operations that return a GalleryApplicationList type.
2237type GalleryApplicationListResponse struct {
2238	// The List Gallery Applications operation response.
2239	GalleryApplicationList *GalleryApplicationList
2240
2241	// RawResponse contains the underlying HTTP response.
2242	RawResponse *http.Response
2243}
2244
2245// GalleryApplicationPollerResponse is the response envelope for operations that asynchronously return a GalleryApplication type.
2246type GalleryApplicationPollerResponse struct {
2247	// PollUntilDone will poll the service endpoint until a terminal state is reached or an error is received
2248	PollUntilDone func(ctx context.Context, frequency time.Duration) (GalleryApplicationResponse, error)
2249
2250	// Poller contains an initialized poller.
2251	Poller GalleryApplicationPoller
2252
2253	// RawResponse contains the underlying HTTP response.
2254	RawResponse *http.Response
2255}
2256
2257// Describes the properties of a gallery Application Definition.
2258type GalleryApplicationProperties struct {
2259	// The description of this gallery Application Definition resource. This property is updatable.
2260	Description *string `json:"description,omitempty"`
2261
2262	// The end of life date of the gallery Application Definition. This property can be used for decommissioning purposes. This property is updatable.
2263	EndOfLifeDate *time.Time `json:"endOfLifeDate,omitempty"`
2264
2265	// The Eula agreement for the gallery Application Definition.
2266	Eula *string `json:"eula,omitempty"`
2267
2268	// The privacy statement uri.
2269	PrivacyStatementURI *string `json:"privacyStatementUri,omitempty"`
2270
2271	// The release note uri.
2272	ReleaseNoteURI *string `json:"releaseNoteUri,omitempty"`
2273
2274	// This property allows you to specify the supported type of the OS that application is built for.
2275	// Possible values are:
2276	// Windows
2277	// Linux
2278	SupportedOSType *OperatingSystemTypes `json:"supportedOSType,omitempty"`
2279}
2280
2281// MarshalJSON implements the json.Marshaller interface for type GalleryApplicationProperties.
2282func (g GalleryApplicationProperties) MarshalJSON() ([]byte, error) {
2283	objectMap := make(map[string]interface{})
2284	if g.Description != nil {
2285		objectMap["description"] = g.Description
2286	}
2287	if g.EndOfLifeDate != nil {
2288		objectMap["endOfLifeDate"] = (*timeRFC3339)(g.EndOfLifeDate)
2289	}
2290	if g.Eula != nil {
2291		objectMap["eula"] = g.Eula
2292	}
2293	if g.PrivacyStatementURI != nil {
2294		objectMap["privacyStatementUri"] = g.PrivacyStatementURI
2295	}
2296	if g.ReleaseNoteURI != nil {
2297		objectMap["releaseNoteUri"] = g.ReleaseNoteURI
2298	}
2299	if g.SupportedOSType != nil {
2300		objectMap["supportedOSType"] = g.SupportedOSType
2301	}
2302	return json.Marshal(objectMap)
2303}
2304
2305// UnmarshalJSON implements the json.Unmarshaller interface for type GalleryApplicationProperties.
2306func (g *GalleryApplicationProperties) UnmarshalJSON(data []byte) error {
2307	var rawMsg map[string]*json.RawMessage
2308	if err := json.Unmarshal(data, &rawMsg); err != nil {
2309		return err
2310	}
2311	for key, val := range rawMsg {
2312		var err error
2313		switch key {
2314		case "description":
2315			if val != nil {
2316				err = json.Unmarshal(*val, &g.Description)
2317			}
2318			delete(rawMsg, key)
2319		case "endOfLifeDate":
2320			if val != nil {
2321				var aux timeRFC3339
2322				err = json.Unmarshal(*val, &aux)
2323				g.EndOfLifeDate = (*time.Time)(&aux)
2324			}
2325			delete(rawMsg, key)
2326		case "eula":
2327			if val != nil {
2328				err = json.Unmarshal(*val, &g.Eula)
2329			}
2330			delete(rawMsg, key)
2331		case "privacyStatementUri":
2332			if val != nil {
2333				err = json.Unmarshal(*val, &g.PrivacyStatementURI)
2334			}
2335			delete(rawMsg, key)
2336		case "releaseNoteUri":
2337			if val != nil {
2338				err = json.Unmarshal(*val, &g.ReleaseNoteURI)
2339			}
2340			delete(rawMsg, key)
2341		case "supportedOSType":
2342			if val != nil {
2343				err = json.Unmarshal(*val, &g.SupportedOSType)
2344			}
2345			delete(rawMsg, key)
2346		}
2347		if err != nil {
2348			return err
2349		}
2350	}
2351	return nil
2352}
2353
2354// GalleryApplicationResponse is the response envelope for operations that return a GalleryApplication type.
2355type GalleryApplicationResponse struct {
2356	// Specifies information about the gallery Application Definition that you want to create or update.
2357	GalleryApplication *GalleryApplication
2358
2359	// RawResponse contains the underlying HTTP response.
2360	RawResponse *http.Response
2361}
2362
2363// Specifies information about the gallery Application Definition that you want to update.
2364type GalleryApplicationUpdate struct {
2365	UpdateResourceDefinition
2366	// Describes the properties of a gallery Application Definition.
2367	Properties *GalleryApplicationProperties `json:"properties,omitempty"`
2368}
2369
2370// Specifies information about the gallery Application Version that you want to create or update.
2371type GalleryApplicationVersion struct {
2372	Resource
2373	// Describes the properties of a gallery image version.
2374	Properties *GalleryApplicationVersionProperties `json:"properties,omitempty"`
2375}
2376
2377// The List Gallery Application version operation response.
2378type GalleryApplicationVersionList struct {
2379	// The uri to fetch the next page of gallery Application Versions. Call ListNext() with this to fetch the next page of gallery Application Versions.
2380	NextLink *string `json:"nextLink,omitempty"`
2381
2382	// A list of gallery Application Versions.
2383	Value *[]GalleryApplicationVersion `json:"value,omitempty"`
2384}
2385
2386// GalleryApplicationVersionListResponse is the response envelope for operations that return a GalleryApplicationVersionList type.
2387type GalleryApplicationVersionListResponse struct {
2388	// The List Gallery Application version operation response.
2389	GalleryApplicationVersionList *GalleryApplicationVersionList
2390
2391	// RawResponse contains the underlying HTTP response.
2392	RawResponse *http.Response
2393}
2394
2395// GalleryApplicationVersionPollerResponse is the response envelope for operations that asynchronously return a GalleryApplicationVersion type.
2396type GalleryApplicationVersionPollerResponse struct {
2397	// PollUntilDone will poll the service endpoint until a terminal state is reached or an error is received
2398	PollUntilDone func(ctx context.Context, frequency time.Duration) (GalleryApplicationVersionResponse, error)
2399
2400	// Poller contains an initialized poller.
2401	Poller GalleryApplicationVersionPoller
2402
2403	// RawResponse contains the underlying HTTP response.
2404	RawResponse *http.Response
2405}
2406
2407// Describes the properties of a gallery image version.
2408type GalleryApplicationVersionProperties struct {
2409	// READ-ONLY; The provisioning state, which only appears in the response.
2410	ProvisioningState *GalleryApplicationVersionPropertiesProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
2411
2412	// The publishing profile of a gallery image version.
2413	PublishingProfile *GalleryApplicationVersionPublishingProfile `json:"publishingProfile,omitempty"`
2414
2415	// READ-ONLY; This is the replication status of the gallery image version.
2416	ReplicationStatus *ReplicationStatus `json:"replicationStatus,omitempty" azure:"ro"`
2417}
2418
2419// The publishing profile of a gallery image version.
2420type GalleryApplicationVersionPublishingProfile struct {
2421	GalleryArtifactPublishingProfileBase
2422	// Optional. Whether or not this application reports health.
2423	EnableHealthCheck *bool               `json:"enableHealthCheck,omitempty"`
2424	ManageActions     *UserArtifactManage `json:"manageActions,omitempty"`
2425
2426	// The source image from which the Image Version is going to be created.
2427	Source *UserArtifactSource `json:"source,omitempty"`
2428}
2429
2430// MarshalJSON implements the json.Marshaller interface for type GalleryApplicationVersionPublishingProfile.
2431func (g GalleryApplicationVersionPublishingProfile) MarshalJSON() ([]byte, error) {
2432	objectMap := g.GalleryArtifactPublishingProfileBase.marshalInternal()
2433	if g.EnableHealthCheck != nil {
2434		objectMap["enableHealthCheck"] = g.EnableHealthCheck
2435	}
2436	if g.ManageActions != nil {
2437		objectMap["manageActions"] = g.ManageActions
2438	}
2439	if g.Source != nil {
2440		objectMap["source"] = g.Source
2441	}
2442	return json.Marshal(objectMap)
2443}
2444
2445// UnmarshalJSON implements the json.Unmarshaller interface for type GalleryApplicationVersionPublishingProfile.
2446func (g *GalleryApplicationVersionPublishingProfile) UnmarshalJSON(data []byte) error {
2447	var rawMsg map[string]*json.RawMessage
2448	if err := json.Unmarshal(data, &rawMsg); err != nil {
2449		return err
2450	}
2451	for key, val := range rawMsg {
2452		var err error
2453		switch key {
2454		case "enableHealthCheck":
2455			if val != nil {
2456				err = json.Unmarshal(*val, &g.EnableHealthCheck)
2457			}
2458			delete(rawMsg, key)
2459		case "manageActions":
2460			if val != nil {
2461				err = json.Unmarshal(*val, &g.ManageActions)
2462			}
2463			delete(rawMsg, key)
2464		case "source":
2465			if val != nil {
2466				err = json.Unmarshal(*val, &g.Source)
2467			}
2468			delete(rawMsg, key)
2469		}
2470		if err != nil {
2471			return err
2472		}
2473	}
2474	return g.GalleryArtifactPublishingProfileBase.unmarshalInternal(rawMsg)
2475}
2476
2477// GalleryApplicationVersionResponse is the response envelope for operations that return a GalleryApplicationVersion type.
2478type GalleryApplicationVersionResponse struct {
2479	// Specifies information about the gallery Application Version that you want to create or update.
2480	GalleryApplicationVersion *GalleryApplicationVersion
2481
2482	// RawResponse contains the underlying HTTP response.
2483	RawResponse *http.Response
2484}
2485
2486// Specifies information about the gallery Application Version that you want to update.
2487type GalleryApplicationVersionUpdate struct {
2488	UpdateResourceDefinition
2489	// Describes the properties of a gallery image version.
2490	Properties *GalleryApplicationVersionProperties `json:"properties,omitempty"`
2491}
2492
2493// GalleryApplicationVersionsBeginCreateOrUpdateOptions contains the optional parameters for the GalleryApplicationVersions.BeginCreateOrUpdate method.
2494type GalleryApplicationVersionsBeginCreateOrUpdateOptions struct {
2495	// placeholder for future optional parameters
2496}
2497
2498// GalleryApplicationVersionsBeginDeleteOptions contains the optional parameters for the GalleryApplicationVersions.BeginDelete method.
2499type GalleryApplicationVersionsBeginDeleteOptions struct {
2500	// placeholder for future optional parameters
2501}
2502
2503// GalleryApplicationVersionsBeginUpdateOptions contains the optional parameters for the GalleryApplicationVersions.BeginUpdate method.
2504type GalleryApplicationVersionsBeginUpdateOptions struct {
2505	// placeholder for future optional parameters
2506}
2507
2508// GalleryApplicationVersionsGetOptions contains the optional parameters for the GalleryApplicationVersions.Get method.
2509type GalleryApplicationVersionsGetOptions struct {
2510	// The expand expression to apply on the operation.
2511	Expand *ReplicationStatusTypes
2512}
2513
2514// GalleryApplicationVersionsListByGalleryApplicationOptions contains the optional parameters for the GalleryApplicationVersions.ListByGalleryApplication
2515// method.
2516type GalleryApplicationVersionsListByGalleryApplicationOptions struct {
2517	// placeholder for future optional parameters
2518}
2519
2520// GalleryApplicationsBeginCreateOrUpdateOptions contains the optional parameters for the GalleryApplications.BeginCreateOrUpdate method.
2521type GalleryApplicationsBeginCreateOrUpdateOptions struct {
2522	// placeholder for future optional parameters
2523}
2524
2525// GalleryApplicationsBeginDeleteOptions contains the optional parameters for the GalleryApplications.BeginDelete method.
2526type GalleryApplicationsBeginDeleteOptions struct {
2527	// placeholder for future optional parameters
2528}
2529
2530// GalleryApplicationsBeginUpdateOptions contains the optional parameters for the GalleryApplications.BeginUpdate method.
2531type GalleryApplicationsBeginUpdateOptions struct {
2532	// placeholder for future optional parameters
2533}
2534
2535// GalleryApplicationsGetOptions contains the optional parameters for the GalleryApplications.Get method.
2536type GalleryApplicationsGetOptions struct {
2537	// placeholder for future optional parameters
2538}
2539
2540// GalleryApplicationsListByGalleryOptions contains the optional parameters for the GalleryApplications.ListByGallery method.
2541type GalleryApplicationsListByGalleryOptions struct {
2542	// placeholder for future optional parameters
2543}
2544
2545// Describes the basic gallery artifact publishing profile.
2546type GalleryArtifactPublishingProfileBase struct {
2547	// The end of life date of the gallery image version. This property can be used for decommissioning purposes. This property is updatable.
2548	EndOfLifeDate *time.Time `json:"endOfLifeDate,omitempty"`
2549
2550	// If set to true, Virtual Machines deployed from the latest version of the Image Definition won't use this Image Version.
2551	ExcludeFromLatest *bool `json:"excludeFromLatest,omitempty"`
2552
2553	// READ-ONLY; The timestamp for when the gallery image version is published.
2554	PublishedDate *time.Time `json:"publishedDate,omitempty" azure:"ro"`
2555
2556	// The number of replicas of the Image Version to be created per region. This property would take effect for a region when regionalReplicaCount is not specified.
2557	// This property is updatable.
2558	ReplicaCount *int32 `json:"replicaCount,omitempty"`
2559
2560	// Specifies the storage account type to be used to store the image. This property is not updatable.
2561	StorageAccountType *StorageAccountType `json:"storageAccountType,omitempty"`
2562
2563	// The target regions where the Image Version is going to be replicated to. This property is updatable.
2564	TargetRegions *[]TargetRegion `json:"targetRegions,omitempty"`
2565}
2566
2567// MarshalJSON implements the json.Marshaller interface for type GalleryArtifactPublishingProfileBase.
2568func (g GalleryArtifactPublishingProfileBase) MarshalJSON() ([]byte, error) {
2569	objectMap := g.marshalInternal()
2570	return json.Marshal(objectMap)
2571}
2572
2573// UnmarshalJSON implements the json.Unmarshaller interface for type GalleryArtifactPublishingProfileBase.
2574func (g *GalleryArtifactPublishingProfileBase) UnmarshalJSON(data []byte) error {
2575	var rawMsg map[string]*json.RawMessage
2576	if err := json.Unmarshal(data, &rawMsg); err != nil {
2577		return err
2578	}
2579	return g.unmarshalInternal(rawMsg)
2580}
2581
2582func (g GalleryArtifactPublishingProfileBase) marshalInternal() map[string]interface{} {
2583	objectMap := make(map[string]interface{})
2584	if g.EndOfLifeDate != nil {
2585		objectMap["endOfLifeDate"] = (*timeRFC3339)(g.EndOfLifeDate)
2586	}
2587	if g.ExcludeFromLatest != nil {
2588		objectMap["excludeFromLatest"] = g.ExcludeFromLatest
2589	}
2590	if g.PublishedDate != nil {
2591		objectMap["publishedDate"] = (*timeRFC3339)(g.PublishedDate)
2592	}
2593	if g.ReplicaCount != nil {
2594		objectMap["replicaCount"] = g.ReplicaCount
2595	}
2596	if g.StorageAccountType != nil {
2597		objectMap["storageAccountType"] = g.StorageAccountType
2598	}
2599	if g.TargetRegions != nil {
2600		objectMap["targetRegions"] = g.TargetRegions
2601	}
2602	return objectMap
2603}
2604
2605func (g *GalleryArtifactPublishingProfileBase) unmarshalInternal(rawMsg map[string]*json.RawMessage) error {
2606	for key, val := range rawMsg {
2607		var err error
2608		switch key {
2609		case "endOfLifeDate":
2610			if val != nil {
2611				var aux timeRFC3339
2612				err = json.Unmarshal(*val, &aux)
2613				g.EndOfLifeDate = (*time.Time)(&aux)
2614			}
2615			delete(rawMsg, key)
2616		case "excludeFromLatest":
2617			if val != nil {
2618				err = json.Unmarshal(*val, &g.ExcludeFromLatest)
2619			}
2620			delete(rawMsg, key)
2621		case "publishedDate":
2622			if val != nil {
2623				var aux timeRFC3339
2624				err = json.Unmarshal(*val, &aux)
2625				g.PublishedDate = (*time.Time)(&aux)
2626			}
2627			delete(rawMsg, key)
2628		case "replicaCount":
2629			if val != nil {
2630				err = json.Unmarshal(*val, &g.ReplicaCount)
2631			}
2632			delete(rawMsg, key)
2633		case "storageAccountType":
2634			if val != nil {
2635				err = json.Unmarshal(*val, &g.StorageAccountType)
2636			}
2637			delete(rawMsg, key)
2638		case "targetRegions":
2639			if val != nil {
2640				err = json.Unmarshal(*val, &g.TargetRegions)
2641			}
2642			delete(rawMsg, key)
2643		}
2644		if err != nil {
2645			return err
2646		}
2647	}
2648	return nil
2649}
2650
2651// The source image from which the Image Version is going to be created.
2652type GalleryArtifactSource struct {
2653	// The managed artifact.
2654	ManagedImage *ManagedArtifact `json:"managedImage,omitempty"`
2655}
2656
2657// The gallery artifact version source.
2658type GalleryArtifactVersionSource struct {
2659	// The id of the gallery artifact version source. Can specify a disk uri, snapshot uri, user image or storage account resource.
2660	ID *string `json:"id,omitempty"`
2661
2662	// The uri of the gallery artifact version source. Currently used to specify vhd/blob source.
2663	URI *string `json:"uri,omitempty"`
2664}
2665
2666// This is the data disk image.
2667type GalleryDataDiskImage struct {
2668	GalleryDiskImage
2669	// This property specifies the logical unit number of the data disk. This value is used to identify data disks within the Virtual Machine and therefore
2670	// must be unique for each data disk attached to the
2671	// Virtual Machine.
2672	Lun *int32 `json:"lun,omitempty"`
2673}
2674
2675// This is the disk image base class.
2676type GalleryDiskImage struct {
2677	// The host caching of the disk. Valid values are 'None', 'ReadOnly', and 'ReadWrite'
2678	HostCaching *HostCaching `json:"hostCaching,omitempty"`
2679
2680	// READ-ONLY; This property indicates the size of the VHD to be created.
2681	SizeInGb *int32 `json:"sizeInGB,omitempty" azure:"ro"`
2682
2683	// The gallery artifact version source.
2684	Source *GalleryArtifactVersionSource `json:"source,omitempty"`
2685}
2686
2687// Describes the gallery unique name.
2688type GalleryIDentifier struct {
2689	// READ-ONLY; The unique name of the Shared Image Gallery. This name is generated automatically by Azure.
2690	UniqueName *string `json:"uniqueName,omitempty" azure:"ro"`
2691}
2692
2693// Specifies information about the gallery image definition that you want to create or update.
2694type GalleryImage struct {
2695	Resource
2696	// Describes the properties of a gallery image definition.
2697	Properties *GalleryImageProperties `json:"properties,omitempty"`
2698}
2699
2700// A feature for gallery image.
2701type GalleryImageFeature struct {
2702	// The name of the gallery image feature.
2703	Name *string `json:"name,omitempty"`
2704
2705	// The value of the gallery image feature.
2706	Value *string `json:"value,omitempty"`
2707}
2708
2709// This is the gallery image definition identifier.
2710type GalleryImageIDentifier struct {
2711	// The name of the gallery image definition offer.
2712	Offer *string `json:"offer,omitempty"`
2713
2714	// The name of the gallery image definition publisher.
2715	Publisher *string `json:"publisher,omitempty"`
2716
2717	// The name of the gallery image definition SKU.
2718	SKU *string `json:"sku,omitempty"`
2719}
2720
2721// The List Gallery Images operation response.
2722type GalleryImageList struct {
2723	// The uri to fetch the next page of Image Definitions in the Shared Image Gallery. Call ListNext() with this to fetch the next page of gallery image definitions.
2724	NextLink *string `json:"nextLink,omitempty"`
2725
2726	// A list of Shared Image Gallery images.
2727	Value *[]GalleryImage `json:"value,omitempty"`
2728}
2729
2730// GalleryImageListResponse is the response envelope for operations that return a GalleryImageList type.
2731type GalleryImageListResponse struct {
2732	// The List Gallery Images operation response.
2733	GalleryImageList *GalleryImageList
2734
2735	// RawResponse contains the underlying HTTP response.
2736	RawResponse *http.Response
2737}
2738
2739// GalleryImagePollerResponse is the response envelope for operations that asynchronously return a GalleryImage type.
2740type GalleryImagePollerResponse struct {
2741	// PollUntilDone will poll the service endpoint until a terminal state is reached or an error is received
2742	PollUntilDone func(ctx context.Context, frequency time.Duration) (GalleryImageResponse, error)
2743
2744	// Poller contains an initialized poller.
2745	Poller GalleryImagePoller
2746
2747	// RawResponse contains the underlying HTTP response.
2748	RawResponse *http.Response
2749}
2750
2751// Describes the properties of a gallery image definition.
2752type GalleryImageProperties struct {
2753	// The description of this gallery image definition resource. This property is updatable.
2754	Description *string `json:"description,omitempty"`
2755
2756	// Describes the disallowed disk types.
2757	Disallowed *Disallowed `json:"disallowed,omitempty"`
2758
2759	// The end of life date of the gallery image definition. This property can be used for decommissioning purposes. This property is updatable.
2760	EndOfLifeDate *time.Time `json:"endOfLifeDate,omitempty"`
2761
2762	// The Eula agreement for the gallery image definition.
2763	Eula *string `json:"eula,omitempty"`
2764
2765	// A list of gallery image features.
2766	Features *[]GalleryImageFeature `json:"features,omitempty"`
2767
2768	// The hypervisor generation of the Virtual Machine. Applicable to OS disks only.
2769	HyperVGeneration *HyperVGeneration `json:"hyperVGeneration,omitempty"`
2770
2771	// This is the gallery image definition identifier.
2772	IDentifier *GalleryImageIDentifier `json:"identifier,omitempty"`
2773
2774	// This property allows the user to specify whether the virtual machines created under this image are 'Generalized' or 'Specialized'.
2775	OSState *OperatingSystemStateTypes `json:"osState,omitempty"`
2776
2777	// This property allows you to specify the type of the OS that is included in the disk when creating a VM from a managed image.
2778	// Possible values are:
2779	// Windows
2780	// Linux
2781	OSType *OperatingSystemTypes `json:"osType,omitempty"`
2782
2783	// The privacy statement uri.
2784	PrivacyStatementURI *string `json:"privacyStatementUri,omitempty"`
2785
2786	// READ-ONLY; The provisioning state, which only appears in the response.
2787	ProvisioningState *GalleryImagePropertiesProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
2788
2789	// Describes the gallery image definition purchase plan. This is used by marketplace images.
2790	PurchasePlan *ImagePurchasePlan `json:"purchasePlan,omitempty"`
2791
2792	// The properties describe the recommended machine configuration for this Image Definition. These properties are updatable.
2793	Recommended *RecommendedMachineConfiguration `json:"recommended,omitempty"`
2794
2795	// The release note uri.
2796	ReleaseNoteURI *string `json:"releaseNoteUri,omitempty"`
2797}
2798
2799// MarshalJSON implements the json.Marshaller interface for type GalleryImageProperties.
2800func (g GalleryImageProperties) MarshalJSON() ([]byte, error) {
2801	objectMap := make(map[string]interface{})
2802	if g.Description != nil {
2803		objectMap["description"] = g.Description
2804	}
2805	if g.Disallowed != nil {
2806		objectMap["disallowed"] = g.Disallowed
2807	}
2808	if g.EndOfLifeDate != nil {
2809		objectMap["endOfLifeDate"] = (*timeRFC3339)(g.EndOfLifeDate)
2810	}
2811	if g.Eula != nil {
2812		objectMap["eula"] = g.Eula
2813	}
2814	if g.Features != nil {
2815		objectMap["features"] = g.Features
2816	}
2817	if g.HyperVGeneration != nil {
2818		objectMap["hyperVGeneration"] = g.HyperVGeneration
2819	}
2820	if g.IDentifier != nil {
2821		objectMap["identifier"] = g.IDentifier
2822	}
2823	if g.OSState != nil {
2824		objectMap["osState"] = g.OSState
2825	}
2826	if g.OSType != nil {
2827		objectMap["osType"] = g.OSType
2828	}
2829	if g.PrivacyStatementURI != nil {
2830		objectMap["privacyStatementUri"] = g.PrivacyStatementURI
2831	}
2832	if g.ProvisioningState != nil {
2833		objectMap["provisioningState"] = g.ProvisioningState
2834	}
2835	if g.PurchasePlan != nil {
2836		objectMap["purchasePlan"] = g.PurchasePlan
2837	}
2838	if g.Recommended != nil {
2839		objectMap["recommended"] = g.Recommended
2840	}
2841	if g.ReleaseNoteURI != nil {
2842		objectMap["releaseNoteUri"] = g.ReleaseNoteURI
2843	}
2844	return json.Marshal(objectMap)
2845}
2846
2847// UnmarshalJSON implements the json.Unmarshaller interface for type GalleryImageProperties.
2848func (g *GalleryImageProperties) UnmarshalJSON(data []byte) error {
2849	var rawMsg map[string]*json.RawMessage
2850	if err := json.Unmarshal(data, &rawMsg); err != nil {
2851		return err
2852	}
2853	for key, val := range rawMsg {
2854		var err error
2855		switch key {
2856		case "description":
2857			if val != nil {
2858				err = json.Unmarshal(*val, &g.Description)
2859			}
2860			delete(rawMsg, key)
2861		case "disallowed":
2862			if val != nil {
2863				err = json.Unmarshal(*val, &g.Disallowed)
2864			}
2865			delete(rawMsg, key)
2866		case "endOfLifeDate":
2867			if val != nil {
2868				var aux timeRFC3339
2869				err = json.Unmarshal(*val, &aux)
2870				g.EndOfLifeDate = (*time.Time)(&aux)
2871			}
2872			delete(rawMsg, key)
2873		case "eula":
2874			if val != nil {
2875				err = json.Unmarshal(*val, &g.Eula)
2876			}
2877			delete(rawMsg, key)
2878		case "features":
2879			if val != nil {
2880				err = json.Unmarshal(*val, &g.Features)
2881			}
2882			delete(rawMsg, key)
2883		case "hyperVGeneration":
2884			if val != nil {
2885				err = json.Unmarshal(*val, &g.HyperVGeneration)
2886			}
2887			delete(rawMsg, key)
2888		case "identifier":
2889			if val != nil {
2890				err = json.Unmarshal(*val, &g.IDentifier)
2891			}
2892			delete(rawMsg, key)
2893		case "osState":
2894			if val != nil {
2895				err = json.Unmarshal(*val, &g.OSState)
2896			}
2897			delete(rawMsg, key)
2898		case "osType":
2899			if val != nil {
2900				err = json.Unmarshal(*val, &g.OSType)
2901			}
2902			delete(rawMsg, key)
2903		case "privacyStatementUri":
2904			if val != nil {
2905				err = json.Unmarshal(*val, &g.PrivacyStatementURI)
2906			}
2907			delete(rawMsg, key)
2908		case "provisioningState":
2909			if val != nil {
2910				err = json.Unmarshal(*val, &g.ProvisioningState)
2911			}
2912			delete(rawMsg, key)
2913		case "purchasePlan":
2914			if val != nil {
2915				err = json.Unmarshal(*val, &g.PurchasePlan)
2916			}
2917			delete(rawMsg, key)
2918		case "recommended":
2919			if val != nil {
2920				err = json.Unmarshal(*val, &g.Recommended)
2921			}
2922			delete(rawMsg, key)
2923		case "releaseNoteUri":
2924			if val != nil {
2925				err = json.Unmarshal(*val, &g.ReleaseNoteURI)
2926			}
2927			delete(rawMsg, key)
2928		}
2929		if err != nil {
2930			return err
2931		}
2932	}
2933	return nil
2934}
2935
2936// GalleryImageResponse is the response envelope for operations that return a GalleryImage type.
2937type GalleryImageResponse struct {
2938	// Specifies information about the gallery image definition that you want to create or update.
2939	GalleryImage *GalleryImage
2940
2941	// RawResponse contains the underlying HTTP response.
2942	RawResponse *http.Response
2943}
2944
2945// Specifies information about the gallery image definition that you want to update.
2946type GalleryImageUpdate struct {
2947	UpdateResourceDefinition
2948	// Describes the properties of a gallery image definition.
2949	Properties *GalleryImageProperties `json:"properties,omitempty"`
2950}
2951
2952// Specifies information about the gallery image version that you want to create or update.
2953type GalleryImageVersion struct {
2954	Resource
2955	// Describes the properties of a gallery image version.
2956	Properties *GalleryImageVersionProperties `json:"properties,omitempty"`
2957}
2958
2959// The List Gallery Image version operation response.
2960type GalleryImageVersionList struct {
2961	// The uri to fetch the next page of gallery image versions. Call ListNext() with this to fetch the next page of gallery image versions.
2962	NextLink *string `json:"nextLink,omitempty"`
2963
2964	// A list of gallery image versions.
2965	Value *[]GalleryImageVersion `json:"value,omitempty"`
2966}
2967
2968// GalleryImageVersionListResponse is the response envelope for operations that return a GalleryImageVersionList type.
2969type GalleryImageVersionListResponse struct {
2970	// The List Gallery Image version operation response.
2971	GalleryImageVersionList *GalleryImageVersionList
2972
2973	// RawResponse contains the underlying HTTP response.
2974	RawResponse *http.Response
2975}
2976
2977// GalleryImageVersionPollerResponse is the response envelope for operations that asynchronously return a GalleryImageVersion type.
2978type GalleryImageVersionPollerResponse struct {
2979	// PollUntilDone will poll the service endpoint until a terminal state is reached or an error is received
2980	PollUntilDone func(ctx context.Context, frequency time.Duration) (GalleryImageVersionResponse, error)
2981
2982	// Poller contains an initialized poller.
2983	Poller GalleryImageVersionPoller
2984
2985	// RawResponse contains the underlying HTTP response.
2986	RawResponse *http.Response
2987}
2988
2989// Describes the properties of a gallery image version.
2990type GalleryImageVersionProperties struct {
2991	// READ-ONLY; The provisioning state, which only appears in the response.
2992	ProvisioningState *GalleryImageVersionPropertiesProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
2993
2994	// Describes the basic gallery artifact publishing profile.
2995	PublishingProfile *GalleryArtifactPublishingProfileBase `json:"publishingProfile,omitempty"`
2996
2997	// READ-ONLY; This is the replication status of the gallery image version.
2998	ReplicationStatus *ReplicationStatus `json:"replicationStatus,omitempty" azure:"ro"`
2999
3000	// This is the storage profile of a Gallery Image Version.
3001	StorageProfile *GalleryImageVersionStorageProfile `json:"storageProfile,omitempty"`
3002}
3003
3004// The publishing profile of a gallery image Version.
3005type GalleryImageVersionPublishingProfile struct {
3006	GalleryArtifactPublishingProfileBase
3007}
3008
3009// GalleryImageVersionResponse is the response envelope for operations that return a GalleryImageVersion type.
3010type GalleryImageVersionResponse struct {
3011	// Specifies information about the gallery image version that you want to create or update.
3012	GalleryImageVersion *GalleryImageVersion
3013
3014	// RawResponse contains the underlying HTTP response.
3015	RawResponse *http.Response
3016}
3017
3018// This is the storage profile of a Gallery Image Version.
3019type GalleryImageVersionStorageProfile struct {
3020	// A list of data disk images.
3021	DataDiskImages *[]GalleryDataDiskImage `json:"dataDiskImages,omitempty"`
3022
3023	// This is the disk image base class.
3024	OSDiskImage *GalleryDiskImage `json:"osDiskImage,omitempty"`
3025
3026	// The gallery artifact version source.
3027	Source *GalleryArtifactVersionSource `json:"source,omitempty"`
3028}
3029
3030// Specifies information about the gallery image version that you want to update.
3031type GalleryImageVersionUpdate struct {
3032	UpdateResourceDefinition
3033	// Describes the properties of a gallery image version.
3034	Properties *GalleryImageVersionProperties `json:"properties,omitempty"`
3035}
3036
3037// GalleryImageVersionsBeginCreateOrUpdateOptions contains the optional parameters for the GalleryImageVersions.BeginCreateOrUpdate method.
3038type GalleryImageVersionsBeginCreateOrUpdateOptions struct {
3039	// placeholder for future optional parameters
3040}
3041
3042// GalleryImageVersionsBeginDeleteOptions contains the optional parameters for the GalleryImageVersions.BeginDelete method.
3043type GalleryImageVersionsBeginDeleteOptions struct {
3044	// placeholder for future optional parameters
3045}
3046
3047// GalleryImageVersionsBeginUpdateOptions contains the optional parameters for the GalleryImageVersions.BeginUpdate method.
3048type GalleryImageVersionsBeginUpdateOptions struct {
3049	// placeholder for future optional parameters
3050}
3051
3052// GalleryImageVersionsGetOptions contains the optional parameters for the GalleryImageVersions.Get method.
3053type GalleryImageVersionsGetOptions struct {
3054	// The expand expression to apply on the operation.
3055	Expand *ReplicationStatusTypes
3056}
3057
3058// GalleryImageVersionsListByGalleryImageOptions contains the optional parameters for the GalleryImageVersions.ListByGalleryImage method.
3059type GalleryImageVersionsListByGalleryImageOptions struct {
3060	// placeholder for future optional parameters
3061}
3062
3063// GalleryImagesBeginCreateOrUpdateOptions contains the optional parameters for the GalleryImages.BeginCreateOrUpdate method.
3064type GalleryImagesBeginCreateOrUpdateOptions struct {
3065	// placeholder for future optional parameters
3066}
3067
3068// GalleryImagesBeginDeleteOptions contains the optional parameters for the GalleryImages.BeginDelete method.
3069type GalleryImagesBeginDeleteOptions struct {
3070	// placeholder for future optional parameters
3071}
3072
3073// GalleryImagesBeginUpdateOptions contains the optional parameters for the GalleryImages.BeginUpdate method.
3074type GalleryImagesBeginUpdateOptions struct {
3075	// placeholder for future optional parameters
3076}
3077
3078// GalleryImagesGetOptions contains the optional parameters for the GalleryImages.Get method.
3079type GalleryImagesGetOptions struct {
3080	// placeholder for future optional parameters
3081}
3082
3083// GalleryImagesListByGalleryOptions contains the optional parameters for the GalleryImages.ListByGallery method.
3084type GalleryImagesListByGalleryOptions struct {
3085	// placeholder for future optional parameters
3086}
3087
3088// The List Galleries operation response.
3089type GalleryList struct {
3090	// The uri to fetch the next page of galleries. Call ListNext() with this to fetch the next page of galleries.
3091	NextLink *string `json:"nextLink,omitempty"`
3092
3093	// A list of galleries.
3094	Value *[]Gallery `json:"value,omitempty"`
3095}
3096
3097// GalleryListResponse is the response envelope for operations that return a GalleryList type.
3098type GalleryListResponse struct {
3099	// The List Galleries operation response.
3100	GalleryList *GalleryList
3101
3102	// RawResponse contains the underlying HTTP response.
3103	RawResponse *http.Response
3104}
3105
3106// This is the OS disk image.
3107type GalleryOSDiskImage struct {
3108	GalleryDiskImage
3109}
3110
3111// GalleryPollerResponse is the response envelope for operations that asynchronously return a Gallery type.
3112type GalleryPollerResponse struct {
3113	// PollUntilDone will poll the service endpoint until a terminal state is reached or an error is received
3114	PollUntilDone func(ctx context.Context, frequency time.Duration) (GalleryResponse, error)
3115
3116	// Poller contains an initialized poller.
3117	Poller GalleryPoller
3118
3119	// RawResponse contains the underlying HTTP response.
3120	RawResponse *http.Response
3121}
3122
3123// Describes the properties of a Shared Image Gallery.
3124type GalleryProperties struct {
3125	// The description of this Shared Image Gallery resource. This property is updatable.
3126	Description *string `json:"description,omitempty"`
3127
3128	// Describes the gallery unique name.
3129	IDentifier *GalleryIDentifier `json:"identifier,omitempty"`
3130
3131	// READ-ONLY; The provisioning state, which only appears in the response.
3132	ProvisioningState *GalleryPropertiesProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
3133
3134	// Profile for gallery sharing to subscription or tenant
3135	SharingProfile *SharingProfile `json:"sharingProfile,omitempty"`
3136}
3137
3138// GalleryResponse is the response envelope for operations that return a Gallery type.
3139type GalleryResponse struct {
3140	// Specifies information about the Shared Image Gallery that you want to create or update.
3141	Gallery *Gallery
3142
3143	// RawResponse contains the underlying HTTP response.
3144	RawResponse *http.Response
3145}
3146
3147// GallerySharingProfileBeginUpdateOptions contains the optional parameters for the GallerySharingProfile.BeginUpdate method.
3148type GallerySharingProfileBeginUpdateOptions struct {
3149	// placeholder for future optional parameters
3150}
3151
3152// Specifies information about the Shared Image Gallery that you want to update.
3153type GalleryUpdate struct {
3154	UpdateResourceDefinition
3155	// Describes the properties of a Shared Image Gallery.
3156	Properties *GalleryProperties `json:"properties,omitempty"`
3157}
3158
3159// Data used for requesting a SAS.
3160type GrantAccessData struct {
3161	Access *AccessLevel `json:"access,omitempty"`
3162
3163	// Time duration in seconds until the SAS access expires.
3164	DurationInSeconds *int32 `json:"durationInSeconds,omitempty"`
3165}
3166
3167// HTTPPollerResponse contains the asynchronous HTTP response from the call to the service endpoint.
3168type HTTPPollerResponse struct {
3169	// PollUntilDone will poll the service endpoint until a terminal state is reached or an error is received
3170	PollUntilDone func(ctx context.Context, frequency time.Duration) (*http.Response, error)
3171
3172	// Poller contains an initialized poller.
3173	Poller HTTPPoller
3174
3175	// RawResponse contains the underlying HTTP response.
3176	RawResponse *http.Response
3177}
3178
3179// Specifies the hardware settings for the virtual machine.
3180type HardwareProfile struct {
3181	// Specifies the size of the virtual machine. For more information about virtual machine sizes, see Sizes for virtual machines [https://docs.microsoft.com/en-us/azure/virtual-machines/sizes].
3182	// The available VM sizes depend on region and availability set. For a list of available sizes use these APIs:
3183	// List all available virtual machine sizes in an availability set [https://docs.microsoft.com/rest/api/compute/availabilitysets/listavailablesizes]
3184	// List all available virtual machine sizes in a region [https://docs.microsoft.com/en-us/rest/api/compute/resourceskus/list]
3185	// List all available virtual machine sizes for resizing [https://docs.microsoft.com/rest/api/compute/virtualmachines/listavailablesizes].
3186	// This list of sizes is no longer updated and the VirtualMachineSizeTypes string constants will be removed from the subsequent REST API specification.
3187	// Use List all available virtual machine sizes in a
3188	// region [https://docs.microsoft.com/en-us/rest/api/compute/resourceskus/list] to get the latest sizes.
3189	VMSize *VirtualMachineSizeTypes `json:"vmSize,omitempty"`
3190}
3191
3192// The source user image virtual hard disk. The virtual hard disk will be copied before being attached to the virtual machine. If SourceImage is provided,
3193// the destination virtual hard drive must not
3194// exist.
3195type Image struct {
3196	Resource
3197	// Describes the properties of an Image.
3198	Properties *ImageProperties `json:"properties,omitempty"`
3199}
3200
3201// Describes a data disk.
3202type ImageDataDisk struct {
3203	ImageDisk
3204	// Specifies the logical unit number of the data disk. This value is used to identify data disks within the VM and therefore must be unique for each data
3205	// disk attached to a VM.
3206	Lun *int32 `json:"lun,omitempty"`
3207}
3208
3209// Describes a image disk.
3210type ImageDisk struct {
3211	// The Virtual Hard Disk.
3212	BlobURI *string `json:"blobUri,omitempty"`
3213
3214	// Specifies the caching requirements.
3215	// Possible values are:
3216	// None
3217	// ReadOnly
3218	// ReadWrite
3219	// Default: None for Standard storage. ReadOnly for Premium storage
3220	Caching *CachingTypes `json:"caching,omitempty"`
3221
3222	// Specifies the customer managed disk encryption set resource id for the managed image disk.
3223	DiskEncryptionSet *SubResource `json:"diskEncryptionSet,omitempty"`
3224
3225	// Specifies the size of empty data disks in gigabytes. This element can be used to overwrite the name of the disk in a virtual machine image.
3226	// This value cannot be larger than 1023 GB
3227	DiskSizeGb *int32 `json:"diskSizeGB,omitempty"`
3228
3229	// The managedDisk.
3230	ManagedDisk *SubResource `json:"managedDisk,omitempty"`
3231
3232	// The snapshot.
3233	Snapshot *SubResource `json:"snapshot,omitempty"`
3234
3235	// Specifies the storage account type for the managed disk. NOTE: UltraSSD_LRS can only be used with data disks, it cannot be used with OS Disk.
3236	StorageAccountType *StorageAccountTypes `json:"storageAccountType,omitempty"`
3237}
3238
3239// The source image used for creating the disk.
3240type ImageDiskReference struct {
3241	// A relative uri containing either a Platform Image Repository or user image reference.
3242	ID *string `json:"id,omitempty"`
3243
3244	// If the disk is created from an image's data disk, this is an index that indicates which of the data disks in the image to use. For OS disks, this field
3245	// is null.
3246	Lun *int32 `json:"lun,omitempty"`
3247}
3248
3249// The List Image operation response.
3250type ImageListResult struct {
3251	// The uri to fetch the next page of Images. Call ListNext() with this to fetch the next page of Images.
3252	NextLink *string `json:"nextLink,omitempty"`
3253
3254	// The list of Images.
3255	Value *[]Image `json:"value,omitempty"`
3256}
3257
3258// ImageListResultResponse is the response envelope for operations that return a ImageListResult type.
3259type ImageListResultResponse struct {
3260	// The List Image operation response.
3261	ImageListResult *ImageListResult
3262
3263	// RawResponse contains the underlying HTTP response.
3264	RawResponse *http.Response
3265}
3266
3267// Describes an Operating System disk.
3268type ImageOSDisk struct {
3269	ImageDisk
3270	// The OS State.
3271	OSState *OperatingSystemStateTypes `json:"osState,omitempty"`
3272
3273	// This property allows you to specify the type of the OS that is included in the disk if creating a VM from a custom image.
3274	// Possible values are:
3275	// Windows
3276	// Linux
3277	OSType *OperatingSystemTypes `json:"osType,omitempty"`
3278}
3279
3280// ImagePollerResponse is the response envelope for operations that asynchronously return a Image type.
3281type ImagePollerResponse struct {
3282	// PollUntilDone will poll the service endpoint until a terminal state is reached or an error is received
3283	PollUntilDone func(ctx context.Context, frequency time.Duration) (ImageResponse, error)
3284
3285	// Poller contains an initialized poller.
3286	Poller ImagePoller
3287
3288	// RawResponse contains the underlying HTTP response.
3289	RawResponse *http.Response
3290}
3291
3292// Describes the properties of an Image.
3293type ImageProperties struct {
3294	// Gets the HyperVGenerationType of the VirtualMachine created from the image
3295	HyperVGeneration *HyperVGenerationTypes `json:"hyperVGeneration,omitempty"`
3296
3297	// READ-ONLY; The provisioning state.
3298	ProvisioningState *string `json:"provisioningState,omitempty" azure:"ro"`
3299
3300	// The source virtual machine from which Image is created.
3301	SourceVirtualMachine *SubResource `json:"sourceVirtualMachine,omitempty"`
3302
3303	// Specifies the storage settings for the virtual machine disks.
3304	StorageProfile *ImageStorageProfile `json:"storageProfile,omitempty"`
3305}
3306
3307// Describes the gallery image definition purchase plan. This is used by marketplace images.
3308type ImagePurchasePlan struct {
3309	// The plan ID.
3310	Name *string `json:"name,omitempty"`
3311
3312	// The product ID.
3313	Product *string `json:"product,omitempty"`
3314
3315	// The publisher ID.
3316	Publisher *string `json:"publisher,omitempty"`
3317}
3318
3319// Specifies information about the image to use. You can specify information about platform images, marketplace images, or virtual machine images. This
3320// element is required when you want to use a platform
3321// image, marketplace image, or virtual machine image, but is not used in other creation operations. NOTE: Image reference publisher and offer can only
3322// be set when you create the scale set.
3323type ImageReference struct {
3324	SubResource
3325	// READ-ONLY; Specifies in decimal numbers, the version of platform image or marketplace image used to create the virtual machine. This readonly field differs
3326	// from 'version', only if the value specified in
3327	// 'version' field is 'latest'.
3328	ExactVersion *string `json:"exactVersion,omitempty" azure:"ro"`
3329
3330	// Specifies the offer of the platform image or marketplace image used to create the virtual machine.
3331	Offer *string `json:"offer,omitempty"`
3332
3333	// The image publisher.
3334	Publisher *string `json:"publisher,omitempty"`
3335
3336	// The image SKU.
3337	SKU *string `json:"sku,omitempty"`
3338
3339	// Specifies the version of the platform image or marketplace image used to create the virtual machine. The allowed formats are Major.Minor.Build or 'latest'.
3340	// Major, Minor, and Build are decimal numbers.
3341	// Specify 'latest' to use the latest version of an image available at deploy time. Even if you use 'latest', the VM image will not automatically update
3342	// after deploy time even if a new version becomes
3343	// available.
3344	Version *string `json:"version,omitempty"`
3345}
3346
3347// ImageResponse is the response envelope for operations that return a Image type.
3348type ImageResponse struct {
3349	// The source user image virtual hard disk. The virtual hard disk will be copied before being attached to the virtual machine. If SourceImage is provided,
3350	// the destination virtual hard drive must not exist.
3351	Image *Image
3352
3353	// RawResponse contains the underlying HTTP response.
3354	RawResponse *http.Response
3355}
3356
3357// Describes a storage profile.
3358type ImageStorageProfile struct {
3359	// Specifies the parameters that are used to add a data disk to a virtual machine.
3360	// For more information about disks, see About disks and VHDs for Azure virtual machines
3361	// [https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-about-disks-vhds?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json].
3362	DataDisks *[]ImageDataDisk `json:"dataDisks,omitempty"`
3363
3364	// Specifies information about the operating system disk used by the virtual machine.
3365	// For more information about disks, see About disks and VHDs for Azure virtual machines
3366	// [https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-about-disks-vhds?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json].
3367	OSDisk *ImageOSDisk `json:"osDisk,omitempty"`
3368
3369	// Specifies whether an image is zone resilient or not. Default is false. Zone resilient images can be created only in regions that provide Zone Redundant
3370	// Storage (ZRS).
3371	ZoneResilient *bool `json:"zoneResilient,omitempty"`
3372}
3373
3374// The source user image virtual hard disk. Only tags may be updated.
3375type ImageUpdate struct {
3376	UpdateResource
3377	// Describes the properties of an Image.
3378	Properties *ImageProperties `json:"properties,omitempty"`
3379}
3380
3381// ImagesBeginCreateOrUpdateOptions contains the optional parameters for the Images.BeginCreateOrUpdate method.
3382type ImagesBeginCreateOrUpdateOptions struct {
3383	// placeholder for future optional parameters
3384}
3385
3386// ImagesBeginDeleteOptions contains the optional parameters for the Images.BeginDelete method.
3387type ImagesBeginDeleteOptions struct {
3388	// placeholder for future optional parameters
3389}
3390
3391// ImagesBeginUpdateOptions contains the optional parameters for the Images.BeginUpdate method.
3392type ImagesBeginUpdateOptions struct {
3393	// placeholder for future optional parameters
3394}
3395
3396// ImagesGetOptions contains the optional parameters for the Images.Get method.
3397type ImagesGetOptions struct {
3398	// The expand expression to apply on the operation.
3399	Expand *string
3400}
3401
3402// ImagesListByResourceGroupOptions contains the optional parameters for the Images.ListByResourceGroup method.
3403type ImagesListByResourceGroupOptions struct {
3404	// placeholder for future optional parameters
3405}
3406
3407// ImagesListOptions contains the optional parameters for the Images.List method.
3408type ImagesListOptions struct {
3409	// placeholder for future optional parameters
3410}
3411
3412// Inner error details.
3413type InnerError struct {
3414	// The internal error message or exception dump.
3415	Errordetail *string `json:"errordetail,omitempty"`
3416
3417	// The exception type.
3418	Exceptiontype *string `json:"exceptiontype,omitempty"`
3419}
3420
3421// Instance view status.
3422type InstanceViewStatus struct {
3423	// The status code.
3424	Code *string `json:"code,omitempty"`
3425
3426	// The short localizable label for the status.
3427	DisplayStatus *string `json:"displayStatus,omitempty"`
3428
3429	// The level code.
3430	Level *StatusLevelTypes `json:"level,omitempty"`
3431
3432	// The detailed status message, including for alerts and error messages.
3433	Message *string `json:"message,omitempty"`
3434
3435	// The time of the status.
3436	Time *time.Time `json:"time,omitempty"`
3437}
3438
3439// MarshalJSON implements the json.Marshaller interface for type InstanceViewStatus.
3440func (i InstanceViewStatus) MarshalJSON() ([]byte, error) {
3441	objectMap := make(map[string]interface{})
3442	if i.Code != nil {
3443		objectMap["code"] = i.Code
3444	}
3445	if i.DisplayStatus != nil {
3446		objectMap["displayStatus"] = i.DisplayStatus
3447	}
3448	if i.Level != nil {
3449		objectMap["level"] = i.Level
3450	}
3451	if i.Message != nil {
3452		objectMap["message"] = i.Message
3453	}
3454	if i.Time != nil {
3455		objectMap["time"] = (*timeRFC3339)(i.Time)
3456	}
3457	return json.Marshal(objectMap)
3458}
3459
3460// UnmarshalJSON implements the json.Unmarshaller interface for type InstanceViewStatus.
3461func (i *InstanceViewStatus) UnmarshalJSON(data []byte) error {
3462	var rawMsg map[string]*json.RawMessage
3463	if err := json.Unmarshal(data, &rawMsg); err != nil {
3464		return err
3465	}
3466	for key, val := range rawMsg {
3467		var err error
3468		switch key {
3469		case "code":
3470			if val != nil {
3471				err = json.Unmarshal(*val, &i.Code)
3472			}
3473			delete(rawMsg, key)
3474		case "displayStatus":
3475			if val != nil {
3476				err = json.Unmarshal(*val, &i.DisplayStatus)
3477			}
3478			delete(rawMsg, key)
3479		case "level":
3480			if val != nil {
3481				err = json.Unmarshal(*val, &i.Level)
3482			}
3483			delete(rawMsg, key)
3484		case "message":
3485			if val != nil {
3486				err = json.Unmarshal(*val, &i.Message)
3487			}
3488			delete(rawMsg, key)
3489		case "time":
3490			if val != nil {
3491				var aux timeRFC3339
3492				err = json.Unmarshal(*val, &aux)
3493				i.Time = (*time.Time)(&aux)
3494			}
3495			delete(rawMsg, key)
3496		}
3497		if err != nil {
3498			return err
3499		}
3500	}
3501	return nil
3502}
3503
3504// Key Vault Key Url to be used for server side encryption of Managed Disks and Snapshots
3505type KeyForDiskEncryptionSet struct {
3506	// Fully versioned Key Url pointing to a key in KeyVault
3507	KeyURL *string `json:"keyUrl,omitempty"`
3508
3509	// Resource id of the KeyVault containing the key or secret. This property is optional and cannot be used if the KeyVault subscription is not the same as
3510	// the Disk Encryption Set subscription.
3511	SourceVault *SourceVault `json:"sourceVault,omitempty"`
3512}
3513
3514// Key Vault Key Url and vault id of KeK, KeK is optional and when provided is used to unwrap the encryptionKey
3515type KeyVaultAndKeyReference struct {
3516	// Url pointing to a key or secret in KeyVault
3517	KeyURL *string `json:"keyUrl,omitempty"`
3518
3519	// Resource id of the KeyVault containing the key or secret
3520	SourceVault *SourceVault `json:"sourceVault,omitempty"`
3521}
3522
3523// Key Vault Secret Url and vault id of the encryption key
3524type KeyVaultAndSecretReference struct {
3525	// Url pointing to a key or secret in KeyVault
3526	SecretURL *string `json:"secretUrl,omitempty"`
3527
3528	// Resource id of the KeyVault containing the key or secret
3529	SourceVault *SourceVault `json:"sourceVault,omitempty"`
3530}
3531
3532// Describes a reference to Key Vault Key
3533type KeyVaultKeyReference struct {
3534	// The URL referencing a key encryption key in Key Vault.
3535	KeyURL *string `json:"keyUrl,omitempty"`
3536
3537	// The relative URL of the Key Vault containing the key.
3538	SourceVault *SubResource `json:"sourceVault,omitempty"`
3539}
3540
3541// Describes a reference to Key Vault Secret
3542type KeyVaultSecretReference struct {
3543	// The URL referencing a secret in a Key Vault.
3544	SecretURL *string `json:"secretUrl,omitempty"`
3545
3546	// The relative URL of the Key Vault containing the secret.
3547	SourceVault *SubResource `json:"sourceVault,omitempty"`
3548}
3549
3550// Describes the properties of the last installed patch summary.
3551type LastPatchInstallationSummary struct {
3552	// READ-ONLY; The errors that were encountered during execution of the operation. The details array contains the list of them.
3553	Error *APIError `json:"error,omitempty" azure:"ro"`
3554
3555	// READ-ONLY; The number of all available patches but excluded explicitly by a customer-specified exclusion list match.
3556	ExcludedPatchCount *int32 `json:"excludedPatchCount,omitempty" azure:"ro"`
3557
3558	// READ-ONLY; The count of patches that failed installation.
3559	FailedPatchCount *int32 `json:"failedPatchCount,omitempty" azure:"ro"`
3560
3561	// READ-ONLY; The activity ID of the operation that produced this result. It is used to correlate across CRP and extension logs.
3562	InstallationActivityID *string `json:"installationActivityId,omitempty" azure:"ro"`
3563
3564	// READ-ONLY; The count of patches that successfully installed.
3565	InstalledPatchCount *int32 `json:"installedPatchCount,omitempty" azure:"ro"`
3566
3567	// READ-ONLY; The UTC timestamp when the operation began.
3568	LastModifiedTime *time.Time `json:"lastModifiedTime,omitempty" azure:"ro"`
3569
3570	// READ-ONLY; Describes whether the operation ran out of time before it completed all its intended actions
3571	MaintenanceWindowExceeded *bool `json:"maintenanceWindowExceeded,omitempty" azure:"ro"`
3572
3573	// READ-ONLY; The number of all available patches but not going to be installed because it didn't match a classification or inclusion list entry.
3574	NotSelectedPatchCount *int32 `json:"notSelectedPatchCount,omitempty" azure:"ro"`
3575
3576	// READ-ONLY; The number of all available patches expected to be installed over the course of the patch installation operation.
3577	PendingPatchCount *int32 `json:"pendingPatchCount,omitempty" azure:"ro"`
3578
3579	// READ-ONLY; The reboot status of the machine after the patch operation. It will be in "NotNeeded" status if reboot is not needed after the patch operation.
3580	// "Required" will be the status once the patch is applied
3581	// and machine is required to reboot. "Started" will be the reboot status when the machine has started to reboot. "Failed" will be the status if the machine
3582	// is failed to reboot. "Completed" will be the
3583	// status once the machine is rebooted successfully
3584	RebootStatus *RebootStatus `json:"rebootStatus,omitempty" azure:"ro"`
3585
3586	// READ-ONLY; The UTC timestamp when the operation began.
3587	StartTime *time.Time `json:"startTime,omitempty" azure:"ro"`
3588
3589	// READ-ONLY; The person or system account that started the operation
3590	StartedBy *string `json:"startedBy,omitempty" azure:"ro"`
3591
3592	// READ-ONLY; The overall success or failure status of the operation. It remains "InProgress" until the operation completes. At that point it will become
3593	// "Failed", "Succeeded", or "CompletedWithWarnings."
3594	Status *PatchOperationStatus `json:"status,omitempty" azure:"ro"`
3595}
3596
3597// MarshalJSON implements the json.Marshaller interface for type LastPatchInstallationSummary.
3598func (l LastPatchInstallationSummary) MarshalJSON() ([]byte, error) {
3599	objectMap := make(map[string]interface{})
3600	if l.Error != nil {
3601		objectMap["error"] = l.Error
3602	}
3603	if l.ExcludedPatchCount != nil {
3604		objectMap["excludedPatchCount"] = l.ExcludedPatchCount
3605	}
3606	if l.FailedPatchCount != nil {
3607		objectMap["failedPatchCount"] = l.FailedPatchCount
3608	}
3609	if l.InstallationActivityID != nil {
3610		objectMap["installationActivityId"] = l.InstallationActivityID
3611	}
3612	if l.InstalledPatchCount != nil {
3613		objectMap["installedPatchCount"] = l.InstalledPatchCount
3614	}
3615	if l.LastModifiedTime != nil {
3616		objectMap["lastModifiedTime"] = (*timeRFC3339)(l.LastModifiedTime)
3617	}
3618	if l.MaintenanceWindowExceeded != nil {
3619		objectMap["maintenanceWindowExceeded"] = l.MaintenanceWindowExceeded
3620	}
3621	if l.NotSelectedPatchCount != nil {
3622		objectMap["notSelectedPatchCount"] = l.NotSelectedPatchCount
3623	}
3624	if l.PendingPatchCount != nil {
3625		objectMap["pendingPatchCount"] = l.PendingPatchCount
3626	}
3627	if l.RebootStatus != nil {
3628		objectMap["rebootStatus"] = l.RebootStatus
3629	}
3630	if l.StartTime != nil {
3631		objectMap["startTime"] = (*timeRFC3339)(l.StartTime)
3632	}
3633	if l.StartedBy != nil {
3634		objectMap["startedBy"] = l.StartedBy
3635	}
3636	if l.Status != nil {
3637		objectMap["status"] = l.Status
3638	}
3639	return json.Marshal(objectMap)
3640}
3641
3642// UnmarshalJSON implements the json.Unmarshaller interface for type LastPatchInstallationSummary.
3643func (l *LastPatchInstallationSummary) UnmarshalJSON(data []byte) error {
3644	var rawMsg map[string]*json.RawMessage
3645	if err := json.Unmarshal(data, &rawMsg); err != nil {
3646		return err
3647	}
3648	for key, val := range rawMsg {
3649		var err error
3650		switch key {
3651		case "error":
3652			if val != nil {
3653				err = json.Unmarshal(*val, &l.Error)
3654			}
3655			delete(rawMsg, key)
3656		case "excludedPatchCount":
3657			if val != nil {
3658				err = json.Unmarshal(*val, &l.ExcludedPatchCount)
3659			}
3660			delete(rawMsg, key)
3661		case "failedPatchCount":
3662			if val != nil {
3663				err = json.Unmarshal(*val, &l.FailedPatchCount)
3664			}
3665			delete(rawMsg, key)
3666		case "installationActivityId":
3667			if val != nil {
3668				err = json.Unmarshal(*val, &l.InstallationActivityID)
3669			}
3670			delete(rawMsg, key)
3671		case "installedPatchCount":
3672			if val != nil {
3673				err = json.Unmarshal(*val, &l.InstalledPatchCount)
3674			}
3675			delete(rawMsg, key)
3676		case "lastModifiedTime":
3677			if val != nil {
3678				var aux timeRFC3339
3679				err = json.Unmarshal(*val, &aux)
3680				l.LastModifiedTime = (*time.Time)(&aux)
3681			}
3682			delete(rawMsg, key)
3683		case "maintenanceWindowExceeded":
3684			if val != nil {
3685				err = json.Unmarshal(*val, &l.MaintenanceWindowExceeded)
3686			}
3687			delete(rawMsg, key)
3688		case "notSelectedPatchCount":
3689			if val != nil {
3690				err = json.Unmarshal(*val, &l.NotSelectedPatchCount)
3691			}
3692			delete(rawMsg, key)
3693		case "pendingPatchCount":
3694			if val != nil {
3695				err = json.Unmarshal(*val, &l.PendingPatchCount)
3696			}
3697			delete(rawMsg, key)
3698		case "rebootStatus":
3699			if val != nil {
3700				err = json.Unmarshal(*val, &l.RebootStatus)
3701			}
3702			delete(rawMsg, key)
3703		case "startTime":
3704			if val != nil {
3705				var aux timeRFC3339
3706				err = json.Unmarshal(*val, &aux)
3707				l.StartTime = (*time.Time)(&aux)
3708			}
3709			delete(rawMsg, key)
3710		case "startedBy":
3711			if val != nil {
3712				err = json.Unmarshal(*val, &l.StartedBy)
3713			}
3714			delete(rawMsg, key)
3715		case "status":
3716			if val != nil {
3717				err = json.Unmarshal(*val, &l.Status)
3718			}
3719			delete(rawMsg, key)
3720		}
3721		if err != nil {
3722			return err
3723		}
3724	}
3725	return nil
3726}
3727
3728// Specifies the Linux operating system settings on the virtual machine.
3729// For a list of supported Linux distributions, see Linux on Azure-Endorsed Distributions
3730// [https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-endorsed-distros?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json]
3731// For running non-endorsed distributions, see Information for Non-Endorsed Distributions
3732// [https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-create-upload-generic?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json].
3733type LinuxConfiguration struct {
3734	// Specifies whether password authentication should be disabled.
3735	DisablePasswordAuthentication *bool `json:"disablePasswordAuthentication,omitempty"`
3736
3737	// Indicates whether virtual machine agent should be provisioned on the virtual machine.
3738	// When this property is not specified in the request body, default behavior is to set it to true. This will ensure that VM Agent is installed on the VM
3739	// so that extensions can be added to the VM later.
3740	ProvisionVMAgent *bool `json:"provisionVMAgent,omitempty"`
3741
3742	// Specifies the ssh key configuration for a Linux OS.
3743	SSH *SSHConfiguration `json:"ssh,omitempty"`
3744}
3745
3746// The List Usages operation response.
3747type ListUsagesResult struct {
3748	// The URI to fetch the next page of compute resource usage information. Call ListNext() with this to fetch the next page of compute resource usage information.
3749	NextLink *string `json:"nextLink,omitempty"`
3750
3751	// The list of compute resource usages.
3752	Value *[]Usage `json:"value,omitempty"`
3753}
3754
3755// ListUsagesResultResponse is the response envelope for operations that return a ListUsagesResult type.
3756type ListUsagesResultResponse struct {
3757	// The List Usages operation response.
3758	ListUsagesResult *ListUsagesResult
3759
3760	// RawResponse contains the underlying HTTP response.
3761	RawResponse *http.Response
3762}
3763
3764// LogAnalyticsBeginExportRequestRateByIntervalOptions contains the optional parameters for the LogAnalytics.BeginExportRequestRateByInterval method.
3765type LogAnalyticsBeginExportRequestRateByIntervalOptions struct {
3766	// placeholder for future optional parameters
3767}
3768
3769// LogAnalyticsBeginExportThrottledRequestsOptions contains the optional parameters for the LogAnalytics.BeginExportThrottledRequests method.
3770type LogAnalyticsBeginExportThrottledRequestsOptions struct {
3771	// placeholder for future optional parameters
3772}
3773
3774// Api input base class for LogAnalytics Api.
3775type LogAnalyticsInputBase struct {
3776	// SAS Uri of the logging blob container to which LogAnalytics Api writes output logs to.
3777	BlobContainerSasURI *string `json:"blobContainerSasUri,omitempty"`
3778
3779	// From time of the query
3780	FromTime *time.Time `json:"fromTime,omitempty"`
3781
3782	// Group query result by Client Application ID.
3783	GroupByClientApplicationID *bool `json:"groupByClientApplicationId,omitempty"`
3784
3785	// Group query result by Operation Name.
3786	GroupByOperationName *bool `json:"groupByOperationName,omitempty"`
3787
3788	// Group query result by Resource Name.
3789	GroupByResourceName *bool `json:"groupByResourceName,omitempty"`
3790
3791	// Group query result by Throttle Policy applied.
3792	GroupByThrottlePolicy *bool `json:"groupByThrottlePolicy,omitempty"`
3793
3794	// Group query result by User Agent.
3795	GroupByUserAgent *bool `json:"groupByUserAgent,omitempty"`
3796
3797	// To time of the query
3798	ToTime *time.Time `json:"toTime,omitempty"`
3799}
3800
3801// MarshalJSON implements the json.Marshaller interface for type LogAnalyticsInputBase.
3802func (l LogAnalyticsInputBase) MarshalJSON() ([]byte, error) {
3803	objectMap := l.marshalInternal()
3804	return json.Marshal(objectMap)
3805}
3806
3807// UnmarshalJSON implements the json.Unmarshaller interface for type LogAnalyticsInputBase.
3808func (l *LogAnalyticsInputBase) UnmarshalJSON(data []byte) error {
3809	var rawMsg map[string]*json.RawMessage
3810	if err := json.Unmarshal(data, &rawMsg); err != nil {
3811		return err
3812	}
3813	return l.unmarshalInternal(rawMsg)
3814}
3815
3816func (l LogAnalyticsInputBase) marshalInternal() map[string]interface{} {
3817	objectMap := make(map[string]interface{})
3818	if l.BlobContainerSasURI != nil {
3819		objectMap["blobContainerSasUri"] = l.BlobContainerSasURI
3820	}
3821	if l.FromTime != nil {
3822		objectMap["fromTime"] = (*timeRFC3339)(l.FromTime)
3823	}
3824	if l.GroupByClientApplicationID != nil {
3825		objectMap["groupByClientApplicationId"] = l.GroupByClientApplicationID
3826	}
3827	if l.GroupByOperationName != nil {
3828		objectMap["groupByOperationName"] = l.GroupByOperationName
3829	}
3830	if l.GroupByResourceName != nil {
3831		objectMap["groupByResourceName"] = l.GroupByResourceName
3832	}
3833	if l.GroupByThrottlePolicy != nil {
3834		objectMap["groupByThrottlePolicy"] = l.GroupByThrottlePolicy
3835	}
3836	if l.GroupByUserAgent != nil {
3837		objectMap["groupByUserAgent"] = l.GroupByUserAgent
3838	}
3839	if l.ToTime != nil {
3840		objectMap["toTime"] = (*timeRFC3339)(l.ToTime)
3841	}
3842	return objectMap
3843}
3844
3845func (l *LogAnalyticsInputBase) unmarshalInternal(rawMsg map[string]*json.RawMessage) error {
3846	for key, val := range rawMsg {
3847		var err error
3848		switch key {
3849		case "blobContainerSasUri":
3850			if val != nil {
3851				err = json.Unmarshal(*val, &l.BlobContainerSasURI)
3852			}
3853			delete(rawMsg, key)
3854		case "fromTime":
3855			if val != nil {
3856				var aux timeRFC3339
3857				err = json.Unmarshal(*val, &aux)
3858				l.FromTime = (*time.Time)(&aux)
3859			}
3860			delete(rawMsg, key)
3861		case "groupByClientApplicationId":
3862			if val != nil {
3863				err = json.Unmarshal(*val, &l.GroupByClientApplicationID)
3864			}
3865			delete(rawMsg, key)
3866		case "groupByOperationName":
3867			if val != nil {
3868				err = json.Unmarshal(*val, &l.GroupByOperationName)
3869			}
3870			delete(rawMsg, key)
3871		case "groupByResourceName":
3872			if val != nil {
3873				err = json.Unmarshal(*val, &l.GroupByResourceName)
3874			}
3875			delete(rawMsg, key)
3876		case "groupByThrottlePolicy":
3877			if val != nil {
3878				err = json.Unmarshal(*val, &l.GroupByThrottlePolicy)
3879			}
3880			delete(rawMsg, key)
3881		case "groupByUserAgent":
3882			if val != nil {
3883				err = json.Unmarshal(*val, &l.GroupByUserAgent)
3884			}
3885			delete(rawMsg, key)
3886		case "toTime":
3887			if val != nil {
3888				var aux timeRFC3339
3889				err = json.Unmarshal(*val, &aux)
3890				l.ToTime = (*time.Time)(&aux)
3891			}
3892			delete(rawMsg, key)
3893		}
3894		if err != nil {
3895			return err
3896		}
3897	}
3898	return nil
3899}
3900
3901// LogAnalytics operation status response
3902type LogAnalyticsOperationResult struct {
3903	// READ-ONLY; LogAnalyticsOutput
3904	Properties *LogAnalyticsOutput `json:"properties,omitempty" azure:"ro"`
3905}
3906
3907// LogAnalyticsOperationResultPollerResponse is the response envelope for operations that asynchronously return a LogAnalyticsOperationResult type.
3908type LogAnalyticsOperationResultPollerResponse struct {
3909	// PollUntilDone will poll the service endpoint until a terminal state is reached or an error is received
3910	PollUntilDone func(ctx context.Context, frequency time.Duration) (LogAnalyticsOperationResultResponse, error)
3911
3912	// Poller contains an initialized poller.
3913	Poller LogAnalyticsOperationResultPoller
3914
3915	// RawResponse contains the underlying HTTP response.
3916	RawResponse *http.Response
3917}
3918
3919// LogAnalyticsOperationResultResponse is the response envelope for operations that return a LogAnalyticsOperationResult type.
3920type LogAnalyticsOperationResultResponse struct {
3921	// LogAnalytics operation status response
3922	LogAnalyticsOperationResult *LogAnalyticsOperationResult
3923
3924	// RawResponse contains the underlying HTTP response.
3925	RawResponse *http.Response
3926}
3927
3928// LogAnalytics output properties
3929type LogAnalyticsOutput struct {
3930	// READ-ONLY; Output file Uri path to blob container.
3931	Output *string `json:"output,omitempty" azure:"ro"`
3932}
3933
3934// Maintenance Operation Status.
3935type MaintenanceRedeployStatus struct {
3936	// True, if customer is allowed to perform Maintenance.
3937	IsCustomerInitiatedMaintenanceAllowed *bool `json:"isCustomerInitiatedMaintenanceAllowed,omitempty"`
3938
3939	// Message returned for the last Maintenance Operation.
3940	LastOperationMessage *string `json:"lastOperationMessage,omitempty"`
3941
3942	// The Last Maintenance Operation Result Code.
3943	LastOperationResultCode *MaintenanceOperationResultCodeTypes `json:"lastOperationResultCode,omitempty"`
3944
3945	// End Time for the Maintenance Window.
3946	MaintenanceWindowEndTime *time.Time `json:"maintenanceWindowEndTime,omitempty"`
3947
3948	// Start Time for the Maintenance Window.
3949	MaintenanceWindowStartTime *time.Time `json:"maintenanceWindowStartTime,omitempty"`
3950
3951	// End Time for the Pre Maintenance Window.
3952	PreMaintenanceWindowEndTime *time.Time `json:"preMaintenanceWindowEndTime,omitempty"`
3953
3954	// Start Time for the Pre Maintenance Window.
3955	PreMaintenanceWindowStartTime *time.Time `json:"preMaintenanceWindowStartTime,omitempty"`
3956}
3957
3958// MarshalJSON implements the json.Marshaller interface for type MaintenanceRedeployStatus.
3959func (m MaintenanceRedeployStatus) MarshalJSON() ([]byte, error) {
3960	objectMap := make(map[string]interface{})
3961	if m.IsCustomerInitiatedMaintenanceAllowed != nil {
3962		objectMap["isCustomerInitiatedMaintenanceAllowed"] = m.IsCustomerInitiatedMaintenanceAllowed
3963	}
3964	if m.LastOperationMessage != nil {
3965		objectMap["lastOperationMessage"] = m.LastOperationMessage
3966	}
3967	if m.LastOperationResultCode != nil {
3968		objectMap["lastOperationResultCode"] = m.LastOperationResultCode
3969	}
3970	if m.MaintenanceWindowEndTime != nil {
3971		objectMap["maintenanceWindowEndTime"] = (*timeRFC3339)(m.MaintenanceWindowEndTime)
3972	}
3973	if m.MaintenanceWindowStartTime != nil {
3974		objectMap["maintenanceWindowStartTime"] = (*timeRFC3339)(m.MaintenanceWindowStartTime)
3975	}
3976	if m.PreMaintenanceWindowEndTime != nil {
3977		objectMap["preMaintenanceWindowEndTime"] = (*timeRFC3339)(m.PreMaintenanceWindowEndTime)
3978	}
3979	if m.PreMaintenanceWindowStartTime != nil {
3980		objectMap["preMaintenanceWindowStartTime"] = (*timeRFC3339)(m.PreMaintenanceWindowStartTime)
3981	}
3982	return json.Marshal(objectMap)
3983}
3984
3985// UnmarshalJSON implements the json.Unmarshaller interface for type MaintenanceRedeployStatus.
3986func (m *MaintenanceRedeployStatus) UnmarshalJSON(data []byte) error {
3987	var rawMsg map[string]*json.RawMessage
3988	if err := json.Unmarshal(data, &rawMsg); err != nil {
3989		return err
3990	}
3991	for key, val := range rawMsg {
3992		var err error
3993		switch key {
3994		case "isCustomerInitiatedMaintenanceAllowed":
3995			if val != nil {
3996				err = json.Unmarshal(*val, &m.IsCustomerInitiatedMaintenanceAllowed)
3997			}
3998			delete(rawMsg, key)
3999		case "lastOperationMessage":
4000			if val != nil {
4001				err = json.Unmarshal(*val, &m.LastOperationMessage)
4002			}
4003			delete(rawMsg, key)
4004		case "lastOperationResultCode":
4005			if val != nil {
4006				err = json.Unmarshal(*val, &m.LastOperationResultCode)
4007			}
4008			delete(rawMsg, key)
4009		case "maintenanceWindowEndTime":
4010			if val != nil {
4011				var aux timeRFC3339
4012				err = json.Unmarshal(*val, &aux)
4013				m.MaintenanceWindowEndTime = (*time.Time)(&aux)
4014			}
4015			delete(rawMsg, key)
4016		case "maintenanceWindowStartTime":
4017			if val != nil {
4018				var aux timeRFC3339
4019				err = json.Unmarshal(*val, &aux)
4020				m.MaintenanceWindowStartTime = (*time.Time)(&aux)
4021			}
4022			delete(rawMsg, key)
4023		case "preMaintenanceWindowEndTime":
4024			if val != nil {
4025				var aux timeRFC3339
4026				err = json.Unmarshal(*val, &aux)
4027				m.PreMaintenanceWindowEndTime = (*time.Time)(&aux)
4028			}
4029			delete(rawMsg, key)
4030		case "preMaintenanceWindowStartTime":
4031			if val != nil {
4032				var aux timeRFC3339
4033				err = json.Unmarshal(*val, &aux)
4034				m.PreMaintenanceWindowStartTime = (*time.Time)(&aux)
4035			}
4036			delete(rawMsg, key)
4037		}
4038		if err != nil {
4039			return err
4040		}
4041	}
4042	return nil
4043}
4044
4045// The managed artifact.
4046type ManagedArtifact struct {
4047	// The managed artifact id.
4048	ID *string `json:"id,omitempty"`
4049}
4050
4051// The parameters of a managed disk.
4052type ManagedDiskParameters struct {
4053	SubResource
4054	// Specifies the customer managed disk encryption set resource id for the managed disk.
4055	DiskEncryptionSet *SubResource `json:"diskEncryptionSet,omitempty"`
4056
4057	// Specifies the storage account type for the managed disk. NOTE: UltraSSD_LRS can only be used with data disks, it cannot be used with OS Disk.
4058	StorageAccountType *StorageAccountTypes `json:"storageAccountType,omitempty"`
4059}
4060
4061// Describes a network interface reference.
4062type NetworkInterfaceReference struct {
4063	SubResource
4064	// Describes a network interface reference properties.
4065	Properties *NetworkInterfaceReferenceProperties `json:"properties,omitempty"`
4066}
4067
4068// Describes a network interface reference properties.
4069type NetworkInterfaceReferenceProperties struct {
4070	// Specifies the primary network interface in case the virtual machine has more than 1 network interface.
4071	Primary *bool `json:"primary,omitempty"`
4072}
4073
4074// Specifies the network interfaces of the virtual machine.
4075type NetworkProfile struct {
4076	// Specifies the list of resource Ids for the network interfaces associated with the virtual machine.
4077	NetworkInterfaces *[]NetworkInterfaceReference `json:"networkInterfaces,omitempty"`
4078}
4079
4080// Specifies information about the operating system disk used by the virtual machine.
4081// For more information about disks, see About disks and VHDs for Azure virtual machines
4082// [https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-about-disks-vhds?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json].
4083type OSDisk struct {
4084	// Specifies the caching requirements.
4085	// Possible values are:
4086	// None
4087	// ReadOnly
4088	// ReadWrite
4089	// Default: None for Standard storage. ReadOnly for Premium storage.
4090	Caching *CachingTypes `json:"caching,omitempty"`
4091
4092	// Specifies how the virtual machine should be created.
4093	// Possible values are:
4094	// Attach \u2013 This value is used when you are using a specialized disk to create the virtual machine.
4095	// FromImage \u2013 This value is used when you are using an image to create the virtual machine. If you are using a platform image, you also use the imageReference
4096	// element described above. If you are
4097	// using a marketplace image, you also use the plan element previously described.
4098	CreateOption *DiskCreateOptionTypes `json:"createOption,omitempty"`
4099
4100	// Specifies the ephemeral Disk Settings for the operating system disk used by the virtual machine.
4101	DiffDiskSettings *DiffDiskSettings `json:"diffDiskSettings,omitempty"`
4102
4103	// Specifies the size of an empty data disk in gigabytes. This element can be used to overwrite the size of the disk in a virtual machine image.
4104	// This value cannot be larger than 1023 GB
4105	DiskSizeGb *int32 `json:"diskSizeGB,omitempty"`
4106
4107	// Specifies the encryption settings for the OS Disk.
4108	// Minimum api-version: 2015-06-15
4109	EncryptionSettings *DiskEncryptionSettings `json:"encryptionSettings,omitempty"`
4110
4111	// The source user image virtual hard disk. The virtual hard disk will be copied before being attached to the virtual machine. If SourceImage is provided,
4112	// the destination virtual hard drive must not
4113	// exist.
4114	Image *VirtualHardDisk `json:"image,omitempty"`
4115
4116	// The managed disk parameters.
4117	ManagedDisk *ManagedDiskParameters `json:"managedDisk,omitempty"`
4118
4119	// The disk name.
4120	Name *string `json:"name,omitempty"`
4121
4122	// This property allows you to specify the type of the OS that is included in the disk if creating a VM from user-image or a specialized VHD.
4123	// Possible values are:
4124	// Windows
4125	// Linux
4126	OSType *OperatingSystemTypes `json:"osType,omitempty"`
4127
4128	// The virtual hard disk.
4129	Vhd *VirtualHardDisk `json:"vhd,omitempty"`
4130
4131	// Specifies whether writeAccelerator should be enabled or disabled on the disk.
4132	WriteAcceleratorEnabled *bool `json:"writeAcceleratorEnabled,omitempty"`
4133}
4134
4135// Contains the os disk image information.
4136type OSDiskImage struct {
4137	// The operating system of the osDiskImage.
4138	OperatingSystem *OperatingSystemTypes `json:"operatingSystem,omitempty"`
4139}
4140
4141// Contains encryption settings for an OS disk image.
4142type OSDiskImageEncryption struct {
4143	DiskImageEncryption
4144}
4145
4146// Specifies the operating system settings for the virtual machine. Some of the settings cannot be changed once VM is provisioned.
4147type OSProfile struct {
4148	// Specifies the password of the administrator account.
4149	// Minimum-length (Windows): 8 characters
4150	// Minimum-length (Linux): 6 characters
4151	// Max-length (Windows): 123 characters
4152	// Max-length (Linux): 72 characters
4153	// Complexity requirements: 3 out of 4 conditions below need to be fulfilled
4154	// Has lower characters
4155	// Has upper characters
4156	// Has a digit
4157	// Has a special character (Regex match [\W_])
4158	// Disallowed values: "abc@123", "P@$$w0rd", "P@ssw0rd", "P@ssword123", "Pa$$word", "pass@word1", "Password!", "Password1", "Password22", "iloveyou!"
4159	// For resetting the password, see How to reset the Remote Desktop service or its login password in a Windows VM
4160	// [https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-reset-rdp?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json]
4161	// For resetting root password, see Manage users, SSH, and check or repair disks on Azure Linux VMs using the VMAccess Extension
4162	// [https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-using-vmaccess-extension?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json#reset-root-password]
4163	AdminPassword *string `json:"adminPassword,omitempty"`
4164
4165	// Specifies the name of the administrator account.
4166	// This property cannot be updated after the VM is created.
4167	// Windows-only restriction: Cannot end in "."
4168	// Disallowed values: "administrator", "admin", "user", "user1", "test", "user2", "test1", "user3", "admin1", "1", "123", "a", "actuser", "adm", "admin2",
4169	// "aspnet", "backup", "console", "david", "guest",
4170	// "john", "owner", "root", "server", "sql", "support", "support_388945a0", "sys", "test2", "test3", "user4", "user5".
4171	// Minimum-length (Linux): 1 character
4172	// Max-length (Linux): 64 characters
4173	// Max-length (Windows): 20 characters
4174	// For root access to the Linux VM, see Using root privileges on Linux virtual machines in Azure
4175	// [https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-use-root-privileges?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json]
4176	// For a list of built-in system users on Linux that should not be used in this field, see Selecting User Names for Linux on Azure
4177	// [https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-usernames?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json]
4178	AdminUsername *string `json:"adminUsername,omitempty"`
4179
4180	// Specifies whether extension operations should be allowed on the virtual machine.
4181	// This may only be set to False when no extensions are present on the virtual machine.
4182	AllowExtensionOperations *bool `json:"allowExtensionOperations,omitempty"`
4183
4184	// Specifies the host OS name of the virtual machine.
4185	// This name cannot be updated after the VM is created.
4186	// Max-length (Windows): 15 characters
4187	// Max-length (Linux): 64 characters.
4188	// For naming conventions and restrictions see Azure infrastructure services implementation guidelines
4189	// [https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-infrastructure-subscription-accounts-guidelines?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json#1-naming-conventions].
4190	ComputerName *string `json:"computerName,omitempty"`
4191
4192	// Specifies a base-64 encoded string of custom data. The base-64 encoded string is decoded to a binary array that is saved as a file on the Virtual Machine.
4193	// The maximum length of the binary array is
4194	// 65535 bytes.
4195	// Note: Do not pass any secrets or passwords in customData property
4196	// This property cannot be updated after the VM is created.
4197	// customData is passed to the VM to be saved as a file, for more information see Custom Data on Azure VMs [https://azure.microsoft.com/en-us/blog/custom-data-and-cloud-init-on-windows-azure/]
4198	// For using cloud-init for your Linux VM, see Using cloud-init to customize a Linux VM during creation
4199	// [https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-using-cloud-init?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json]
4200	CustomData *string `json:"customData,omitempty"`
4201
4202	// Specifies the Linux operating system settings on the virtual machine.
4203	// For a list of supported Linux distributions, see Linux on Azure-Endorsed Distributions
4204	// [https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-endorsed-distros?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json]
4205	// For running non-endorsed distributions, see Information for Non-Endorsed Distributions
4206	// [https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-create-upload-generic?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json].
4207	LinuxConfiguration *LinuxConfiguration `json:"linuxConfiguration,omitempty"`
4208
4209	// Specifies whether the guest provision signal is required to infer provision success of the virtual machine. Note: This property is for private testing
4210	// only, and all customers must not set the property
4211	// to false.
4212	RequireGuestProvisionSignal *bool `json:"requireGuestProvisionSignal,omitempty"`
4213
4214	// Specifies set of certificates that should be installed onto the virtual machine.
4215	Secrets *[]VaultSecretGroup `json:"secrets,omitempty"`
4216
4217	// Specifies Windows operating system settings on the virtual machine.
4218	WindowsConfiguration *WindowsConfiguration `json:"windowsConfiguration,omitempty"`
4219}
4220
4221// OperationsListOptions contains the optional parameters for the Operations.List method.
4222type OperationsListOptions struct {
4223	// placeholder for future optional parameters
4224}
4225
4226// The input for OrchestrationServiceState
4227type OrchestrationServiceStateInput struct {
4228	// The action to be performed.
4229	Action *OrchestrationServiceStateAction `json:"action,omitempty"`
4230
4231	// The name of the service.
4232	ServiceName *OrchestrationServiceNames `json:"serviceName,omitempty"`
4233}
4234
4235// Summary for an orchestration service of a virtual machine scale set.
4236type OrchestrationServiceSummary struct {
4237	// READ-ONLY; The name of the service.
4238	ServiceName *OrchestrationServiceNames `json:"serviceName,omitempty" azure:"ro"`
4239
4240	// READ-ONLY; The current state of the service.
4241	ServiceState *OrchestrationServiceState `json:"serviceState,omitempty" azure:"ro"`
4242}
4243
4244type PatchSettings struct {
4245	// Specifies the mode of in-guest patching to IaaS virtual machine.
4246	// Possible values are:
4247	// Manual - You control the application of patches to a virtual machine. You do this by applying patches manually inside the VM. In this mode, automatic
4248	// updates are disabled; the property
4249	// WindowsConfiguration.enableAutomaticUpdates must be false
4250	// AutomaticByOS - The virtual machine will automatically be updated by the OS. The property WindowsConfiguration.enableAutomaticUpdates must be true.
4251	// ** AutomaticByPlatform** - the virtual machine will automatically updated by the platform. The properties provisionVMAgent and WindowsConfiguration.enableAutomaticUpdates
4252	// must be true
4253	PatchMode *InGuestPatchMode `json:"patchMode,omitempty"`
4254}
4255
4256// The Resource model definition.
4257type PirResource struct {
4258	// READ-ONLY; Resource location
4259	Location *string `json:"location,omitempty" azure:"ro"`
4260
4261	// READ-ONLY; Resource name
4262	Name *string `json:"name,omitempty" azure:"ro"`
4263}
4264
4265// Base information about the shared gallery resource in pir.
4266type PirSharedGalleryResource struct {
4267	PirResource
4268	// The identifier information of shared gallery.
4269	IDentifier *SharedGalleryIDentifier `json:"identifier,omitempty"`
4270}
4271
4272// PirSharedGalleryResourceResponse is the response envelope for operations that return a PirSharedGalleryResource type.
4273type PirSharedGalleryResourceResponse struct {
4274	// Base information about the shared gallery resource in pir.
4275	PirSharedGalleryResource *PirSharedGalleryResource
4276
4277	// RawResponse contains the underlying HTTP response.
4278	RawResponse *http.Response
4279}
4280
4281// Specifies information about the marketplace image used to create the virtual machine. This element is only used for marketplace images. Before you can
4282// use a marketplace image from an API, you must
4283// enable the image for programmatic use. In the Azure portal, find the marketplace image that you want to use and then click Want to deploy programmatically,
4284// Get Started ->. Enter any required
4285// information and then click Save.
4286type Plan struct {
4287	// The plan ID.
4288	Name *string `json:"name,omitempty"`
4289
4290	// Specifies the product of the image from the marketplace. This is the same value as Offer under the imageReference element.
4291	Product *string `json:"product,omitempty"`
4292
4293	// The promotion code.
4294	PromotionCode *string `json:"promotionCode,omitempty"`
4295
4296	// The publisher ID.
4297	Publisher *string `json:"publisher,omitempty"`
4298}
4299
4300// The Private Endpoint resource.
4301type PrivateEndpoint struct {
4302	// READ-ONLY; The ARM identifier for Private Endpoint
4303	ID *string `json:"id,omitempty" azure:"ro"`
4304}
4305
4306// The Private Endpoint Connection resource.
4307type PrivateEndpointConnection struct {
4308	ProxyOnlyResource
4309	// Resource properties.
4310	Properties *PrivateEndpointConnectionProperties `json:"properties,omitempty"`
4311}
4312
4313// A list of private link resources
4314type PrivateEndpointConnectionListResult struct {
4315	// The uri to fetch the next page of snapshots. Call ListNext() with this to fetch the next page of snapshots.
4316	NextLink *string `json:"nextLink,omitempty"`
4317
4318	// Array of private endpoint connections
4319	Value *[]PrivateEndpointConnection `json:"value,omitempty"`
4320}
4321
4322// PrivateEndpointConnectionListResultResponse is the response envelope for operations that return a PrivateEndpointConnectionListResult type.
4323type PrivateEndpointConnectionListResultResponse struct {
4324	// A list of private link resources
4325	PrivateEndpointConnectionListResult *PrivateEndpointConnectionListResult
4326
4327	// RawResponse contains the underlying HTTP response.
4328	RawResponse *http.Response
4329}
4330
4331// PrivateEndpointConnectionPollerResponse is the response envelope for operations that asynchronously return a PrivateEndpointConnection type.
4332type PrivateEndpointConnectionPollerResponse struct {
4333	// PollUntilDone will poll the service endpoint until a terminal state is reached or an error is received
4334	PollUntilDone func(ctx context.Context, frequency time.Duration) (PrivateEndpointConnectionResponse, error)
4335
4336	// Poller contains an initialized poller.
4337	Poller PrivateEndpointConnectionPoller
4338
4339	// RawResponse contains the underlying HTTP response.
4340	RawResponse *http.Response
4341}
4342
4343// Properties of the PrivateEndpointConnectProperties.
4344type PrivateEndpointConnectionProperties struct {
4345	// The resource of private end point.
4346	PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"`
4347
4348	// A collection of information about the state of the connection between DiskAccess and Virtual Network.
4349	PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"`
4350
4351	// READ-ONLY; The provisioning state of the private endpoint connection resource.
4352	ProvisioningState *PrivateEndpointConnectionProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
4353}
4354
4355// PrivateEndpointConnectionResponse is the response envelope for operations that return a PrivateEndpointConnection type.
4356type PrivateEndpointConnectionResponse struct {
4357	// The Private Endpoint Connection resource.
4358	PrivateEndpointConnection *PrivateEndpointConnection
4359
4360	// RawResponse contains the underlying HTTP response.
4361	RawResponse *http.Response
4362}
4363
4364// A private link resource
4365type PrivateLinkResource struct {
4366	// READ-ONLY; private link resource Id
4367	ID *string `json:"id,omitempty" azure:"ro"`
4368
4369	// READ-ONLY; private link resource name
4370	Name *string `json:"name,omitempty" azure:"ro"`
4371
4372	// Resource properties.
4373	Properties *PrivateLinkResourceProperties `json:"properties,omitempty"`
4374
4375	// READ-ONLY; private link resource type
4376	Type *string `json:"type,omitempty" azure:"ro"`
4377}
4378
4379// A list of private link resources
4380type PrivateLinkResourceListResult struct {
4381	// Array of private link resources
4382	Value *[]PrivateLinkResource `json:"value,omitempty"`
4383}
4384
4385// PrivateLinkResourceListResultResponse is the response envelope for operations that return a PrivateLinkResourceListResult type.
4386type PrivateLinkResourceListResultResponse struct {
4387	// A list of private link resources
4388	PrivateLinkResourceListResult *PrivateLinkResourceListResult
4389
4390	// RawResponse contains the underlying HTTP response.
4391	RawResponse *http.Response
4392}
4393
4394// Properties of a private link resource.
4395type PrivateLinkResourceProperties struct {
4396	// READ-ONLY; The private link resource group id.
4397	GroupID *string `json:"groupId,omitempty" azure:"ro"`
4398
4399	// READ-ONLY; The private link resource required member names.
4400	RequiredMembers *[]string `json:"requiredMembers,omitempty" azure:"ro"`
4401
4402	// The private link resource DNS zone name.
4403	RequiredZoneNames *[]string `json:"requiredZoneNames,omitempty"`
4404}
4405
4406// A collection of information about the state of the connection between service consumer and provider.
4407type PrivateLinkServiceConnectionState struct {
4408	// A message indicating if changes on the service provider require any updates on the consumer.
4409	ActionsRequired *string `json:"actionsRequired,omitempty"`
4410
4411	// The reason for approval/rejection of the connection.
4412	Description *string `json:"description,omitempty"`
4413
4414	// Indicates whether the connection has been Approved/Rejected/Removed by the owner of the service.
4415	Status *PrivateEndpointServiceConnectionStatus `json:"status,omitempty"`
4416}
4417
4418// Specifies information about the proximity placement group.
4419type ProximityPlacementGroup struct {
4420	Resource
4421	// Describes the properties of a Proximity Placement Group.
4422	Properties *ProximityPlacementGroupProperties `json:"properties,omitempty"`
4423}
4424
4425// The List Proximity Placement Group operation response.
4426type ProximityPlacementGroupListResult struct {
4427	// The URI to fetch the next page of proximity placement groups.
4428	NextLink *string `json:"nextLink,omitempty"`
4429
4430	// The list of proximity placement groups
4431	Value *[]ProximityPlacementGroup `json:"value,omitempty"`
4432}
4433
4434// ProximityPlacementGroupListResultResponse is the response envelope for operations that return a ProximityPlacementGroupListResult type.
4435type ProximityPlacementGroupListResultResponse struct {
4436	// The List Proximity Placement Group operation response.
4437	ProximityPlacementGroupListResult *ProximityPlacementGroupListResult
4438
4439	// RawResponse contains the underlying HTTP response.
4440	RawResponse *http.Response
4441}
4442
4443// Describes the properties of a Proximity Placement Group.
4444type ProximityPlacementGroupProperties struct {
4445	// READ-ONLY; A list of references to all availability sets in the proximity placement group.
4446	AvailabilitySets *[]SubResourceWithColocationStatus `json:"availabilitySets,omitempty" azure:"ro"`
4447
4448	// Describes colocation status of the Proximity Placement Group.
4449	ColocationStatus *InstanceViewStatus `json:"colocationStatus,omitempty"`
4450
4451	// Specifies the type of the proximity placement group.
4452	// Possible values are:
4453	// Standard : Co-locate resources within an Azure region or Availability Zone.
4454	// Ultra : For future use.
4455	ProximityPlacementGroupType *ProximityPlacementGroupType `json:"proximityPlacementGroupType,omitempty"`
4456
4457	// READ-ONLY; A list of references to all virtual machine scale sets in the proximity placement group.
4458	VirtualMachineScaleSets *[]SubResourceWithColocationStatus `json:"virtualMachineScaleSets,omitempty" azure:"ro"`
4459
4460	// READ-ONLY; A list of references to all virtual machines in the proximity placement group.
4461	VirtualMachines *[]SubResourceWithColocationStatus `json:"virtualMachines,omitempty" azure:"ro"`
4462}
4463
4464// ProximityPlacementGroupResponse is the response envelope for operations that return a ProximityPlacementGroup type.
4465type ProximityPlacementGroupResponse struct {
4466	// Specifies information about the proximity placement group.
4467	ProximityPlacementGroup *ProximityPlacementGroup
4468
4469	// RawResponse contains the underlying HTTP response.
4470	RawResponse *http.Response
4471}
4472
4473// Specifies information about the proximity placement group.
4474type ProximityPlacementGroupUpdate struct {
4475	UpdateResource
4476}
4477
4478// ProximityPlacementGroupsCreateOrUpdateOptions contains the optional parameters for the ProximityPlacementGroups.CreateOrUpdate method.
4479type ProximityPlacementGroupsCreateOrUpdateOptions struct {
4480	// placeholder for future optional parameters
4481}
4482
4483// ProximityPlacementGroupsDeleteOptions contains the optional parameters for the ProximityPlacementGroups.Delete method.
4484type ProximityPlacementGroupsDeleteOptions struct {
4485	// placeholder for future optional parameters
4486}
4487
4488// ProximityPlacementGroupsGetOptions contains the optional parameters for the ProximityPlacementGroups.Get method.
4489type ProximityPlacementGroupsGetOptions struct {
4490	// includeColocationStatus=true enables fetching the colocation status of all the resources in the proximity placement group.
4491	IncludeColocationStatus *string
4492}
4493
4494// ProximityPlacementGroupsListByResourceGroupOptions contains the optional parameters for the ProximityPlacementGroups.ListByResourceGroup method.
4495type ProximityPlacementGroupsListByResourceGroupOptions struct {
4496	// placeholder for future optional parameters
4497}
4498
4499// ProximityPlacementGroupsListBySubscriptionOptions contains the optional parameters for the ProximityPlacementGroups.ListBySubscription method.
4500type ProximityPlacementGroupsListBySubscriptionOptions struct {
4501	// placeholder for future optional parameters
4502}
4503
4504// ProximityPlacementGroupsUpdateOptions contains the optional parameters for the ProximityPlacementGroups.Update method.
4505type ProximityPlacementGroupsUpdateOptions struct {
4506	// placeholder for future optional parameters
4507}
4508
4509// The ProxyOnly Resource model definition.
4510type ProxyOnlyResource struct {
4511	// READ-ONLY; Resource Id
4512	ID *string `json:"id,omitempty" azure:"ro"`
4513
4514	// READ-ONLY; Resource name
4515	Name *string `json:"name,omitempty" azure:"ro"`
4516
4517	// READ-ONLY; Resource type
4518	Type *string `json:"type,omitempty" azure:"ro"`
4519}
4520
4521// Used for establishing the purchase context of any 3rd Party artifact through MarketPlace.
4522type PurchasePlan struct {
4523	// The plan ID.
4524	Name *string `json:"name,omitempty"`
4525
4526	// Specifies the product of the image from the marketplace. This is the same value as Offer under the imageReference element.
4527	Product *string `json:"product,omitempty"`
4528
4529	// The publisher ID.
4530	Publisher *string `json:"publisher,omitempty"`
4531}
4532
4533// Used for establishing the purchase context of any 3rd Party artifact through MarketPlace.
4534type PurchasePlanAutoGenerated struct {
4535	// The plan ID.
4536	Name *string `json:"name,omitempty"`
4537
4538	// Specifies the product of the image from the marketplace. This is the same value as Offer under the imageReference element.
4539	Product *string `json:"product,omitempty"`
4540
4541	// The Offer Promotion Code.
4542	PromotionCode *string `json:"promotionCode,omitempty"`
4543
4544	// The publisher ID.
4545	Publisher *string `json:"publisher,omitempty"`
4546}
4547
4548// The properties describe the recommended machine configuration for this Image Definition. These properties are updatable.
4549type RecommendedMachineConfiguration struct {
4550	// Describes the resource range.
4551	Memory *ResourceRange `json:"memory,omitempty"`
4552
4553	// Describes the resource range.
4554	VCpUs *ResourceRange `json:"vCPUs,omitempty"`
4555}
4556
4557// Response after calling a manual recovery walk
4558type RecoveryWalkResponse struct {
4559	// READ-ONLY; The next update domain that needs to be walked. Null means walk spanning all update domains has been completed
4560	NextPlatformUpdateDomain *int32 `json:"nextPlatformUpdateDomain,omitempty" azure:"ro"`
4561
4562	// READ-ONLY; Whether the recovery walk was performed
4563	WalkPerformed *bool `json:"walkPerformed,omitempty" azure:"ro"`
4564}
4565
4566// RecoveryWalkResponseResponse is the response envelope for operations that return a RecoveryWalkResponse type.
4567type RecoveryWalkResponseResponse struct {
4568	// RawResponse contains the underlying HTTP response.
4569	RawResponse *http.Response
4570
4571	// Response after calling a manual recovery walk
4572	RecoveryWalkResponse *RecoveryWalkResponse
4573}
4574
4575// This is the regional replication status.
4576type RegionalReplicationStatus struct {
4577	// READ-ONLY; The details of the replication status.
4578	Details *string `json:"details,omitempty" azure:"ro"`
4579
4580	// READ-ONLY; It indicates progress of the replication job.
4581	Progress *int32 `json:"progress,omitempty" azure:"ro"`
4582
4583	// READ-ONLY; The region to which the gallery image version is being replicated to.
4584	Region *string `json:"region,omitempty" azure:"ro"`
4585
4586	// READ-ONLY; This is the regional replication state.
4587	State *ReplicationState `json:"state,omitempty" azure:"ro"`
4588}
4589
4590// This is the replication status of the gallery image version.
4591type ReplicationStatus struct {
4592	// READ-ONLY; This is the aggregated replication status based on all the regional replication status flags.
4593	AggregatedState *AggregatedReplicationState `json:"aggregatedState,omitempty" azure:"ro"`
4594
4595	// READ-ONLY; This is a summary of replication status for each region.
4596	Summary *[]RegionalReplicationStatus `json:"summary,omitempty" azure:"ro"`
4597}
4598
4599// Api request input for LogAnalytics getRequestRateByInterval Api.
4600type RequestRateByIntervalInput struct {
4601	LogAnalyticsInputBase
4602	// Interval value in minutes used to create LogAnalytics call rate logs.
4603	IntervalLength *IntervalInMins `json:"intervalLength,omitempty"`
4604}
4605
4606// MarshalJSON implements the json.Marshaller interface for type RequestRateByIntervalInput.
4607func (r RequestRateByIntervalInput) MarshalJSON() ([]byte, error) {
4608	objectMap := r.LogAnalyticsInputBase.marshalInternal()
4609	if r.IntervalLength != nil {
4610		objectMap["intervalLength"] = r.IntervalLength
4611	}
4612	return json.Marshal(objectMap)
4613}
4614
4615// UnmarshalJSON implements the json.Unmarshaller interface for type RequestRateByIntervalInput.
4616func (r *RequestRateByIntervalInput) UnmarshalJSON(data []byte) error {
4617	var rawMsg map[string]*json.RawMessage
4618	if err := json.Unmarshal(data, &rawMsg); err != nil {
4619		return err
4620	}
4621	for key, val := range rawMsg {
4622		var err error
4623		switch key {
4624		case "intervalLength":
4625			if val != nil {
4626				err = json.Unmarshal(*val, &r.IntervalLength)
4627			}
4628			delete(rawMsg, key)
4629		}
4630		if err != nil {
4631			return err
4632		}
4633	}
4634	return r.LogAnalyticsInputBase.unmarshalInternal(rawMsg)
4635}
4636
4637// The Resource model definition.
4638type Resource struct {
4639	// READ-ONLY; Resource Id
4640	ID *string `json:"id,omitempty" azure:"ro"`
4641
4642	// Resource location
4643	Location *string `json:"location,omitempty"`
4644
4645	// READ-ONLY; Resource name
4646	Name *string `json:"name,omitempty" azure:"ro"`
4647
4648	// Resource tags
4649	Tags *map[string]string `json:"tags,omitempty"`
4650
4651	// READ-ONLY; Resource type
4652	Type *string `json:"type,omitempty" azure:"ro"`
4653}
4654
4655// Describes the resource range.
4656type ResourceRange struct {
4657	// The maximum number of the resource.
4658	Max *int32 `json:"max,omitempty"`
4659
4660	// The minimum number of the resource.
4661	Min *int32 `json:"min,omitempty"`
4662}
4663
4664// Describes an available Compute SKU.
4665type ResourceSKU struct {
4666	// READ-ONLY; The api versions that support this SKU.
4667	APIVersions *[]string `json:"apiVersions,omitempty" azure:"ro"`
4668
4669	// READ-ONLY; A name value pair to describe the capability.
4670	Capabilities *[]ResourceSKUCapabilities `json:"capabilities,omitempty" azure:"ro"`
4671
4672	// READ-ONLY; Specifies the number of virtual machines in the scale set.
4673	Capacity *ResourceSKUCapacity `json:"capacity,omitempty" azure:"ro"`
4674
4675	// READ-ONLY; Metadata for retrieving price info.
4676	Costs *[]ResourceSKUCosts `json:"costs,omitempty" azure:"ro"`
4677
4678	// READ-ONLY; The Family of this particular SKU.
4679	Family *string `json:"family,omitempty" azure:"ro"`
4680
4681	// READ-ONLY; The Kind of resources that are supported in this SKU.
4682	Kind *string `json:"kind,omitempty" azure:"ro"`
4683
4684	// READ-ONLY; A list of locations and availability zones in those locations where the SKU is available.
4685	LocationInfo *[]ResourceSKULocationInfo `json:"locationInfo,omitempty" azure:"ro"`
4686
4687	// READ-ONLY; The set of locations that the SKU is available.
4688	Locations *[]string `json:"locations,omitempty" azure:"ro"`
4689
4690	// READ-ONLY; The name of SKU.
4691	Name *string `json:"name,omitempty" azure:"ro"`
4692
4693	// READ-ONLY; The type of resource the SKU applies to.
4694	ResourceType *string `json:"resourceType,omitempty" azure:"ro"`
4695
4696	// READ-ONLY; The restrictions because of which SKU cannot be used. This is empty if there are no restrictions.
4697	Restrictions *[]ResourceSKURestrictions `json:"restrictions,omitempty" azure:"ro"`
4698
4699	// READ-ONLY; The Size of the SKU.
4700	Size *string `json:"size,omitempty" azure:"ro"`
4701
4702	// READ-ONLY; Specifies the tier of virtual machines in a scale set.
4703	// Possible Values:
4704	// Standard
4705	// Basic
4706	Tier *string `json:"tier,omitempty" azure:"ro"`
4707}
4708
4709// Describes The SKU capabilities object.
4710type ResourceSKUCapabilities struct {
4711	// READ-ONLY; An invariant to describe the feature.
4712	Name *string `json:"name,omitempty" azure:"ro"`
4713
4714	// READ-ONLY; An invariant if the feature is measured by quantity.
4715	Value *string `json:"value,omitempty" azure:"ro"`
4716}
4717
4718// Describes scaling information of a SKU.
4719type ResourceSKUCapacity struct {
4720	// READ-ONLY; The default capacity.
4721	Default *int64 `json:"default,omitempty" azure:"ro"`
4722
4723	// READ-ONLY; The maximum capacity that can be set.
4724	Maximum *int64 `json:"maximum,omitempty" azure:"ro"`
4725
4726	// READ-ONLY; The minimum capacity.
4727	Minimum *int64 `json:"minimum,omitempty" azure:"ro"`
4728
4729	// READ-ONLY; The scale type applicable to the sku.
4730	ScaleType *ResourceSKUCapacityScaleType `json:"scaleType,omitempty" azure:"ro"`
4731}
4732
4733// Describes metadata for retrieving price info.
4734type ResourceSKUCosts struct {
4735	// READ-ONLY; An invariant to show the extended unit.
4736	ExtendedUnit *string `json:"extendedUnit,omitempty" azure:"ro"`
4737
4738	// READ-ONLY; Used for querying price from commerce.
4739	MeterID *string `json:"meterID,omitempty" azure:"ro"`
4740
4741	// READ-ONLY; The multiplier is needed to extend the base metered cost.
4742	Quantity *int64 `json:"quantity,omitempty" azure:"ro"`
4743}
4744
4745type ResourceSKULocationInfo struct {
4746	// READ-ONLY; Location of the SKU
4747	Location *string `json:"location,omitempty" azure:"ro"`
4748
4749	// READ-ONLY; Details of capabilities available to a SKU in specific zones.
4750	ZoneDetails *[]ResourceSKUZoneDetails `json:"zoneDetails,omitempty" azure:"ro"`
4751
4752	// READ-ONLY; List of availability zones where the SKU is supported.
4753	Zones *[]string `json:"zones,omitempty" azure:"ro"`
4754}
4755
4756type ResourceSKURestrictionInfo struct {
4757	// READ-ONLY; Locations where the SKU is restricted
4758	Locations *[]string `json:"locations,omitempty" azure:"ro"`
4759
4760	// READ-ONLY; List of availability zones where the SKU is restricted.
4761	Zones *[]string `json:"zones,omitempty" azure:"ro"`
4762}
4763
4764// Describes scaling information of a SKU.
4765type ResourceSKURestrictions struct {
4766	// READ-ONLY; The reason for restriction.
4767	ReasonCode *ResourceSKURestrictionsReasonCode `json:"reasonCode,omitempty" azure:"ro"`
4768
4769	// READ-ONLY; The information about the restriction where the SKU cannot be used.
4770	RestrictionInfo *ResourceSKURestrictionInfo `json:"restrictionInfo,omitempty" azure:"ro"`
4771
4772	// READ-ONLY; The type of restrictions.
4773	Type *ResourceSKURestrictionsType `json:"type,omitempty" azure:"ro"`
4774
4775	// READ-ONLY; The value of restrictions. If the restriction type is set to location. This would be different locations where the SKU is restricted.
4776	Values *[]string `json:"values,omitempty" azure:"ro"`
4777}
4778
4779// Describes The zonal capabilities of a SKU.
4780type ResourceSKUZoneDetails struct {
4781	// READ-ONLY; A list of capabilities that are available for the SKU in the specified list of zones.
4782	Capabilities *[]ResourceSKUCapabilities `json:"capabilities,omitempty" azure:"ro"`
4783
4784	// READ-ONLY; The set of zones that the SKU is available in with the specified capabilities.
4785	Name *[]string `json:"name,omitempty" azure:"ro"`
4786}
4787
4788// ResourceSKUsListOptions contains the optional parameters for the ResourceSKUs.List method.
4789type ResourceSKUsListOptions struct {
4790	// The filter to apply on the operation. Only **location** filter is supported currently.
4791	Filter *string
4792}
4793
4794// The List Resource Skus operation response.
4795type ResourceSKUsResult struct {
4796	// The URI to fetch the next page of Resource Skus. Call ListNext() with this URI to fetch the next page of Resource Skus
4797	NextLink *string `json:"nextLink,omitempty"`
4798
4799	// The list of skus available for the subscription.
4800	Value *[]ResourceSKU `json:"value,omitempty"`
4801}
4802
4803// ResourceSKUsResultResponse is the response envelope for operations that return a ResourceSKUsResult type.
4804type ResourceSKUsResultResponse struct {
4805	// RawResponse contains the underlying HTTP response.
4806	RawResponse *http.Response
4807
4808	// The List Resource Skus operation response.
4809	ResourceSKUsResult *ResourceSKUsResult
4810}
4811
4812// The List resources which are encrypted with the disk encryption set.
4813type ResourceURIList struct {
4814	// The uri to fetch the next page of encrypted resources. Call ListNext() with this to fetch the next page of encrypted resources.
4815	NextLink *string `json:"nextLink,omitempty"`
4816
4817	// A list of IDs or Owner IDs of resources which are encrypted with the disk encryption set.
4818	Value *[]string `json:"value,omitempty"`
4819}
4820
4821// ResourceURIListResponse is the response envelope for operations that return a ResourceURIList type.
4822type ResourceURIListResponse struct {
4823	// RawResponse contains the underlying HTTP response.
4824	RawResponse *http.Response
4825
4826	// The List resources which are encrypted with the disk encryption set.
4827	ResourceURIList *ResourceURIList
4828}
4829
4830// The SAS URIs of the console screenshot and serial log blobs.
4831type RetrieveBootDiagnosticsDataResult struct {
4832	// READ-ONLY; The console screenshot blob URI
4833	ConsoleScreenshotBlobURI *string `json:"consoleScreenshotBlobUri,omitempty" azure:"ro"`
4834
4835	// READ-ONLY; The serial console log blob URI.
4836	SerialConsoleLogBlobURI *string `json:"serialConsoleLogBlobUri,omitempty" azure:"ro"`
4837}
4838
4839// RetrieveBootDiagnosticsDataResultResponse is the response envelope for operations that return a RetrieveBootDiagnosticsDataResult type.
4840type RetrieveBootDiagnosticsDataResultResponse struct {
4841	// RawResponse contains the underlying HTTP response.
4842	RawResponse *http.Response
4843
4844	// The SAS URIs of the console screenshot and serial log blobs.
4845	RetrieveBootDiagnosticsDataResult *RetrieveBootDiagnosticsDataResult
4846}
4847
4848// Information about rollback on failed VM instances after a OS Upgrade operation.
4849type RollbackStatusInfo struct {
4850	// READ-ONLY; The number of instances which failed to rollback.
4851	FailedRolledbackInstanceCount *int32 `json:"failedRolledbackInstanceCount,omitempty" azure:"ro"`
4852
4853	// READ-ONLY; Error details if OS rollback failed.
4854	RollbackError *APIError `json:"rollbackError,omitempty" azure:"ro"`
4855
4856	// READ-ONLY; The number of instances which have been successfully rolled back.
4857	SuccessfullyRolledbackInstanceCount *int32 `json:"successfullyRolledbackInstanceCount,omitempty" azure:"ro"`
4858}
4859
4860// The configuration parameters used while performing a rolling upgrade.
4861type RollingUpgradePolicy struct {
4862	// The maximum percent of total virtual machine instances that will be upgraded simultaneously by the rolling upgrade in one batch. As this is a maximum,
4863	// unhealthy instances in previous or future batches
4864	// can cause the percentage of instances in a batch to decrease to ensure higher reliability. The default value for this parameter is 20%.
4865	MaxBatchInstancePercent *int32 `json:"maxBatchInstancePercent,omitempty"`
4866
4867	// The maximum percentage of the total virtual machine instances in the scale set that can be simultaneously unhealthy, either as a result of being upgraded,
4868	// or by being found in an unhealthy state by
4869	// the virtual machine health checks before the rolling upgrade aborts. This constraint will be checked prior to starting any batch. The default value for
4870	// this parameter is 20%.
4871	MaxUnhealthyInstancePercent *int32 `json:"maxUnhealthyInstancePercent,omitempty"`
4872
4873	// The maximum percentage of upgraded virtual machine instances that can be found to be in an unhealthy state. This check will happen after each batch is
4874	// upgraded. If this percentage is ever exceeded,
4875	// the rolling update aborts. The default value for this parameter is 20%.
4876	MaxUnhealthyUpgradedInstancePercent *int32 `json:"maxUnhealthyUpgradedInstancePercent,omitempty"`
4877
4878	// The wait time between completing the update for all virtual machines in one batch and starting the next batch. The time duration should be specified
4879	// in ISO 8601 format. The default value is 0 seconds
4880	// (PT0S).
4881	PauseTimeBetweenBatches *string `json:"pauseTimeBetweenBatches,omitempty"`
4882}
4883
4884// Information about the number of virtual machine instances in each upgrade state.
4885type RollingUpgradeProgressInfo struct {
4886	// READ-ONLY; The number of instances that have failed to be upgraded successfully.
4887	FailedInstanceCount *int32 `json:"failedInstanceCount,omitempty" azure:"ro"`
4888
4889	// READ-ONLY; The number of instances that are currently being upgraded.
4890	InProgressInstanceCount *int32 `json:"inProgressInstanceCount,omitempty" azure:"ro"`
4891
4892	// READ-ONLY; The number of instances that have not yet begun to be upgraded.
4893	PendingInstanceCount *int32 `json:"pendingInstanceCount,omitempty" azure:"ro"`
4894
4895	// READ-ONLY; The number of instances that have been successfully upgraded.
4896	SuccessfulInstanceCount *int32 `json:"successfulInstanceCount,omitempty" azure:"ro"`
4897}
4898
4899// Information about the current running state of the overall upgrade.
4900type RollingUpgradeRunningStatus struct {
4901	// READ-ONLY; Code indicating the current status of the upgrade.
4902	Code *RollingUpgradeStatusCode `json:"code,omitempty" azure:"ro"`
4903
4904	// READ-ONLY; The last action performed on the rolling upgrade.
4905	LastAction *RollingUpgradeActionType `json:"lastAction,omitempty" azure:"ro"`
4906
4907	// READ-ONLY; Last action time of the upgrade.
4908	LastActionTime *time.Time `json:"lastActionTime,omitempty" azure:"ro"`
4909
4910	// READ-ONLY; Start time of the upgrade.
4911	StartTime *time.Time `json:"startTime,omitempty" azure:"ro"`
4912}
4913
4914// MarshalJSON implements the json.Marshaller interface for type RollingUpgradeRunningStatus.
4915func (r RollingUpgradeRunningStatus) MarshalJSON() ([]byte, error) {
4916	objectMap := make(map[string]interface{})
4917	if r.Code != nil {
4918		objectMap["code"] = r.Code
4919	}
4920	if r.LastAction != nil {
4921		objectMap["lastAction"] = r.LastAction
4922	}
4923	if r.LastActionTime != nil {
4924		objectMap["lastActionTime"] = (*timeRFC3339)(r.LastActionTime)
4925	}
4926	if r.StartTime != nil {
4927		objectMap["startTime"] = (*timeRFC3339)(r.StartTime)
4928	}
4929	return json.Marshal(objectMap)
4930}
4931
4932// UnmarshalJSON implements the json.Unmarshaller interface for type RollingUpgradeRunningStatus.
4933func (r *RollingUpgradeRunningStatus) UnmarshalJSON(data []byte) error {
4934	var rawMsg map[string]*json.RawMessage
4935	if err := json.Unmarshal(data, &rawMsg); err != nil {
4936		return err
4937	}
4938	for key, val := range rawMsg {
4939		var err error
4940		switch key {
4941		case "code":
4942			if val != nil {
4943				err = json.Unmarshal(*val, &r.Code)
4944			}
4945			delete(rawMsg, key)
4946		case "lastAction":
4947			if val != nil {
4948				err = json.Unmarshal(*val, &r.LastAction)
4949			}
4950			delete(rawMsg, key)
4951		case "lastActionTime":
4952			if val != nil {
4953				var aux timeRFC3339
4954				err = json.Unmarshal(*val, &aux)
4955				r.LastActionTime = (*time.Time)(&aux)
4956			}
4957			delete(rawMsg, key)
4958		case "startTime":
4959			if val != nil {
4960				var aux timeRFC3339
4961				err = json.Unmarshal(*val, &aux)
4962				r.StartTime = (*time.Time)(&aux)
4963			}
4964			delete(rawMsg, key)
4965		}
4966		if err != nil {
4967			return err
4968		}
4969	}
4970	return nil
4971}
4972
4973// The status of the latest virtual machine scale set rolling upgrade.
4974type RollingUpgradeStatusInfo struct {
4975	Resource
4976	// The status of the latest virtual machine scale set rolling upgrade.
4977	Properties *RollingUpgradeStatusInfoProperties `json:"properties,omitempty"`
4978}
4979
4980// The status of the latest virtual machine scale set rolling upgrade.
4981type RollingUpgradeStatusInfoProperties struct {
4982	// READ-ONLY; Error details for this upgrade, if there are any.
4983	Error *APIError `json:"error,omitempty" azure:"ro"`
4984
4985	// READ-ONLY; The rolling upgrade policies applied for this upgrade.
4986	Policy *RollingUpgradePolicy `json:"policy,omitempty" azure:"ro"`
4987
4988	// READ-ONLY; Information about the number of virtual machine instances in each upgrade state.
4989	Progress *RollingUpgradeProgressInfo `json:"progress,omitempty" azure:"ro"`
4990
4991	// READ-ONLY; Information about the current running state of the overall upgrade.
4992	RunningStatus *RollingUpgradeRunningStatus `json:"runningStatus,omitempty" azure:"ro"`
4993}
4994
4995// RollingUpgradeStatusInfoResponse is the response envelope for operations that return a RollingUpgradeStatusInfo type.
4996type RollingUpgradeStatusInfoResponse struct {
4997	// RawResponse contains the underlying HTTP response.
4998	RawResponse *http.Response
4999
5000	// The status of the latest virtual machine scale set rolling upgrade.
5001	RollingUpgradeStatusInfo *RollingUpgradeStatusInfo
5002}
5003
5004// Describes the properties of a Run Command.
5005type RunCommandDocument struct {
5006	RunCommandDocumentBase
5007	// The parameters used by the script.
5008	Parameters *[]RunCommandParameterDefinition `json:"parameters,omitempty"`
5009
5010	// The script to be executed.
5011	Script *[]string `json:"script,omitempty"`
5012}
5013
5014// Describes the properties of a Run Command metadata.
5015type RunCommandDocumentBase struct {
5016	// The VM run command description.
5017	Description *string `json:"description,omitempty"`
5018
5019	// The VM run command id.
5020	ID *string `json:"id,omitempty"`
5021
5022	// The VM run command label.
5023	Label *string `json:"label,omitempty"`
5024
5025	// The Operating System type.
5026	OSType *OperatingSystemTypes `json:"osType,omitempty"`
5027
5028	// The VM run command schema.
5029	Schema *string `json:"$schema,omitempty"`
5030}
5031
5032// RunCommandDocumentResponse is the response envelope for operations that return a RunCommandDocument type.
5033type RunCommandDocumentResponse struct {
5034	// RawResponse contains the underlying HTTP response.
5035	RawResponse *http.Response
5036
5037	// Describes the properties of a Run Command.
5038	RunCommandDocument *RunCommandDocument
5039}
5040
5041// Capture Virtual Machine parameters.
5042type RunCommandInput struct {
5043	// The run command id.
5044	CommandID *string `json:"commandId,omitempty"`
5045
5046	// The run command parameters.
5047	Parameters *[]RunCommandInputParameter `json:"parameters,omitempty"`
5048
5049	// Optional. The script to be executed. When this value is given, the given script will override the default script of the command.
5050	Script *[]string `json:"script,omitempty"`
5051}
5052
5053// Describes the properties of a run command parameter.
5054type RunCommandInputParameter struct {
5055	// The run command parameter name.
5056	Name *string `json:"name,omitempty"`
5057
5058	// The run command parameter value.
5059	Value *string `json:"value,omitempty"`
5060}
5061
5062// The List Virtual Machine operation response.
5063type RunCommandListResult struct {
5064	// The uri to fetch the next page of run commands. Call ListNext() with this to fetch the next page of run commands.
5065	NextLink *string `json:"nextLink,omitempty"`
5066
5067	// The list of virtual machine run commands.
5068	Value *[]RunCommandDocumentBase `json:"value,omitempty"`
5069}
5070
5071// RunCommandListResultResponse is the response envelope for operations that return a RunCommandListResult type.
5072type RunCommandListResultResponse struct {
5073	// RawResponse contains the underlying HTTP response.
5074	RawResponse *http.Response
5075
5076	// The List Virtual Machine operation response.
5077	RunCommandListResult *RunCommandListResult
5078}
5079
5080// Describes the properties of a run command parameter.
5081type RunCommandParameterDefinition struct {
5082	// The run command parameter default value.
5083	DefaultValue *string `json:"defaultValue,omitempty"`
5084
5085	// The run command parameter name.
5086	Name *string `json:"name,omitempty"`
5087
5088	// The run command parameter required.
5089	Required *bool `json:"required,omitempty"`
5090
5091	// The run command parameter type.
5092	Type *string `json:"type,omitempty"`
5093}
5094
5095type RunCommandResult struct {
5096	// Run command operation response.
5097	Value *[]InstanceViewStatus `json:"value,omitempty"`
5098}
5099
5100// RunCommandResultPollerResponse is the response envelope for operations that asynchronously return a RunCommandResult type.
5101type RunCommandResultPollerResponse struct {
5102	// PollUntilDone will poll the service endpoint until a terminal state is reached or an error is received
5103	PollUntilDone func(ctx context.Context, frequency time.Duration) (RunCommandResultResponse, error)
5104
5105	// Poller contains an initialized poller.
5106	Poller RunCommandResultPoller
5107
5108	// RawResponse contains the underlying HTTP response.
5109	RawResponse *http.Response
5110}
5111
5112// RunCommandResultResponse is the response envelope for operations that return a RunCommandResult type.
5113type RunCommandResultResponse struct {
5114	// RawResponse contains the underlying HTTP response.
5115	RawResponse      *http.Response
5116	RunCommandResult *RunCommandResult
5117}
5118
5119// Describes a virtual machine scale set sku. NOTE: If the new VM SKU is not supported on the hardware the scale set is currently on, you need to deallocate
5120// the VMs in the scale set before you modify the
5121// SKU name.
5122type SKU struct {
5123	// Specifies the number of virtual machines in the scale set.
5124	Capacity *int64 `json:"capacity,omitempty"`
5125
5126	// The sku name.
5127	Name *string `json:"name,omitempty"`
5128
5129	// Specifies the tier of virtual machines in a scale set.
5130	// Possible Values:
5131	// Standard
5132	// Basic
5133	Tier *string `json:"tier,omitempty"`
5134}
5135
5136// SSH configuration for Linux based VMs running on Azure
5137type SSHConfiguration struct {
5138	// The list of SSH public keys used to authenticate with linux based VMs.
5139	PublicKeys *[]SSHPublicKey `json:"publicKeys,omitempty"`
5140}
5141
5142// Contains information about SSH certificate public key and the path on the Linux VM where the public key is placed.
5143type SSHPublicKey struct {
5144	// SSH public key certificate used to authenticate with the VM through ssh. The key needs to be at least 2048-bit and in ssh-rsa format.
5145	// For creating ssh keys, see Create SSH keys on Linux and Mac for Linux VMs in Azure
5146	// [https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-mac-create-ssh-keys?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json].
5147	KeyData *string `json:"keyData,omitempty"`
5148
5149	// Specifies the full path on the created VM where ssh public key is stored. If the file already exists, the specified key is appended to the file. Example:
5150	// /home/user/.ssh/authorized_keys
5151	Path *string `json:"path,omitempty"`
5152}
5153
5154// Response from generation of an SSH key pair.
5155type SSHPublicKeyGenerateKeyPairResult struct {
5156	// The ARM resource id in the form of /subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/providers/Microsoft.Compute/sshPublicKeys/{SshPublicKeyName}
5157	ID *string `json:"id,omitempty"`
5158
5159	// Private key portion of the key pair used to authenticate to a virtual machine through ssh. The private key is returned in RFC3447 format and should be
5160	// treated as a secret.
5161	PrivateKey *string `json:"privateKey,omitempty"`
5162
5163	// Public key portion of the key pair used to authenticate to a virtual machine through ssh. The public key is in ssh-rsa format.
5164	PublicKey *string `json:"publicKey,omitempty"`
5165}
5166
5167// SSHPublicKeyGenerateKeyPairResultResponse is the response envelope for operations that return a SSHPublicKeyGenerateKeyPairResult type.
5168type SSHPublicKeyGenerateKeyPairResultResponse struct {
5169	// RawResponse contains the underlying HTTP response.
5170	RawResponse *http.Response
5171
5172	// Response from generation of an SSH key pair.
5173	SSHPublicKeyGenerateKeyPairResult *SSHPublicKeyGenerateKeyPairResult
5174}
5175
5176// Specifies information about the SSH public key.
5177type SSHPublicKeyResource struct {
5178	Resource
5179	// Properties of the SSH public key.
5180	Properties *SSHPublicKeyResourceProperties `json:"properties,omitempty"`
5181}
5182
5183// Properties of the SSH public key.
5184type SSHPublicKeyResourceProperties struct {
5185	// SSH public key used to authenticate to a virtual machine through ssh. If this property is not initially provided when the resource is created, the publicKey
5186	// property will be populated when
5187	// generateKeyPair is called. If the public key is provided upon resource creation, the provided public key needs to be at least 2048-bit and in ssh-rsa
5188	// format.
5189	PublicKey *string `json:"publicKey,omitempty"`
5190}
5191
5192// SSHPublicKeyResourceResponse is the response envelope for operations that return a SSHPublicKeyResource type.
5193type SSHPublicKeyResourceResponse struct {
5194	// RawResponse contains the underlying HTTP response.
5195	RawResponse *http.Response
5196
5197	// Specifies information about the SSH public key.
5198	SSHPublicKeyResource *SSHPublicKeyResource
5199}
5200
5201// Specifies information about the SSH public key.
5202type SSHPublicKeyUpdateResource struct {
5203	UpdateResource
5204	// Properties of the SSH public key.
5205	Properties *SSHPublicKeyResourceProperties `json:"properties,omitempty"`
5206}
5207
5208// SSHPublicKeysCreateOptions contains the optional parameters for the SSHPublicKeys.Create method.
5209type SSHPublicKeysCreateOptions struct {
5210	// placeholder for future optional parameters
5211}
5212
5213// SSHPublicKeysDeleteOptions contains the optional parameters for the SSHPublicKeys.Delete method.
5214type SSHPublicKeysDeleteOptions struct {
5215	// placeholder for future optional parameters
5216}
5217
5218// SSHPublicKeysGenerateKeyPairOptions contains the optional parameters for the SSHPublicKeys.GenerateKeyPair method.
5219type SSHPublicKeysGenerateKeyPairOptions struct {
5220	// placeholder for future optional parameters
5221}
5222
5223// SSHPublicKeysGetOptions contains the optional parameters for the SSHPublicKeys.Get method.
5224type SSHPublicKeysGetOptions struct {
5225	// placeholder for future optional parameters
5226}
5227
5228// The list SSH public keys operation response.
5229type SSHPublicKeysGroupListResult struct {
5230	// The URI to fetch the next page of SSH public keys. Call ListNext() with this URI to fetch the next page of SSH public keys.
5231	NextLink *string `json:"nextLink,omitempty"`
5232
5233	// The list of SSH public keys
5234	Value *[]SSHPublicKeyResource `json:"value,omitempty"`
5235}
5236
5237// SSHPublicKeysGroupListResultResponse is the response envelope for operations that return a SSHPublicKeysGroupListResult type.
5238type SSHPublicKeysGroupListResultResponse struct {
5239	// RawResponse contains the underlying HTTP response.
5240	RawResponse *http.Response
5241
5242	// The list SSH public keys operation response.
5243	SSHPublicKeysGroupListResult *SSHPublicKeysGroupListResult
5244}
5245
5246// SSHPublicKeysListByResourceGroupOptions contains the optional parameters for the SSHPublicKeys.ListByResourceGroup method.
5247type SSHPublicKeysListByResourceGroupOptions struct {
5248	// placeholder for future optional parameters
5249}
5250
5251// SSHPublicKeysListBySubscriptionOptions contains the optional parameters for the SSHPublicKeys.ListBySubscription method.
5252type SSHPublicKeysListBySubscriptionOptions struct {
5253	// placeholder for future optional parameters
5254}
5255
5256// SSHPublicKeysUpdateOptions contains the optional parameters for the SSHPublicKeys.Update method.
5257type SSHPublicKeysUpdateOptions struct {
5258	// placeholder for future optional parameters
5259}
5260
5261// Describes a scale-in policy for a virtual machine scale set.
5262type ScaleInPolicy struct {
5263	// The rules to be followed when scaling-in a virtual machine scale set.
5264	// Possible values are:
5265	// Default When a virtual machine scale set is scaled in, the scale set will first be balanced across zones if it is a zonal scale set. Then, it will be
5266	// balanced across Fault Domains as far as possible.
5267	// Within each Fault Domain, the virtual machines chosen for removal will be the newest ones that are not protected from scale-in.
5268	// OldestVM When a virtual machine scale set is being scaled-in, the oldest virtual machines that are not protected from scale-in will be chosen for removal.
5269	// For zonal virtual machine scale sets, the
5270	// scale set will first be balanced across zones. Within each zone, the oldest virtual machines that are not protected will be chosen for removal.
5271	// NewestVM When a virtual machine scale set is being scaled-in, the newest virtual machines that are not protected from scale-in will be chosen for removal.
5272	// For zonal virtual machine scale sets, the
5273	// scale set will first be balanced across zones. Within each zone, the newest virtual machines that are not protected will be chosen for removal.
5274	Rules *[]VirtualMachineScaleSetScaleInRules `json:"rules,omitempty"`
5275}
5276
5277type ScheduledEventsProfile struct {
5278	// Specifies Terminate Scheduled Event related configurations.
5279	TerminateNotificationProfile *TerminateNotificationProfile `json:"terminateNotificationProfile,omitempty"`
5280}
5281
5282// Specifies the Security profile settings for the virtual machine or virtual machine scale set.
5283type SecurityProfile struct {
5284	// This property can be used by user in the request to enable or disable the Host Encryption for the virtual machine or virtual machine scale set. This
5285	// will enable the encryption for all the disks
5286	// including Resource/Temp disk at host itself.
5287	// Default: The Encryption at host will be disabled unless this property is set to true for the resource.
5288	EncryptionAtHost *bool `json:"encryptionAtHost,omitempty"`
5289}
5290
5291type ShareInfoElement struct {
5292	// READ-ONLY; A relative URI containing the ID of the VM that has the disk attached.
5293	VMURI *string `json:"vmUri,omitempty" azure:"ro"`
5294}
5295
5296// SharedGalleriesGetOptions contains the optional parameters for the SharedGalleries.Get method.
5297type SharedGalleriesGetOptions struct {
5298	// placeholder for future optional parameters
5299}
5300
5301// SharedGalleriesListOptions contains the optional parameters for the SharedGalleries.List method.
5302type SharedGalleriesListOptions struct {
5303	// The query parameter to decide what shared galleries to fetch when doing listing operations.
5304	SharedTo *SharedToValues
5305}
5306
5307// Specifies information about the Shared Gallery that you want to create or update.
5308type SharedGallery struct {
5309	PirSharedGalleryResource
5310}
5311
5312// The identifier information of shared gallery.
5313type SharedGalleryIDentifier struct {
5314	// The unique id of this shared gallery.
5315	UniqueID *string `json:"uniqueId,omitempty"`
5316}
5317
5318// Specifies information about the gallery image definition that you want to create or update.
5319type SharedGalleryImage struct {
5320	PirSharedGalleryResource
5321	// Describes the properties of a gallery image definition.
5322	Properties *SharedGalleryImageProperties `json:"properties,omitempty"`
5323}
5324
5325// The List Shared Gallery Images operation response.
5326type SharedGalleryImageList struct {
5327	// The uri to fetch the next page of shared gallery images. Call ListNext() with this to fetch the next page of shared gallery images.
5328	NextLink *string `json:"nextLink,omitempty"`
5329
5330	// A list of shared gallery images.
5331	Value *[]SharedGalleryImage `json:"value,omitempty"`
5332}
5333
5334// SharedGalleryImageListResponse is the response envelope for operations that return a SharedGalleryImageList type.
5335type SharedGalleryImageListResponse struct {
5336	// RawResponse contains the underlying HTTP response.
5337	RawResponse *http.Response
5338
5339	// The List Shared Gallery Images operation response.
5340	SharedGalleryImageList *SharedGalleryImageList
5341}
5342
5343// Describes the properties of a gallery image definition.
5344type SharedGalleryImageProperties struct {
5345	// Describes the disallowed disk types.
5346	Disallowed *Disallowed `json:"disallowed,omitempty"`
5347
5348	// The end of life date of the gallery image definition. This property can be used for decommissioning purposes. This property is updatable.
5349	EndOfLifeDate *time.Time `json:"endOfLifeDate,omitempty"`
5350
5351	// A list of gallery image features.
5352	Features *[]GalleryImageFeature `json:"features,omitempty"`
5353
5354	// The hypervisor generation of the Virtual Machine. Applicable to OS disks only.
5355	HyperVGeneration *HyperVGeneration `json:"hyperVGeneration,omitempty"`
5356
5357	// This is the gallery image definition identifier.
5358	IDentifier *GalleryImageIDentifier `json:"identifier,omitempty"`
5359
5360	// This property allows the user to specify whether the virtual machines created under this image are 'Generalized' or 'Specialized'.
5361	OSState *OperatingSystemStateTypes `json:"osState,omitempty"`
5362
5363	// This property allows you to specify the type of the OS that is included in the disk when creating a VM from a managed image.
5364	// Possible values are:
5365	// Windows
5366	// Linux
5367	OSType *OperatingSystemTypes `json:"osType,omitempty"`
5368
5369	// Describes the gallery image definition purchase plan. This is used by marketplace images.
5370	PurchasePlan *ImagePurchasePlan `json:"purchasePlan,omitempty"`
5371
5372	// The properties describe the recommended machine configuration for this Image Definition. These properties are updatable.
5373	Recommended *RecommendedMachineConfiguration `json:"recommended,omitempty"`
5374}
5375
5376// MarshalJSON implements the json.Marshaller interface for type SharedGalleryImageProperties.
5377func (s SharedGalleryImageProperties) MarshalJSON() ([]byte, error) {
5378	objectMap := make(map[string]interface{})
5379	if s.Disallowed != nil {
5380		objectMap["disallowed"] = s.Disallowed
5381	}
5382	if s.EndOfLifeDate != nil {
5383		objectMap["endOfLifeDate"] = (*timeRFC3339)(s.EndOfLifeDate)
5384	}
5385	if s.Features != nil {
5386		objectMap["features"] = s.Features
5387	}
5388	if s.HyperVGeneration != nil {
5389		objectMap["hyperVGeneration"] = s.HyperVGeneration
5390	}
5391	if s.IDentifier != nil {
5392		objectMap["identifier"] = s.IDentifier
5393	}
5394	if s.OSState != nil {
5395		objectMap["osState"] = s.OSState
5396	}
5397	if s.OSType != nil {
5398		objectMap["osType"] = s.OSType
5399	}
5400	if s.PurchasePlan != nil {
5401		objectMap["purchasePlan"] = s.PurchasePlan
5402	}
5403	if s.Recommended != nil {
5404		objectMap["recommended"] = s.Recommended
5405	}
5406	return json.Marshal(objectMap)
5407}
5408
5409// UnmarshalJSON implements the json.Unmarshaller interface for type SharedGalleryImageProperties.
5410func (s *SharedGalleryImageProperties) UnmarshalJSON(data []byte) error {
5411	var rawMsg map[string]*json.RawMessage
5412	if err := json.Unmarshal(data, &rawMsg); err != nil {
5413		return err
5414	}
5415	for key, val := range rawMsg {
5416		var err error
5417		switch key {
5418		case "disallowed":
5419			if val != nil {
5420				err = json.Unmarshal(*val, &s.Disallowed)
5421			}
5422			delete(rawMsg, key)
5423		case "endOfLifeDate":
5424			if val != nil {
5425				var aux timeRFC3339
5426				err = json.Unmarshal(*val, &aux)
5427				s.EndOfLifeDate = (*time.Time)(&aux)
5428			}
5429			delete(rawMsg, key)
5430		case "features":
5431			if val != nil {
5432				err = json.Unmarshal(*val, &s.Features)
5433			}
5434			delete(rawMsg, key)
5435		case "hyperVGeneration":
5436			if val != nil {
5437				err = json.Unmarshal(*val, &s.HyperVGeneration)
5438			}
5439			delete(rawMsg, key)
5440		case "identifier":
5441			if val != nil {
5442				err = json.Unmarshal(*val, &s.IDentifier)
5443			}
5444			delete(rawMsg, key)
5445		case "osState":
5446			if val != nil {
5447				err = json.Unmarshal(*val, &s.OSState)
5448			}
5449			delete(rawMsg, key)
5450		case "osType":
5451			if val != nil {
5452				err = json.Unmarshal(*val, &s.OSType)
5453			}
5454			delete(rawMsg, key)
5455		case "purchasePlan":
5456			if val != nil {
5457				err = json.Unmarshal(*val, &s.PurchasePlan)
5458			}
5459			delete(rawMsg, key)
5460		case "recommended":
5461			if val != nil {
5462				err = json.Unmarshal(*val, &s.Recommended)
5463			}
5464			delete(rawMsg, key)
5465		}
5466		if err != nil {
5467			return err
5468		}
5469	}
5470	return nil
5471}
5472
5473// SharedGalleryImageResponse is the response envelope for operations that return a SharedGalleryImage type.
5474type SharedGalleryImageResponse struct {
5475	// RawResponse contains the underlying HTTP response.
5476	RawResponse *http.Response
5477
5478	// Specifies information about the gallery image definition that you want to create or update.
5479	SharedGalleryImage *SharedGalleryImage
5480}
5481
5482// Specifies information about the gallery image version that you want to create or update.
5483type SharedGalleryImageVersion struct {
5484	PirSharedGalleryResource
5485	// Describes the properties of a gallery image version.
5486	Properties *SharedGalleryImageVersionProperties `json:"properties,omitempty"`
5487}
5488
5489// The List Shared Gallery Image versions operation response.
5490type SharedGalleryImageVersionList struct {
5491	// The uri to fetch the next page of shared gallery image versions. Call ListNext() with this to fetch the next page of shared gallery image versions.
5492	NextLink *string `json:"nextLink,omitempty"`
5493
5494	// A list of shared gallery images versions.
5495	Value *[]SharedGalleryImageVersion `json:"value,omitempty"`
5496}
5497
5498// SharedGalleryImageVersionListResponse is the response envelope for operations that return a SharedGalleryImageVersionList type.
5499type SharedGalleryImageVersionListResponse struct {
5500	// RawResponse contains the underlying HTTP response.
5501	RawResponse *http.Response
5502
5503	// The List Shared Gallery Image versions operation response.
5504	SharedGalleryImageVersionList *SharedGalleryImageVersionList
5505}
5506
5507// Describes the properties of a gallery image version.
5508type SharedGalleryImageVersionProperties struct {
5509	// The end of life date of the gallery image version Definition. This property can be used for decommissioning purposes. This property is updatable.
5510	EndOfLifeDate *time.Time `json:"endOfLifeDate,omitempty"`
5511
5512	// The published date of the gallery image version Definition. This property can be used for decommissioning purposes. This property is updatable.
5513	PublishedDate *time.Time `json:"publishedDate,omitempty"`
5514}
5515
5516// MarshalJSON implements the json.Marshaller interface for type SharedGalleryImageVersionProperties.
5517func (s SharedGalleryImageVersionProperties) MarshalJSON() ([]byte, error) {
5518	objectMap := make(map[string]interface{})
5519	if s.EndOfLifeDate != nil {
5520		objectMap["endOfLifeDate"] = (*timeRFC3339)(s.EndOfLifeDate)
5521	}
5522	if s.PublishedDate != nil {
5523		objectMap["publishedDate"] = (*timeRFC3339)(s.PublishedDate)
5524	}
5525	return json.Marshal(objectMap)
5526}
5527
5528// UnmarshalJSON implements the json.Unmarshaller interface for type SharedGalleryImageVersionProperties.
5529func (s *SharedGalleryImageVersionProperties) UnmarshalJSON(data []byte) error {
5530	var rawMsg map[string]*json.RawMessage
5531	if err := json.Unmarshal(data, &rawMsg); err != nil {
5532		return err
5533	}
5534	for key, val := range rawMsg {
5535		var err error
5536		switch key {
5537		case "endOfLifeDate":
5538			if val != nil {
5539				var aux timeRFC3339
5540				err = json.Unmarshal(*val, &aux)
5541				s.EndOfLifeDate = (*time.Time)(&aux)
5542			}
5543			delete(rawMsg, key)
5544		case "publishedDate":
5545			if val != nil {
5546				var aux timeRFC3339
5547				err = json.Unmarshal(*val, &aux)
5548				s.PublishedDate = (*time.Time)(&aux)
5549			}
5550			delete(rawMsg, key)
5551		}
5552		if err != nil {
5553			return err
5554		}
5555	}
5556	return nil
5557}
5558
5559// SharedGalleryImageVersionResponse is the response envelope for operations that return a SharedGalleryImageVersion type.
5560type SharedGalleryImageVersionResponse struct {
5561	// RawResponse contains the underlying HTTP response.
5562	RawResponse *http.Response
5563
5564	// Specifies information about the gallery image version that you want to create or update.
5565	SharedGalleryImageVersion *SharedGalleryImageVersion
5566}
5567
5568// SharedGalleryImageVersionsGetOptions contains the optional parameters for the SharedGalleryImageVersions.Get method.
5569type SharedGalleryImageVersionsGetOptions struct {
5570	// placeholder for future optional parameters
5571}
5572
5573// SharedGalleryImageVersionsListOptions contains the optional parameters for the SharedGalleryImageVersions.List method.
5574type SharedGalleryImageVersionsListOptions struct {
5575	// The query parameter to decide what shared galleries to fetch when doing listing operations.
5576	SharedTo *SharedToValues
5577}
5578
5579// SharedGalleryImagesGetOptions contains the optional parameters for the SharedGalleryImages.Get method.
5580type SharedGalleryImagesGetOptions struct {
5581	// placeholder for future optional parameters
5582}
5583
5584// SharedGalleryImagesListOptions contains the optional parameters for the SharedGalleryImages.List method.
5585type SharedGalleryImagesListOptions struct {
5586	// The query parameter to decide what shared galleries to fetch when doing listing operations.
5587	SharedTo *SharedToValues
5588}
5589
5590// The List Shared Galleries operation response.
5591type SharedGalleryList struct {
5592	// The uri to fetch the next page of shared galleries. Call ListNext() with this to fetch the next page of shared galleries.
5593	NextLink *string `json:"nextLink,omitempty"`
5594
5595	// A list of shared galleries.
5596	Value *[]PirSharedGalleryResource `json:"value,omitempty"`
5597}
5598
5599// SharedGalleryListResponse is the response envelope for operations that return a SharedGalleryList type.
5600type SharedGalleryListResponse struct {
5601	// RawResponse contains the underlying HTTP response.
5602	RawResponse *http.Response
5603
5604	// The List Shared Galleries operation response.
5605	SharedGalleryList *SharedGalleryList
5606}
5607
5608// Profile for gallery sharing to subscription or tenant
5609type SharingProfile struct {
5610	// READ-ONLY; A list of sharing profile groups.
5611	Groups *[]SharingProfileGroup `json:"groups,omitempty" azure:"ro"`
5612
5613	// This property allows you to specify the permission of sharing gallery.
5614	// Possible values are:
5615	// Private
5616	// Groups
5617	Permissions *GallerySharingPermissionTypes `json:"permissions,omitempty"`
5618}
5619
5620// Group of the gallery sharing profile
5621type SharingProfileGroup struct {
5622	// A list of subscription/tenant ids the gallery is aimed to be shared to.
5623	IDs *[]string `json:"ids,omitempty"`
5624
5625	// This property allows you to specify the type of sharing group.
5626	// Possible values are:
5627	// Subscriptions
5628	// AADTenants
5629	Type *SharingProfileGroupTypes `json:"type,omitempty"`
5630}
5631
5632// Specifies information about the gallery sharing profile update.
5633type SharingUpdate struct {
5634	// A list of sharing profile groups.
5635	Groups *[]SharingProfileGroup `json:"groups,omitempty"`
5636
5637	// This property allows you to specify the operation type of gallery sharing update.
5638	// Possible values are:
5639	// Add
5640	// Remove
5641	// Reset
5642	OperationType *SharingUpdateOperationTypes `json:"operationType,omitempty"`
5643}
5644
5645// SharingUpdatePollerResponse is the response envelope for operations that asynchronously return a SharingUpdate type.
5646type SharingUpdatePollerResponse struct {
5647	// PollUntilDone will poll the service endpoint until a terminal state is reached or an error is received
5648	PollUntilDone func(ctx context.Context, frequency time.Duration) (SharingUpdateResponse, error)
5649
5650	// Poller contains an initialized poller.
5651	Poller SharingUpdatePoller
5652
5653	// RawResponse contains the underlying HTTP response.
5654	RawResponse *http.Response
5655}
5656
5657// SharingUpdateResponse is the response envelope for operations that return a SharingUpdate type.
5658type SharingUpdateResponse struct {
5659	// RawResponse contains the underlying HTTP response.
5660	RawResponse *http.Response
5661
5662	// Specifies information about the gallery sharing profile update.
5663	SharingUpdate *SharingUpdate
5664}
5665
5666// Snapshot resource.
5667type Snapshot struct {
5668	Resource
5669	// The extended location where the snapshot will be created. Extended location cannot be changed.
5670	ExtendedLocation *ExtendedLocation `json:"extendedLocation,omitempty"`
5671
5672	// READ-ONLY; Unused. Always Null.
5673	ManagedBy *string `json:"managedBy,omitempty" azure:"ro"`
5674
5675	// Snapshot resource properties.
5676	Properties *SnapshotProperties `json:"properties,omitempty"`
5677
5678	// The snapshots sku name. Can be StandardLRS, PremiumLRS, or Standard_ZRS. This is an optional parameter for incremental snapshot and the default behavior
5679	// is the SKU will be set to the same sku as the
5680	// previous snapshot
5681	SKU *SnapshotSKU `json:"sku,omitempty"`
5682}
5683
5684// The List Snapshots operation response.
5685type SnapshotList struct {
5686	// The uri to fetch the next page of snapshots. Call ListNext() with this to fetch the next page of snapshots.
5687	NextLink *string `json:"nextLink,omitempty"`
5688
5689	// A list of snapshots.
5690	Value *[]Snapshot `json:"value,omitempty"`
5691}
5692
5693// SnapshotListResponse is the response envelope for operations that return a SnapshotList type.
5694type SnapshotListResponse struct {
5695	// RawResponse contains the underlying HTTP response.
5696	RawResponse *http.Response
5697
5698	// The List Snapshots operation response.
5699	SnapshotList *SnapshotList
5700}
5701
5702// SnapshotPollerResponse is the response envelope for operations that asynchronously return a Snapshot type.
5703type SnapshotPollerResponse struct {
5704	// PollUntilDone will poll the service endpoint until a terminal state is reached or an error is received
5705	PollUntilDone func(ctx context.Context, frequency time.Duration) (SnapshotResponse, error)
5706
5707	// Poller contains an initialized poller.
5708	Poller SnapshotPoller
5709
5710	// RawResponse contains the underlying HTTP response.
5711	RawResponse *http.Response
5712}
5713
5714// Snapshot resource properties.
5715type SnapshotProperties struct {
5716	// Disk source information. CreationData information cannot be changed after the disk has been created.
5717	CreationData *CreationData `json:"creationData,omitempty"`
5718
5719	// ARM id of the DiskAccess resource for using private endpoints on disks.
5720	DiskAccessID *string `json:"diskAccessId,omitempty"`
5721
5722	// READ-ONLY; The size of the disk in bytes. This field is read only.
5723	DiskSizeBytes *int64 `json:"diskSizeBytes,omitempty" azure:"ro"`
5724
5725	// If creationData.createOption is Empty, this field is mandatory and it indicates the size of the disk to create. If this field is present for updates
5726	// or creation with other options, it indicates a
5727	// resize. Resizes are only allowed if the disk is not attached to a running VM, and can only increase the disk's size.
5728	DiskSizeGb *int32 `json:"diskSizeGB,omitempty"`
5729
5730	// READ-ONLY; The state of the snapshot.
5731	DiskState *DiskState `json:"diskState,omitempty" azure:"ro"`
5732
5733	// Encryption property can be used to encrypt data at rest with customer managed keys or platform managed keys.
5734	Encryption *Encryption `json:"encryption,omitempty"`
5735
5736	// Encryption settings collection used be Azure Disk Encryption, can contain multiple encryption settings per disk or snapshot.
5737	EncryptionSettingsCollection *EncryptionSettingsCollection `json:"encryptionSettingsCollection,omitempty"`
5738
5739	// The hypervisor generation of the Virtual Machine. Applicable to OS disks only.
5740	HyperVGeneration *HyperVGeneration `json:"hyperVGeneration,omitempty"`
5741
5742	// Whether a snapshot is incremental. Incremental snapshots on the same disk occupy less space than full snapshots and can be diffed.
5743	Incremental *bool `json:"incremental,omitempty"`
5744
5745	// Policy for accessing the disk via network.
5746	NetworkAccessPolicy *NetworkAccessPolicy `json:"networkAccessPolicy,omitempty"`
5747
5748	// The Operating System type.
5749	OSType *OperatingSystemTypes `json:"osType,omitempty"`
5750
5751	// READ-ONLY; The disk provisioning state.
5752	ProvisioningState *string `json:"provisioningState,omitempty" azure:"ro"`
5753
5754	// Purchase plan information for the image from which the source disk for the snapshot was originally created.
5755	PurchasePlan *PurchasePlanAutoGenerated `json:"purchasePlan,omitempty"`
5756
5757	// READ-ONLY; The time when the snapshot was created.
5758	TimeCreated *time.Time `json:"timeCreated,omitempty" azure:"ro"`
5759
5760	// READ-ONLY; Unique Guid identifying the resource.
5761	UniqueID *string `json:"uniqueId,omitempty" azure:"ro"`
5762}
5763
5764// MarshalJSON implements the json.Marshaller interface for type SnapshotProperties.
5765func (s SnapshotProperties) MarshalJSON() ([]byte, error) {
5766	objectMap := make(map[string]interface{})
5767	if s.CreationData != nil {
5768		objectMap["creationData"] = s.CreationData
5769	}
5770	if s.DiskAccessID != nil {
5771		objectMap["diskAccessId"] = s.DiskAccessID
5772	}
5773	if s.DiskSizeBytes != nil {
5774		objectMap["diskSizeBytes"] = s.DiskSizeBytes
5775	}
5776	if s.DiskSizeGb != nil {
5777		objectMap["diskSizeGB"] = s.DiskSizeGb
5778	}
5779	if s.DiskState != nil {
5780		objectMap["diskState"] = s.DiskState
5781	}
5782	if s.Encryption != nil {
5783		objectMap["encryption"] = s.Encryption
5784	}
5785	if s.EncryptionSettingsCollection != nil {
5786		objectMap["encryptionSettingsCollection"] = s.EncryptionSettingsCollection
5787	}
5788	if s.HyperVGeneration != nil {
5789		objectMap["hyperVGeneration"] = s.HyperVGeneration
5790	}
5791	if s.Incremental != nil {
5792		objectMap["incremental"] = s.Incremental
5793	}
5794	if s.NetworkAccessPolicy != nil {
5795		objectMap["networkAccessPolicy"] = s.NetworkAccessPolicy
5796	}
5797	if s.OSType != nil {
5798		objectMap["osType"] = s.OSType
5799	}
5800	if s.ProvisioningState != nil {
5801		objectMap["provisioningState"] = s.ProvisioningState
5802	}
5803	if s.PurchasePlan != nil {
5804		objectMap["purchasePlan"] = s.PurchasePlan
5805	}
5806	if s.TimeCreated != nil {
5807		objectMap["timeCreated"] = (*timeRFC3339)(s.TimeCreated)
5808	}
5809	if s.UniqueID != nil {
5810		objectMap["uniqueId"] = s.UniqueID
5811	}
5812	return json.Marshal(objectMap)
5813}
5814
5815// UnmarshalJSON implements the json.Unmarshaller interface for type SnapshotProperties.
5816func (s *SnapshotProperties) UnmarshalJSON(data []byte) error {
5817	var rawMsg map[string]*json.RawMessage
5818	if err := json.Unmarshal(data, &rawMsg); err != nil {
5819		return err
5820	}
5821	for key, val := range rawMsg {
5822		var err error
5823		switch key {
5824		case "creationData":
5825			if val != nil {
5826				err = json.Unmarshal(*val, &s.CreationData)
5827			}
5828			delete(rawMsg, key)
5829		case "diskAccessId":
5830			if val != nil {
5831				err = json.Unmarshal(*val, &s.DiskAccessID)
5832			}
5833			delete(rawMsg, key)
5834		case "diskSizeBytes":
5835			if val != nil {
5836				err = json.Unmarshal(*val, &s.DiskSizeBytes)
5837			}
5838			delete(rawMsg, key)
5839		case "diskSizeGB":
5840			if val != nil {
5841				err = json.Unmarshal(*val, &s.DiskSizeGb)
5842			}
5843			delete(rawMsg, key)
5844		case "diskState":
5845			if val != nil {
5846				err = json.Unmarshal(*val, &s.DiskState)
5847			}
5848			delete(rawMsg, key)
5849		case "encryption":
5850			if val != nil {
5851				err = json.Unmarshal(*val, &s.Encryption)
5852			}
5853			delete(rawMsg, key)
5854		case "encryptionSettingsCollection":
5855			if val != nil {
5856				err = json.Unmarshal(*val, &s.EncryptionSettingsCollection)
5857			}
5858			delete(rawMsg, key)
5859		case "hyperVGeneration":
5860			if val != nil {
5861				err = json.Unmarshal(*val, &s.HyperVGeneration)
5862			}
5863			delete(rawMsg, key)
5864		case "incremental":
5865			if val != nil {
5866				err = json.Unmarshal(*val, &s.Incremental)
5867			}
5868			delete(rawMsg, key)
5869		case "networkAccessPolicy":
5870			if val != nil {
5871				err = json.Unmarshal(*val, &s.NetworkAccessPolicy)
5872			}
5873			delete(rawMsg, key)
5874		case "osType":
5875			if val != nil {
5876				err = json.Unmarshal(*val, &s.OSType)
5877			}
5878			delete(rawMsg, key)
5879		case "provisioningState":
5880			if val != nil {
5881				err = json.Unmarshal(*val, &s.ProvisioningState)
5882			}
5883			delete(rawMsg, key)
5884		case "purchasePlan":
5885			if val != nil {
5886				err = json.Unmarshal(*val, &s.PurchasePlan)
5887			}
5888			delete(rawMsg, key)
5889		case "timeCreated":
5890			if val != nil {
5891				var aux timeRFC3339
5892				err = json.Unmarshal(*val, &aux)
5893				s.TimeCreated = (*time.Time)(&aux)
5894			}
5895			delete(rawMsg, key)
5896		case "uniqueId":
5897			if val != nil {
5898				err = json.Unmarshal(*val, &s.UniqueID)
5899			}
5900			delete(rawMsg, key)
5901		}
5902		if err != nil {
5903			return err
5904		}
5905	}
5906	return nil
5907}
5908
5909// SnapshotResponse is the response envelope for operations that return a Snapshot type.
5910type SnapshotResponse struct {
5911	// RawResponse contains the underlying HTTP response.
5912	RawResponse *http.Response
5913
5914	// Snapshot resource.
5915	Snapshot *Snapshot
5916}
5917
5918// The snapshots sku name. Can be StandardLRS, PremiumLRS, or Standard_ZRS. This is an optional parameter for incremental snapshot and the default behavior
5919// is the SKU will be set to the same sku as the
5920// previous snapshot
5921type SnapshotSKU struct {
5922	// The sku name.
5923	Name *SnapshotStorageAccountTypes `json:"name,omitempty"`
5924
5925	// READ-ONLY; The sku tier.
5926	Tier *string `json:"tier,omitempty" azure:"ro"`
5927}
5928
5929// Snapshot update resource.
5930type SnapshotUpdate struct {
5931	// Snapshot resource update properties.
5932	Properties *SnapshotUpdateProperties `json:"properties,omitempty"`
5933
5934	// The snapshots sku name. Can be StandardLRS, PremiumLRS, or Standard_ZRS. This is an optional parameter for incremental snapshot and the default behavior
5935	// is the SKU will be set to the same sku as the
5936	// previous snapshot
5937	SKU *SnapshotSKU `json:"sku,omitempty"`
5938
5939	// Resource tags
5940	Tags *map[string]string `json:"tags,omitempty"`
5941}
5942
5943// Snapshot resource update properties.
5944type SnapshotUpdateProperties struct {
5945	// ARM id of the DiskAccess resource for using private endpoints on disks.
5946	DiskAccessID *string `json:"diskAccessId,omitempty"`
5947
5948	// If creationData.createOption is Empty, this field is mandatory and it indicates the size of the disk to create. If this field is present for updates
5949	// or creation with other options, it indicates a
5950	// resize. Resizes are only allowed if the disk is not attached to a running VM, and can only increase the disk's size.
5951	DiskSizeGb *int32 `json:"diskSizeGB,omitempty"`
5952
5953	// Encryption property can be used to encrypt data at rest with customer managed keys or platform managed keys.
5954	Encryption *Encryption `json:"encryption,omitempty"`
5955
5956	// Encryption settings collection used be Azure Disk Encryption, can contain multiple encryption settings per disk or snapshot.
5957	EncryptionSettingsCollection *EncryptionSettingsCollection `json:"encryptionSettingsCollection,omitempty"`
5958
5959	// Policy for accessing the disk via network.
5960	NetworkAccessPolicy *NetworkAccessPolicy `json:"networkAccessPolicy,omitempty"`
5961
5962	// the Operating System type.
5963	OSType *OperatingSystemTypes `json:"osType,omitempty"`
5964}
5965
5966// SnapshotsBeginCreateOrUpdateOptions contains the optional parameters for the Snapshots.BeginCreateOrUpdate method.
5967type SnapshotsBeginCreateOrUpdateOptions struct {
5968	// placeholder for future optional parameters
5969}
5970
5971// SnapshotsBeginDeleteOptions contains the optional parameters for the Snapshots.BeginDelete method.
5972type SnapshotsBeginDeleteOptions struct {
5973	// placeholder for future optional parameters
5974}
5975
5976// SnapshotsBeginGrantAccessOptions contains the optional parameters for the Snapshots.BeginGrantAccess method.
5977type SnapshotsBeginGrantAccessOptions struct {
5978	// placeholder for future optional parameters
5979}
5980
5981// SnapshotsBeginRevokeAccessOptions contains the optional parameters for the Snapshots.BeginRevokeAccess method.
5982type SnapshotsBeginRevokeAccessOptions struct {
5983	// placeholder for future optional parameters
5984}
5985
5986// SnapshotsBeginUpdateOptions contains the optional parameters for the Snapshots.BeginUpdate method.
5987type SnapshotsBeginUpdateOptions struct {
5988	// placeholder for future optional parameters
5989}
5990
5991// SnapshotsGetOptions contains the optional parameters for the Snapshots.Get method.
5992type SnapshotsGetOptions struct {
5993	// placeholder for future optional parameters
5994}
5995
5996// SnapshotsListByResourceGroupOptions contains the optional parameters for the Snapshots.ListByResourceGroup method.
5997type SnapshotsListByResourceGroupOptions struct {
5998	// placeholder for future optional parameters
5999}
6000
6001// SnapshotsListOptions contains the optional parameters for the Snapshots.List method.
6002type SnapshotsListOptions struct {
6003	// placeholder for future optional parameters
6004}
6005
6006// The vault id is an Azure Resource Manager Resource id in the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KeyVault/vaults/{vaultName}
6007type SourceVault struct {
6008	// Resource Id
6009	ID *string `json:"id,omitempty"`
6010}
6011
6012// Specifies the storage settings for the virtual machine disks.
6013type StorageProfile struct {
6014	// Specifies the parameters that are used to add a data disk to a virtual machine.
6015	// For more information about disks, see About disks and VHDs for Azure virtual machines
6016	// [https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-about-disks-vhds?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json].
6017	DataDisks *[]DataDisk `json:"dataDisks,omitempty"`
6018
6019	// Specifies information about the image to use. You can specify information about platform images, marketplace images, or virtual machine images. This
6020	// element is required when you want to use a platform
6021	// image, marketplace image, or virtual machine image, but is not used in other creation operations.
6022	ImageReference *ImageReference `json:"imageReference,omitempty"`
6023
6024	// Specifies information about the operating system disk used by the virtual machine.
6025	// For more information about disks, see About disks and VHDs for Azure virtual machines
6026	// [https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-about-disks-vhds?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json].
6027	OSDisk *OSDisk `json:"osDisk,omitempty"`
6028}
6029
6030type SubResource struct {
6031	// Resource Id
6032	ID *string `json:"id,omitempty"`
6033}
6034
6035type SubResourceReadOnly struct {
6036	// READ-ONLY; Resource Id
6037	ID *string `json:"id,omitempty" azure:"ro"`
6038}
6039
6040type SubResourceWithColocationStatus struct {
6041	SubResource
6042	// Describes colocation status of a resource in the Proximity Placement Group.
6043	ColocationStatus *InstanceViewStatus `json:"colocationStatus,omitempty"`
6044}
6045
6046// Describes the target region information.
6047type TargetRegion struct {
6048	// Optional. Allows users to provide customer managed keys for encrypting the OS and data disks in the gallery artifact.
6049	Encryption *EncryptionImages `json:"encryption,omitempty"`
6050
6051	// The name of the region.
6052	Name *string `json:"name,omitempty"`
6053
6054	// The number of replicas of the Image Version to be created per region. This property is updatable.
6055	RegionalReplicaCount *int32 `json:"regionalReplicaCount,omitempty"`
6056
6057	// Specifies the storage account type to be used to store the image. This property is not updatable.
6058	StorageAccountType *StorageAccountType `json:"storageAccountType,omitempty"`
6059}
6060
6061type TerminateNotificationProfile struct {
6062	// Specifies whether the Terminate Scheduled event is enabled or disabled.
6063	Enable *bool `json:"enable,omitempty"`
6064
6065	// Configurable length of time a Virtual Machine being deleted will have to potentially approve the Terminate Scheduled Event before the event is auto approved
6066	// (timed out). The configuration must be
6067	// specified in ISO 8601 format, the default value is 5 minutes (PT5M)
6068	NotBeforeTimeout *string `json:"notBeforeTimeout,omitempty"`
6069}
6070
6071// Api request input for LogAnalytics getThrottledRequests Api.
6072type ThrottledRequestsInput struct {
6073	LogAnalyticsInputBase
6074}
6075
6076// The Update Resource model definition.
6077type UpdateResource struct {
6078	// Resource tags
6079	Tags *map[string]string `json:"tags,omitempty"`
6080}
6081
6082// The Update Resource model definition.
6083type UpdateResourceDefinition struct {
6084	// READ-ONLY; Resource Id
6085	ID *string `json:"id,omitempty" azure:"ro"`
6086
6087	// READ-ONLY; Resource name
6088	Name *string `json:"name,omitempty" azure:"ro"`
6089
6090	// Resource tags
6091	Tags *map[string]string `json:"tags,omitempty"`
6092
6093	// READ-ONLY; Resource type
6094	Type *string `json:"type,omitempty" azure:"ro"`
6095}
6096
6097// Virtual Machine Scale Set OS Upgrade History operation response.
6098type UpgradeOperationHistoricalStatusInfo struct {
6099	// READ-ONLY; Resource location
6100	Location *string `json:"location,omitempty" azure:"ro"`
6101
6102	// READ-ONLY; Information about the properties of the upgrade operation.
6103	Properties *UpgradeOperationHistoricalStatusInfoProperties `json:"properties,omitempty" azure:"ro"`
6104
6105	// READ-ONLY; Resource type
6106	Type *string `json:"type,omitempty" azure:"ro"`
6107}
6108
6109// Describes each OS upgrade on the Virtual Machine Scale Set.
6110type UpgradeOperationHistoricalStatusInfoProperties struct {
6111	// READ-ONLY; Error Details for this upgrade if there are any.
6112	Error *APIError `json:"error,omitempty" azure:"ro"`
6113
6114	// READ-ONLY; Counts of the VMs in each state.
6115	Progress *RollingUpgradeProgressInfo `json:"progress,omitempty" azure:"ro"`
6116
6117	// READ-ONLY; Information about OS rollback if performed
6118	RollbackInfo *RollbackStatusInfo `json:"rollbackInfo,omitempty" azure:"ro"`
6119
6120	// READ-ONLY; Information about the overall status of the upgrade operation.
6121	RunningStatus *UpgradeOperationHistoryStatus `json:"runningStatus,omitempty" azure:"ro"`
6122
6123	// READ-ONLY; Invoker of the Upgrade Operation
6124	StartedBy *UpgradeOperationInvoker `json:"startedBy,omitempty" azure:"ro"`
6125
6126	// READ-ONLY; Image Reference details
6127	TargetImageReference *ImageReference `json:"targetImageReference,omitempty" azure:"ro"`
6128}
6129
6130// Information about the current running state of the overall upgrade.
6131type UpgradeOperationHistoryStatus struct {
6132	// READ-ONLY; Code indicating the current status of the upgrade.
6133	Code *UpgradeState `json:"code,omitempty" azure:"ro"`
6134
6135	// READ-ONLY; End time of the upgrade.
6136	EndTime *time.Time `json:"endTime,omitempty" azure:"ro"`
6137
6138	// READ-ONLY; Start time of the upgrade.
6139	StartTime *time.Time `json:"startTime,omitempty" azure:"ro"`
6140}
6141
6142// MarshalJSON implements the json.Marshaller interface for type UpgradeOperationHistoryStatus.
6143func (u UpgradeOperationHistoryStatus) MarshalJSON() ([]byte, error) {
6144	objectMap := make(map[string]interface{})
6145	if u.Code != nil {
6146		objectMap["code"] = u.Code
6147	}
6148	if u.EndTime != nil {
6149		objectMap["endTime"] = (*timeRFC3339)(u.EndTime)
6150	}
6151	if u.StartTime != nil {
6152		objectMap["startTime"] = (*timeRFC3339)(u.StartTime)
6153	}
6154	return json.Marshal(objectMap)
6155}
6156
6157// UnmarshalJSON implements the json.Unmarshaller interface for type UpgradeOperationHistoryStatus.
6158func (u *UpgradeOperationHistoryStatus) UnmarshalJSON(data []byte) error {
6159	var rawMsg map[string]*json.RawMessage
6160	if err := json.Unmarshal(data, &rawMsg); err != nil {
6161		return err
6162	}
6163	for key, val := range rawMsg {
6164		var err error
6165		switch key {
6166		case "code":
6167			if val != nil {
6168				err = json.Unmarshal(*val, &u.Code)
6169			}
6170			delete(rawMsg, key)
6171		case "endTime":
6172			if val != nil {
6173				var aux timeRFC3339
6174				err = json.Unmarshal(*val, &aux)
6175				u.EndTime = (*time.Time)(&aux)
6176			}
6177			delete(rawMsg, key)
6178		case "startTime":
6179			if val != nil {
6180				var aux timeRFC3339
6181				err = json.Unmarshal(*val, &aux)
6182				u.StartTime = (*time.Time)(&aux)
6183			}
6184			delete(rawMsg, key)
6185		}
6186		if err != nil {
6187			return err
6188		}
6189	}
6190	return nil
6191}
6192
6193// Describes an upgrade policy - automatic, manual, or rolling.
6194type UpgradePolicy struct {
6195	// Configuration parameters used for performing automatic OS Upgrade.
6196	AutomaticOSUpgradePolicy *AutomaticOSUpgradePolicy `json:"automaticOSUpgradePolicy,omitempty"`
6197
6198	// Specifies the mode of an upgrade to virtual machines in the scale set.
6199	// Possible values are:
6200	// Manual - You control the application of updates to virtual machines in the scale set. You do this by using the manualUpgrade action.
6201	// Automatic - All virtual machines in the scale set are automatically updated at the same time.
6202	Mode *UpgradeMode `json:"mode,omitempty"`
6203
6204	// The configuration parameters used while performing a rolling upgrade.
6205	RollingUpgradePolicy *RollingUpgradePolicy `json:"rollingUpgradePolicy,omitempty"`
6206}
6207
6208// Describes Compute Resource Usage.
6209type Usage struct {
6210	// The current usage of the resource.
6211	CurrentValue *int32 `json:"currentValue,omitempty"`
6212
6213	// The maximum permitted usage of the resource.
6214	Limit *int64 `json:"limit,omitempty"`
6215
6216	// The name of the type of usage.
6217	Name *UsageName `json:"name,omitempty"`
6218
6219	// An enum describing the unit of usage measurement.
6220	Unit *string `json:"unit,omitempty"`
6221}
6222
6223// UsageListOptions contains the optional parameters for the Usage.List method.
6224type UsageListOptions struct {
6225	// placeholder for future optional parameters
6226}
6227
6228// The Usage Names.
6229type UsageName struct {
6230	// The localized name of the resource.
6231	LocalizedValue *string `json:"localizedValue,omitempty"`
6232
6233	// The name of the resource.
6234	Value *string `json:"value,omitempty"`
6235}
6236
6237type UserArtifactManage struct {
6238	// Required. The path and arguments to install the gallery application. This is limited to 4096 characters.
6239	Install *string `json:"install,omitempty"`
6240
6241	// Required. The path and arguments to remove the gallery application. This is limited to 4096 characters.
6242	Remove *string `json:"remove,omitempty"`
6243
6244	// Optional. The path and arguments to update the gallery application. If not present, then update operation will invoke remove command on the previous
6245	// version and install command on the current version
6246	// of the gallery application. This is limited to 4096 characters.
6247	Update *string `json:"update,omitempty"`
6248}
6249
6250// The source image from which the Image Version is going to be created.
6251type UserArtifactSource struct {
6252	// Optional. The defaultConfigurationLink of the artifact, must be a readable storage page blob.
6253	DefaultConfigurationLink *string `json:"defaultConfigurationLink,omitempty"`
6254
6255	// Required. The mediaLink of the artifact, must be a readable storage page blob.
6256	MediaLink *string `json:"mediaLink,omitempty"`
6257}
6258
6259type UserAssignedIDentitiesValue struct {
6260	// READ-ONLY; The client id of user assigned identity.
6261	ClientID *string `json:"clientId,omitempty" azure:"ro"`
6262
6263	// READ-ONLY; The principal id of user assigned identity.
6264	PrincipalID *string `json:"principalId,omitempty" azure:"ro"`
6265}
6266
6267type VMScaleSetConvertToSinglePlacementGroupInput struct {
6268	// Id of the placement group in which you want future virtual machine instances to be placed. To query placement group Id, please use Virtual Machine Scale
6269	// Set VMs - Get API. If not provided, the
6270	// platform will choose one with maximum number of virtual machine instances.
6271	ActivePlacementGroupID *string `json:"activePlacementGroupId,omitempty"`
6272}
6273
6274// Describes a single certificate reference in a Key Vault, and where the certificate should reside on the VM.
6275type VaultCertificate struct {
6276	// For Windows VMs, specifies the certificate store on the Virtual Machine to which the certificate should be added. The specified certificate store is
6277	// implicitly in the LocalMachine account.
6278	// For Linux VMs, the certificate file is placed under the /var/lib/waagent directory, with the file name <UppercaseThumbprint>.crt for the X509 certificate
6279	// file and <UppercaseThumbprint>.prv for private
6280	// key. Both of these files are .pem formatted.
6281	CertificateStore *string `json:"certificateStore,omitempty"`
6282
6283	// This is the URL of a certificate that has been uploaded to Key Vault as a secret. For adding a secret to the Key Vault, see Add a key or secret to the
6284	// key vault
6285	// [https://docs.microsoft.com/azure/key-vault/key-vault-get-started/#add]. In this case, your certificate needs to be It is the Base64 encoding of the
6286	// following JSON Object which is encoded in UTF-8:
6287	// {
6288	// "data":"",
6289	// "dataType":"pfx",
6290	// "password":""
6291	// }
6292	CertificateURL *string `json:"certificateUrl,omitempty"`
6293}
6294
6295// Describes a set of certificates which are all in the same Key Vault.
6296type VaultSecretGroup struct {
6297	// The relative URL of the Key Vault containing all of the certificates in VaultCertificates.
6298	SourceVault *SubResource `json:"sourceVault,omitempty"`
6299
6300	// The list of key vault references in SourceVault which contain certificates.
6301	VaultCertificates *[]VaultCertificate `json:"vaultCertificates,omitempty"`
6302}
6303
6304// Describes the uri of a disk.
6305type VirtualHardDisk struct {
6306	// Specifies the virtual hard disk's uri.
6307	URI *string `json:"uri,omitempty"`
6308}
6309
6310// Describes a Virtual Machine.
6311type VirtualMachine struct {
6312	Resource
6313	// The identity of the virtual machine, if configured.
6314	IDentity *VirtualMachineIDentity `json:"identity,omitempty"`
6315
6316	// Specifies information about the marketplace image used to create the virtual machine. This element is only used for marketplace images. Before you can
6317	// use a marketplace image from an API, you must
6318	// enable the image for programmatic use. In the Azure portal, find the marketplace image that you want to use and then click Want to deploy programmatically,
6319	// Get Started ->. Enter any required
6320	// information and then click Save.
6321	Plan *Plan `json:"plan,omitempty"`
6322
6323	// Describes the properties of a Virtual Machine.
6324	Properties *VirtualMachineProperties `json:"properties,omitempty"`
6325
6326	// READ-ONLY; The virtual machine child extension resources.
6327	Resources *[]VirtualMachineExtension `json:"resources,omitempty" azure:"ro"`
6328
6329	// The virtual machine zones.
6330	Zones *[]string `json:"zones,omitempty"`
6331}
6332
6333// The instance view of the VM Agent running on the virtual machine.
6334type VirtualMachineAgentInstanceView struct {
6335	// The virtual machine extension handler instance view.
6336	ExtensionHandlers *[]VirtualMachineExtensionHandlerInstanceView `json:"extensionHandlers,omitempty"`
6337
6338	// The resource status information.
6339	Statuses *[]InstanceViewStatus `json:"statuses,omitempty"`
6340
6341	// The VM Agent full version.
6342	VMAgentVersion *string `json:"vmAgentVersion,omitempty"`
6343}
6344
6345// Describes the properties of an AssessPatches result.
6346type VirtualMachineAssessPatchesResult struct {
6347	// READ-ONLY; The activity ID of the operation that produced this result. It is used to correlate across CRP and extension logs.
6348	AssessmentActivityID *string `json:"assessmentActivityId,omitempty" azure:"ro"`
6349
6350	// READ-ONLY; The number of critical or security patches that have been detected as available and not yet installed.
6351	CriticalAndSecurityPatchCount *int32 `json:"criticalAndSecurityPatchCount,omitempty" azure:"ro"`
6352
6353	// READ-ONLY; The errors that were encountered during execution of the operation. The details array contains the list of them.
6354	Error *APIError `json:"error,omitempty" azure:"ro"`
6355
6356	// READ-ONLY; The number of all available patches excluding critical and security.
6357	OtherPatchCount *int32 `json:"otherPatchCount,omitempty" azure:"ro"`
6358
6359	// READ-ONLY; The list of patches that have been detected as available for installation.
6360	Patches *[]VirtualMachineSoftwarePatchProperties `json:"patches,omitempty" azure:"ro"`
6361
6362	// READ-ONLY; The overall reboot status of the VM. It will be true when partially installed patches require a reboot to complete installation but the reboot
6363	// has not yet occurred.
6364	RebootPending *bool `json:"rebootPending,omitempty" azure:"ro"`
6365
6366	// READ-ONLY; The UTC timestamp when the operation began.
6367	StartDateTime *time.Time `json:"startDateTime,omitempty" azure:"ro"`
6368
6369	// READ-ONLY; The overall success or failure status of the operation. It remains "InProgress" until the operation completes. At that point it will become
6370	// "Failed", "Succeeded", or "CompletedWithWarnings."
6371	Status *PatchOperationStatus `json:"status,omitempty" azure:"ro"`
6372}
6373
6374// MarshalJSON implements the json.Marshaller interface for type VirtualMachineAssessPatchesResult.
6375func (v VirtualMachineAssessPatchesResult) MarshalJSON() ([]byte, error) {
6376	objectMap := make(map[string]interface{})
6377	if v.AssessmentActivityID != nil {
6378		objectMap["assessmentActivityId"] = v.AssessmentActivityID
6379	}
6380	if v.CriticalAndSecurityPatchCount != nil {
6381		objectMap["criticalAndSecurityPatchCount"] = v.CriticalAndSecurityPatchCount
6382	}
6383	if v.Error != nil {
6384		objectMap["error"] = v.Error
6385	}
6386	if v.OtherPatchCount != nil {
6387		objectMap["otherPatchCount"] = v.OtherPatchCount
6388	}
6389	if v.Patches != nil {
6390		objectMap["patches"] = v.Patches
6391	}
6392	if v.RebootPending != nil {
6393		objectMap["rebootPending"] = v.RebootPending
6394	}
6395	if v.StartDateTime != nil {
6396		objectMap["startDateTime"] = (*timeRFC3339)(v.StartDateTime)
6397	}
6398	if v.Status != nil {
6399		objectMap["status"] = v.Status
6400	}
6401	return json.Marshal(objectMap)
6402}
6403
6404// UnmarshalJSON implements the json.Unmarshaller interface for type VirtualMachineAssessPatchesResult.
6405func (v *VirtualMachineAssessPatchesResult) UnmarshalJSON(data []byte) error {
6406	var rawMsg map[string]*json.RawMessage
6407	if err := json.Unmarshal(data, &rawMsg); err != nil {
6408		return err
6409	}
6410	for key, val := range rawMsg {
6411		var err error
6412		switch key {
6413		case "assessmentActivityId":
6414			if val != nil {
6415				err = json.Unmarshal(*val, &v.AssessmentActivityID)
6416			}
6417			delete(rawMsg, key)
6418		case "criticalAndSecurityPatchCount":
6419			if val != nil {
6420				err = json.Unmarshal(*val, &v.CriticalAndSecurityPatchCount)
6421			}
6422			delete(rawMsg, key)
6423		case "error":
6424			if val != nil {
6425				err = json.Unmarshal(*val, &v.Error)
6426			}
6427			delete(rawMsg, key)
6428		case "otherPatchCount":
6429			if val != nil {
6430				err = json.Unmarshal(*val, &v.OtherPatchCount)
6431			}
6432			delete(rawMsg, key)
6433		case "patches":
6434			if val != nil {
6435				err = json.Unmarshal(*val, &v.Patches)
6436			}
6437			delete(rawMsg, key)
6438		case "rebootPending":
6439			if val != nil {
6440				err = json.Unmarshal(*val, &v.RebootPending)
6441			}
6442			delete(rawMsg, key)
6443		case "startDateTime":
6444			if val != nil {
6445				var aux timeRFC3339
6446				err = json.Unmarshal(*val, &aux)
6447				v.StartDateTime = (*time.Time)(&aux)
6448			}
6449			delete(rawMsg, key)
6450		case "status":
6451			if val != nil {
6452				err = json.Unmarshal(*val, &v.Status)
6453			}
6454			delete(rawMsg, key)
6455		}
6456		if err != nil {
6457			return err
6458		}
6459	}
6460	return nil
6461}
6462
6463// VirtualMachineAssessPatchesResultPollerResponse is the response envelope for operations that asynchronously return a VirtualMachineAssessPatchesResult
6464// type.
6465type VirtualMachineAssessPatchesResultPollerResponse struct {
6466	// PollUntilDone will poll the service endpoint until a terminal state is reached or an error is received
6467	PollUntilDone func(ctx context.Context, frequency time.Duration) (VirtualMachineAssessPatchesResultResponse, error)
6468
6469	// Poller contains an initialized poller.
6470	Poller VirtualMachineAssessPatchesResultPoller
6471
6472	// RawResponse contains the underlying HTTP response.
6473	RawResponse *http.Response
6474}
6475
6476// VirtualMachineAssessPatchesResultResponse is the response envelope for operations that return a VirtualMachineAssessPatchesResult type.
6477type VirtualMachineAssessPatchesResultResponse struct {
6478	// RawResponse contains the underlying HTTP response.
6479	RawResponse *http.Response
6480
6481	// Describes the properties of an AssessPatches result.
6482	VirtualMachineAssessPatchesResult *VirtualMachineAssessPatchesResult
6483}
6484
6485// Capture Virtual Machine parameters.
6486type VirtualMachineCaptureParameters struct {
6487	// The destination container name.
6488	DestinationContainerName *string `json:"destinationContainerName,omitempty"`
6489
6490	// Specifies whether to overwrite the destination virtual hard disk, in case of conflict.
6491	OverwriteVhds *bool `json:"overwriteVhds,omitempty"`
6492
6493	// The captured virtual hard disk's name prefix.
6494	VhdPrefix *string `json:"vhdPrefix,omitempty"`
6495}
6496
6497// Output of virtual machine capture operation.
6498type VirtualMachineCaptureResult struct {
6499	SubResource
6500	// READ-ONLY; the version of the content
6501	ContentVersion *string `json:"contentVersion,omitempty" azure:"ro"`
6502
6503	// READ-ONLY; parameters of the captured virtual machine
6504	Parameters interface{} `json:"parameters,omitempty" azure:"ro"`
6505
6506	// READ-ONLY; a list of resource items of the captured virtual machine
6507	Resources *[]interface{} `json:"resources,omitempty" azure:"ro"`
6508
6509	// READ-ONLY; the schema of the captured virtual machine
6510	Schema *string `json:"$schema,omitempty" azure:"ro"`
6511}
6512
6513// VirtualMachineCaptureResultPollerResponse is the response envelope for operations that asynchronously return a VirtualMachineCaptureResult type.
6514type VirtualMachineCaptureResultPollerResponse struct {
6515	// PollUntilDone will poll the service endpoint until a terminal state is reached or an error is received
6516	PollUntilDone func(ctx context.Context, frequency time.Duration) (VirtualMachineCaptureResultResponse, error)
6517
6518	// Poller contains an initialized poller.
6519	Poller VirtualMachineCaptureResultPoller
6520
6521	// RawResponse contains the underlying HTTP response.
6522	RawResponse *http.Response
6523}
6524
6525// VirtualMachineCaptureResultResponse is the response envelope for operations that return a VirtualMachineCaptureResult type.
6526type VirtualMachineCaptureResultResponse struct {
6527	// RawResponse contains the underlying HTTP response.
6528	RawResponse *http.Response
6529
6530	// Output of virtual machine capture operation.
6531	VirtualMachineCaptureResult *VirtualMachineCaptureResult
6532}
6533
6534// Describes a Virtual Machine Extension.
6535type VirtualMachineExtension struct {
6536	Resource
6537	// Describes the properties of a Virtual Machine Extension.
6538	Properties *VirtualMachineExtensionProperties `json:"properties,omitempty"`
6539}
6540
6541// The instance view of a virtual machine extension handler.
6542type VirtualMachineExtensionHandlerInstanceView struct {
6543	// The extension handler status.
6544	Status *InstanceViewStatus `json:"status,omitempty"`
6545
6546	// Specifies the type of the extension; an example is "CustomScriptExtension".
6547	Type *string `json:"type,omitempty"`
6548
6549	// Specifies the version of the script handler.
6550	TypeHandlerVersion *string `json:"typeHandlerVersion,omitempty"`
6551}
6552
6553// Describes a Virtual Machine Extension Image.
6554type VirtualMachineExtensionImage struct {
6555	Resource
6556	// Describes the properties of a Virtual Machine Extension Image.
6557	Properties *VirtualMachineExtensionImageProperties `json:"properties,omitempty"`
6558}
6559
6560// VirtualMachineExtensionImageArrayResponse is the response envelope for operations that return a []VirtualMachineExtensionImage type.
6561type VirtualMachineExtensionImageArrayResponse struct {
6562	// RawResponse contains the underlying HTTP response.
6563	RawResponse *http.Response
6564
6565	// Array of VirtualMachineExtensionImage
6566	VirtualMachineExtensionImageArray *[]VirtualMachineExtensionImage
6567}
6568
6569// Describes the properties of a Virtual Machine Extension Image.
6570type VirtualMachineExtensionImageProperties struct {
6571	// The type of role (IaaS or PaaS) this extension supports.
6572	ComputeRole *string `json:"computeRole,omitempty"`
6573
6574	// The schema defined by publisher, where extension consumers should provide settings in a matching schema.
6575	HandlerSchema *string `json:"handlerSchema,omitempty"`
6576
6577	// The operating system this extension supports.
6578	OperatingSystem *string `json:"operatingSystem,omitempty"`
6579
6580	// Whether the handler can support multiple extensions.
6581	SupportsMultipleExtensions *bool `json:"supportsMultipleExtensions,omitempty"`
6582
6583	// Whether the extension can be used on xRP VMScaleSets. By default existing extensions are usable on scalesets, but there might be cases where a publisher
6584	// wants to explicitly indicate the extension is
6585	// only enabled for CRP VMs but not VMSS.
6586	VMScaleSetEnabled *bool `json:"vmScaleSetEnabled,omitempty"`
6587}
6588
6589// VirtualMachineExtensionImageResponse is the response envelope for operations that return a VirtualMachineExtensionImage type.
6590type VirtualMachineExtensionImageResponse struct {
6591	// RawResponse contains the underlying HTTP response.
6592	RawResponse *http.Response
6593
6594	// Describes a Virtual Machine Extension Image.
6595	VirtualMachineExtensionImage *VirtualMachineExtensionImage
6596}
6597
6598// VirtualMachineExtensionImagesGetOptions contains the optional parameters for the VirtualMachineExtensionImages.Get method.
6599type VirtualMachineExtensionImagesGetOptions struct {
6600	// placeholder for future optional parameters
6601}
6602
6603// VirtualMachineExtensionImagesListTypesOptions contains the optional parameters for the VirtualMachineExtensionImages.ListTypes method.
6604type VirtualMachineExtensionImagesListTypesOptions struct {
6605	// placeholder for future optional parameters
6606}
6607
6608// VirtualMachineExtensionImagesListVersionsOptions contains the optional parameters for the VirtualMachineExtensionImages.ListVersions method.
6609type VirtualMachineExtensionImagesListVersionsOptions struct {
6610	// The filter to apply on the operation.
6611	Filter  *string
6612	Orderby *string
6613	Top     *int32
6614}
6615
6616// The instance view of a virtual machine extension.
6617type VirtualMachineExtensionInstanceView struct {
6618	// The virtual machine extension name.
6619	Name *string `json:"name,omitempty"`
6620
6621	// The resource status information.
6622	Statuses *[]InstanceViewStatus `json:"statuses,omitempty"`
6623
6624	// The resource status information.
6625	Substatuses *[]InstanceViewStatus `json:"substatuses,omitempty"`
6626
6627	// Specifies the type of the extension; an example is "CustomScriptExtension".
6628	Type *string `json:"type,omitempty"`
6629
6630	// Specifies the version of the script handler.
6631	TypeHandlerVersion *string `json:"typeHandlerVersion,omitempty"`
6632}
6633
6634// VirtualMachineExtensionPollerResponse is the response envelope for operations that asynchronously return a VirtualMachineExtension type.
6635type VirtualMachineExtensionPollerResponse struct {
6636	// PollUntilDone will poll the service endpoint until a terminal state is reached or an error is received
6637	PollUntilDone func(ctx context.Context, frequency time.Duration) (VirtualMachineExtensionResponse, error)
6638
6639	// Poller contains an initialized poller.
6640	Poller VirtualMachineExtensionPoller
6641
6642	// RawResponse contains the underlying HTTP response.
6643	RawResponse *http.Response
6644}
6645
6646// Describes the properties of a Virtual Machine Extension.
6647type VirtualMachineExtensionProperties struct {
6648	// Indicates whether the extension should use a newer minor version if one is available at deployment time. Once deployed, however, the extension will not
6649	// upgrade minor versions unless redeployed, even
6650	// with this property set to true.
6651	AutoUpgradeMinorVersion *bool `json:"autoUpgradeMinorVersion,omitempty"`
6652
6653	// Indicates whether the extension should be automatically upgraded by the platform if there is a newer version of the extension available.
6654	EnableAutomaticUpgrade *bool `json:"enableAutomaticUpgrade,omitempty"`
6655
6656	// How the extension handler should be forced to update even if the extension configuration has not changed.
6657	ForceUpdateTag *string `json:"forceUpdateTag,omitempty"`
6658
6659	// The virtual machine extension instance view.
6660	InstanceView *VirtualMachineExtensionInstanceView `json:"instanceView,omitempty"`
6661
6662	// The extension can contain either protectedSettings or protectedSettingsFromKeyVault or no protected settings at all.
6663	ProtectedSettings interface{} `json:"protectedSettings,omitempty"`
6664
6665	// READ-ONLY; The provisioning state, which only appears in the response.
6666	ProvisioningState *string `json:"provisioningState,omitempty" azure:"ro"`
6667
6668	// The name of the extension handler publisher.
6669	Publisher *string `json:"publisher,omitempty"`
6670
6671	// Json formatted public settings for the extension.
6672	Settings interface{} `json:"settings,omitempty"`
6673
6674	// Specifies the type of the extension; an example is "CustomScriptExtension".
6675	Type *string `json:"type,omitempty"`
6676
6677	// Specifies the version of the script handler.
6678	TypeHandlerVersion *string `json:"typeHandlerVersion,omitempty"`
6679}
6680
6681// VirtualMachineExtensionResponse is the response envelope for operations that return a VirtualMachineExtension type.
6682type VirtualMachineExtensionResponse struct {
6683	// RawResponse contains the underlying HTTP response.
6684	RawResponse *http.Response
6685
6686	// Describes a Virtual Machine Extension.
6687	VirtualMachineExtension *VirtualMachineExtension
6688}
6689
6690// Describes a Virtual Machine Extension.
6691type VirtualMachineExtensionUpdate struct {
6692	UpdateResource
6693	// Describes the properties of a Virtual Machine Extension.
6694	Properties *VirtualMachineExtensionUpdateProperties `json:"properties,omitempty"`
6695}
6696
6697// Describes the properties of a Virtual Machine Extension.
6698type VirtualMachineExtensionUpdateProperties struct {
6699	// Indicates whether the extension should use a newer minor version if one is available at deployment time. Once deployed, however, the extension will not
6700	// upgrade minor versions unless redeployed, even
6701	// with this property set to true.
6702	AutoUpgradeMinorVersion *bool `json:"autoUpgradeMinorVersion,omitempty"`
6703
6704	// Indicates whether the extension should be automatically upgraded by the platform if there is a newer version of the extension available.
6705	EnableAutomaticUpgrade *bool `json:"enableAutomaticUpgrade,omitempty"`
6706
6707	// How the extension handler should be forced to update even if the extension configuration has not changed.
6708	ForceUpdateTag *string `json:"forceUpdateTag,omitempty"`
6709
6710	// The extension can contain either protectedSettings or protectedSettingsFromKeyVault or no protected settings at all.
6711	ProtectedSettings interface{} `json:"protectedSettings,omitempty"`
6712
6713	// The name of the extension handler publisher.
6714	Publisher *string `json:"publisher,omitempty"`
6715
6716	// Json formatted public settings for the extension.
6717	Settings interface{} `json:"settings,omitempty"`
6718
6719	// Specifies the type of the extension; an example is "CustomScriptExtension".
6720	Type *string `json:"type,omitempty"`
6721
6722	// Specifies the version of the script handler.
6723	TypeHandlerVersion *string `json:"typeHandlerVersion,omitempty"`
6724}
6725
6726// VirtualMachineExtensionsBeginCreateOrUpdateOptions contains the optional parameters for the VirtualMachineExtensions.BeginCreateOrUpdate method.
6727type VirtualMachineExtensionsBeginCreateOrUpdateOptions struct {
6728	// placeholder for future optional parameters
6729}
6730
6731// VirtualMachineExtensionsBeginDeleteOptions contains the optional parameters for the VirtualMachineExtensions.BeginDelete method.
6732type VirtualMachineExtensionsBeginDeleteOptions struct {
6733	// placeholder for future optional parameters
6734}
6735
6736// VirtualMachineExtensionsBeginUpdateOptions contains the optional parameters for the VirtualMachineExtensions.BeginUpdate method.
6737type VirtualMachineExtensionsBeginUpdateOptions struct {
6738	// placeholder for future optional parameters
6739}
6740
6741// VirtualMachineExtensionsGetOptions contains the optional parameters for the VirtualMachineExtensions.Get method.
6742type VirtualMachineExtensionsGetOptions struct {
6743	// The expand expression to apply on the operation.
6744	Expand *string
6745}
6746
6747// VirtualMachineExtensionsListOptions contains the optional parameters for the VirtualMachineExtensions.List method.
6748type VirtualMachineExtensionsListOptions struct {
6749	// The expand expression to apply on the operation.
6750	Expand *string
6751}
6752
6753// The List Extension operation response
6754type VirtualMachineExtensionsListResult struct {
6755	// The list of extensions
6756	Value *[]VirtualMachineExtension `json:"value,omitempty"`
6757}
6758
6759// VirtualMachineExtensionsListResultResponse is the response envelope for operations that return a VirtualMachineExtensionsListResult type.
6760type VirtualMachineExtensionsListResultResponse struct {
6761	// RawResponse contains the underlying HTTP response.
6762	RawResponse *http.Response
6763
6764	// The List Extension operation response
6765	VirtualMachineExtensionsListResult *VirtualMachineExtensionsListResult
6766}
6767
6768// The health status of the VM.
6769type VirtualMachineHealthStatus struct {
6770	// READ-ONLY; The health status information for the VM.
6771	Status *InstanceViewStatus `json:"status,omitempty" azure:"ro"`
6772}
6773
6774// Identity for the virtual machine.
6775type VirtualMachineIDentity struct {
6776	// READ-ONLY; The principal id of virtual machine identity. This property will only be provided for a system assigned identity.
6777	PrincipalID *string `json:"principalId,omitempty" azure:"ro"`
6778
6779	// READ-ONLY; The tenant id associated with the virtual machine. This property will only be provided for a system assigned identity.
6780	TenantID *string `json:"tenantId,omitempty" azure:"ro"`
6781
6782	// The type of identity used for the virtual machine. The type 'SystemAssigned, UserAssigned' includes both an implicitly created identity and a set of
6783	// user assigned identities. The type 'None' will
6784	// remove any identities from the virtual machine.
6785	Type *ResourceIDentityType `json:"type,omitempty"`
6786
6787	// The list of user identities associated with the Virtual Machine. The user identity dictionary key references will be ARM resource ids in the form:
6788	// '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.
6789	UserAssignedIDentities *map[string]UserAssignedIDentitiesValue `json:"userAssignedIdentities,omitempty"`
6790}
6791
6792// Describes a Virtual Machine Image.
6793type VirtualMachineImage struct {
6794	VirtualMachineImageResource
6795	// Describes the properties of a Virtual Machine Image.
6796	Properties *VirtualMachineImageProperties `json:"properties,omitempty"`
6797}
6798
6799// Describes the properties of a Virtual Machine Image.
6800type VirtualMachineImageProperties struct {
6801	// Describes automatic OS upgrade properties on the image.
6802	AutomaticOSUpgradeProperties *AutomaticOSUpgradeProperties `json:"automaticOSUpgradeProperties,omitempty"`
6803	DataDiskImages               *[]DataDiskImage              `json:"dataDiskImages,omitempty"`
6804
6805	// Specifies disallowed configuration for the VirtualMachine created from the image
6806	Disallowed *DisallowedConfiguration `json:"disallowed,omitempty"`
6807
6808	// Specifies the HyperVGeneration Type
6809	HyperVGeneration *HyperVGenerationTypes `json:"hyperVGeneration,omitempty"`
6810
6811	// Contains the os disk image information.
6812	OSDiskImage *OSDiskImage `json:"osDiskImage,omitempty"`
6813
6814	// Used for establishing the purchase context of any 3rd Party artifact through MarketPlace.
6815	Plan *PurchasePlan `json:"plan,omitempty"`
6816}
6817
6818// Virtual machine image resource information.
6819type VirtualMachineImageResource struct {
6820	SubResource
6821	// The supported Azure location of the resource.
6822	Location *string `json:"location,omitempty"`
6823
6824	// The name of the resource.
6825	Name *string `json:"name,omitempty"`
6826
6827	// Specifies the tags that are assigned to the virtual machine. For more information about using tags, see Using tags to organize your Azure resources
6828	// [https://docs.microsoft.com/azure/azure-resource-manager/resource-group-using-tags.md].
6829	Tags *map[string]string `json:"tags,omitempty"`
6830}
6831
6832// VirtualMachineImageResourceArrayResponse is the response envelope for operations that return a []VirtualMachineImageResource type.
6833type VirtualMachineImageResourceArrayResponse struct {
6834	// RawResponse contains the underlying HTTP response.
6835	RawResponse *http.Response
6836
6837	// Array of VirtualMachineImageResource
6838	VirtualMachineImageResourceArray *[]VirtualMachineImageResource
6839}
6840
6841// VirtualMachineImageResponse is the response envelope for operations that return a VirtualMachineImage type.
6842type VirtualMachineImageResponse struct {
6843	// RawResponse contains the underlying HTTP response.
6844	RawResponse *http.Response
6845
6846	// Describes a Virtual Machine Image.
6847	VirtualMachineImage *VirtualMachineImage
6848}
6849
6850// VirtualMachineImagesGetOptions contains the optional parameters for the VirtualMachineImages.Get method.
6851type VirtualMachineImagesGetOptions struct {
6852	// placeholder for future optional parameters
6853}
6854
6855// VirtualMachineImagesListOffersOptions contains the optional parameters for the VirtualMachineImages.ListOffers method.
6856type VirtualMachineImagesListOffersOptions struct {
6857	// placeholder for future optional parameters
6858}
6859
6860// VirtualMachineImagesListOptions contains the optional parameters for the VirtualMachineImages.List method.
6861type VirtualMachineImagesListOptions struct {
6862	// The expand expression to apply on the operation.
6863	Expand  *string
6864	Orderby *string
6865	Top     *int32
6866}
6867
6868// VirtualMachineImagesListPublishersOptions contains the optional parameters for the VirtualMachineImages.ListPublishers method.
6869type VirtualMachineImagesListPublishersOptions struct {
6870	// placeholder for future optional parameters
6871}
6872
6873// VirtualMachineImagesListSKUsOptions contains the optional parameters for the VirtualMachineImages.ListSKUs method.
6874type VirtualMachineImagesListSKUsOptions struct {
6875	// placeholder for future optional parameters
6876}
6877
6878// The instance view of a virtual machine.
6879type VirtualMachineInstanceView struct {
6880	// READ-ONLY; Resource id of the dedicated host, on which the virtual machine is allocated through automatic placement, when the virtual machine is associated
6881	// with a dedicated host group that has automatic
6882	// placement enabled.
6883	// Minimum api-version: 2020-06-01.
6884	AssignedHost *string `json:"assignedHost,omitempty" azure:"ro"`
6885
6886	// Boot Diagnostics is a debugging feature which allows you to view Console Output and Screenshot to diagnose VM status.
6887	// You can easily view the output of your console log.
6888	// Azure also enables you to see a screenshot of the VM from the hypervisor.
6889	BootDiagnostics *BootDiagnosticsInstanceView `json:"bootDiagnostics,omitempty"`
6890
6891	// The computer name assigned to the virtual machine.
6892	ComputerName *string `json:"computerName,omitempty"`
6893
6894	// The virtual machine disk information.
6895	Disks *[]DiskInstanceView `json:"disks,omitempty"`
6896
6897	// The extensions information.
6898	Extensions *[]VirtualMachineExtensionInstanceView `json:"extensions,omitempty"`
6899
6900	// Specifies the HyperVGeneration Type associated with a resource
6901	HyperVGeneration *HyperVGenerationType `json:"hyperVGeneration,omitempty"`
6902
6903	// The Maintenance Operation status on the virtual machine.
6904	MaintenanceRedeployStatus *MaintenanceRedeployStatus `json:"maintenanceRedeployStatus,omitempty"`
6905
6906	// The Operating System running on the virtual machine.
6907	OSName *string `json:"osName,omitempty"`
6908
6909	// The version of Operating System running on the virtual machine.
6910	OSVersion *string `json:"osVersion,omitempty"`
6911
6912	// The status of virtual machine patch operations.
6913	PatchStatus *VirtualMachinePatchStatus `json:"patchStatus,omitempty"`
6914
6915	// Specifies the fault domain of the virtual machine.
6916	PlatformFaultDomain *int32 `json:"platformFaultDomain,omitempty"`
6917
6918	// Specifies the update domain of the virtual machine.
6919	PlatformUpdateDomain *int32 `json:"platformUpdateDomain,omitempty"`
6920
6921	// The Remote desktop certificate thumbprint.
6922	RdpThumbPrint *string `json:"rdpThumbPrint,omitempty"`
6923
6924	// The resource status information.
6925	Statuses *[]InstanceViewStatus `json:"statuses,omitempty"`
6926
6927	// The VM Agent running on the virtual machine.
6928	VMAgent *VirtualMachineAgentInstanceView `json:"vmAgent,omitempty"`
6929
6930	// READ-ONLY; The health status for the VM.
6931	VMHealth *VirtualMachineHealthStatus `json:"vmHealth,omitempty" azure:"ro"`
6932}
6933
6934// VirtualMachineInstanceViewResponse is the response envelope for operations that return a VirtualMachineInstanceView type.
6935type VirtualMachineInstanceViewResponse struct {
6936	// RawResponse contains the underlying HTTP response.
6937	RawResponse *http.Response
6938
6939	// The instance view of a virtual machine.
6940	VirtualMachineInstanceView *VirtualMachineInstanceView
6941}
6942
6943// The List Virtual Machine operation response.
6944type VirtualMachineListResult struct {
6945	// The URI to fetch the next page of VMs. Call ListNext() with this URI to fetch the next page of Virtual Machines.
6946	NextLink *string `json:"nextLink,omitempty"`
6947
6948	// The list of virtual machines.
6949	Value *[]VirtualMachine `json:"value,omitempty"`
6950}
6951
6952// VirtualMachineListResultResponse is the response envelope for operations that return a VirtualMachineListResult type.
6953type VirtualMachineListResultResponse struct {
6954	// RawResponse contains the underlying HTTP response.
6955	RawResponse *http.Response
6956
6957	// The List Virtual Machine operation response.
6958	VirtualMachineListResult *VirtualMachineListResult
6959}
6960
6961// The status of virtual machine patch operations.
6962type VirtualMachinePatchStatus struct {
6963	// The available patch summary of the latest assessment operation for the virtual machine.
6964	AvailablePatchSummary *AvailablePatchSummary `json:"availablePatchSummary,omitempty"`
6965
6966	// The installation summary of the latest installation operation for the virtual machine.
6967	LastPatchInstallationSummary *LastPatchInstallationSummary `json:"lastPatchInstallationSummary,omitempty"`
6968}
6969
6970// VirtualMachinePollerResponse is the response envelope for operations that asynchronously return a VirtualMachine type.
6971type VirtualMachinePollerResponse struct {
6972	// PollUntilDone will poll the service endpoint until a terminal state is reached or an error is received
6973	PollUntilDone func(ctx context.Context, frequency time.Duration) (VirtualMachineResponse, error)
6974
6975	// Poller contains an initialized poller.
6976	Poller VirtualMachinePoller
6977
6978	// RawResponse contains the underlying HTTP response.
6979	RawResponse *http.Response
6980}
6981
6982// Describes the properties of a Virtual Machine.
6983type VirtualMachineProperties struct {
6984	// Specifies additional capabilities enabled or disabled on the virtual machine.
6985	AdditionalCapabilities *AdditionalCapabilities `json:"additionalCapabilities,omitempty"`
6986
6987	// Specifies information about the availability set that the virtual machine should be assigned to. Virtual machines specified in the same availability
6988	// set are allocated to different nodes to maximize
6989	// availability. For more information about availability sets, see Manage the availability of virtual machines
6990	// [https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-manage-availability?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json].
6991	// For more information on Azure planned maintenance, see Planned maintenance for virtual machines in Azure
6992	// [https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-planned-maintenance?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json]
6993	// Currently, a VM can only be added to availability set at creation time. The availability set to which the VM is being added should be under the same
6994	// resource group as the availability set resource. An
6995	// existing VM cannot be added to an availability set.
6996	// This property cannot exist along with a non-null properties.virtualMachineScaleSet reference.
6997	AvailabilitySet *SubResource `json:"availabilitySet,omitempty"`
6998
6999	// Specifies the billing related details of a Azure Spot virtual machine.
7000	// Minimum api-version: 2019-03-01.
7001	BillingProfile *BillingProfile `json:"billingProfile,omitempty"`
7002
7003	// Specifies the boot diagnostic settings state.
7004	// Minimum api-version: 2015-06-15.
7005	DiagnosticsProfile *DiagnosticsProfile `json:"diagnosticsProfile,omitempty"`
7006
7007	// Specifies the eviction policy for the Azure Spot virtual machine and Azure Spot scale set.
7008	// For Azure Spot virtual machines, both 'Deallocate' and 'Delete' are supported and the minimum api-version is 2019-03-01.
7009	// For Azure Spot scale sets, both 'Deallocate' and 'Delete' are supported and the minimum api-version is 2017-10-30-preview.
7010	EvictionPolicy *VirtualMachineEvictionPolicyTypes `json:"evictionPolicy,omitempty"`
7011
7012	// Specifies the time alloted for all extensions to start. The time duration should be between 15 minutes and 120 minutes (inclusive) and should be specified
7013	// in ISO 8601 format. The default value is 90
7014	// minutes (PT1H30M).
7015	// Minimum api-version: 2020-06-01
7016	ExtensionsTimeBudget *string `json:"extensionsTimeBudget,omitempty"`
7017
7018	// Specifies the hardware settings for the virtual machine.
7019	HardwareProfile *HardwareProfile `json:"hardwareProfile,omitempty"`
7020
7021	// Specifies information about the dedicated host that the virtual machine resides in.
7022	// Minimum api-version: 2018-10-01.
7023	Host *SubResource `json:"host,omitempty"`
7024
7025	// Specifies information about the dedicated host group that the virtual machine resides in.
7026	// Minimum api-version: 2020-06-01.
7027	// NOTE: User cannot specify both host and hostGroup properties.
7028	HostGroup *SubResource `json:"hostGroup,omitempty"`
7029
7030	// READ-ONLY; The virtual machine instance view.
7031	InstanceView *VirtualMachineInstanceView `json:"instanceView,omitempty" azure:"ro"`
7032
7033	// Specifies that the image or disk that is being used was licensed on-premises.
7034	// Possible values for Windows Server operating system are:
7035	// WindowsClient
7036	// WindowsServer
7037	// Possible values for Linux Server operating system are:
7038	// RHELBYOS (for RHEL)
7039	// SLESBYOS (for SUSE)
7040	// For more information, see Azure Hybrid Use Benefit for Windows Server [https://docs.microsoft.com/azure/virtual-machines/windows/hybrid-use-benefit-licensing]
7041	// Azure Hybrid Use Benefit for Linux Server [https://docs.microsoft.com/azure/virtual-machines/linux/azure-hybrid-benefit-linux]
7042	// Minimum api-version: 2015-06-15
7043	LicenseType *string `json:"licenseType,omitempty"`
7044
7045	// Specifies the network interfaces of the virtual machine.
7046	NetworkProfile *NetworkProfile `json:"networkProfile,omitempty"`
7047
7048	// Specifies the operating system settings used while creating the virtual machine. Some of the settings cannot be changed once VM is provisioned.
7049	OSProfile *OSProfile `json:"osProfile,omitempty"`
7050
7051	// Specifies the priority for the virtual machine.
7052	// Minimum api-version: 2019-03-01
7053	Priority *VirtualMachinePriorityTypes `json:"priority,omitempty"`
7054
7055	// READ-ONLY; The provisioning state, which only appears in the response.
7056	ProvisioningState *string `json:"provisioningState,omitempty" azure:"ro"`
7057
7058	// Specifies information about the proximity placement group that the virtual machine should be assigned to.
7059	// Minimum api-version: 2018-04-01.
7060	ProximityPlacementGroup *SubResource `json:"proximityPlacementGroup,omitempty"`
7061
7062	// Specifies the Security related profile settings for the virtual machine.
7063	SecurityProfile *SecurityProfile `json:"securityProfile,omitempty"`
7064
7065	// Specifies the storage settings for the virtual machine disks.
7066	StorageProfile *StorageProfile `json:"storageProfile,omitempty"`
7067
7068	// READ-ONLY; Specifies the VM unique ID which is a 128-bits identifier that is encoded and stored in all Azure IaaS VMs SMBIOS and can be read using platform
7069	// BIOS commands.
7070	VMID *string `json:"vmId,omitempty" azure:"ro"`
7071
7072	// Specifies information about the virtual machine scale set that the virtual machine should be assigned to. Virtual machines specified in the same virtual
7073	// machine scale set are allocated to different
7074	// nodes to maximize availability. Currently, a VM can only be added to virtual machine scale set at creation time. An existing VM cannot be added to a
7075	// virtual machine scale set.
7076	// This property cannot exist along with a non-null properties.availabilitySet reference.
7077	// Minimum api‐version: 2019‐03‐01
7078	VirtualMachineScaleSet *SubResource `json:"virtualMachineScaleSet,omitempty"`
7079}
7080
7081// Parameters for Reimaging Virtual Machine. NOTE: Virtual Machine OS disk will always be reimaged
7082type VirtualMachineReimageParameters struct {
7083	// Specifies whether to reimage temp disk. Default value: false. Note: This temp disk reimage parameter is only supported for VM/VMSS with Ephemeral OS
7084	// disk.
7085	TempDisk *bool `json:"tempDisk,omitempty"`
7086}
7087
7088// VirtualMachineResponse is the response envelope for operations that return a VirtualMachine type.
7089type VirtualMachineResponse struct {
7090	// RawResponse contains the underlying HTTP response.
7091	RawResponse *http.Response
7092
7093	// Describes a Virtual Machine.
7094	VirtualMachine *VirtualMachine
7095}
7096
7097// Describes a Virtual Machine run command.
7098type VirtualMachineRunCommand struct {
7099	Resource
7100	// Describes the properties of a Virtual Machine run command.
7101	Properties *VirtualMachineRunCommandProperties `json:"properties,omitempty"`
7102}
7103
7104// The instance view of a virtual machine run command.
7105type VirtualMachineRunCommandInstanceView struct {
7106	// Script end time.
7107	EndTime *time.Time `json:"endTime,omitempty"`
7108
7109	// Script error stream.
7110	Error *string `json:"error,omitempty"`
7111
7112	// Communicate script configuration errors or execution messages.
7113	ExecutionMessage *string `json:"executionMessage,omitempty"`
7114
7115	// Script execution status.
7116	ExecutionState *ExecutionState `json:"executionState,omitempty"`
7117
7118	// Exit code returned from script execution.
7119	ExitCode *int32 `json:"exitCode,omitempty"`
7120
7121	// Script output stream.
7122	Output *string `json:"output,omitempty"`
7123
7124	// Script start time.
7125	StartTime *time.Time `json:"startTime,omitempty"`
7126
7127	// The resource status information.
7128	Statuses *[]InstanceViewStatus `json:"statuses,omitempty"`
7129}
7130
7131// MarshalJSON implements the json.Marshaller interface for type VirtualMachineRunCommandInstanceView.
7132func (v VirtualMachineRunCommandInstanceView) MarshalJSON() ([]byte, error) {
7133	objectMap := make(map[string]interface{})
7134	if v.EndTime != nil {
7135		objectMap["endTime"] = (*timeRFC3339)(v.EndTime)
7136	}
7137	if v.Error != nil {
7138		objectMap["error"] = v.Error
7139	}
7140	if v.ExecutionMessage != nil {
7141		objectMap["executionMessage"] = v.ExecutionMessage
7142	}
7143	if v.ExecutionState != nil {
7144		objectMap["executionState"] = v.ExecutionState
7145	}
7146	if v.ExitCode != nil {
7147		objectMap["exitCode"] = v.ExitCode
7148	}
7149	if v.Output != nil {
7150		objectMap["output"] = v.Output
7151	}
7152	if v.StartTime != nil {
7153		objectMap["startTime"] = (*timeRFC3339)(v.StartTime)
7154	}
7155	if v.Statuses != nil {
7156		objectMap["statuses"] = v.Statuses
7157	}
7158	return json.Marshal(objectMap)
7159}
7160
7161// UnmarshalJSON implements the json.Unmarshaller interface for type VirtualMachineRunCommandInstanceView.
7162func (v *VirtualMachineRunCommandInstanceView) UnmarshalJSON(data []byte) error {
7163	var rawMsg map[string]*json.RawMessage
7164	if err := json.Unmarshal(data, &rawMsg); err != nil {
7165		return err
7166	}
7167	for key, val := range rawMsg {
7168		var err error
7169		switch key {
7170		case "endTime":
7171			if val != nil {
7172				var aux timeRFC3339
7173				err = json.Unmarshal(*val, &aux)
7174				v.EndTime = (*time.Time)(&aux)
7175			}
7176			delete(rawMsg, key)
7177		case "error":
7178			if val != nil {
7179				err = json.Unmarshal(*val, &v.Error)
7180			}
7181			delete(rawMsg, key)
7182		case "executionMessage":
7183			if val != nil {
7184				err = json.Unmarshal(*val, &v.ExecutionMessage)
7185			}
7186			delete(rawMsg, key)
7187		case "executionState":
7188			if val != nil {
7189				err = json.Unmarshal(*val, &v.ExecutionState)
7190			}
7191			delete(rawMsg, key)
7192		case "exitCode":
7193			if val != nil {
7194				err = json.Unmarshal(*val, &v.ExitCode)
7195			}
7196			delete(rawMsg, key)
7197		case "output":
7198			if val != nil {
7199				err = json.Unmarshal(*val, &v.Output)
7200			}
7201			delete(rawMsg, key)
7202		case "startTime":
7203			if val != nil {
7204				var aux timeRFC3339
7205				err = json.Unmarshal(*val, &aux)
7206				v.StartTime = (*time.Time)(&aux)
7207			}
7208			delete(rawMsg, key)
7209		case "statuses":
7210			if val != nil {
7211				err = json.Unmarshal(*val, &v.Statuses)
7212			}
7213			delete(rawMsg, key)
7214		}
7215		if err != nil {
7216			return err
7217		}
7218	}
7219	return nil
7220}
7221
7222// VirtualMachineRunCommandPollerResponse is the response envelope for operations that asynchronously return a VirtualMachineRunCommand type.
7223type VirtualMachineRunCommandPollerResponse struct {
7224	// PollUntilDone will poll the service endpoint until a terminal state is reached or an error is received
7225	PollUntilDone func(ctx context.Context, frequency time.Duration) (VirtualMachineRunCommandResponse, error)
7226
7227	// Poller contains an initialized poller.
7228	Poller VirtualMachineRunCommandPoller
7229
7230	// RawResponse contains the underlying HTTP response.
7231	RawResponse *http.Response
7232}
7233
7234// Describes the properties of a Virtual Machine run command.
7235type VirtualMachineRunCommandProperties struct {
7236	// Optional. If set to true, provisioning will complete as soon as the script starts and will not wait for script to complete.
7237	AsyncExecution *bool `json:"asyncExecution,omitempty"`
7238
7239	// Specifies the Azure storage blob where script error stream will be uploaded.
7240	ErrorBlobURI *string `json:"errorBlobUri,omitempty"`
7241
7242	// READ-ONLY; The virtual machine run command instance view.
7243	InstanceView *VirtualMachineRunCommandInstanceView `json:"instanceView,omitempty" azure:"ro"`
7244
7245	// Specifies the Azure storage blob where script output stream will be uploaded.
7246	OutputBlobURI *string `json:"outputBlobUri,omitempty"`
7247
7248	// The parameters used by the script.
7249	Parameters *[]RunCommandInputParameter `json:"parameters,omitempty"`
7250
7251	// The parameters used by the script.
7252	ProtectedParameters *[]RunCommandInputParameter `json:"protectedParameters,omitempty"`
7253
7254	// READ-ONLY; The provisioning state, which only appears in the response.
7255	ProvisioningState *string `json:"provisioningState,omitempty" azure:"ro"`
7256
7257	// Specifies the user account password on the VM when executing the run command.
7258	RunAsPassword *string `json:"runAsPassword,omitempty"`
7259
7260	// Specifies the user account on the VM when executing the run command.
7261	RunAsUser *string `json:"runAsUser,omitempty"`
7262
7263	// The source of the run command script.
7264	Source *VirtualMachineRunCommandScriptSource `json:"source,omitempty"`
7265
7266	// The timeout in seconds to execute the run command.
7267	TimeoutInSeconds *int32 `json:"timeoutInSeconds,omitempty"`
7268}
7269
7270// VirtualMachineRunCommandResponse is the response envelope for operations that return a VirtualMachineRunCommand type.
7271type VirtualMachineRunCommandResponse struct {
7272	// RawResponse contains the underlying HTTP response.
7273	RawResponse *http.Response
7274
7275	// Describes a Virtual Machine run command.
7276	VirtualMachineRunCommand *VirtualMachineRunCommand
7277}
7278
7279// Describes the script sources for run command.
7280type VirtualMachineRunCommandScriptSource struct {
7281	// Specifies a commandId of predefined built-in script.
7282	CommandID *string `json:"commandId,omitempty"`
7283
7284	// Specifies the script content to be executed on the VM.
7285	Script *string `json:"script,omitempty"`
7286
7287	// Specifies the script download location.
7288	ScriptURI *string `json:"scriptUri,omitempty"`
7289}
7290
7291// Describes a Virtual Machine run command.
7292type VirtualMachineRunCommandUpdate struct {
7293	UpdateResource
7294	// Describes the properties of a Virtual Machine run command.
7295	Properties *VirtualMachineRunCommandProperties `json:"properties,omitempty"`
7296}
7297
7298// VirtualMachineRunCommandsBeginCreateOrUpdateOptions contains the optional parameters for the VirtualMachineRunCommands.BeginCreateOrUpdate method.
7299type VirtualMachineRunCommandsBeginCreateOrUpdateOptions struct {
7300	// placeholder for future optional parameters
7301}
7302
7303// VirtualMachineRunCommandsBeginDeleteOptions contains the optional parameters for the VirtualMachineRunCommands.BeginDelete method.
7304type VirtualMachineRunCommandsBeginDeleteOptions struct {
7305	// placeholder for future optional parameters
7306}
7307
7308// VirtualMachineRunCommandsBeginUpdateOptions contains the optional parameters for the VirtualMachineRunCommands.BeginUpdate method.
7309type VirtualMachineRunCommandsBeginUpdateOptions struct {
7310	// placeholder for future optional parameters
7311}
7312
7313// VirtualMachineRunCommandsGetByVirtualMachineOptions contains the optional parameters for the VirtualMachineRunCommands.GetByVirtualMachine method.
7314type VirtualMachineRunCommandsGetByVirtualMachineOptions struct {
7315	// The expand expression to apply on the operation.
7316	Expand *string
7317}
7318
7319// VirtualMachineRunCommandsGetOptions contains the optional parameters for the VirtualMachineRunCommands.Get method.
7320type VirtualMachineRunCommandsGetOptions struct {
7321	// placeholder for future optional parameters
7322}
7323
7324// VirtualMachineRunCommandsListByVirtualMachineOptions contains the optional parameters for the VirtualMachineRunCommands.ListByVirtualMachine method.
7325type VirtualMachineRunCommandsListByVirtualMachineOptions struct {
7326	// The expand expression to apply on the operation.
7327	Expand *string
7328}
7329
7330// VirtualMachineRunCommandsListOptions contains the optional parameters for the VirtualMachineRunCommands.List method.
7331type VirtualMachineRunCommandsListOptions struct {
7332	// placeholder for future optional parameters
7333}
7334
7335// The List run command operation response
7336type VirtualMachineRunCommandsListResult struct {
7337	// The uri to fetch the next page of run commands.
7338	NextLink *string `json:"nextLink,omitempty"`
7339
7340	// The list of run commands
7341	Value *[]VirtualMachineRunCommand `json:"value,omitempty"`
7342}
7343
7344// VirtualMachineRunCommandsListResultResponse is the response envelope for operations that return a VirtualMachineRunCommandsListResult type.
7345type VirtualMachineRunCommandsListResultResponse struct {
7346	// RawResponse contains the underlying HTTP response.
7347	RawResponse *http.Response
7348
7349	// The List run command operation response
7350	VirtualMachineRunCommandsListResult *VirtualMachineRunCommandsListResult
7351}
7352
7353// Describes a Virtual Machine Scale Set.
7354type VirtualMachineScaleSet struct {
7355	Resource
7356	// The identity of the virtual machine scale set, if configured.
7357	IDentity *VirtualMachineScaleSetIDentity `json:"identity,omitempty"`
7358
7359	// Specifies information about the marketplace image used to create the virtual machine. This element is only used for marketplace images. Before you can
7360	// use a marketplace image from an API, you must
7361	// enable the image for programmatic use. In the Azure portal, find the marketplace image that you want to use and then click Want to deploy programmatically,
7362	// Get Started ->. Enter any required
7363	// information and then click Save.
7364	Plan *Plan `json:"plan,omitempty"`
7365
7366	// Describes the properties of a Virtual Machine Scale Set.
7367	Properties *VirtualMachineScaleSetProperties `json:"properties,omitempty"`
7368
7369	// The virtual machine scale set sku.
7370	SKU *SKU `json:"sku,omitempty"`
7371
7372	// The virtual machine scale set zones. NOTE: Availability zones can only be set when you create the scale set
7373	Zones *[]string `json:"zones,omitempty"`
7374}
7375
7376// Describes a virtual machine scale set data disk.
7377type VirtualMachineScaleSetDataDisk struct {
7378	// Specifies the caching requirements.
7379	// Possible values are:
7380	// None
7381	// ReadOnly
7382	// ReadWrite
7383	// Default: None for Standard storage. ReadOnly for Premium storage
7384	Caching *CachingTypes `json:"caching,omitempty"`
7385
7386	// The create option.
7387	CreateOption *DiskCreateOptionTypes `json:"createOption,omitempty"`
7388
7389	// Specifies the Read-Write IOPS for the managed disk. Should be used only when StorageAccountType is UltraSSD_LRS. If not specified, a default value would
7390	// be assigned based on diskSizeGB.
7391	DiskIopsReadWrite *int64 `json:"diskIOPSReadWrite,omitempty"`
7392
7393	// Specifies the bandwidth in MB per second for the managed disk. Should be used only when StorageAccountType is UltraSSD_LRS. If not specified, a default
7394	// value would be assigned based on diskSizeGB.
7395	DiskMBpsReadWrite *int64 `json:"diskMBpsReadWrite,omitempty"`
7396
7397	// Specifies the size of an empty data disk in gigabytes. This element can be used to overwrite the size of the disk in a virtual machine image.
7398	// This value cannot be larger than 1023 GB
7399	DiskSizeGb *int32 `json:"diskSizeGB,omitempty"`
7400
7401	// Specifies the logical unit number of the data disk. This value is used to identify data disks within the VM and therefore must be unique for each data
7402	// disk attached to a VM.
7403	Lun *int32 `json:"lun,omitempty"`
7404
7405	// The managed disk parameters.
7406	ManagedDisk *VirtualMachineScaleSetManagedDiskParameters `json:"managedDisk,omitempty"`
7407
7408	// The disk name.
7409	Name *string `json:"name,omitempty"`
7410
7411	// Specifies whether writeAccelerator should be enabled or disabled on the disk.
7412	WriteAcceleratorEnabled *bool `json:"writeAcceleratorEnabled,omitempty"`
7413}
7414
7415// Describes a Virtual Machine Scale Set Extension.
7416type VirtualMachineScaleSetExtension struct {
7417	SubResourceReadOnly
7418	// The name of the extension.
7419	Name *string `json:"name,omitempty"`
7420
7421	// Describes the properties of a Virtual Machine Scale Set Extension.
7422	Properties *VirtualMachineScaleSetExtensionProperties `json:"properties,omitempty"`
7423
7424	// READ-ONLY; Resource type
7425	Type *string `json:"type,omitempty" azure:"ro"`
7426}
7427
7428// The List VM scale set extension operation response.
7429type VirtualMachineScaleSetExtensionListResult struct {
7430	// The uri to fetch the next page of VM scale set extensions. Call ListNext() with this to fetch the next page of VM scale set extensions.
7431	NextLink *string `json:"nextLink,omitempty"`
7432
7433	// The list of VM scale set extensions.
7434	Value *[]VirtualMachineScaleSetExtension `json:"value,omitempty"`
7435}
7436
7437// VirtualMachineScaleSetExtensionListResultResponse is the response envelope for operations that return a VirtualMachineScaleSetExtensionListResult type.
7438type VirtualMachineScaleSetExtensionListResultResponse struct {
7439	// RawResponse contains the underlying HTTP response.
7440	RawResponse *http.Response
7441
7442	// The List VM scale set extension operation response.
7443	VirtualMachineScaleSetExtensionListResult *VirtualMachineScaleSetExtensionListResult
7444}
7445
7446// VirtualMachineScaleSetExtensionPollerResponse is the response envelope for operations that asynchronously return a VirtualMachineScaleSetExtension type.
7447type VirtualMachineScaleSetExtensionPollerResponse struct {
7448	// PollUntilDone will poll the service endpoint until a terminal state is reached or an error is received
7449	PollUntilDone func(ctx context.Context, frequency time.Duration) (VirtualMachineScaleSetExtensionResponse, error)
7450
7451	// Poller contains an initialized poller.
7452	Poller VirtualMachineScaleSetExtensionPoller
7453
7454	// RawResponse contains the underlying HTTP response.
7455	RawResponse *http.Response
7456}
7457
7458// Describes a virtual machine scale set extension profile.
7459type VirtualMachineScaleSetExtensionProfile struct {
7460	// The virtual machine scale set child extension resources.
7461	Extensions *[]VirtualMachineScaleSetExtension `json:"extensions,omitempty"`
7462
7463	// Specifies the time alloted for all extensions to start. The time duration should be between 15 minutes and 120 minutes (inclusive) and should be specified
7464	// in ISO 8601 format. The default value is 90
7465	// minutes (PT1H30M).
7466	// Minimum api-version: 2020-06-01
7467	ExtensionsTimeBudget *string `json:"extensionsTimeBudget,omitempty"`
7468}
7469
7470// Describes the properties of a Virtual Machine Scale Set Extension.
7471type VirtualMachineScaleSetExtensionProperties struct {
7472	// Indicates whether the extension should use a newer minor version if one is available at deployment time. Once deployed, however, the extension will not
7473	// upgrade minor versions unless redeployed, even
7474	// with this property set to true.
7475	AutoUpgradeMinorVersion *bool `json:"autoUpgradeMinorVersion,omitempty"`
7476
7477	// Indicates whether the extension should be automatically upgraded by the platform if there is a newer version of the extension available.
7478	EnableAutomaticUpgrade *bool `json:"enableAutomaticUpgrade,omitempty"`
7479
7480	// If a value is provided and is different from the previous value, the extension handler will be forced to update even if the extension configuration has
7481	// not changed.
7482	ForceUpdateTag *string `json:"forceUpdateTag,omitempty"`
7483
7484	// The extension can contain either protectedSettings or protectedSettingsFromKeyVault or no protected settings at all.
7485	ProtectedSettings interface{} `json:"protectedSettings,omitempty"`
7486
7487	// Collection of extension names after which this extension needs to be provisioned.
7488	ProvisionAfterExtensions *[]string `json:"provisionAfterExtensions,omitempty"`
7489
7490	// READ-ONLY; The provisioning state, which only appears in the response.
7491	ProvisioningState *string `json:"provisioningState,omitempty" azure:"ro"`
7492
7493	// The name of the extension handler publisher.
7494	Publisher *string `json:"publisher,omitempty"`
7495
7496	// Json formatted public settings for the extension.
7497	Settings interface{} `json:"settings,omitempty"`
7498
7499	// Specifies the type of the extension; an example is "CustomScriptExtension".
7500	Type *string `json:"type,omitempty"`
7501
7502	// Specifies the version of the script handler.
7503	TypeHandlerVersion *string `json:"typeHandlerVersion,omitempty"`
7504}
7505
7506// VirtualMachineScaleSetExtensionResponse is the response envelope for operations that return a VirtualMachineScaleSetExtension type.
7507type VirtualMachineScaleSetExtensionResponse struct {
7508	// RawResponse contains the underlying HTTP response.
7509	RawResponse *http.Response
7510
7511	// Describes a Virtual Machine Scale Set Extension.
7512	VirtualMachineScaleSetExtension *VirtualMachineScaleSetExtension
7513}
7514
7515// Describes a Virtual Machine Scale Set Extension.
7516type VirtualMachineScaleSetExtensionUpdate struct {
7517	SubResourceReadOnly
7518	// READ-ONLY; The name of the extension.
7519	Name *string `json:"name,omitempty" azure:"ro"`
7520
7521	// Describes the properties of a Virtual Machine Scale Set Extension.
7522	Properties *VirtualMachineScaleSetExtensionProperties `json:"properties,omitempty"`
7523
7524	// READ-ONLY; Resource type
7525	Type *string `json:"type,omitempty" azure:"ro"`
7526}
7527
7528// VirtualMachineScaleSetExtensionsBeginCreateOrUpdateOptions contains the optional parameters for the VirtualMachineScaleSetExtensions.BeginCreateOrUpdate
7529// method.
7530type VirtualMachineScaleSetExtensionsBeginCreateOrUpdateOptions struct {
7531	// placeholder for future optional parameters
7532}
7533
7534// VirtualMachineScaleSetExtensionsBeginDeleteOptions contains the optional parameters for the VirtualMachineScaleSetExtensions.BeginDelete method.
7535type VirtualMachineScaleSetExtensionsBeginDeleteOptions struct {
7536	// placeholder for future optional parameters
7537}
7538
7539// VirtualMachineScaleSetExtensionsBeginUpdateOptions contains the optional parameters for the VirtualMachineScaleSetExtensions.BeginUpdate method.
7540type VirtualMachineScaleSetExtensionsBeginUpdateOptions struct {
7541	// placeholder for future optional parameters
7542}
7543
7544// VirtualMachineScaleSetExtensionsGetOptions contains the optional parameters for the VirtualMachineScaleSetExtensions.Get method.
7545type VirtualMachineScaleSetExtensionsGetOptions struct {
7546	// The expand expression to apply on the operation.
7547	Expand *string
7548}
7549
7550// VirtualMachineScaleSetExtensionsListOptions contains the optional parameters for the VirtualMachineScaleSetExtensions.List method.
7551type VirtualMachineScaleSetExtensionsListOptions struct {
7552	// placeholder for future optional parameters
7553}
7554
7555// Identity for the virtual machine scale set.
7556type VirtualMachineScaleSetIDentity struct {
7557	// READ-ONLY; The principal id of virtual machine scale set identity. This property will only be provided for a system assigned identity.
7558	PrincipalID *string `json:"principalId,omitempty" azure:"ro"`
7559
7560	// READ-ONLY; The tenant id associated with the virtual machine scale set. This property will only be provided for a system assigned identity.
7561	TenantID *string `json:"tenantId,omitempty" azure:"ro"`
7562
7563	// The type of identity used for the virtual machine scale set. The type 'SystemAssigned, UserAssigned' includes both an implicitly created identity and
7564	// a set of user assigned identities. The type 'None'
7565	// will remove any identities from the virtual machine scale set.
7566	Type *ResourceIDentityType `json:"type,omitempty"`
7567
7568	// The list of user identities associated with the virtual machine scale set. The user identity dictionary key references will be ARM resource ids in the
7569	// form:
7570	// '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.
7571	UserAssignedIDentities *map[string]VirtualMachineScaleSetIDentityUserAssignedIdentitiesValue `json:"userAssignedIdentities,omitempty"`
7572}
7573
7574type VirtualMachineScaleSetIDentityUserAssignedIdentitiesValue struct {
7575	// READ-ONLY; The client id of user assigned identity.
7576	ClientID *string `json:"clientId,omitempty" azure:"ro"`
7577
7578	// READ-ONLY; The principal id of user assigned identity.
7579	PrincipalID *string `json:"principalId,omitempty" azure:"ro"`
7580}
7581
7582// Describes a virtual machine scale set network profile's IP configuration.
7583type VirtualMachineScaleSetIPConfiguration struct {
7584	SubResource
7585	// The IP configuration name.
7586	Name *string `json:"name,omitempty"`
7587
7588	// Describes a virtual machine scale set network profile's IP configuration properties.
7589	Properties *VirtualMachineScaleSetIPConfigurationProperties `json:"properties,omitempty"`
7590}
7591
7592// Describes a virtual machine scale set network profile's IP configuration properties.
7593type VirtualMachineScaleSetIPConfigurationProperties struct {
7594	// Specifies an array of references to backend address pools of application gateways. A scale set can reference backend address pools of multiple application
7595	// gateways. Multiple scale sets cannot use the
7596	// same application gateway.
7597	ApplicationGatewayBackendAddressPools *[]SubResource `json:"applicationGatewayBackendAddressPools,omitempty"`
7598
7599	// Specifies an array of references to application security group.
7600	ApplicationSecurityGroups *[]SubResource `json:"applicationSecurityGroups,omitempty"`
7601
7602	// Specifies an array of references to backend address pools of load balancers. A scale set can reference backend address pools of one public and one internal
7603	// load balancer. Multiple scale sets cannot
7604	// use the same basic sku load balancer.
7605	LoadBalancerBackendAddressPools *[]SubResource `json:"loadBalancerBackendAddressPools,omitempty"`
7606
7607	// Specifies an array of references to inbound Nat pools of the load balancers. A scale set can reference inbound nat pools of one public and one internal
7608	// load balancer. Multiple scale sets cannot use
7609	// the same basic sku load balancer.
7610	LoadBalancerInboundNatPools *[]SubResource `json:"loadBalancerInboundNatPools,omitempty"`
7611
7612	// Specifies the primary network interface in case the virtual machine has more than 1 network interface.
7613	Primary *bool `json:"primary,omitempty"`
7614
7615	// Available from Api-Version 2017-03-30 onwards, it represents whether the specific ipconfiguration is IPv4 or IPv6. Default is taken as IPv4. Possible
7616	// values are: 'IPv4' and 'IPv6'.
7617	PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"`
7618
7619	// The publicIPAddressConfiguration.
7620	PublicIPAddressConfiguration *VirtualMachineScaleSetPublicIPAddressConfiguration `json:"publicIPAddressConfiguration,omitempty"`
7621
7622	// Specifies the identifier of the subnet.
7623	Subnet *APIEntityReference `json:"subnet,omitempty"`
7624}
7625
7626// Contains the IP tag associated with the public IP address.
7627type VirtualMachineScaleSetIPTag struct {
7628	// IP tag type. Example: FirstPartyUsage.
7629	IPTagType *string `json:"ipTagType,omitempty"`
7630
7631	// IP tag associated with the public IP. Example: SQL, Storage etc.
7632	Tag *string `json:"tag,omitempty"`
7633}
7634
7635// The instance view of a virtual machine scale set.
7636type VirtualMachineScaleSetInstanceView struct {
7637	// READ-ONLY; The extensions information.
7638	Extensions *[]VirtualMachineScaleSetVMExtensionsSummary `json:"extensions,omitempty" azure:"ro"`
7639
7640	// READ-ONLY; The orchestration services information.
7641	OrchestrationServices *[]OrchestrationServiceSummary `json:"orchestrationServices,omitempty" azure:"ro"`
7642
7643	// The resource status information.
7644	Statuses *[]InstanceViewStatus `json:"statuses,omitempty"`
7645
7646	// READ-ONLY; The instance view status summary for the virtual machine scale set.
7647	VirtualMachine *VirtualMachineScaleSetInstanceViewStatusesSummary `json:"virtualMachine,omitempty" azure:"ro"`
7648}
7649
7650// VirtualMachineScaleSetInstanceViewResponse is the response envelope for operations that return a VirtualMachineScaleSetInstanceView type.
7651type VirtualMachineScaleSetInstanceViewResponse struct {
7652	// RawResponse contains the underlying HTTP response.
7653	RawResponse *http.Response
7654
7655	// The instance view of a virtual machine scale set.
7656	VirtualMachineScaleSetInstanceView *VirtualMachineScaleSetInstanceView
7657}
7658
7659// Instance view statuses summary for virtual machines of a virtual machine scale set.
7660type VirtualMachineScaleSetInstanceViewStatusesSummary struct {
7661	// READ-ONLY; The extensions information.
7662	StatusesSummary *[]VirtualMachineStatusCodeCount `json:"statusesSummary,omitempty" azure:"ro"`
7663}
7664
7665// List of Virtual Machine Scale Set OS Upgrade History operation response.
7666type VirtualMachineScaleSetListOSUpgradeHistory struct {
7667	// The uri to fetch the next page of OS Upgrade History. Call ListNext() with this to fetch the next page of history of upgrades.
7668	NextLink *string `json:"nextLink,omitempty"`
7669
7670	// The list of OS upgrades performed on the virtual machine scale set.
7671	Value *[]UpgradeOperationHistoricalStatusInfo `json:"value,omitempty"`
7672}
7673
7674// VirtualMachineScaleSetListOSUpgradeHistoryResponse is the response envelope for operations that return a VirtualMachineScaleSetListOSUpgradeHistory type.
7675type VirtualMachineScaleSetListOSUpgradeHistoryResponse struct {
7676	// RawResponse contains the underlying HTTP response.
7677	RawResponse *http.Response
7678
7679	// List of Virtual Machine Scale Set OS Upgrade History operation response.
7680	VirtualMachineScaleSetListOSUpgradeHistory *VirtualMachineScaleSetListOSUpgradeHistory
7681}
7682
7683// The List Virtual Machine operation response.
7684type VirtualMachineScaleSetListResult struct {
7685	// The uri to fetch the next page of Virtual Machine Scale Sets. Call ListNext() with this to fetch the next page of VMSS.
7686	NextLink *string `json:"nextLink,omitempty"`
7687
7688	// The list of virtual machine scale sets.
7689	Value *[]VirtualMachineScaleSet `json:"value,omitempty"`
7690}
7691
7692// VirtualMachineScaleSetListResultResponse is the response envelope for operations that return a VirtualMachineScaleSetListResult type.
7693type VirtualMachineScaleSetListResultResponse struct {
7694	// RawResponse contains the underlying HTTP response.
7695	RawResponse *http.Response
7696
7697	// The List Virtual Machine operation response.
7698	VirtualMachineScaleSetListResult *VirtualMachineScaleSetListResult
7699}
7700
7701// The Virtual Machine Scale Set List Skus operation response.
7702type VirtualMachineScaleSetListSKUsResult struct {
7703	// The uri to fetch the next page of Virtual Machine Scale Set Skus. Call ListNext() with this to fetch the next page of VMSS Skus.
7704	NextLink *string `json:"nextLink,omitempty"`
7705
7706	// The list of skus available for the virtual machine scale set.
7707	Value *[]VirtualMachineScaleSetSKU `json:"value,omitempty"`
7708}
7709
7710// VirtualMachineScaleSetListSKUsResultResponse is the response envelope for operations that return a VirtualMachineScaleSetListSKUsResult type.
7711type VirtualMachineScaleSetListSKUsResultResponse struct {
7712	// RawResponse contains the underlying HTTP response.
7713	RawResponse *http.Response
7714
7715	// The Virtual Machine Scale Set List Skus operation response.
7716	VirtualMachineScaleSetListSKUsResult *VirtualMachineScaleSetListSKUsResult
7717}
7718
7719// The List Virtual Machine operation response.
7720type VirtualMachineScaleSetListWithLinkResult struct {
7721	// The uri to fetch the next page of Virtual Machine Scale Sets. Call ListNext() with this to fetch the next page of Virtual Machine Scale Sets.
7722	NextLink *string `json:"nextLink,omitempty"`
7723
7724	// The list of virtual machine scale sets.
7725	Value *[]VirtualMachineScaleSet `json:"value,omitempty"`
7726}
7727
7728// VirtualMachineScaleSetListWithLinkResultResponse is the response envelope for operations that return a VirtualMachineScaleSetListWithLinkResult type.
7729type VirtualMachineScaleSetListWithLinkResultResponse struct {
7730	// RawResponse contains the underlying HTTP response.
7731	RawResponse *http.Response
7732
7733	// The List Virtual Machine operation response.
7734	VirtualMachineScaleSetListWithLinkResult *VirtualMachineScaleSetListWithLinkResult
7735}
7736
7737// Describes the parameters of a ScaleSet managed disk.
7738type VirtualMachineScaleSetManagedDiskParameters struct {
7739	// Specifies the customer managed disk encryption set resource id for the managed disk.
7740	DiskEncryptionSet *SubResource `json:"diskEncryptionSet,omitempty"`
7741
7742	// Specifies the storage account type for the managed disk. NOTE: UltraSSD_LRS can only be used with data disks, it cannot be used with OS Disk.
7743	StorageAccountType *StorageAccountTypes `json:"storageAccountType,omitempty"`
7744}
7745
7746// Describes a virtual machine scale set network profile's network configurations.
7747type VirtualMachineScaleSetNetworkConfiguration struct {
7748	SubResource
7749	// The network configuration name.
7750	Name *string `json:"name,omitempty"`
7751
7752	// Describes a virtual machine scale set network profile's IP configuration.
7753	Properties *VirtualMachineScaleSetNetworkConfigurationProperties `json:"properties,omitempty"`
7754}
7755
7756// Describes a virtual machines scale sets network configuration's DNS settings.
7757type VirtualMachineScaleSetNetworkConfigurationDNSSettings struct {
7758	// List of DNS servers IP addresses
7759	DNSServers *[]string `json:"dnsServers,omitempty"`
7760}
7761
7762// Describes a virtual machine scale set network profile's IP configuration.
7763type VirtualMachineScaleSetNetworkConfigurationProperties struct {
7764	// The dns settings to be applied on the network interfaces.
7765	DNSSettings *VirtualMachineScaleSetNetworkConfigurationDNSSettings `json:"dnsSettings,omitempty"`
7766
7767	// Specifies whether the network interface is accelerated networking-enabled.
7768	EnableAcceleratedNetworking *bool `json:"enableAcceleratedNetworking,omitempty"`
7769
7770	// Specifies whether the network interface is FPGA networking-enabled.
7771	EnableFpga *bool `json:"enableFpga,omitempty"`
7772
7773	// Whether IP forwarding enabled on this NIC.
7774	EnableIPForwarding *bool `json:"enableIPForwarding,omitempty"`
7775
7776	// Specifies the IP configurations of the network interface.
7777	IPConfigurations *[]VirtualMachineScaleSetIPConfiguration `json:"ipConfigurations,omitempty"`
7778
7779	// The network security group.
7780	NetworkSecurityGroup *SubResource `json:"networkSecurityGroup,omitempty"`
7781
7782	// Specifies the primary network interface in case the virtual machine has more than 1 network interface.
7783	Primary *bool `json:"primary,omitempty"`
7784}
7785
7786// Describes a virtual machine scale set network profile.
7787type VirtualMachineScaleSetNetworkProfile struct {
7788	// A reference to a load balancer probe used to determine the health of an instance in the virtual machine scale set. The reference will be in the form:
7789	// '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/probes/{probeName}'.
7790	HealthProbe *APIEntityReference `json:"healthProbe,omitempty"`
7791
7792	// The list of network configurations.
7793	NetworkInterfaceConfigurations *[]VirtualMachineScaleSetNetworkConfiguration `json:"networkInterfaceConfigurations,omitempty"`
7794}
7795
7796// Describes a virtual machine scale set operating system disk.
7797type VirtualMachineScaleSetOSDisk struct {
7798	// Specifies the caching requirements.
7799	// Possible values are:
7800	// None
7801	// ReadOnly
7802	// ReadWrite
7803	// Default: None for Standard storage. ReadOnly for Premium storage
7804	Caching *CachingTypes `json:"caching,omitempty"`
7805
7806	// Specifies how the virtual machines in the scale set should be created.
7807	// The only allowed value is: FromImage \u2013 This value is used when you are using an image to create the virtual machine. If you are using a platform
7808	// image, you also use the imageReference element
7809	// described above. If you are using a marketplace image, you also use the plan element previously described.
7810	CreateOption *DiskCreateOptionTypes `json:"createOption,omitempty"`
7811
7812	// Specifies the ephemeral disk Settings for the operating system disk used by the virtual machine scale set.
7813	DiffDiskSettings *DiffDiskSettings `json:"diffDiskSettings,omitempty"`
7814
7815	// Specifies the size of the operating system disk in gigabytes. This element can be used to overwrite the size of the disk in a virtual machine image.
7816	// This value cannot be larger than 1023 GB
7817	DiskSizeGb *int32 `json:"diskSizeGB,omitempty"`
7818
7819	// Specifies information about the unmanaged user image to base the scale set on.
7820	Image *VirtualHardDisk `json:"image,omitempty"`
7821
7822	// The managed disk parameters.
7823	ManagedDisk *VirtualMachineScaleSetManagedDiskParameters `json:"managedDisk,omitempty"`
7824
7825	// The disk name.
7826	Name *string `json:"name,omitempty"`
7827
7828	// This property allows you to specify the type of the OS that is included in the disk if creating a VM from user-image or a specialized VHD.
7829	// Possible values are:
7830	// Windows
7831	// Linux
7832	OSType *OperatingSystemTypes `json:"osType,omitempty"`
7833
7834	// Specifies the container urls that are used to store operating system disks for the scale set.
7835	VhdContainers *[]string `json:"vhdContainers,omitempty"`
7836
7837	// Specifies whether writeAccelerator should be enabled or disabled on the disk.
7838	WriteAcceleratorEnabled *bool `json:"writeAcceleratorEnabled,omitempty"`
7839}
7840
7841// Describes a virtual machine scale set OS profile.
7842type VirtualMachineScaleSetOSProfile struct {
7843	// Specifies the password of the administrator account.
7844	// Minimum-length (Windows): 8 characters
7845	// Minimum-length (Linux): 6 characters
7846	// Max-length (Windows): 123 characters
7847	// Max-length (Linux): 72 characters
7848	// Complexity requirements: 3 out of 4 conditions below need to be fulfilled
7849	// Has lower characters
7850	// Has upper characters
7851	// Has a digit
7852	// Has a special character (Regex match [\W_])
7853	// Disallowed values: "abc@123", "P@$$w0rd", "P@ssw0rd", "P@ssword123", "Pa$$word", "pass@word1", "Password!", "Password1", "Password22", "iloveyou!"
7854	// For resetting the password, see How to reset the Remote Desktop service or its login password in a Windows VM
7855	// [https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-reset-rdp?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json]
7856	// For resetting root password, see Manage users, SSH, and check or repair disks on Azure Linux VMs using the VMAccess Extension
7857	// [https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-using-vmaccess-extension?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json#reset-root-password]
7858	AdminPassword *string `json:"adminPassword,omitempty"`
7859
7860	// Specifies the name of the administrator account.
7861	// Windows-only restriction: Cannot end in "."
7862	// Disallowed values: "administrator", "admin", "user", "user1", "test", "user2", "test1", "user3", "admin1", "1", "123", "a", "actuser", "adm", "admin2",
7863	// "aspnet", "backup", "console", "david", "guest",
7864	// "john", "owner", "root", "server", "sql", "support", "support_388945a0", "sys", "test2", "test3", "user4", "user5".
7865	// Minimum-length (Linux): 1 character
7866	// Max-length (Linux): 64 characters
7867	// Max-length (Windows): 20 characters
7868	// For root access to the Linux VM, see Using root privileges on Linux virtual machines in Azure
7869	// [https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-use-root-privileges?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json]
7870	// For a list of built-in system users on Linux that should not be used in this field, see Selecting User Names for Linux on Azure
7871	// [https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-usernames?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json]
7872	AdminUsername *string `json:"adminUsername,omitempty"`
7873
7874	// Specifies the computer name prefix for all of the virtual machines in the scale set. Computer name prefixes must be 1 to 15 characters long.
7875	ComputerNamePrefix *string `json:"computerNamePrefix,omitempty"`
7876
7877	// Specifies a base-64 encoded string of custom data. The base-64 encoded string is decoded to a binary array that is saved as a file on the Virtual Machine.
7878	// The maximum length of the binary array is
7879	// 65535 bytes.
7880	// For using cloud-init for your VM, see Using cloud-init to customize a Linux VM during creation
7881	// [https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-using-cloud-init?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json]
7882	CustomData *string `json:"customData,omitempty"`
7883
7884	// Specifies the Linux operating system settings on the virtual machine.
7885	// For a list of supported Linux distributions, see Linux on Azure-Endorsed Distributions
7886	// [https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-endorsed-distros?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json]
7887	// For running non-endorsed distributions, see Information for Non-Endorsed Distributions
7888	// [https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-create-upload-generic?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json].
7889	LinuxConfiguration *LinuxConfiguration `json:"linuxConfiguration,omitempty"`
7890
7891	// Specifies set of certificates that should be installed onto the virtual machines in the scale set.
7892	Secrets *[]VaultSecretGroup `json:"secrets,omitempty"`
7893
7894	// Specifies Windows operating system settings on the virtual machine.
7895	WindowsConfiguration *WindowsConfiguration `json:"windowsConfiguration,omitempty"`
7896}
7897
7898// VirtualMachineScaleSetPollerResponse is the response envelope for operations that asynchronously return a VirtualMachineScaleSet type.
7899type VirtualMachineScaleSetPollerResponse struct {
7900	// PollUntilDone will poll the service endpoint until a terminal state is reached or an error is received
7901	PollUntilDone func(ctx context.Context, frequency time.Duration) (VirtualMachineScaleSetResponse, error)
7902
7903	// Poller contains an initialized poller.
7904	Poller VirtualMachineScaleSetPoller
7905
7906	// RawResponse contains the underlying HTTP response.
7907	RawResponse *http.Response
7908}
7909
7910// Describes the properties of a Virtual Machine Scale Set.
7911type VirtualMachineScaleSetProperties struct {
7912	// Specifies additional capabilities enabled or disabled on the Virtual Machines in the Virtual Machine Scale Set. For instance: whether the Virtual Machines
7913	// have the capability to support attaching
7914	// managed data disks with UltraSSD_LRS storage account type.
7915	AdditionalCapabilities *AdditionalCapabilities `json:"additionalCapabilities,omitempty"`
7916
7917	// Policy for automatic repairs.
7918	AutomaticRepairsPolicy *AutomaticRepairsPolicy `json:"automaticRepairsPolicy,omitempty"`
7919
7920	// When Overprovision is enabled, extensions are launched only on the requested number of VMs which are finally kept. This property will hence ensure that
7921	// the extensions do not run on the extra
7922	// overprovisioned VMs.
7923	DoNotRunExtensionsOnOverprovisionedVMS *bool `json:"doNotRunExtensionsOnOverprovisionedVMs,omitempty"`
7924
7925	// Specifies information about the dedicated host group that the virtual machine scale set resides in.
7926	// Minimum api-version: 2020-06-01.
7927	HostGroup *SubResource `json:"hostGroup,omitempty"`
7928
7929	// Specifies whether the Virtual Machine Scale Set should be overprovisioned.
7930	Overprovision *bool `json:"overprovision,omitempty"`
7931
7932	// Fault Domain count for each placement group.
7933	PlatformFaultDomainCount *int32 `json:"platformFaultDomainCount,omitempty"`
7934
7935	// READ-ONLY; The provisioning state, which only appears in the response.
7936	ProvisioningState *string `json:"provisioningState,omitempty" azure:"ro"`
7937
7938	// Specifies information about the proximity placement group that the virtual machine scale set should be assigned to.
7939	// Minimum api-version: 2018-04-01.
7940	ProximityPlacementGroup *SubResource `json:"proximityPlacementGroup,omitempty"`
7941
7942	// Specifies the scale-in policy that decides which virtual machines are chosen for removal when a Virtual Machine Scale Set is scaled-in.
7943	ScaleInPolicy *ScaleInPolicy `json:"scaleInPolicy,omitempty"`
7944
7945	// When true this limits the scale set to a single placement group, of max size 100 virtual machines. NOTE: If singlePlacementGroup is true, it may be modified
7946	// to false. However, if singlePlacementGroup
7947	// is false, it may not be modified to true.
7948	SinglePlacementGroup *bool `json:"singlePlacementGroup,omitempty"`
7949
7950	// READ-ONLY; Specifies the ID which uniquely identifies a Virtual Machine Scale Set.
7951	UniqueID *string `json:"uniqueId,omitempty" azure:"ro"`
7952
7953	// The upgrade policy.
7954	UpgradePolicy *UpgradePolicy `json:"upgradePolicy,omitempty"`
7955
7956	// The virtual machine profile.
7957	VirtualMachineProfile *VirtualMachineScaleSetVMProfile `json:"virtualMachineProfile,omitempty"`
7958
7959	// Whether to force strictly even Virtual Machine distribution cross x-zones in case there is zone outage.
7960	ZoneBalance *bool `json:"zoneBalance,omitempty"`
7961}
7962
7963// Describes a virtual machines scale set IP Configuration's PublicIPAddress configuration
7964type VirtualMachineScaleSetPublicIPAddressConfiguration struct {
7965	// The publicIP address configuration name.
7966	Name *string `json:"name,omitempty"`
7967
7968	// Describes a virtual machines scale set IP Configuration's PublicIPAddress configuration
7969	Properties *VirtualMachineScaleSetPublicIPAddressConfigurationProperties `json:"properties,omitempty"`
7970}
7971
7972// Describes a virtual machines scale sets network configuration's DNS settings.
7973type VirtualMachineScaleSetPublicIPAddressConfigurationDNSSettings struct {
7974	// The Domain name label.The concatenation of the domain name label and vm index will be the domain name labels of the PublicIPAddress resources that will
7975	// be created
7976	DomainNameLabel *string `json:"domainNameLabel,omitempty"`
7977}
7978
7979// Describes a virtual machines scale set IP Configuration's PublicIPAddress configuration
7980type VirtualMachineScaleSetPublicIPAddressConfigurationProperties struct {
7981	// The dns settings to be applied on the publicIP addresses .
7982	DNSSettings *VirtualMachineScaleSetPublicIPAddressConfigurationDNSSettings `json:"dnsSettings,omitempty"`
7983
7984	// The idle timeout of the public IP address.
7985	IDleTimeoutInMinutes *int32 `json:"idleTimeoutInMinutes,omitempty"`
7986
7987	// The list of IP tags associated with the public IP address.
7988	IPTags *[]VirtualMachineScaleSetIPTag `json:"ipTags,omitempty"`
7989
7990	// Available from Api-Version 2019-07-01 onwards, it represents whether the specific ipconfiguration is IPv4 or IPv6. Default is taken as IPv4. Possible
7991	// values are: 'IPv4' and 'IPv6'.
7992	PublicIPAddressVersion *IPVersion `json:"publicIPAddressVersion,omitempty"`
7993
7994	// The PublicIPPrefix from which to allocate publicIP addresses.
7995	PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"`
7996}
7997
7998// Describes a Virtual Machine Scale Set VM Reimage Parameters.
7999type VirtualMachineScaleSetReimageParameters struct {
8000	VirtualMachineReimageParameters
8001	// The virtual machine scale set instance ids. Omitting the virtual machine scale set instance ids will result in the operation being performed on all virtual
8002	// machines in the virtual machine scale set.
8003	InstanceIDs *[]string `json:"instanceIds,omitempty"`
8004}
8005
8006// VirtualMachineScaleSetResponse is the response envelope for operations that return a VirtualMachineScaleSet type.
8007type VirtualMachineScaleSetResponse struct {
8008	// RawResponse contains the underlying HTTP response.
8009	RawResponse *http.Response
8010
8011	// Describes a Virtual Machine Scale Set.
8012	VirtualMachineScaleSet *VirtualMachineScaleSet
8013}
8014
8015// VirtualMachineScaleSetRollingUpgradesBeginCancelOptions contains the optional parameters for the VirtualMachineScaleSetRollingUpgrades.BeginCancel method.
8016type VirtualMachineScaleSetRollingUpgradesBeginCancelOptions struct {
8017	// placeholder for future optional parameters
8018}
8019
8020// VirtualMachineScaleSetRollingUpgradesBeginStartExtensionUpgradeOptions contains the optional parameters for the VirtualMachineScaleSetRollingUpgrades.BeginStartExtensionUpgrade
8021// method.
8022type VirtualMachineScaleSetRollingUpgradesBeginStartExtensionUpgradeOptions struct {
8023	// placeholder for future optional parameters
8024}
8025
8026// VirtualMachineScaleSetRollingUpgradesBeginStartOSUpgradeOptions contains the optional parameters for the VirtualMachineScaleSetRollingUpgrades.BeginStartOSUpgrade
8027// method.
8028type VirtualMachineScaleSetRollingUpgradesBeginStartOSUpgradeOptions struct {
8029	// placeholder for future optional parameters
8030}
8031
8032// VirtualMachineScaleSetRollingUpgradesGetLatestOptions contains the optional parameters for the VirtualMachineScaleSetRollingUpgrades.GetLatest method.
8033type VirtualMachineScaleSetRollingUpgradesGetLatestOptions struct {
8034	// placeholder for future optional parameters
8035}
8036
8037// Describes an available virtual machine scale set sku.
8038type VirtualMachineScaleSetSKU struct {
8039	// READ-ONLY; Specifies the number of virtual machines in the scale set.
8040	Capacity *VirtualMachineScaleSetSKUCapacity `json:"capacity,omitempty" azure:"ro"`
8041
8042	// READ-ONLY; The type of resource the sku applies to.
8043	ResourceType *string `json:"resourceType,omitempty" azure:"ro"`
8044
8045	// READ-ONLY; The Sku.
8046	SKU *SKU `json:"sku,omitempty" azure:"ro"`
8047}
8048
8049// Describes scaling information of a sku.
8050type VirtualMachineScaleSetSKUCapacity struct {
8051	// READ-ONLY; The default capacity.
8052	DefaultCapacity *int64 `json:"defaultCapacity,omitempty" azure:"ro"`
8053
8054	// READ-ONLY; The maximum capacity that can be set.
8055	Maximum *int64 `json:"maximum,omitempty" azure:"ro"`
8056
8057	// READ-ONLY; The minimum capacity.
8058	Minimum *int64 `json:"minimum,omitempty" azure:"ro"`
8059
8060	// READ-ONLY; The scale type applicable to the sku.
8061	ScaleType *VirtualMachineScaleSetSKUScaleType `json:"scaleType,omitempty" azure:"ro"`
8062}
8063
8064// Describes a virtual machine scale set storage profile.
8065type VirtualMachineScaleSetStorageProfile struct {
8066	// Specifies the parameters that are used to add data disks to the virtual machines in the scale set.
8067	// For more information about disks, see About disks and VHDs for Azure virtual machines
8068	// [https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-about-disks-vhds?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json].
8069	DataDisks *[]VirtualMachineScaleSetDataDisk `json:"dataDisks,omitempty"`
8070
8071	// Specifies information about the image to use. You can specify information about platform images, marketplace images, or virtual machine images. This
8072	// element is required when you want to use a platform
8073	// image, marketplace image, or virtual machine image, but is not used in other creation operations.
8074	ImageReference *ImageReference `json:"imageReference,omitempty"`
8075
8076	// Specifies information about the operating system disk used by the virtual machines in the scale set.
8077	// For more information about disks, see About disks and VHDs for Azure virtual machines
8078	// [https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-about-disks-vhds?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json].
8079	OSDisk *VirtualMachineScaleSetOSDisk `json:"osDisk,omitempty"`
8080}
8081
8082// Describes a Virtual Machine Scale Set.
8083type VirtualMachineScaleSetUpdate struct {
8084	UpdateResource
8085	// The identity of the virtual machine scale set, if configured.
8086	IDentity *VirtualMachineScaleSetIDentity `json:"identity,omitempty"`
8087
8088	// The purchase plan when deploying a virtual machine scale set from VM Marketplace images.
8089	Plan *Plan `json:"plan,omitempty"`
8090
8091	// Describes the properties of a Virtual Machine Scale Set.
8092	Properties *VirtualMachineScaleSetUpdateProperties `json:"properties,omitempty"`
8093
8094	// The virtual machine scale set sku.
8095	SKU *SKU `json:"sku,omitempty"`
8096}
8097
8098// Describes a virtual machine scale set network profile's IP configuration. NOTE: The subnet of a scale set may be modified as long as the original subnet
8099// and the new subnet are in the same virtual
8100// network
8101type VirtualMachineScaleSetUpdateIPConfiguration struct {
8102	SubResource
8103	// The IP configuration name.
8104	Name *string `json:"name,omitempty"`
8105
8106	// Describes a virtual machine scale set network profile's IP configuration properties.
8107	Properties *VirtualMachineScaleSetUpdateIPConfigurationProperties `json:"properties,omitempty"`
8108}
8109
8110// Describes a virtual machine scale set network profile's IP configuration properties.
8111type VirtualMachineScaleSetUpdateIPConfigurationProperties struct {
8112	// The application gateway backend address pools.
8113	ApplicationGatewayBackendAddressPools *[]SubResource `json:"applicationGatewayBackendAddressPools,omitempty"`
8114
8115	// Specifies an array of references to application security group.
8116	ApplicationSecurityGroups *[]SubResource `json:"applicationSecurityGroups,omitempty"`
8117
8118	// The load balancer backend address pools.
8119	LoadBalancerBackendAddressPools *[]SubResource `json:"loadBalancerBackendAddressPools,omitempty"`
8120
8121	// The load balancer inbound nat pools.
8122	LoadBalancerInboundNatPools *[]SubResource `json:"loadBalancerInboundNatPools,omitempty"`
8123
8124	// Specifies the primary IP Configuration in case the network interface has more than one IP Configuration.
8125	Primary *bool `json:"primary,omitempty"`
8126
8127	// Available from Api-Version 2017-03-30 onwards, it represents whether the specific ipconfiguration is IPv4 or IPv6. Default is taken as IPv4. Possible
8128	// values are: 'IPv4' and 'IPv6'.
8129	PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"`
8130
8131	// The publicIPAddressConfiguration.
8132	PublicIPAddressConfiguration *VirtualMachineScaleSetUpdatePublicIPAddressConfiguration `json:"publicIPAddressConfiguration,omitempty"`
8133
8134	// The subnet.
8135	Subnet *APIEntityReference `json:"subnet,omitempty"`
8136}
8137
8138// Describes a virtual machine scale set network profile's network configurations.
8139type VirtualMachineScaleSetUpdateNetworkConfiguration struct {
8140	SubResource
8141	// The network configuration name.
8142	Name *string `json:"name,omitempty"`
8143
8144	// Describes a virtual machine scale set updatable network profile's IP configuration.Use this object for updating network profile's IP Configuration.
8145	Properties *VirtualMachineScaleSetUpdateNetworkConfigurationProperties `json:"properties,omitempty"`
8146}
8147
8148// Describes a virtual machine scale set updatable network profile's IP configuration.Use this object for updating network profile's IP Configuration.
8149type VirtualMachineScaleSetUpdateNetworkConfigurationProperties struct {
8150	// The dns settings to be applied on the network interfaces.
8151	DNSSettings *VirtualMachineScaleSetNetworkConfigurationDNSSettings `json:"dnsSettings,omitempty"`
8152
8153	// Specifies whether the network interface is accelerated networking-enabled.
8154	EnableAcceleratedNetworking *bool `json:"enableAcceleratedNetworking,omitempty"`
8155
8156	// Specifies whether the network interface is FPGA networking-enabled.
8157	EnableFpga *bool `json:"enableFpga,omitempty"`
8158
8159	// Whether IP forwarding enabled on this NIC.
8160	EnableIPForwarding *bool `json:"enableIPForwarding,omitempty"`
8161
8162	// The virtual machine scale set IP Configuration.
8163	IPConfigurations *[]VirtualMachineScaleSetUpdateIPConfiguration `json:"ipConfigurations,omitempty"`
8164
8165	// The network security group.
8166	NetworkSecurityGroup *SubResource `json:"networkSecurityGroup,omitempty"`
8167
8168	// Whether this is a primary NIC on a virtual machine.
8169	Primary *bool `json:"primary,omitempty"`
8170}
8171
8172// Describes a virtual machine scale set network profile.
8173type VirtualMachineScaleSetUpdateNetworkProfile struct {
8174	// A reference to a load balancer probe used to determine the health of an instance in the virtual machine scale set. The reference will be in the form:
8175	// '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/probes/{probeName}'.
8176	HealthProbe *APIEntityReference `json:"healthProbe,omitempty"`
8177
8178	// The list of network configurations.
8179	NetworkInterfaceConfigurations *[]VirtualMachineScaleSetUpdateNetworkConfiguration `json:"networkInterfaceConfigurations,omitempty"`
8180}
8181
8182// Describes virtual machine scale set operating system disk Update Object. This should be used for Updating VMSS OS Disk.
8183type VirtualMachineScaleSetUpdateOSDisk struct {
8184	// The caching type.
8185	Caching *CachingTypes `json:"caching,omitempty"`
8186
8187	// Specifies the size of the operating system disk in gigabytes. This element can be used to overwrite the size of the disk in a virtual machine image.
8188	// This value cannot be larger than 1023 GB
8189	DiskSizeGb *int32 `json:"diskSizeGB,omitempty"`
8190
8191	// The Source User Image VirtualHardDisk. This VirtualHardDisk will be copied before using it to attach to the Virtual Machine. If SourceImage is provided,
8192	// the destination VirtualHardDisk should not
8193	// exist.
8194	Image *VirtualHardDisk `json:"image,omitempty"`
8195
8196	// The managed disk parameters.
8197	ManagedDisk *VirtualMachineScaleSetManagedDiskParameters `json:"managedDisk,omitempty"`
8198
8199	// The list of virtual hard disk container uris.
8200	VhdContainers *[]string `json:"vhdContainers,omitempty"`
8201
8202	// Specifies whether writeAccelerator should be enabled or disabled on the disk.
8203	WriteAcceleratorEnabled *bool `json:"writeAcceleratorEnabled,omitempty"`
8204}
8205
8206// Describes a virtual machine scale set OS profile.
8207type VirtualMachineScaleSetUpdateOSProfile struct {
8208	// A base-64 encoded string of custom data.
8209	CustomData *string `json:"customData,omitempty"`
8210
8211	// The Linux Configuration of the OS profile.
8212	LinuxConfiguration *LinuxConfiguration `json:"linuxConfiguration,omitempty"`
8213
8214	// The List of certificates for addition to the VM.
8215	Secrets *[]VaultSecretGroup `json:"secrets,omitempty"`
8216
8217	// The Windows Configuration of the OS profile.
8218	WindowsConfiguration *WindowsConfiguration `json:"windowsConfiguration,omitempty"`
8219}
8220
8221// Describes the properties of a Virtual Machine Scale Set.
8222type VirtualMachineScaleSetUpdateProperties struct {
8223	// Specifies additional capabilities enabled or disabled on the Virtual Machines in the Virtual Machine Scale Set. For instance: whether the Virtual Machines
8224	// have the capability to support attaching
8225	// managed data disks with UltraSSD_LRS storage account type.
8226	AdditionalCapabilities *AdditionalCapabilities `json:"additionalCapabilities,omitempty"`
8227
8228	// Policy for automatic repairs.
8229	AutomaticRepairsPolicy *AutomaticRepairsPolicy `json:"automaticRepairsPolicy,omitempty"`
8230
8231	// When Overprovision is enabled, extensions are launched only on the requested number of VMs which are finally kept. This property will hence ensure that
8232	// the extensions do not run on the extra
8233	// overprovisioned VMs.
8234	DoNotRunExtensionsOnOverprovisionedVMS *bool `json:"doNotRunExtensionsOnOverprovisionedVMs,omitempty"`
8235
8236	// Specifies whether the Virtual Machine Scale Set should be overprovisioned.
8237	Overprovision *bool `json:"overprovision,omitempty"`
8238
8239	// Specifies information about the proximity placement group that the virtual machine scale set should be assigned to.
8240	// Minimum api-version: 2018-04-01.
8241	ProximityPlacementGroup *SubResource `json:"proximityPlacementGroup,omitempty"`
8242
8243	// Specifies the scale-in policy that decides which virtual machines are chosen for removal when a Virtual Machine Scale Set is scaled-in.
8244	ScaleInPolicy *ScaleInPolicy `json:"scaleInPolicy,omitempty"`
8245
8246	// When true this limits the scale set to a single placement group, of max size 100 virtual machines. NOTE: If singlePlacementGroup is true, it may be modified
8247	// to false. However, if singlePlacementGroup
8248	// is false, it may not be modified to true.
8249	SinglePlacementGroup *bool `json:"singlePlacementGroup,omitempty"`
8250
8251	// The upgrade policy.
8252	UpgradePolicy *UpgradePolicy `json:"upgradePolicy,omitempty"`
8253
8254	// The virtual machine profile.
8255	VirtualMachineProfile *VirtualMachineScaleSetUpdateVMProfile `json:"virtualMachineProfile,omitempty"`
8256}
8257
8258// Describes a virtual machines scale set IP Configuration's PublicIPAddress configuration
8259type VirtualMachineScaleSetUpdatePublicIPAddressConfiguration struct {
8260	// The publicIP address configuration name.
8261	Name *string `json:"name,omitempty"`
8262
8263	// Describes a virtual machines scale set IP Configuration's PublicIPAddress configuration
8264	Properties *VirtualMachineScaleSetUpdatePublicIPAddressConfigurationProperties `json:"properties,omitempty"`
8265}
8266
8267// Describes a virtual machines scale set IP Configuration's PublicIPAddress configuration
8268type VirtualMachineScaleSetUpdatePublicIPAddressConfigurationProperties struct {
8269	// The dns settings to be applied on the publicIP addresses .
8270	DNSSettings *VirtualMachineScaleSetPublicIPAddressConfigurationDNSSettings `json:"dnsSettings,omitempty"`
8271
8272	// The idle timeout of the public IP address.
8273	IDleTimeoutInMinutes *int32 `json:"idleTimeoutInMinutes,omitempty"`
8274}
8275
8276// Describes a virtual machine scale set storage profile.
8277type VirtualMachineScaleSetUpdateStorageProfile struct {
8278	// The data disks.
8279	DataDisks *[]VirtualMachineScaleSetDataDisk `json:"dataDisks,omitempty"`
8280
8281	// The image reference.
8282	ImageReference *ImageReference `json:"imageReference,omitempty"`
8283
8284	// The OS disk.
8285	OSDisk *VirtualMachineScaleSetUpdateOSDisk `json:"osDisk,omitempty"`
8286}
8287
8288// Describes a virtual machine scale set virtual machine profile.
8289type VirtualMachineScaleSetUpdateVMProfile struct {
8290	// Specifies the billing related details of a Azure Spot VMSS.
8291	// Minimum api-version: 2019-03-01.
8292	BillingProfile *BillingProfile `json:"billingProfile,omitempty"`
8293
8294	// The virtual machine scale set diagnostics profile.
8295	DiagnosticsProfile *DiagnosticsProfile `json:"diagnosticsProfile,omitempty"`
8296
8297	// The virtual machine scale set extension profile.
8298	ExtensionProfile *VirtualMachineScaleSetExtensionProfile `json:"extensionProfile,omitempty"`
8299
8300	// The license type, which is for bring your own license scenario.
8301	LicenseType *string `json:"licenseType,omitempty"`
8302
8303	// The virtual machine scale set network profile.
8304	NetworkProfile *VirtualMachineScaleSetUpdateNetworkProfile `json:"networkProfile,omitempty"`
8305
8306	// The virtual machine scale set OS profile.
8307	OSProfile *VirtualMachineScaleSetUpdateOSProfile `json:"osProfile,omitempty"`
8308
8309	// Specifies Scheduled Event related configurations.
8310	ScheduledEventsProfile *ScheduledEventsProfile `json:"scheduledEventsProfile,omitempty"`
8311
8312	// The virtual machine scale set Security profile
8313	SecurityProfile *SecurityProfile `json:"securityProfile,omitempty"`
8314
8315	// The virtual machine scale set storage profile.
8316	StorageProfile *VirtualMachineScaleSetUpdateStorageProfile `json:"storageProfile,omitempty"`
8317}
8318
8319// Describes a virtual machine scale set virtual machine.
8320type VirtualMachineScaleSetVM struct {
8321	Resource
8322	// READ-ONLY; The virtual machine instance ID.
8323	InstanceID *string `json:"instanceId,omitempty" azure:"ro"`
8324
8325	// Specifies information about the marketplace image used to create the virtual machine. This element is only used for marketplace images. Before you can
8326	// use a marketplace image from an API, you must
8327	// enable the image for programmatic use. In the Azure portal, find the marketplace image that you want to use and then click Want to deploy programmatically,
8328	// Get Started ->. Enter any required
8329	// information and then click Save.
8330	Plan *Plan `json:"plan,omitempty"`
8331
8332	// Describes the properties of a virtual machine scale set virtual machine.
8333	Properties *VirtualMachineScaleSetVMProperties `json:"properties,omitempty"`
8334
8335	// READ-ONLY; The virtual machine child extension resources.
8336	Resources *[]VirtualMachineExtension `json:"resources,omitempty" azure:"ro"`
8337
8338	// READ-ONLY; The virtual machine SKU.
8339	SKU *SKU `json:"sku,omitempty" azure:"ro"`
8340
8341	// READ-ONLY; The virtual machine zones.
8342	Zones *[]string `json:"zones,omitempty" azure:"ro"`
8343}
8344
8345// Describes a VMSS VM Extension.
8346type VirtualMachineScaleSetVMExtension struct {
8347	SubResourceReadOnly
8348	// READ-ONLY; The name of the extension.
8349	Name *string `json:"name,omitempty" azure:"ro"`
8350
8351	// Describes the properties of a Virtual Machine Extension.
8352	Properties *VirtualMachineExtensionProperties `json:"properties,omitempty"`
8353
8354	// READ-ONLY; Resource type
8355	Type *string `json:"type,omitempty" azure:"ro"`
8356}
8357
8358// VirtualMachineScaleSetVMExtensionPollerResponse is the response envelope for operations that asynchronously return a VirtualMachineScaleSetVMExtension
8359// type.
8360type VirtualMachineScaleSetVMExtensionPollerResponse struct {
8361	// PollUntilDone will poll the service endpoint until a terminal state is reached or an error is received
8362	PollUntilDone func(ctx context.Context, frequency time.Duration) (VirtualMachineScaleSetVMExtensionResponse, error)
8363
8364	// Poller contains an initialized poller.
8365	Poller VirtualMachineScaleSetVMExtensionPoller
8366
8367	// RawResponse contains the underlying HTTP response.
8368	RawResponse *http.Response
8369}
8370
8371// VirtualMachineScaleSetVMExtensionResponse is the response envelope for operations that return a VirtualMachineScaleSetVMExtension type.
8372type VirtualMachineScaleSetVMExtensionResponse struct {
8373	// RawResponse contains the underlying HTTP response.
8374	RawResponse *http.Response
8375
8376	// Describes a VMSS VM Extension.
8377	VirtualMachineScaleSetVMExtension *VirtualMachineScaleSetVMExtension
8378}
8379
8380// Describes a VMSS VM Extension.
8381type VirtualMachineScaleSetVMExtensionUpdate struct {
8382	SubResourceReadOnly
8383	// READ-ONLY; The name of the extension.
8384	Name *string `json:"name,omitempty" azure:"ro"`
8385
8386	// Describes the properties of a Virtual Machine Extension.
8387	Properties *VirtualMachineExtensionUpdateProperties `json:"properties,omitempty"`
8388
8389	// READ-ONLY; Resource type
8390	Type *string `json:"type,omitempty" azure:"ro"`
8391}
8392
8393// VirtualMachineScaleSetVMExtensionsBeginCreateOrUpdateOptions contains the optional parameters for the VirtualMachineScaleSetVMExtensions.BeginCreateOrUpdate
8394// method.
8395type VirtualMachineScaleSetVMExtensionsBeginCreateOrUpdateOptions struct {
8396	// placeholder for future optional parameters
8397}
8398
8399// VirtualMachineScaleSetVMExtensionsBeginDeleteOptions contains the optional parameters for the VirtualMachineScaleSetVMExtensions.BeginDelete method.
8400type VirtualMachineScaleSetVMExtensionsBeginDeleteOptions struct {
8401	// placeholder for future optional parameters
8402}
8403
8404// VirtualMachineScaleSetVMExtensionsBeginUpdateOptions contains the optional parameters for the VirtualMachineScaleSetVMExtensions.BeginUpdate method.
8405type VirtualMachineScaleSetVMExtensionsBeginUpdateOptions struct {
8406	// placeholder for future optional parameters
8407}
8408
8409// VirtualMachineScaleSetVMExtensionsGetOptions contains the optional parameters for the VirtualMachineScaleSetVMExtensions.Get method.
8410type VirtualMachineScaleSetVMExtensionsGetOptions struct {
8411	// The expand expression to apply on the operation.
8412	Expand *string
8413}
8414
8415// VirtualMachineScaleSetVMExtensionsListOptions contains the optional parameters for the VirtualMachineScaleSetVMExtensions.List method.
8416type VirtualMachineScaleSetVMExtensionsListOptions struct {
8417	// The expand expression to apply on the operation.
8418	Expand *string
8419}
8420
8421// The List VMSS VM Extension operation response
8422type VirtualMachineScaleSetVMExtensionsListResult struct {
8423	// The list of VMSS VM extensions
8424	Value *[]VirtualMachineScaleSetVMExtension `json:"value,omitempty"`
8425}
8426
8427// VirtualMachineScaleSetVMExtensionsListResultResponse is the response envelope for operations that return a VirtualMachineScaleSetVMExtensionsListResult
8428// type.
8429type VirtualMachineScaleSetVMExtensionsListResultResponse struct {
8430	// RawResponse contains the underlying HTTP response.
8431	RawResponse *http.Response
8432
8433	// The List VMSS VM Extension operation response
8434	VirtualMachineScaleSetVMExtensionsListResult *VirtualMachineScaleSetVMExtensionsListResult
8435}
8436
8437// Extensions summary for virtual machines of a virtual machine scale set.
8438type VirtualMachineScaleSetVMExtensionsSummary struct {
8439	// READ-ONLY; The extension name.
8440	Name *string `json:"name,omitempty" azure:"ro"`
8441
8442	// READ-ONLY; The extensions information.
8443	StatusesSummary *[]VirtualMachineStatusCodeCount `json:"statusesSummary,omitempty" azure:"ro"`
8444}
8445
8446// Specifies a list of virtual machine instance IDs from the VM scale set.
8447type VirtualMachineScaleSetVMInstanceIDs struct {
8448	// The virtual machine scale set instance ids. Omitting the virtual machine scale set instance ids will result in the operation being performed on all virtual
8449	// machines in the virtual machine scale set.
8450	InstanceIDs *[]string `json:"instanceIds,omitempty"`
8451}
8452
8453// Specifies a list of virtual machine instance IDs from the VM scale set.
8454type VirtualMachineScaleSetVMInstanceRequiredIDs struct {
8455	// The virtual machine scale set instance ids.
8456	InstanceIDs *[]string `json:"instanceIds,omitempty"`
8457}
8458
8459// The instance view of a virtual machine scale set VM.
8460type VirtualMachineScaleSetVMInstanceView struct {
8461	// READ-ONLY; Resource id of the dedicated host, on which the virtual machine is allocated through automatic placement, when the virtual machine is associated
8462	// with a dedicated host group that has automatic
8463	// placement enabled.
8464	// Minimum api-version: 2020-06-01.
8465	AssignedHost *string `json:"assignedHost,omitempty" azure:"ro"`
8466
8467	// Boot Diagnostics is a debugging feature which allows you to view Console Output and Screenshot to diagnose VM status.
8468	// You can easily view the output of your console log.
8469	// Azure also enables you to see a screenshot of the VM from the hypervisor.
8470	BootDiagnostics *BootDiagnosticsInstanceView `json:"bootDiagnostics,omitempty"`
8471
8472	// The disks information.
8473	Disks *[]DiskInstanceView `json:"disks,omitempty"`
8474
8475	// The extensions information.
8476	Extensions *[]VirtualMachineExtensionInstanceView `json:"extensions,omitempty"`
8477
8478	// The Maintenance Operation status on the virtual machine.
8479	MaintenanceRedeployStatus *MaintenanceRedeployStatus `json:"maintenanceRedeployStatus,omitempty"`
8480
8481	// The placement group in which the VM is running. If the VM is deallocated it will not have a placementGroupId.
8482	PlacementGroupID *string `json:"placementGroupId,omitempty"`
8483
8484	// The Fault Domain count.
8485	PlatformFaultDomain *int32 `json:"platformFaultDomain,omitempty"`
8486
8487	// The Update Domain count.
8488	PlatformUpdateDomain *int32 `json:"platformUpdateDomain,omitempty"`
8489
8490	// The Remote desktop certificate thumbprint.
8491	RdpThumbPrint *string `json:"rdpThumbPrint,omitempty"`
8492
8493	// The resource status information.
8494	Statuses *[]InstanceViewStatus `json:"statuses,omitempty"`
8495
8496	// The VM Agent running on the virtual machine.
8497	VMAgent *VirtualMachineAgentInstanceView `json:"vmAgent,omitempty"`
8498
8499	// READ-ONLY; The health status for the VM.
8500	VMHealth *VirtualMachineHealthStatus `json:"vmHealth,omitempty" azure:"ro"`
8501}
8502
8503// VirtualMachineScaleSetVMInstanceViewResponse is the response envelope for operations that return a VirtualMachineScaleSetVMInstanceView type.
8504type VirtualMachineScaleSetVMInstanceViewResponse struct {
8505	// RawResponse contains the underlying HTTP response.
8506	RawResponse *http.Response
8507
8508	// The instance view of a virtual machine scale set VM.
8509	VirtualMachineScaleSetVMInstanceView *VirtualMachineScaleSetVMInstanceView
8510}
8511
8512// The List Virtual Machine Scale Set VMs operation response.
8513type VirtualMachineScaleSetVMListResult struct {
8514	// The uri to fetch the next page of Virtual Machine Scale Set VMs. Call ListNext() with this to fetch the next page of VMSS VMs
8515	NextLink *string `json:"nextLink,omitempty"`
8516
8517	// The list of virtual machine scale sets VMs.
8518	Value *[]VirtualMachineScaleSetVM `json:"value,omitempty"`
8519}
8520
8521// VirtualMachineScaleSetVMListResultResponse is the response envelope for operations that return a VirtualMachineScaleSetVMListResult type.
8522type VirtualMachineScaleSetVMListResultResponse struct {
8523	// RawResponse contains the underlying HTTP response.
8524	RawResponse *http.Response
8525
8526	// The List Virtual Machine Scale Set VMs operation response.
8527	VirtualMachineScaleSetVMListResult *VirtualMachineScaleSetVMListResult
8528}
8529
8530// Describes a virtual machine scale set VM network profile.
8531type VirtualMachineScaleSetVMNetworkProfileConfiguration struct {
8532	// The list of network configurations.
8533	NetworkInterfaceConfigurations *[]VirtualMachineScaleSetNetworkConfiguration `json:"networkInterfaceConfigurations,omitempty"`
8534}
8535
8536// VirtualMachineScaleSetVMPollerResponse is the response envelope for operations that asynchronously return a VirtualMachineScaleSetVM type.
8537type VirtualMachineScaleSetVMPollerResponse struct {
8538	// PollUntilDone will poll the service endpoint until a terminal state is reached or an error is received
8539	PollUntilDone func(ctx context.Context, frequency time.Duration) (VirtualMachineScaleSetVMResponse, error)
8540
8541	// Poller contains an initialized poller.
8542	Poller VirtualMachineScaleSetVMPoller
8543
8544	// RawResponse contains the underlying HTTP response.
8545	RawResponse *http.Response
8546}
8547
8548// Describes a virtual machine scale set virtual machine profile.
8549type VirtualMachineScaleSetVMProfile struct {
8550	// Specifies the billing related details of a Azure Spot VMSS.
8551	// Minimum api-version: 2019-03-01.
8552	BillingProfile *BillingProfile `json:"billingProfile,omitempty"`
8553
8554	// Specifies the boot diagnostic settings state.
8555	// Minimum api-version: 2015-06-15.
8556	DiagnosticsProfile *DiagnosticsProfile `json:"diagnosticsProfile,omitempty"`
8557
8558	// Specifies the eviction policy for the Azure Spot virtual machine and Azure Spot scale set.
8559	// For Azure Spot virtual machines, both 'Deallocate' and 'Delete' are supported and the minimum api-version is 2019-03-01.
8560	// For Azure Spot scale sets, both 'Deallocate' and 'Delete' are supported and the minimum api-version is 2017-10-30-preview.
8561	EvictionPolicy *VirtualMachineEvictionPolicyTypes `json:"evictionPolicy,omitempty"`
8562
8563	// Specifies a collection of settings for extensions installed on virtual machines in the scale set.
8564	ExtensionProfile *VirtualMachineScaleSetExtensionProfile `json:"extensionProfile,omitempty"`
8565
8566	// Specifies that the image or disk that is being used was licensed on-premises.
8567	// Possible values for Windows Server operating system are:
8568	// WindowsClient
8569	// WindowsServer
8570	// Possible values for Linux Server operating system are:
8571	// RHELBYOS (for RHEL)
8572	// SLESBYOS (for SUSE)
8573	// For more information, see Azure Hybrid Use Benefit for Windows Server [https://docs.microsoft.com/azure/virtual-machines/windows/hybrid-use-benefit-licensing]
8574	// Azure Hybrid Use Benefit for Linux Server [https://docs.microsoft.com/azure/virtual-machines/linux/azure-hybrid-benefit-linux]
8575	// Minimum api-version: 2015-06-15
8576	LicenseType *string `json:"licenseType,omitempty"`
8577
8578	// Specifies properties of the network interfaces of the virtual machines in the scale set.
8579	NetworkProfile *VirtualMachineScaleSetNetworkProfile `json:"networkProfile,omitempty"`
8580
8581	// Specifies the operating system settings for the virtual machines in the scale set.
8582	OSProfile *VirtualMachineScaleSetOSProfile `json:"osProfile,omitempty"`
8583
8584	// Specifies the priority for the virtual machines in the scale set.
8585	// Minimum api-version: 2017-10-30-preview
8586	Priority *VirtualMachinePriorityTypes `json:"priority,omitempty"`
8587
8588	// Specifies Scheduled Event related configurations.
8589	ScheduledEventsProfile *ScheduledEventsProfile `json:"scheduledEventsProfile,omitempty"`
8590
8591	// Specifies the Security related profile settings for the virtual machines in the scale set.
8592	SecurityProfile *SecurityProfile `json:"securityProfile,omitempty"`
8593
8594	// Specifies the storage settings for the virtual machine disks.
8595	StorageProfile *VirtualMachineScaleSetStorageProfile `json:"storageProfile,omitempty"`
8596}
8597
8598// Describes the properties of a virtual machine scale set virtual machine.
8599type VirtualMachineScaleSetVMProperties struct {
8600	// Specifies additional capabilities enabled or disabled on the virtual machine in the scale set. For instance: whether the virtual machine has the capability
8601	// to support attaching managed data disks with
8602	// UltraSSD_LRS storage account type.
8603	AdditionalCapabilities *AdditionalCapabilities `json:"additionalCapabilities,omitempty"`
8604
8605	// Specifies information about the availability set that the virtual machine should be assigned to. Virtual machines specified in the same availability
8606	// set are allocated to different nodes to maximize
8607	// availability. For more information about availability sets, see Manage the availability of virtual machines
8608	// [https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-manage-availability?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json].
8609	// For more information on Azure planned maintenance, see Planned maintenance for virtual machines in Azure
8610	// [https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-planned-maintenance?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json]
8611	// Currently, a VM can only be added to availability set at creation time. An existing VM cannot be added to an availability set.
8612	AvailabilitySet *SubResource `json:"availabilitySet,omitempty"`
8613
8614	// Specifies the boot diagnostic settings state.
8615	// Minimum api-version: 2015-06-15.
8616	DiagnosticsProfile *DiagnosticsProfile `json:"diagnosticsProfile,omitempty"`
8617
8618	// Specifies the hardware settings for the virtual machine.
8619	HardwareProfile *HardwareProfile `json:"hardwareProfile,omitempty"`
8620
8621	// READ-ONLY; The virtual machine instance view.
8622	InstanceView *VirtualMachineScaleSetVMInstanceView `json:"instanceView,omitempty" azure:"ro"`
8623
8624	// READ-ONLY; Specifies whether the latest model has been applied to the virtual machine.
8625	LatestModelApplied *bool `json:"latestModelApplied,omitempty" azure:"ro"`
8626
8627	// Specifies that the image or disk that is being used was licensed on-premises.
8628	// Possible values for Windows Server operating system are:
8629	// WindowsClient
8630	// WindowsServer
8631	// Possible values for Linux Server operating system are:
8632	// RHELBYOS (for RHEL)
8633	// SLESBYOS (for SUSE)
8634	// For more information, see Azure Hybrid Use Benefit for Windows Server [https://docs.microsoft.com/azure/virtual-machines/windows/hybrid-use-benefit-licensing]
8635	// Azure Hybrid Use Benefit for Linux Server [https://docs.microsoft.com/azure/virtual-machines/linux/azure-hybrid-benefit-linux]
8636	// Minimum api-version: 2015-06-15
8637	LicenseType *string `json:"licenseType,omitempty"`
8638
8639	// READ-ONLY; Specifies whether the model applied to the virtual machine is the model of the virtual machine scale set or the customized model for the virtual
8640	// machine.
8641	ModelDefinitionApplied *string `json:"modelDefinitionApplied,omitempty" azure:"ro"`
8642
8643	// Specifies the network interfaces of the virtual machine.
8644	NetworkProfile *NetworkProfile `json:"networkProfile,omitempty"`
8645
8646	// Specifies the network profile configuration of the virtual machine.
8647	NetworkProfileConfiguration *VirtualMachineScaleSetVMNetworkProfileConfiguration `json:"networkProfileConfiguration,omitempty"`
8648
8649	// Specifies the operating system settings for the virtual machine.
8650	OSProfile *OSProfile `json:"osProfile,omitempty"`
8651
8652	// Specifies the protection policy of the virtual machine.
8653	ProtectionPolicy *VirtualMachineScaleSetVMProtectionPolicy `json:"protectionPolicy,omitempty"`
8654
8655	// READ-ONLY; The provisioning state, which only appears in the response.
8656	ProvisioningState *string `json:"provisioningState,omitempty" azure:"ro"`
8657
8658	// Specifies the Security related profile settings for the virtual machine.
8659	SecurityProfile *SecurityProfile `json:"securityProfile,omitempty"`
8660
8661	// Specifies the storage settings for the virtual machine disks.
8662	StorageProfile *StorageProfile `json:"storageProfile,omitempty"`
8663
8664	// READ-ONLY; Azure VM unique ID.
8665	VMID *string `json:"vmId,omitempty" azure:"ro"`
8666}
8667
8668// The protection policy of a virtual machine scale set VM.
8669type VirtualMachineScaleSetVMProtectionPolicy struct {
8670	// Indicates that the virtual machine scale set VM shouldn't be considered for deletion during a scale-in operation.
8671	ProtectFromScaleIn *bool `json:"protectFromScaleIn,omitempty"`
8672
8673	// Indicates that model updates or actions (including scale-in) initiated on the virtual machine scale set should not be applied to the virtual machine
8674	// scale set VM.
8675	ProtectFromScaleSetActions *bool `json:"protectFromScaleSetActions,omitempty"`
8676}
8677
8678// Describes a Virtual Machine Scale Set VM Reimage Parameters.
8679type VirtualMachineScaleSetVMReimageParameters struct {
8680	VirtualMachineReimageParameters
8681}
8682
8683// VirtualMachineScaleSetVMResponse is the response envelope for operations that return a VirtualMachineScaleSetVM type.
8684type VirtualMachineScaleSetVMResponse struct {
8685	// RawResponse contains the underlying HTTP response.
8686	RawResponse *http.Response
8687
8688	// Describes a virtual machine scale set virtual machine.
8689	VirtualMachineScaleSetVM *VirtualMachineScaleSetVM
8690}
8691
8692// VirtualMachineScaleSetVMRunCommandsBeginCreateOrUpdateOptions contains the optional parameters for the VirtualMachineScaleSetVMRunCommands.BeginCreateOrUpdate
8693// method.
8694type VirtualMachineScaleSetVMRunCommandsBeginCreateOrUpdateOptions struct {
8695	// placeholder for future optional parameters
8696}
8697
8698// VirtualMachineScaleSetVMRunCommandsBeginDeleteOptions contains the optional parameters for the VirtualMachineScaleSetVMRunCommands.BeginDelete method.
8699type VirtualMachineScaleSetVMRunCommandsBeginDeleteOptions struct {
8700	// placeholder for future optional parameters
8701}
8702
8703// VirtualMachineScaleSetVMRunCommandsBeginUpdateOptions contains the optional parameters for the VirtualMachineScaleSetVMRunCommands.BeginUpdate method.
8704type VirtualMachineScaleSetVMRunCommandsBeginUpdateOptions struct {
8705	// placeholder for future optional parameters
8706}
8707
8708// VirtualMachineScaleSetVMRunCommandsGetOptions contains the optional parameters for the VirtualMachineScaleSetVMRunCommands.Get method.
8709type VirtualMachineScaleSetVMRunCommandsGetOptions struct {
8710	// The expand expression to apply on the operation.
8711	Expand *string
8712}
8713
8714// VirtualMachineScaleSetVMRunCommandsListOptions contains the optional parameters for the VirtualMachineScaleSetVMRunCommands.List method.
8715type VirtualMachineScaleSetVMRunCommandsListOptions struct {
8716	// The expand expression to apply on the operation.
8717	Expand *string
8718}
8719
8720// VirtualMachineScaleSetVMSBeginDeallocateOptions contains the optional parameters for the VirtualMachineScaleSetVMS.BeginDeallocate method.
8721type VirtualMachineScaleSetVMSBeginDeallocateOptions struct {
8722	// placeholder for future optional parameters
8723}
8724
8725// VirtualMachineScaleSetVMSBeginDeleteOptions contains the optional parameters for the VirtualMachineScaleSetVMS.BeginDelete method.
8726type VirtualMachineScaleSetVMSBeginDeleteOptions struct {
8727	// placeholder for future optional parameters
8728}
8729
8730// VirtualMachineScaleSetVMSBeginPerformMaintenanceOptions contains the optional parameters for the VirtualMachineScaleSetVMS.BeginPerformMaintenance method.
8731type VirtualMachineScaleSetVMSBeginPerformMaintenanceOptions struct {
8732	// placeholder for future optional parameters
8733}
8734
8735// VirtualMachineScaleSetVMSBeginPowerOffOptions contains the optional parameters for the VirtualMachineScaleSetVMS.BeginPowerOff method.
8736type VirtualMachineScaleSetVMSBeginPowerOffOptions struct {
8737	// The parameter to request non-graceful VM shutdown. True value for this flag indicates non-graceful shutdown whereas false indicates otherwise. Default
8738	// value for this flag is false if not specified
8739	SkipShutdown *bool
8740}
8741
8742// VirtualMachineScaleSetVMSBeginRedeployOptions contains the optional parameters for the VirtualMachineScaleSetVMS.BeginRedeploy method.
8743type VirtualMachineScaleSetVMSBeginRedeployOptions struct {
8744	// placeholder for future optional parameters
8745}
8746
8747// VirtualMachineScaleSetVMSBeginReimageAllOptions contains the optional parameters for the VirtualMachineScaleSetVMS.BeginReimageAll method.
8748type VirtualMachineScaleSetVMSBeginReimageAllOptions struct {
8749	// placeholder for future optional parameters
8750}
8751
8752// VirtualMachineScaleSetVMSBeginReimageOptions contains the optional parameters for the VirtualMachineScaleSetVMS.BeginReimage method.
8753type VirtualMachineScaleSetVMSBeginReimageOptions struct {
8754	// Parameters for the Reimaging Virtual machine in ScaleSet.
8755	VMScaleSetVMReimageInput *VirtualMachineReimageParameters
8756}
8757
8758// VirtualMachineScaleSetVMSBeginRestartOptions contains the optional parameters for the VirtualMachineScaleSetVMS.BeginRestart method.
8759type VirtualMachineScaleSetVMSBeginRestartOptions struct {
8760	// placeholder for future optional parameters
8761}
8762
8763// VirtualMachineScaleSetVMSBeginRunCommandOptions contains the optional parameters for the VirtualMachineScaleSetVMS.BeginRunCommand method.
8764type VirtualMachineScaleSetVMSBeginRunCommandOptions struct {
8765	// placeholder for future optional parameters
8766}
8767
8768// VirtualMachineScaleSetVMSBeginStartOptions contains the optional parameters for the VirtualMachineScaleSetVMS.BeginStart method.
8769type VirtualMachineScaleSetVMSBeginStartOptions struct {
8770	// placeholder for future optional parameters
8771}
8772
8773// VirtualMachineScaleSetVMSBeginUpdateOptions contains the optional parameters for the VirtualMachineScaleSetVMS.BeginUpdate method.
8774type VirtualMachineScaleSetVMSBeginUpdateOptions struct {
8775	// placeholder for future optional parameters
8776}
8777
8778// VirtualMachineScaleSetVMSGetInstanceViewOptions contains the optional parameters for the VirtualMachineScaleSetVMS.GetInstanceView method.
8779type VirtualMachineScaleSetVMSGetInstanceViewOptions struct {
8780	// placeholder for future optional parameters
8781}
8782
8783// VirtualMachineScaleSetVMSGetOptions contains the optional parameters for the VirtualMachineScaleSetVMS.Get method.
8784type VirtualMachineScaleSetVMSGetOptions struct {
8785	// The expand expression to apply on the operation.
8786	Expand *string
8787}
8788
8789// VirtualMachineScaleSetVMSListOptions contains the optional parameters for the VirtualMachineScaleSetVMS.List method.
8790type VirtualMachineScaleSetVMSListOptions struct {
8791	// The expand expression to apply to the operation. Allowed values are 'instanceView'.
8792	Expand *string
8793	// The filter to apply to the operation. Allowed values are 'startswith(instanceView/statuses/code, 'PowerState') eq true', 'properties/latestModelApplied
8794	// eq true', 'properties/latestModelApplied eq false'.
8795	Filter *string
8796	// The list parameters. Allowed values are 'instanceView', 'instanceView/statuses'.
8797	SelectParameter *string
8798}
8799
8800// VirtualMachineScaleSetVMSRetrieveBootDiagnosticsDataOptions contains the optional parameters for the VirtualMachineScaleSetVMS.RetrieveBootDiagnosticsData
8801// method.
8802type VirtualMachineScaleSetVMSRetrieveBootDiagnosticsDataOptions struct {
8803	// Expiration duration in minutes for the SAS URIs with a value between 1 to 1440 minutes. <br><br>NOTE: If not specified, SAS URIs will be generated with
8804	// a default expiration duration of 120 minutes.
8805	SasUriExpirationTimeInMinutes *int32
8806}
8807
8808// VirtualMachineScaleSetVMSSimulateEvictionOptions contains the optional parameters for the VirtualMachineScaleSetVMS.SimulateEviction method.
8809type VirtualMachineScaleSetVMSSimulateEvictionOptions struct {
8810	// placeholder for future optional parameters
8811}
8812
8813// VirtualMachineScaleSetsBeginCreateOrUpdateOptions contains the optional parameters for the VirtualMachineScaleSets.BeginCreateOrUpdate method.
8814type VirtualMachineScaleSetsBeginCreateOrUpdateOptions struct {
8815	// placeholder for future optional parameters
8816}
8817
8818// VirtualMachineScaleSetsBeginDeallocateOptions contains the optional parameters for the VirtualMachineScaleSets.BeginDeallocate method.
8819type VirtualMachineScaleSetsBeginDeallocateOptions struct {
8820	// A list of virtual machine instance IDs from the VM scale set.
8821	VMInstanceIDs *VirtualMachineScaleSetVMInstanceIDs
8822}
8823
8824// VirtualMachineScaleSetsBeginDeleteInstancesOptions contains the optional parameters for the VirtualMachineScaleSets.BeginDeleteInstances method.
8825type VirtualMachineScaleSetsBeginDeleteInstancesOptions struct {
8826	// placeholder for future optional parameters
8827}
8828
8829// VirtualMachineScaleSetsBeginDeleteOptions contains the optional parameters for the VirtualMachineScaleSets.BeginDelete method.
8830type VirtualMachineScaleSetsBeginDeleteOptions struct {
8831	// placeholder for future optional parameters
8832}
8833
8834// VirtualMachineScaleSetsBeginPerformMaintenanceOptions contains the optional parameters for the VirtualMachineScaleSets.BeginPerformMaintenance method.
8835type VirtualMachineScaleSetsBeginPerformMaintenanceOptions struct {
8836	// A list of virtual machine instance IDs from the VM scale set.
8837	VMInstanceIDs *VirtualMachineScaleSetVMInstanceIDs
8838}
8839
8840// VirtualMachineScaleSetsBeginPowerOffOptions contains the optional parameters for the VirtualMachineScaleSets.BeginPowerOff method.
8841type VirtualMachineScaleSetsBeginPowerOffOptions struct {
8842	// The parameter to request non-graceful VM shutdown. True value for this flag indicates non-graceful shutdown whereas false indicates otherwise. Default
8843	// value for this flag is false if not specified
8844	SkipShutdown *bool
8845	// A list of virtual machine instance IDs from the VM scale set.
8846	VMInstanceIDs *VirtualMachineScaleSetVMInstanceIDs
8847}
8848
8849// VirtualMachineScaleSetsBeginRedeployOptions contains the optional parameters for the VirtualMachineScaleSets.BeginRedeploy method.
8850type VirtualMachineScaleSetsBeginRedeployOptions struct {
8851	// A list of virtual machine instance IDs from the VM scale set.
8852	VMInstanceIDs *VirtualMachineScaleSetVMInstanceIDs
8853}
8854
8855// VirtualMachineScaleSetsBeginReimageAllOptions contains the optional parameters for the VirtualMachineScaleSets.BeginReimageAll method.
8856type VirtualMachineScaleSetsBeginReimageAllOptions struct {
8857	// A list of virtual machine instance IDs from the VM scale set.
8858	VMInstanceIDs *VirtualMachineScaleSetVMInstanceIDs
8859}
8860
8861// VirtualMachineScaleSetsBeginReimageOptions contains the optional parameters for the VirtualMachineScaleSets.BeginReimage method.
8862type VirtualMachineScaleSetsBeginReimageOptions struct {
8863	// Parameters for Reimaging VM ScaleSet.
8864	VMScaleSetReimageInput *VirtualMachineScaleSetReimageParameters
8865}
8866
8867// VirtualMachineScaleSetsBeginRestartOptions contains the optional parameters for the VirtualMachineScaleSets.BeginRestart method.
8868type VirtualMachineScaleSetsBeginRestartOptions struct {
8869	// A list of virtual machine instance IDs from the VM scale set.
8870	VMInstanceIDs *VirtualMachineScaleSetVMInstanceIDs
8871}
8872
8873// VirtualMachineScaleSetsBeginSetOrchestrationServiceStateOptions contains the optional parameters for the VirtualMachineScaleSets.BeginSetOrchestrationServiceState
8874// method.
8875type VirtualMachineScaleSetsBeginSetOrchestrationServiceStateOptions struct {
8876	// placeholder for future optional parameters
8877}
8878
8879// VirtualMachineScaleSetsBeginStartOptions contains the optional parameters for the VirtualMachineScaleSets.BeginStart method.
8880type VirtualMachineScaleSetsBeginStartOptions struct {
8881	// A list of virtual machine instance IDs from the VM scale set.
8882	VMInstanceIDs *VirtualMachineScaleSetVMInstanceIDs
8883}
8884
8885// VirtualMachineScaleSetsBeginUpdateInstancesOptions contains the optional parameters for the VirtualMachineScaleSets.BeginUpdateInstances method.
8886type VirtualMachineScaleSetsBeginUpdateInstancesOptions struct {
8887	// placeholder for future optional parameters
8888}
8889
8890// VirtualMachineScaleSetsBeginUpdateOptions contains the optional parameters for the VirtualMachineScaleSets.BeginUpdate method.
8891type VirtualMachineScaleSetsBeginUpdateOptions struct {
8892	// placeholder for future optional parameters
8893}
8894
8895// VirtualMachineScaleSetsConvertToSinglePlacementGroupOptions contains the optional parameters for the VirtualMachineScaleSets.ConvertToSinglePlacementGroup
8896// method.
8897type VirtualMachineScaleSetsConvertToSinglePlacementGroupOptions struct {
8898	// placeholder for future optional parameters
8899}
8900
8901// VirtualMachineScaleSetsForceRecoveryServiceFabricPlatformUpdateDomainWalkOptions contains the optional parameters for the VirtualMachineScaleSets.ForceRecoveryServiceFabricPlatformUpdateDomainWalk
8902// method.
8903type VirtualMachineScaleSetsForceRecoveryServiceFabricPlatformUpdateDomainWalkOptions struct {
8904	// placeholder for future optional parameters
8905}
8906
8907// VirtualMachineScaleSetsGetInstanceViewOptions contains the optional parameters for the VirtualMachineScaleSets.GetInstanceView method.
8908type VirtualMachineScaleSetsGetInstanceViewOptions struct {
8909	// placeholder for future optional parameters
8910}
8911
8912// VirtualMachineScaleSetsGetOSUpgradeHistoryOptions contains the optional parameters for the VirtualMachineScaleSets.GetOSUpgradeHistory method.
8913type VirtualMachineScaleSetsGetOSUpgradeHistoryOptions struct {
8914	// placeholder for future optional parameters
8915}
8916
8917// VirtualMachineScaleSetsGetOptions contains the optional parameters for the VirtualMachineScaleSets.Get method.
8918type VirtualMachineScaleSetsGetOptions struct {
8919	// placeholder for future optional parameters
8920}
8921
8922// VirtualMachineScaleSetsListAllOptions contains the optional parameters for the VirtualMachineScaleSets.ListAll method.
8923type VirtualMachineScaleSetsListAllOptions struct {
8924	// placeholder for future optional parameters
8925}
8926
8927// VirtualMachineScaleSetsListOptions contains the optional parameters for the VirtualMachineScaleSets.List method.
8928type VirtualMachineScaleSetsListOptions struct {
8929	// placeholder for future optional parameters
8930}
8931
8932// VirtualMachineScaleSetsListSKUsOptions contains the optional parameters for the VirtualMachineScaleSets.ListSKUs method.
8933type VirtualMachineScaleSetsListSKUsOptions struct {
8934	// placeholder for future optional parameters
8935}
8936
8937// Describes the properties of a VM size.
8938type VirtualMachineSize struct {
8939	// The maximum number of data disks that can be attached to the virtual machine size.
8940	MaxDataDiskCount *int32 `json:"maxDataDiskCount,omitempty"`
8941
8942	// The amount of memory, in MB, supported by the virtual machine size.
8943	MemoryInMb *int32 `json:"memoryInMB,omitempty"`
8944
8945	// The name of the virtual machine size.
8946	Name *string `json:"name,omitempty"`
8947
8948	// The number of cores supported by the virtual machine size.
8949	NumberOfCores *int32 `json:"numberOfCores,omitempty"`
8950
8951	// The OS disk size, in MB, allowed by the virtual machine size.
8952	OSDiskSizeInMb *int32 `json:"osDiskSizeInMB,omitempty"`
8953
8954	// The resource disk size, in MB, allowed by the virtual machine size.
8955	ResourceDiskSizeInMb *int32 `json:"resourceDiskSizeInMB,omitempty"`
8956}
8957
8958// The List Virtual Machine operation response.
8959type VirtualMachineSizeListResult struct {
8960	// The list of virtual machine sizes.
8961	Value *[]VirtualMachineSize `json:"value,omitempty"`
8962}
8963
8964// VirtualMachineSizeListResultResponse is the response envelope for operations that return a VirtualMachineSizeListResult type.
8965type VirtualMachineSizeListResultResponse struct {
8966	// RawResponse contains the underlying HTTP response.
8967	RawResponse *http.Response
8968
8969	// The List Virtual Machine operation response.
8970	VirtualMachineSizeListResult *VirtualMachineSizeListResult
8971}
8972
8973// VirtualMachineSizesListOptions contains the optional parameters for the VirtualMachineSizes.List method.
8974type VirtualMachineSizesListOptions struct {
8975	// placeholder for future optional parameters
8976}
8977
8978// Describes the properties of a Virtual Machine software patch.
8979type VirtualMachineSoftwarePatchProperties struct {
8980	// READ-ONLY; The activity ID of the operation that produced this result. It is used to correlate across CRP and extension logs.
8981	ActivityID *string `json:"activityId,omitempty" azure:"ro"`
8982
8983	// READ-ONLY; Describes the outcome of an install operation for a given patch.
8984	AssessmentState *PatchAssessmentState `json:"assessmentState,omitempty" azure:"ro"`
8985
8986	// READ-ONLY; The classification(s) of the patch as provided by the patch publisher.
8987	Classifications *[]string `json:"classifications,omitempty" azure:"ro"`
8988
8989	// READ-ONLY; The KBID of the patch. Only applies to Windows patches.
8990	Kbid *string `json:"kbid,omitempty" azure:"ro"`
8991
8992	// READ-ONLY; The UTC timestamp of the last update to this patch record.
8993	LastModifiedDateTime *time.Time `json:"lastModifiedDateTime,omitempty" azure:"ro"`
8994
8995	// READ-ONLY; The friendly name of the patch.
8996	Name *string `json:"name,omitempty" azure:"ro"`
8997
8998	// READ-ONLY; A unique identifier for the patch.
8999	PatchID *string `json:"patchId,omitempty" azure:"ro"`
9000
9001	// READ-ONLY; The UTC timestamp when the repository published this patch.
9002	PublishedDate *time.Time `json:"publishedDate,omitempty" azure:"ro"`
9003
9004	// READ-ONLY; Describes the reboot requirements of the patch.
9005	RebootBehavior *SoftwareUpdateRebootBehavior `json:"rebootBehavior,omitempty" azure:"ro"`
9006
9007	// READ-ONLY; The version number of the patch. This property applies only to Linux patches.
9008	Version *string `json:"version,omitempty" azure:"ro"`
9009}
9010
9011// MarshalJSON implements the json.Marshaller interface for type VirtualMachineSoftwarePatchProperties.
9012func (v VirtualMachineSoftwarePatchProperties) MarshalJSON() ([]byte, error) {
9013	objectMap := make(map[string]interface{})
9014	if v.ActivityID != nil {
9015		objectMap["activityId"] = v.ActivityID
9016	}
9017	if v.AssessmentState != nil {
9018		objectMap["assessmentState"] = v.AssessmentState
9019	}
9020	if v.Classifications != nil {
9021		objectMap["classifications"] = v.Classifications
9022	}
9023	if v.Kbid != nil {
9024		objectMap["kbid"] = v.Kbid
9025	}
9026	if v.LastModifiedDateTime != nil {
9027		objectMap["lastModifiedDateTime"] = (*timeRFC3339)(v.LastModifiedDateTime)
9028	}
9029	if v.Name != nil {
9030		objectMap["name"] = v.Name
9031	}
9032	if v.PatchID != nil {
9033		objectMap["patchId"] = v.PatchID
9034	}
9035	if v.PublishedDate != nil {
9036		objectMap["publishedDate"] = (*timeRFC3339)(v.PublishedDate)
9037	}
9038	if v.RebootBehavior != nil {
9039		objectMap["rebootBehavior"] = v.RebootBehavior
9040	}
9041	if v.Version != nil {
9042		objectMap["version"] = v.Version
9043	}
9044	return json.Marshal(objectMap)
9045}
9046
9047// UnmarshalJSON implements the json.Unmarshaller interface for type VirtualMachineSoftwarePatchProperties.
9048func (v *VirtualMachineSoftwarePatchProperties) UnmarshalJSON(data []byte) error {
9049	var rawMsg map[string]*json.RawMessage
9050	if err := json.Unmarshal(data, &rawMsg); err != nil {
9051		return err
9052	}
9053	for key, val := range rawMsg {
9054		var err error
9055		switch key {
9056		case "activityId":
9057			if val != nil {
9058				err = json.Unmarshal(*val, &v.ActivityID)
9059			}
9060			delete(rawMsg, key)
9061		case "assessmentState":
9062			if val != nil {
9063				err = json.Unmarshal(*val, &v.AssessmentState)
9064			}
9065			delete(rawMsg, key)
9066		case "classifications":
9067			if val != nil {
9068				err = json.Unmarshal(*val, &v.Classifications)
9069			}
9070			delete(rawMsg, key)
9071		case "kbid":
9072			if val != nil {
9073				err = json.Unmarshal(*val, &v.Kbid)
9074			}
9075			delete(rawMsg, key)
9076		case "lastModifiedDateTime":
9077			if val != nil {
9078				var aux timeRFC3339
9079				err = json.Unmarshal(*val, &aux)
9080				v.LastModifiedDateTime = (*time.Time)(&aux)
9081			}
9082			delete(rawMsg, key)
9083		case "name":
9084			if val != nil {
9085				err = json.Unmarshal(*val, &v.Name)
9086			}
9087			delete(rawMsg, key)
9088		case "patchId":
9089			if val != nil {
9090				err = json.Unmarshal(*val, &v.PatchID)
9091			}
9092			delete(rawMsg, key)
9093		case "publishedDate":
9094			if val != nil {
9095				var aux timeRFC3339
9096				err = json.Unmarshal(*val, &aux)
9097				v.PublishedDate = (*time.Time)(&aux)
9098			}
9099			delete(rawMsg, key)
9100		case "rebootBehavior":
9101			if val != nil {
9102				err = json.Unmarshal(*val, &v.RebootBehavior)
9103			}
9104			delete(rawMsg, key)
9105		case "version":
9106			if val != nil {
9107				err = json.Unmarshal(*val, &v.Version)
9108			}
9109			delete(rawMsg, key)
9110		}
9111		if err != nil {
9112			return err
9113		}
9114	}
9115	return nil
9116}
9117
9118// The status code and count of the virtual machine scale set instance view status summary.
9119type VirtualMachineStatusCodeCount struct {
9120	// READ-ONLY; The instance view status code.
9121	Code *string `json:"code,omitempty" azure:"ro"`
9122
9123	// READ-ONLY; The number of instances having a particular status code.
9124	Count *int32 `json:"count,omitempty" azure:"ro"`
9125}
9126
9127// Describes a Virtual Machine Update.
9128type VirtualMachineUpdate struct {
9129	UpdateResource
9130	// The identity of the virtual machine, if configured.
9131	IDentity *VirtualMachineIDentity `json:"identity,omitempty"`
9132
9133	// Specifies information about the marketplace image used to create the virtual machine. This element is only used for marketplace images. Before you can
9134	// use a marketplace image from an API, you must
9135	// enable the image for programmatic use. In the Azure portal, find the marketplace image that you want to use and then click Want to deploy programmatically,
9136	// Get Started ->. Enter any required
9137	// information and then click Save.
9138	Plan *Plan `json:"plan,omitempty"`
9139
9140	// Describes the properties of a Virtual Machine.
9141	Properties *VirtualMachineProperties `json:"properties,omitempty"`
9142
9143	// The virtual machine zones.
9144	Zones *[]string `json:"zones,omitempty"`
9145}
9146
9147// VirtualMachinesBeginAssessPatchesOptions contains the optional parameters for the VirtualMachines.BeginAssessPatches method.
9148type VirtualMachinesBeginAssessPatchesOptions struct {
9149	// placeholder for future optional parameters
9150}
9151
9152// VirtualMachinesBeginCaptureOptions contains the optional parameters for the VirtualMachines.BeginCapture method.
9153type VirtualMachinesBeginCaptureOptions struct {
9154	// placeholder for future optional parameters
9155}
9156
9157// VirtualMachinesBeginConvertToManagedDisksOptions contains the optional parameters for the VirtualMachines.BeginConvertToManagedDisks method.
9158type VirtualMachinesBeginConvertToManagedDisksOptions struct {
9159	// placeholder for future optional parameters
9160}
9161
9162// VirtualMachinesBeginCreateOrUpdateOptions contains the optional parameters for the VirtualMachines.BeginCreateOrUpdate method.
9163type VirtualMachinesBeginCreateOrUpdateOptions struct {
9164	// placeholder for future optional parameters
9165}
9166
9167// VirtualMachinesBeginDeallocateOptions contains the optional parameters for the VirtualMachines.BeginDeallocate method.
9168type VirtualMachinesBeginDeallocateOptions struct {
9169	// placeholder for future optional parameters
9170}
9171
9172// VirtualMachinesBeginDeleteOptions contains the optional parameters for the VirtualMachines.BeginDelete method.
9173type VirtualMachinesBeginDeleteOptions struct {
9174	// Optional parameter to force delete virtual machines.(Feature in Preview)
9175	ForceDeletion *bool
9176}
9177
9178// VirtualMachinesBeginPerformMaintenanceOptions contains the optional parameters for the VirtualMachines.BeginPerformMaintenance method.
9179type VirtualMachinesBeginPerformMaintenanceOptions struct {
9180	// placeholder for future optional parameters
9181}
9182
9183// VirtualMachinesBeginPowerOffOptions contains the optional parameters for the VirtualMachines.BeginPowerOff method.
9184type VirtualMachinesBeginPowerOffOptions struct {
9185	// The parameter to request non-graceful VM shutdown. True value for this flag indicates non-graceful shutdown whereas false indicates otherwise. Default
9186	// value for this flag is false if not specified
9187	SkipShutdown *bool
9188}
9189
9190// VirtualMachinesBeginReapplyOptions contains the optional parameters for the VirtualMachines.BeginReapply method.
9191type VirtualMachinesBeginReapplyOptions struct {
9192	// placeholder for future optional parameters
9193}
9194
9195// VirtualMachinesBeginRedeployOptions contains the optional parameters for the VirtualMachines.BeginRedeploy method.
9196type VirtualMachinesBeginRedeployOptions struct {
9197	// placeholder for future optional parameters
9198}
9199
9200// VirtualMachinesBeginReimageOptions contains the optional parameters for the VirtualMachines.BeginReimage method.
9201type VirtualMachinesBeginReimageOptions struct {
9202	// Parameters supplied to the Reimage Virtual Machine operation.
9203	Parameters *VirtualMachineReimageParameters
9204}
9205
9206// VirtualMachinesBeginRestartOptions contains the optional parameters for the VirtualMachines.BeginRestart method.
9207type VirtualMachinesBeginRestartOptions struct {
9208	// placeholder for future optional parameters
9209}
9210
9211// VirtualMachinesBeginRunCommandOptions contains the optional parameters for the VirtualMachines.BeginRunCommand method.
9212type VirtualMachinesBeginRunCommandOptions struct {
9213	// placeholder for future optional parameters
9214}
9215
9216// VirtualMachinesBeginStartOptions contains the optional parameters for the VirtualMachines.BeginStart method.
9217type VirtualMachinesBeginStartOptions struct {
9218	// placeholder for future optional parameters
9219}
9220
9221// VirtualMachinesBeginUpdateOptions contains the optional parameters for the VirtualMachines.BeginUpdate method.
9222type VirtualMachinesBeginUpdateOptions struct {
9223	// placeholder for future optional parameters
9224}
9225
9226// VirtualMachinesGeneralizeOptions contains the optional parameters for the VirtualMachines.Generalize method.
9227type VirtualMachinesGeneralizeOptions struct {
9228	// placeholder for future optional parameters
9229}
9230
9231// VirtualMachinesGetOptions contains the optional parameters for the VirtualMachines.Get method.
9232type VirtualMachinesGetOptions struct {
9233	// The expand expression to apply on the operation.
9234	Expand *string
9235}
9236
9237// VirtualMachinesInstanceViewOptions contains the optional parameters for the VirtualMachines.InstanceView method.
9238type VirtualMachinesInstanceViewOptions struct {
9239	// placeholder for future optional parameters
9240}
9241
9242// VirtualMachinesListAllOptions contains the optional parameters for the VirtualMachines.ListAll method.
9243type VirtualMachinesListAllOptions struct {
9244	// statusOnly=true enables fetching run time status of all Virtual Machines in the subscription.
9245	StatusOnly *string
9246}
9247
9248// VirtualMachinesListAvailableSizesOptions contains the optional parameters for the VirtualMachines.ListAvailableSizes method.
9249type VirtualMachinesListAvailableSizesOptions struct {
9250	// placeholder for future optional parameters
9251}
9252
9253// VirtualMachinesListByLocationOptions contains the optional parameters for the VirtualMachines.ListByLocation method.
9254type VirtualMachinesListByLocationOptions struct {
9255	// placeholder for future optional parameters
9256}
9257
9258// VirtualMachinesListOptions contains the optional parameters for the VirtualMachines.List method.
9259type VirtualMachinesListOptions struct {
9260	// placeholder for future optional parameters
9261}
9262
9263// VirtualMachinesRetrieveBootDiagnosticsDataOptions contains the optional parameters for the VirtualMachines.RetrieveBootDiagnosticsData method.
9264type VirtualMachinesRetrieveBootDiagnosticsDataOptions struct {
9265	// Expiration duration in minutes for the SAS URIs with a value between 1 to 1440 minutes. <br><br>NOTE: If not specified, SAS URIs will be generated with
9266	// a default expiration duration of 120 minutes.
9267	SasUriExpirationTimeInMinutes *int32
9268}
9269
9270// VirtualMachinesSimulateEvictionOptions contains the optional parameters for the VirtualMachines.SimulateEviction method.
9271type VirtualMachinesSimulateEvictionOptions struct {
9272	// placeholder for future optional parameters
9273}
9274
9275// Describes Windows Remote Management configuration of the VM
9276type WinRmConfiguration struct {
9277	// The list of Windows Remote Management listeners
9278	Listeners *[]WinRmListener `json:"listeners,omitempty"`
9279}
9280
9281// Describes Protocol and thumbprint of Windows Remote Management listener
9282type WinRmListener struct {
9283	// This is the URL of a certificate that has been uploaded to Key Vault as a secret. For adding a secret to the Key Vault, see Add a key or secret to the
9284	// key vault
9285	// [https://docs.microsoft.com/azure/key-vault/key-vault-get-started/#add]. In this case, your certificate needs to be It is the Base64 encoding of the
9286	// following JSON Object which is encoded in UTF-8:
9287	// {
9288	// "data":"",
9289	// "dataType":"pfx",
9290	// "password":""
9291	// }
9292	CertificateURL *string `json:"certificateUrl,omitempty"`
9293
9294	// Specifies the protocol of WinRM listener.
9295	// Possible values are:
9296	// http
9297	// https
9298	Protocol *ProtocolTypes `json:"protocol,omitempty"`
9299}
9300
9301// Specifies Windows operating system settings on the virtual machine.
9302type WindowsConfiguration struct {
9303	// Specifies additional base-64 encoded XML formatted information that can be included in the Unattend.xml file, which is used by Windows Setup.
9304	AdditionalUnattendContent *[]AdditionalUnattendContent `json:"additionalUnattendContent,omitempty"`
9305
9306	// Indicates whether Automatic Updates is enabled for the Windows virtual machine. Default value is true.
9307	// For virtual machine scale sets, this property can be updated and updates will take effect on OS reprovisioning.
9308	EnableAutomaticUpdates *bool `json:"enableAutomaticUpdates,omitempty"`
9309
9310	// Specifies settings related to in-guest patching (KBs).
9311	PatchSettings *PatchSettings `json:"patchSettings,omitempty"`
9312
9313	// Indicates whether virtual machine agent should be provisioned on the virtual machine.
9314	// When this property is not specified in the request body, default behavior is to set it to true. This will ensure that VM Agent is installed on the VM
9315	// so that extensions can be added to the VM later.
9316	ProvisionVMAgent *bool `json:"provisionVMAgent,omitempty"`
9317
9318	// Specifies the time zone of the virtual machine. e.g. "Pacific Standard Time".
9319	// Possible values can be TimeZoneInfo.Id [https://docs.microsoft.com/en-us/dotnet/api/system.timezoneinfo.id?#System_TimeZoneInfo_Id] value from time zones
9320	// returned by TimeZoneInfo.GetSystemTimeZones
9321	// [https://docs.microsoft.com/en-us/dotnet/api/system.timezoneinfo.getsystemtimezones].
9322	TimeZone *string `json:"timeZone,omitempty"`
9323
9324	// Specifies the Windows Remote Management listeners. This enables remote Windows PowerShell.
9325	WinRm *WinRmConfiguration `json:"winRM,omitempty"`
9326}
9327