// Code generated by azure-service-operator-codegen. DO NOT EDIT.
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
package arm

// Describes a Virtual Machine.
type VirtualMachine_STATUS struct {
	// ExtendedLocation: The extended location of the Virtual Machine.
	ExtendedLocation *ExtendedLocation_STATUS `json:"extendedLocation,omitempty"`

	// Id: Resource Id
	Id *string `json:"id,omitempty"`

	// Identity: The identity of the virtual machine, if configured.
	Identity *VirtualMachineIdentity_STATUS `json:"identity,omitempty"`

	// Location: Resource location
	Location *string `json:"location,omitempty"`

	// Name: Resource name
	Name *string `json:"name,omitempty"`

	// Plan: Specifies information about the marketplace image used to create the virtual machine. This element is only used
	// for marketplace images. Before you can use a marketplace image from an API, you must 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, Get Started ->. Enter any required information and then click Save.
	Plan *Plan_STATUS `json:"plan,omitempty"`

	// Properties: Describes the properties of a Virtual Machine.
	Properties *VirtualMachineProperties_STATUS `json:"properties,omitempty"`

	// Resources: The virtual machine child extension resources.
	Resources []VirtualMachineExtension_STATUS `json:"resources,omitempty"`

	// Tags: Resource tags
	Tags map[string]string `json:"tags,omitempty"`

	// Type: Resource type
	Type *string `json:"type,omitempty"`

	// Zones: The virtual machine zones.
	Zones []string `json:"zones,omitempty"`
}

// Describes a Virtual Machine Extension.
type VirtualMachineExtension_STATUS struct {
	// Id: Resource Id
	Id *string `json:"id,omitempty"`

	// Location: Resource location
	Location *string `json:"location,omitempty"`

	// Name: Resource name
	Name *string `json:"name,omitempty"`

	// Properties: Describes the properties of a Virtual Machine Extension.
	Properties *VirtualMachineExtensionProperties_STATUS `json:"properties,omitempty"`

	// Tags: Resource tags
	Tags map[string]string `json:"tags,omitempty"`

	// Type: Resource type
	Type *string `json:"type,omitempty"`
}

// Identity for the virtual machine.
type VirtualMachineIdentity_STATUS struct {
	// PrincipalId: The principal id of virtual machine identity. This property will only be provided for a system assigned
	// identity.
	PrincipalId *string `json:"principalId,omitempty"`

	// TenantId: The tenant id associated with the virtual machine. This property will only be provided for a system assigned
	// identity.
	TenantId *string `json:"tenantId,omitempty"`

	// Type: The type of identity used for the virtual machine. The type 'SystemAssigned, UserAssigned' includes both an
	// implicitly created identity and a set of user assigned identities. The type 'None' will remove any identities from the
	// virtual machine.
	Type *VirtualMachineIdentity_Type_STATUS `json:"type,omitempty"`

	// UserAssignedIdentities: The list of user identities associated with the Virtual Machine. The user identity dictionary
	// key references will be ARM resource ids in the form:
	// '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.
	UserAssignedIdentities map[string]VirtualMachineIdentity_UserAssignedIdentities_STATUS `json:"userAssignedIdentities,omitempty"`
}

// Describes the properties of a Virtual Machine.
type VirtualMachineProperties_STATUS struct {
	// AdditionalCapabilities: Specifies additional capabilities enabled or disabled on the virtual machine.
	AdditionalCapabilities *AdditionalCapabilities_STATUS `json:"additionalCapabilities,omitempty"`

	// ApplicationProfile: Specifies the gallery applications that should be made available to the VM/VMSS
	ApplicationProfile *ApplicationProfile_STATUS `json:"applicationProfile,omitempty"`

	// AvailabilitySet: Specifies information about the availability set that the virtual machine should be assigned to.
	// Virtual machines specified in the same availability set are allocated to different nodes to maximize availability. For
	// more information about availability sets, see [Availability sets
	// overview](https://docs.microsoft.com/azure/virtual-machines/availability-set-overview).
	// For more information on Azure planned maintenance, see [Maintenance and updates for Virtual Machines in
	// Azure](https://docs.microsoft.com/azure/virtual-machines/maintenance-and-updates)
	// 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 resource group as the availability set resource. An existing VM cannot be added to an
	// availability set.
	// This property cannot exist along with a non-null properties.virtualMachineScaleSet reference.
	AvailabilitySet *SubResource_STATUS `json:"availabilitySet,omitempty"`

	// BillingProfile: Specifies the billing related details of a Azure Spot virtual machine.
	// Minimum api-version: 2019-03-01.
	BillingProfile *BillingProfile_STATUS `json:"billingProfile,omitempty"`

	// CapacityReservation: Specifies information about the capacity reservation that is used to allocate virtual machine.
	// Minimum api-version: 2021-04-01.
	CapacityReservation *CapacityReservationProfile_STATUS `json:"capacityReservation,omitempty"`

	// DiagnosticsProfile: Specifies the boot diagnostic settings state.
	// Minimum api-version: 2015-06-15.
	DiagnosticsProfile *DiagnosticsProfile_STATUS `json:"diagnosticsProfile,omitempty"`

	// EvictionPolicy: Specifies the eviction policy for the Azure Spot virtual machine and Azure Spot scale set.
	// For Azure Spot virtual machines, both 'Deallocate' and 'Delete' are supported and the minimum api-version is 2019-03-01.
	// For Azure Spot scale sets, both 'Deallocate' and 'Delete' are supported and the minimum api-version is
	// 2017-10-30-preview.
	EvictionPolicy *EvictionPolicy_STATUS `json:"evictionPolicy,omitempty"`

	// ExtensionsTimeBudget: 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 in ISO 8601 format. The default value is 90 minutes
	// (PT1H30M).
	// Minimum api-version: 2020-06-01
	ExtensionsTimeBudget *string `json:"extensionsTimeBudget,omitempty"`

	// HardwareProfile: Specifies the hardware settings for the virtual machine.
	HardwareProfile *HardwareProfile_STATUS `json:"hardwareProfile,omitempty"`

	// Host: Specifies information about the dedicated host that the virtual machine resides in.
	// Minimum api-version: 2018-10-01.
	Host *SubResource_STATUS `json:"host,omitempty"`

	// HostGroup: Specifies information about the dedicated host group that the virtual machine resides in.
	// Minimum api-version: 2020-06-01.
	// NOTE: User cannot specify both host and hostGroup properties.
	HostGroup *SubResource_STATUS `json:"hostGroup,omitempty"`

	// InstanceView: The virtual machine instance view.
	InstanceView *VirtualMachineInstanceView_STATUS `json:"instanceView,omitempty"`

	// LicenseType: Specifies that the image or disk that is being used was licensed on-premises.
	// Possible values for Windows Server operating system are:
	// Windows_Client
	// Windows_Server
	// Possible values for Linux Server operating system are:
	// RHEL_BYOS (for RHEL)
	// SLES_BYOS (for SUSE)
	// For more information, see [Azure Hybrid Use Benefit for Windows
	// Server](https://docs.microsoft.com/azure/virtual-machines/windows/hybrid-use-benefit-licensing)
	// [Azure Hybrid Use Benefit for Linux
	// Server](https://docs.microsoft.com/azure/virtual-machines/linux/azure-hybrid-benefit-linux)
	// Minimum api-version: 2015-06-15
	LicenseType *string `json:"licenseType,omitempty"`

	// NetworkProfile: Specifies the network interfaces of the virtual machine.
	NetworkProfile *NetworkProfile_STATUS `json:"networkProfile,omitempty"`

	// OsProfile: Specifies the operating system settings used while creating the virtual machine. Some of the settings cannot
	// be changed once VM is provisioned.
	OsProfile *OSProfile_STATUS `json:"osProfile,omitempty"`

	// PlatformFaultDomain: Specifies the scale set logical fault domain into which the Virtual Machine will be created. By
	// default, the Virtual Machine will by automatically assigned to a fault domain that best maintains balance across
	// available fault domains.
	// <li>This is applicable only if the 'virtualMachineScaleSet' property of this Virtual Machine is set.<li>The Virtual
	// Machine Scale Set that is referenced, must have 'platformFaultDomainCount' &gt; 1.<li>This property cannot be updated
	// once the Virtual Machine is created.<li>Fault domain assignment can be viewed in the Virtual Machine Instance View.
	// Minimum api‐version: 2020‐12‐01
	PlatformFaultDomain *int `json:"platformFaultDomain,omitempty"`

	// Priority: Specifies the priority for the virtual machine.
	// Minimum api-version: 2019-03-01
	Priority *Priority_STATUS `json:"priority,omitempty"`

	// ProvisioningState: The provisioning state, which only appears in the response.
	ProvisioningState *string `json:"provisioningState,omitempty"`

	// ProximityPlacementGroup: Specifies information about the proximity placement group that the virtual machine should be
	// assigned to.
	// Minimum api-version: 2018-04-01.
	ProximityPlacementGroup *SubResource_STATUS `json:"proximityPlacementGroup,omitempty"`

	// ScheduledEventsProfile: Specifies Scheduled Event related configurations.
	ScheduledEventsProfile *ScheduledEventsProfile_STATUS `json:"scheduledEventsProfile,omitempty"`

	// SecurityProfile: Specifies the Security related profile settings for the virtual machine.
	SecurityProfile *SecurityProfile_STATUS `json:"securityProfile,omitempty"`

	// StorageProfile: Specifies the storage settings for the virtual machine disks.
	StorageProfile *StorageProfile_STATUS `json:"storageProfile,omitempty"`

	// TimeCreated: Specifies the time at which the Virtual Machine resource was created.
	// Minimum api-version: 2022-03-01.
	TimeCreated *string `json:"timeCreated,omitempty"`

	// UserData: UserData for the VM, which must be base-64 encoded. Customer should not pass any secrets in here.
	// Minimum api-version: 2021-03-01
	UserData *string `json:"userData,omitempty"`

	// VirtualMachineScaleSet: Specifies information about the virtual machine scale set that the virtual machine should be
	// assigned to. Virtual machines specified in the same virtual machine scale set are allocated to different 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 virtual machine scale set.
	// This property cannot exist along with a non-null properties.availabilitySet reference.
	// Minimum api‐version: 2019‐03‐01
	VirtualMachineScaleSet *SubResource_STATUS `json:"virtualMachineScaleSet,omitempty"`

	// VmId: 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 BIOS commands.
	VmId *string `json:"vmId,omitempty"`
}

// Contains the list of gallery applications that should be made available to the VM/VMSS
type ApplicationProfile_STATUS struct {
	// GalleryApplications: Specifies the gallery applications that should be made available to the VM/VMSS
	GalleryApplications []VMGalleryApplication_STATUS `json:"galleryApplications,omitempty"`
}

// Specifies the billing related details of a Azure Spot VM or VMSS.
// Minimum api-version: 2019-03-01.
type BillingProfile_STATUS struct {
	// MaxPrice: Specifies the maximum price you are willing to pay for a Azure Spot VM/VMSS. This price is in US Dollars.
	// 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 VM/VMSS and the operation will only succeed if  the maxPrice is greater than the current
	// Azure Spot price.
	// 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.
	// Possible values are:
	// - Any decimal value greater than zero. Example: 0.01538
	// -1 – indicates default price to be up-to on-demand.
	// 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 it is not provided by you.
	// Minimum api-version: 2019-03-01.
	MaxPrice *float64 `json:"maxPrice,omitempty"`
}

// The parameters of a capacity reservation Profile.
type CapacityReservationProfile_STATUS struct {
	// CapacityReservationGroup: Specifies the capacity reservation group resource id that should be used for allocating the
	// virtual machine or scaleset vm instances provided enough capacity has been reserved. Please refer to
	// https://aka.ms/CapacityReservation for more details.
	CapacityReservationGroup *SubResource_STATUS `json:"capacityReservationGroup,omitempty"`
}

// Specifies the boot diagnostic settings state.
// Minimum api-version: 2015-06-15.
type DiagnosticsProfile_STATUS struct {
	// BootDiagnostics: Boot Diagnostics is a debugging feature which allows you to view Console Output and Screenshot to
	// diagnose VM status.
	// NOTE: If storageUri is being specified then ensure that the storage account is in the same region and subscription as
	// the VM.
	// You can easily view the output of your console log.
	// Azure also enables you to see a screenshot of the VM from the hypervisor.
	BootDiagnostics *BootDiagnostics_STATUS `json:"bootDiagnostics,omitempty"`
}

// Specifies the eviction policy for the Azure Spot VM/VMSS
type EvictionPolicy_STATUS string

const (
	EvictionPolicy_STATUS_Deallocate = EvictionPolicy_STATUS("Deallocate")
	EvictionPolicy_STATUS_Delete     = EvictionPolicy_STATUS("Delete")
)

// Mapping from string to EvictionPolicy_STATUS
var evictionPolicy_STATUS_Values = map[string]EvictionPolicy_STATUS{
	"deallocate": EvictionPolicy_STATUS_Deallocate,
	"delete":     EvictionPolicy_STATUS_Delete,
}

// Specifies the hardware settings for the virtual machine.
type HardwareProfile_STATUS struct {
	// VmSize: Specifies the size of the virtual machine.
	// The enum data type is currently deprecated and will be removed by December 23rd 2023.
	// Recommended way to get the list of available sizes is using these APIs:
	// [List all available virtual machine sizes in an availability
	// set](https://docs.microsoft.com/rest/api/compute/availabilitysets/listavailablesizes)
	// [List all available virtual machine sizes in a region]( https://docs.microsoft.com/rest/api/compute/resourceskus/list)
	// [List all available virtual machine sizes for
	// resizing](https://docs.microsoft.com/rest/api/compute/virtualmachines/listavailablesizes). For more information about
	// virtual machine sizes, see [Sizes for virtual machines](https://docs.microsoft.com/azure/virtual-machines/sizes).
	// The available VM sizes depend on region and availability set.
	VmSize *HardwareProfile_VmSize_STATUS `json:"vmSize,omitempty"`

	// VmSizeProperties: Specifies the properties for customizing the size of the virtual machine. Minimum api-version:
	// 2021-07-01.
	// This feature is still in preview mode and is not supported for VirtualMachineScaleSet.
	// Please follow the instructions in [VM Customization](https://aka.ms/vmcustomization) for more details.
	VmSizeProperties *VMSizeProperties_STATUS `json:"vmSizeProperties,omitempty"`
}

// Specifies the network interfaces or the networking configuration of the virtual machine.
type NetworkProfile_STATUS struct {
	// NetworkApiVersion: specifies the Microsoft.Network API version used when creating networking resources in the Network
	// Interface Configurations
	NetworkApiVersion *NetworkProfile_NetworkApiVersion_STATUS `json:"networkApiVersion,omitempty"`

	// NetworkInterfaceConfigurations: Specifies the networking configurations that will be used to create the virtual machine
	// networking resources.
	NetworkInterfaceConfigurations []VirtualMachineNetworkInterfaceConfiguration_STATUS `json:"networkInterfaceConfigurations,omitempty"`

	// NetworkInterfaces: Specifies the list of resource Ids for the network interfaces associated with the virtual machine.
	NetworkInterfaces []NetworkInterfaceReference_STATUS `json:"networkInterfaces,omitempty"`
}

// Specifies the operating system settings for the virtual machine. Some of the settings cannot be changed once VM is
// provisioned.
type OSProfile_STATUS struct {
	// AdminUsername: Specifies the name of the administrator account.
	// This property cannot be updated after the VM is created.
	// Windows-only restriction: Cannot end in "."
	// Disallowed values: "administrator", "admin", "user", "user1", "test", "user2", "test1", "user3", "admin1", "1", "123",
	// "a", "actuser", "adm", "admin2", "aspnet", "backup", "console", "david", "guest", "john", "owner", "root", "server",
	// "sql", "support", "support_388945a0", "sys", "test2", "test3", "user4", "user5".
	// Minimum-length (Linux): 1  character
	// Max-length (Linux): 64 characters
	// Max-length (Windows): 20 characters.
	AdminUsername *string `json:"adminUsername,omitempty"`

	// AllowExtensionOperations: Specifies whether extension operations should be allowed on the virtual machine.
	// This may only be set to False when no extensions are present on the virtual machine.
	AllowExtensionOperations *bool `json:"allowExtensionOperations,omitempty"`

	// ComputerName: Specifies the host OS name of the virtual machine.
	// This name cannot be updated after the VM is created.
	// Max-length (Windows): 15 characters
	// Max-length (Linux): 64 characters.
	// For naming conventions and restrictions see [Azure infrastructure services implementation
	// guidelines](https://docs.microsoft.com/azure/azure-resource-manager/management/resource-name-rules).
	ComputerName *string `json:"computerName,omitempty"`

	// CustomData: 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. The maximum length of the binary array is 65535 bytes.
	// Note: Do not pass any secrets or passwords in customData property
	// This property cannot be updated after the VM is created.
	// 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/blog/custom-data-and-cloud-init-on-windows-azure/)
	// For using cloud-init for your Linux VM, see [Using cloud-init to customize a Linux VM during
	// creation](https://docs.microsoft.com/azure/virtual-machines/linux/using-cloud-init)
	CustomData *string `json:"customData,omitempty"`

	// LinuxConfiguration: Specifies the Linux operating system settings on the virtual machine.
	// For a list of supported Linux distributions, see [Linux on Azure-Endorsed
	// Distributions](https://docs.microsoft.com/azure/virtual-machines/linux/endorsed-distros).
	LinuxConfiguration *LinuxConfiguration_STATUS `json:"linuxConfiguration,omitempty"`

	// RequireGuestProvisionSignal: Optional property which must either be set to True or omitted.
	RequireGuestProvisionSignal *bool `json:"requireGuestProvisionSignal,omitempty"`

	// Secrets: Specifies set of certificates that should be installed onto the virtual machine. To install certificates on a
	// virtual machine it is recommended to use the [Azure Key Vault virtual machine extension for
	// Linux](https://docs.microsoft.com/azure/virtual-machines/extensions/key-vault-linux) or the [Azure Key Vault virtual
	// machine extension for Windows](https://docs.microsoft.com/azure/virtual-machines/extensions/key-vault-windows).
	Secrets []VaultSecretGroup_STATUS `json:"secrets,omitempty"`

	// WindowsConfiguration: Specifies Windows operating system settings on the virtual machine.
	WindowsConfiguration *WindowsConfiguration_STATUS `json:"windowsConfiguration,omitempty"`
}

// Specifies the priority for a standalone virtual machine or the virtual machines in the scale set.
// 'Low' enum
// will be deprecated in the future, please use 'Spot' as the enum to deploy Azure Spot VM/VMSS.
type Priority_STATUS string

const (
	Priority_STATUS_Low     = Priority_STATUS("Low")
	Priority_STATUS_Regular = Priority_STATUS("Regular")
	Priority_STATUS_Spot    = Priority_STATUS("Spot")
)

// Mapping from string to Priority_STATUS
var priority_STATUS_Values = map[string]Priority_STATUS{
	"low":     Priority_STATUS_Low,
	"regular": Priority_STATUS_Regular,
	"spot":    Priority_STATUS_Spot,
}

type ScheduledEventsProfile_STATUS struct {
	// TerminateNotificationProfile: Specifies Terminate Scheduled Event related configurations.
	TerminateNotificationProfile *TerminateNotificationProfile_STATUS `json:"terminateNotificationProfile,omitempty"`
}

// Specifies the Security profile settings for the virtual machine or virtual machine scale set.
type SecurityProfile_STATUS struct {
	// EncryptionAtHost: 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 will enable the encryption for all the disks including Resource/Temp
	// disk at host itself.
	// Default: The Encryption at host will be disabled unless this property is set to true for the resource.
	EncryptionAtHost *bool `json:"encryptionAtHost,omitempty"`

	// SecurityType: Specifies the SecurityType of the virtual machine. It has to be set to any specified value to enable
	// UefiSettings.
	// Default: UefiSettings will not be enabled unless this property is set.
	SecurityType *SecurityProfile_SecurityType_STATUS `json:"securityType,omitempty"`

	// UefiSettings: Specifies the security settings like secure boot and vTPM used while creating the virtual machine.
	// Minimum api-version: 2020-12-01
	UefiSettings *UefiSettings_STATUS `json:"uefiSettings,omitempty"`
}

// Specifies the storage settings for the virtual machine disks.
type StorageProfile_STATUS struct {
	// DataDisks: Specifies the parameters that are used to add a data disk to a virtual machine.
	// For more information about disks, see [About disks and VHDs for Azure virtual
	// machines](https://docs.microsoft.com/azure/virtual-machines/managed-disks-overview).
	DataDisks []DataDisk_STATUS `json:"dataDisks,omitempty"`

	// ImageReference: Specifies information about the image to use. You can specify information about platform images,
	// marketplace images, or virtual machine images. This element is required when you want to use a platform image,
	// marketplace image, or virtual machine image, but is not used in other creation operations.
	ImageReference *ImageReference_STATUS `json:"imageReference,omitempty"`

	// OsDisk: Specifies information about the operating system disk used by the virtual machine.
	// For more information about disks, see [About disks and VHDs for Azure virtual
	// machines](https://docs.microsoft.com/azure/virtual-machines/managed-disks-overview).
	OsDisk *OSDisk_STATUS `json:"osDisk,omitempty"`
}

type VirtualMachineIdentity_Type_STATUS string

const (
	VirtualMachineIdentity_Type_STATUS_None                       = VirtualMachineIdentity_Type_STATUS("None")
	VirtualMachineIdentity_Type_STATUS_SystemAssigned             = VirtualMachineIdentity_Type_STATUS("SystemAssigned")
	VirtualMachineIdentity_Type_STATUS_SystemAssignedUserAssigned = VirtualMachineIdentity_Type_STATUS("SystemAssigned, UserAssigned")
	VirtualMachineIdentity_Type_STATUS_UserAssigned               = VirtualMachineIdentity_Type_STATUS("UserAssigned")
)

// Mapping from string to VirtualMachineIdentity_Type_STATUS
var virtualMachineIdentity_Type_STATUS_Values = map[string]VirtualMachineIdentity_Type_STATUS{
	"none":                         VirtualMachineIdentity_Type_STATUS_None,
	"systemassigned":               VirtualMachineIdentity_Type_STATUS_SystemAssigned,
	"systemassigned, userassigned": VirtualMachineIdentity_Type_STATUS_SystemAssignedUserAssigned,
	"userassigned":                 VirtualMachineIdentity_Type_STATUS_UserAssigned,
}

type VirtualMachineIdentity_UserAssignedIdentities_STATUS struct {
	// ClientId: The client id of user assigned identity.
	ClientId *string `json:"clientId,omitempty"`

	// PrincipalId: The principal id of user assigned identity.
	PrincipalId *string `json:"principalId,omitempty"`
}

// The instance view of a virtual machine.
type VirtualMachineInstanceView_STATUS struct {
	// AssignedHost: Resource id of the dedicated host, on which the virtual machine is allocated through automatic placement,
	// when the virtual machine is associated with a dedicated host group that has automatic placement enabled.
	// Minimum api-version: 2020-06-01.
	AssignedHost *string `json:"assignedHost,omitempty"`

	// BootDiagnostics: Boot Diagnostics is a debugging feature which allows you to view Console Output and Screenshot to
	// diagnose VM status.
	// You can easily view the output of your console log.
	// Azure also enables you to see a screenshot of the VM from the hypervisor.
	BootDiagnostics *BootDiagnosticsInstanceView_STATUS `json:"bootDiagnostics,omitempty"`

	// ComputerName: The computer name assigned to the virtual machine.
	ComputerName *string `json:"computerName,omitempty"`

	// Disks: The virtual machine disk information.
	Disks []DiskInstanceView_STATUS `json:"disks,omitempty"`

	// Extensions: The extensions information.
	Extensions []VirtualMachineExtensionInstanceView_STATUS `json:"extensions,omitempty"`

	// HyperVGeneration: Specifies the HyperVGeneration Type associated with a resource
	HyperVGeneration *VirtualMachineInstanceView_HyperVGeneration_STATUS `json:"hyperVGeneration,omitempty"`

	// MaintenanceRedeployStatus: The Maintenance Operation status on the virtual machine.
	MaintenanceRedeployStatus *MaintenanceRedeployStatus_STATUS `json:"maintenanceRedeployStatus,omitempty"`

	// OsName: The Operating System running on the virtual machine.
	OsName *string `json:"osName,omitempty"`

	// OsVersion: The version of Operating System running on the virtual machine.
	OsVersion *string `json:"osVersion,omitempty"`

	// PatchStatus: [Preview Feature] The status of virtual machine patch operations.
	PatchStatus *VirtualMachinePatchStatus_STATUS `json:"patchStatus,omitempty"`

	// PlatformFaultDomain: Specifies the fault domain of the virtual machine.
	PlatformFaultDomain *int `json:"platformFaultDomain,omitempty"`

	// PlatformUpdateDomain: Specifies the update domain of the virtual machine.
	PlatformUpdateDomain *int `json:"platformUpdateDomain,omitempty"`

	// RdpThumbPrint: The Remote desktop certificate thumbprint.
	RdpThumbPrint *string `json:"rdpThumbPrint,omitempty"`

	// Statuses: The resource status information.
	Statuses []InstanceViewStatus_STATUS `json:"statuses,omitempty"`

	// VmAgent: The VM Agent running on the virtual machine.
	VmAgent *VirtualMachineAgentInstanceView_STATUS `json:"vmAgent,omitempty"`

	// VmHealth: The health status for the VM.
	VmHealth *VirtualMachineHealthStatus_STATUS `json:"vmHealth,omitempty"`
}

// Boot Diagnostics is a debugging feature which allows you to view Console Output and Screenshot to diagnose VM status.
// You can easily view the output of your console log.
// Azure also enables you to see a screenshot of the
// VM from the hypervisor.
type BootDiagnostics_STATUS struct {
	// Enabled: Whether boot diagnostics should be enabled on the Virtual Machine.
	Enabled *bool `json:"enabled,omitempty"`

	// StorageUri: Uri of the storage account to use for placing the console output and screenshot.
	// If storageUri is not specified while enabling boot diagnostics, managed storage will be used.
	StorageUri *string `json:"storageUri,omitempty"`
}

// The instance view of a virtual machine boot diagnostics.
type BootDiagnosticsInstanceView_STATUS struct {
	// ConsoleScreenshotBlobUri: The console screenshot blob URI.
	// NOTE: This will not be set if boot diagnostics is currently enabled with managed storage.
	ConsoleScreenshotBlobUri *string `json:"consoleScreenshotBlobUri,omitempty"`

	// SerialConsoleLogBlobUri: The serial console log blob Uri.
	// NOTE: This will not be set if boot diagnostics is currently enabled with managed storage.
	SerialConsoleLogBlobUri *string `json:"serialConsoleLogBlobUri,omitempty"`

	// Status: The boot diagnostics status information for the VM.
	// NOTE: It will be set only if there are errors encountered in enabling boot diagnostics.
	Status *InstanceViewStatus_STATUS `json:"status,omitempty"`
}

// Describes a data disk.
type DataDisk_STATUS struct {
	// Caching: Specifies the caching requirements.
	// Possible values are:
	// None
	// ReadOnly
	// ReadWrite
	// Default: None for Standard storage. ReadOnly for Premium storage
	Caching *Caching_STATUS `json:"caching,omitempty"`

	// CreateOption: Specifies how the virtual machine should be created.
	// Possible values are:
	// Attach \u2013 This value is used when you are using a specialized disk to create the virtual machine.
	// 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 element described above. If you are using a marketplace image, you  also
	// use the plan element previously described.
	CreateOption *CreateOption_STATUS `json:"createOption,omitempty"`

	// DeleteOption: Specifies whether data disk should be deleted or detached upon VM deletion.
	// Possible values:
	// Delete If this value is used, the data disk is deleted when VM is deleted.
	// Detach If this value is used, the data disk is retained after VM is deleted.
	// The default value is set to detach
	DeleteOption *DeleteOption_STATUS `json:"deleteOption,omitempty"`

	// DetachOption: Specifies the detach behavior to be used while detaching a disk or which is already in the process of
	// detachment from the virtual machine. Supported values: ForceDetach.
	// detachOption: ForceDetach is applicable only for managed data disks. If a previous detachment attempt of the data disk
	// did not complete due to an unexpected failure from the virtual machine and the disk is still not released then use
	// force-detach as a last resort option to detach the disk forcibly from the VM. All writes might not have been flushed
	// when using this detach behavior.
	// This feature is still in preview mode and is not supported for VirtualMachineScaleSet. To force-detach a data disk
	// update toBeDetached to 'true' along with setting detachOption: 'ForceDetach'.
	DetachOption *DetachOption_STATUS `json:"detachOption,omitempty"`

	// DiskIOPSReadWrite: Specifies the Read-Write IOPS for the managed disk when StorageAccountType is UltraSSD_LRS. Returned
	// only for VirtualMachine ScaleSet VM disks. Can be updated only via updates to the VirtualMachine Scale Set.
	DiskIOPSReadWrite *int `json:"diskIOPSReadWrite,omitempty"`

	// DiskMBpsReadWrite: Specifies the bandwidth in MB per second for the managed disk when StorageAccountType is
	// UltraSSD_LRS. Returned only for VirtualMachine ScaleSet VM disks. Can be updated only via updates to the VirtualMachine
	// Scale Set.
	DiskMBpsReadWrite *int `json:"diskMBpsReadWrite,omitempty"`

	// DiskSizeGB: 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.
	// This value cannot be larger than 1023 GB
	DiskSizeGB *int `json:"diskSizeGB,omitempty"`

	// Image: 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, the destination virtual hard drive must not exist.
	Image *VirtualHardDisk_STATUS `json:"image,omitempty"`

	// Lun: 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 disk attached to a VM.
	Lun *int `json:"lun,omitempty"`

	// ManagedDisk: The managed disk parameters.
	ManagedDisk *ManagedDiskParameters_STATUS `json:"managedDisk,omitempty"`

	// Name: The disk name.
	Name *string `json:"name,omitempty"`

	// ToBeDetached: Specifies whether the data disk is in process of detachment from the VirtualMachine/VirtualMachineScaleset
	ToBeDetached *bool `json:"toBeDetached,omitempty"`

	// Vhd: The virtual hard disk.
	Vhd *VirtualHardDisk_STATUS `json:"vhd,omitempty"`

	// WriteAcceleratorEnabled: Specifies whether writeAccelerator should be enabled or disabled on the disk.
	WriteAcceleratorEnabled *bool `json:"writeAcceleratorEnabled,omitempty"`
}

// The instance view of the disk.
type DiskInstanceView_STATUS struct {
	// EncryptionSettings: Specifies the encryption settings for the OS Disk.
	// Minimum api-version: 2015-06-15
	EncryptionSettings []DiskEncryptionSettings_STATUS `json:"encryptionSettings,omitempty"`

	// Name: The disk name.
	Name *string `json:"name,omitempty"`

	// Statuses: The resource status information.
	Statuses []InstanceViewStatus_STATUS `json:"statuses,omitempty"`
}

type HardwareProfile_VmSize_STATUS string

const (
	HardwareProfile_VmSize_STATUS_Basic_A0           = HardwareProfile_VmSize_STATUS("Basic_A0")
	HardwareProfile_VmSize_STATUS_Basic_A1           = HardwareProfile_VmSize_STATUS("Basic_A1")
	HardwareProfile_VmSize_STATUS_Basic_A2           = HardwareProfile_VmSize_STATUS("Basic_A2")
	HardwareProfile_VmSize_STATUS_Basic_A3           = HardwareProfile_VmSize_STATUS("Basic_A3")
	HardwareProfile_VmSize_STATUS_Basic_A4           = HardwareProfile_VmSize_STATUS("Basic_A4")
	HardwareProfile_VmSize_STATUS_Standard_A0        = HardwareProfile_VmSize_STATUS("Standard_A0")
	HardwareProfile_VmSize_STATUS_Standard_A1        = HardwareProfile_VmSize_STATUS("Standard_A1")
	HardwareProfile_VmSize_STATUS_Standard_A10       = HardwareProfile_VmSize_STATUS("Standard_A10")
	HardwareProfile_VmSize_STATUS_Standard_A11       = HardwareProfile_VmSize_STATUS("Standard_A11")
	HardwareProfile_VmSize_STATUS_Standard_A1_V2     = HardwareProfile_VmSize_STATUS("Standard_A1_v2")
	HardwareProfile_VmSize_STATUS_Standard_A2        = HardwareProfile_VmSize_STATUS("Standard_A2")
	HardwareProfile_VmSize_STATUS_Standard_A2M_V2    = HardwareProfile_VmSize_STATUS("Standard_A2m_v2")
	HardwareProfile_VmSize_STATUS_Standard_A2_V2     = HardwareProfile_VmSize_STATUS("Standard_A2_v2")
	HardwareProfile_VmSize_STATUS_Standard_A3        = HardwareProfile_VmSize_STATUS("Standard_A3")
	HardwareProfile_VmSize_STATUS_Standard_A4        = HardwareProfile_VmSize_STATUS("Standard_A4")
	HardwareProfile_VmSize_STATUS_Standard_A4M_V2    = HardwareProfile_VmSize_STATUS("Standard_A4m_v2")
	HardwareProfile_VmSize_STATUS_Standard_A4_V2     = HardwareProfile_VmSize_STATUS("Standard_A4_v2")
	HardwareProfile_VmSize_STATUS_Standard_A5        = HardwareProfile_VmSize_STATUS("Standard_A5")
	HardwareProfile_VmSize_STATUS_Standard_A6        = HardwareProfile_VmSize_STATUS("Standard_A6")
	HardwareProfile_VmSize_STATUS_Standard_A7        = HardwareProfile_VmSize_STATUS("Standard_A7")
	HardwareProfile_VmSize_STATUS_Standard_A8        = HardwareProfile_VmSize_STATUS("Standard_A8")
	HardwareProfile_VmSize_STATUS_Standard_A8M_V2    = HardwareProfile_VmSize_STATUS("Standard_A8m_v2")
	HardwareProfile_VmSize_STATUS_Standard_A8_V2     = HardwareProfile_VmSize_STATUS("Standard_A8_v2")
	HardwareProfile_VmSize_STATUS_Standard_A9        = HardwareProfile_VmSize_STATUS("Standard_A9")
	HardwareProfile_VmSize_STATUS_Standard_B1Ms      = HardwareProfile_VmSize_STATUS("Standard_B1ms")
	HardwareProfile_VmSize_STATUS_Standard_B1S       = HardwareProfile_VmSize_STATUS("Standard_B1s")
	HardwareProfile_VmSize_STATUS_Standard_B2Ms      = HardwareProfile_VmSize_STATUS("Standard_B2ms")
	HardwareProfile_VmSize_STATUS_Standard_B2S       = HardwareProfile_VmSize_STATUS("Standard_B2s")
	HardwareProfile_VmSize_STATUS_Standard_B4Ms      = HardwareProfile_VmSize_STATUS("Standard_B4ms")
	HardwareProfile_VmSize_STATUS_Standard_B8Ms      = HardwareProfile_VmSize_STATUS("Standard_B8ms")
	HardwareProfile_VmSize_STATUS_Standard_D1        = HardwareProfile_VmSize_STATUS("Standard_D1")
	HardwareProfile_VmSize_STATUS_Standard_D11       = HardwareProfile_VmSize_STATUS("Standard_D11")
	HardwareProfile_VmSize_STATUS_Standard_D11_V2    = HardwareProfile_VmSize_STATUS("Standard_D11_v2")
	HardwareProfile_VmSize_STATUS_Standard_D12       = HardwareProfile_VmSize_STATUS("Standard_D12")
	HardwareProfile_VmSize_STATUS_Standard_D12_V2    = HardwareProfile_VmSize_STATUS("Standard_D12_v2")
	HardwareProfile_VmSize_STATUS_Standard_D13       = HardwareProfile_VmSize_STATUS("Standard_D13")
	HardwareProfile_VmSize_STATUS_Standard_D13_V2    = HardwareProfile_VmSize_STATUS("Standard_D13_v2")
	HardwareProfile_VmSize_STATUS_Standard_D14       = HardwareProfile_VmSize_STATUS("Standard_D14")
	HardwareProfile_VmSize_STATUS_Standard_D14_V2    = HardwareProfile_VmSize_STATUS("Standard_D14_v2")
	HardwareProfile_VmSize_STATUS_Standard_D15_V2    = HardwareProfile_VmSize_STATUS("Standard_D15_v2")
	HardwareProfile_VmSize_STATUS_Standard_D16S_V3   = HardwareProfile_VmSize_STATUS("Standard_D16s_v3")
	HardwareProfile_VmSize_STATUS_Standard_D16_V3    = HardwareProfile_VmSize_STATUS("Standard_D16_v3")
	HardwareProfile_VmSize_STATUS_Standard_D1_V2     = HardwareProfile_VmSize_STATUS("Standard_D1_v2")
	HardwareProfile_VmSize_STATUS_Standard_D2        = HardwareProfile_VmSize_STATUS("Standard_D2")
	HardwareProfile_VmSize_STATUS_Standard_D2S_V3    = HardwareProfile_VmSize_STATUS("Standard_D2s_v3")
	HardwareProfile_VmSize_STATUS_Standard_D2_V2     = HardwareProfile_VmSize_STATUS("Standard_D2_v2")
	HardwareProfile_VmSize_STATUS_Standard_D2_V3     = HardwareProfile_VmSize_STATUS("Standard_D2_v3")
	HardwareProfile_VmSize_STATUS_Standard_D3        = HardwareProfile_VmSize_STATUS("Standard_D3")
	HardwareProfile_VmSize_STATUS_Standard_D32S_V3   = HardwareProfile_VmSize_STATUS("Standard_D32s_v3")
	HardwareProfile_VmSize_STATUS_Standard_D32_V3    = HardwareProfile_VmSize_STATUS("Standard_D32_v3")
	HardwareProfile_VmSize_STATUS_Standard_D3_V2     = HardwareProfile_VmSize_STATUS("Standard_D3_v2")
	HardwareProfile_VmSize_STATUS_Standard_D4        = HardwareProfile_VmSize_STATUS("Standard_D4")
	HardwareProfile_VmSize_STATUS_Standard_D4S_V3    = HardwareProfile_VmSize_STATUS("Standard_D4s_v3")
	HardwareProfile_VmSize_STATUS_Standard_D4_V2     = HardwareProfile_VmSize_STATUS("Standard_D4_v2")
	HardwareProfile_VmSize_STATUS_Standard_D4_V3     = HardwareProfile_VmSize_STATUS("Standard_D4_v3")
	HardwareProfile_VmSize_STATUS_Standard_D5_V2     = HardwareProfile_VmSize_STATUS("Standard_D5_v2")
	HardwareProfile_VmSize_STATUS_Standard_D64S_V3   = HardwareProfile_VmSize_STATUS("Standard_D64s_v3")
	HardwareProfile_VmSize_STATUS_Standard_D64_V3    = HardwareProfile_VmSize_STATUS("Standard_D64_v3")
	HardwareProfile_VmSize_STATUS_Standard_D8S_V3    = HardwareProfile_VmSize_STATUS("Standard_D8s_v3")
	HardwareProfile_VmSize_STATUS_Standard_D8_V3     = HardwareProfile_VmSize_STATUS("Standard_D8_v3")
	HardwareProfile_VmSize_STATUS_Standard_DS1       = HardwareProfile_VmSize_STATUS("Standard_DS1")
	HardwareProfile_VmSize_STATUS_Standard_DS11      = HardwareProfile_VmSize_STATUS("Standard_DS11")
	HardwareProfile_VmSize_STATUS_Standard_DS11_V2   = HardwareProfile_VmSize_STATUS("Standard_DS11_v2")
	HardwareProfile_VmSize_STATUS_Standard_DS12      = HardwareProfile_VmSize_STATUS("Standard_DS12")
	HardwareProfile_VmSize_STATUS_Standard_DS12_V2   = HardwareProfile_VmSize_STATUS("Standard_DS12_v2")
	HardwareProfile_VmSize_STATUS_Standard_DS13      = HardwareProfile_VmSize_STATUS("Standard_DS13")
	HardwareProfile_VmSize_STATUS_Standard_DS132_V2  = HardwareProfile_VmSize_STATUS("Standard_DS13-2_v2")
	HardwareProfile_VmSize_STATUS_Standard_DS134_V2  = HardwareProfile_VmSize_STATUS("Standard_DS13-4_v2")
	HardwareProfile_VmSize_STATUS_Standard_DS13_V2   = HardwareProfile_VmSize_STATUS("Standard_DS13_v2")
	HardwareProfile_VmSize_STATUS_Standard_DS14      = HardwareProfile_VmSize_STATUS("Standard_DS14")
	HardwareProfile_VmSize_STATUS_Standard_DS144_V2  = HardwareProfile_VmSize_STATUS("Standard_DS14-4_v2")
	HardwareProfile_VmSize_STATUS_Standard_DS148_V2  = HardwareProfile_VmSize_STATUS("Standard_DS14-8_v2")
	HardwareProfile_VmSize_STATUS_Standard_DS14_V2   = HardwareProfile_VmSize_STATUS("Standard_DS14_v2")
	HardwareProfile_VmSize_STATUS_Standard_DS15_V2   = HardwareProfile_VmSize_STATUS("Standard_DS15_v2")
	HardwareProfile_VmSize_STATUS_Standard_DS1_V2    = HardwareProfile_VmSize_STATUS("Standard_DS1_v2")
	HardwareProfile_VmSize_STATUS_Standard_DS2       = HardwareProfile_VmSize_STATUS("Standard_DS2")
	HardwareProfile_VmSize_STATUS_Standard_DS2_V2    = HardwareProfile_VmSize_STATUS("Standard_DS2_v2")
	HardwareProfile_VmSize_STATUS_Standard_DS3       = HardwareProfile_VmSize_STATUS("Standard_DS3")
	HardwareProfile_VmSize_STATUS_Standard_DS3_V2    = HardwareProfile_VmSize_STATUS("Standard_DS3_v2")
	HardwareProfile_VmSize_STATUS_Standard_DS4       = HardwareProfile_VmSize_STATUS("Standard_DS4")
	HardwareProfile_VmSize_STATUS_Standard_DS4_V2    = HardwareProfile_VmSize_STATUS("Standard_DS4_v2")
	HardwareProfile_VmSize_STATUS_Standard_DS5_V2    = HardwareProfile_VmSize_STATUS("Standard_DS5_v2")
	HardwareProfile_VmSize_STATUS_Standard_E16S_V3   = HardwareProfile_VmSize_STATUS("Standard_E16s_v3")
	HardwareProfile_VmSize_STATUS_Standard_E16_V3    = HardwareProfile_VmSize_STATUS("Standard_E16_v3")
	HardwareProfile_VmSize_STATUS_Standard_E2S_V3    = HardwareProfile_VmSize_STATUS("Standard_E2s_v3")
	HardwareProfile_VmSize_STATUS_Standard_E2_V3     = HardwareProfile_VmSize_STATUS("Standard_E2_v3")
	HardwareProfile_VmSize_STATUS_Standard_E3216_V3  = HardwareProfile_VmSize_STATUS("Standard_E32-16_v3")
	HardwareProfile_VmSize_STATUS_Standard_E328S_V3  = HardwareProfile_VmSize_STATUS("Standard_E32-8s_v3")
	HardwareProfile_VmSize_STATUS_Standard_E32S_V3   = HardwareProfile_VmSize_STATUS("Standard_E32s_v3")
	HardwareProfile_VmSize_STATUS_Standard_E32_V3    = HardwareProfile_VmSize_STATUS("Standard_E32_v3")
	HardwareProfile_VmSize_STATUS_Standard_E4S_V3    = HardwareProfile_VmSize_STATUS("Standard_E4s_v3")
	HardwareProfile_VmSize_STATUS_Standard_E4_V3     = HardwareProfile_VmSize_STATUS("Standard_E4_v3")
	HardwareProfile_VmSize_STATUS_Standard_E6416S_V3 = HardwareProfile_VmSize_STATUS("Standard_E64-16s_v3")
	HardwareProfile_VmSize_STATUS_Standard_E6432S_V3 = HardwareProfile_VmSize_STATUS("Standard_E64-32s_v3")
	HardwareProfile_VmSize_STATUS_Standard_E64S_V3   = HardwareProfile_VmSize_STATUS("Standard_E64s_v3")
	HardwareProfile_VmSize_STATUS_Standard_E64_V3    = HardwareProfile_VmSize_STATUS("Standard_E64_v3")
	HardwareProfile_VmSize_STATUS_Standard_E8S_V3    = HardwareProfile_VmSize_STATUS("Standard_E8s_v3")
	HardwareProfile_VmSize_STATUS_Standard_E8_V3     = HardwareProfile_VmSize_STATUS("Standard_E8_v3")
	HardwareProfile_VmSize_STATUS_Standard_F1        = HardwareProfile_VmSize_STATUS("Standard_F1")
	HardwareProfile_VmSize_STATUS_Standard_F16       = HardwareProfile_VmSize_STATUS("Standard_F16")
	HardwareProfile_VmSize_STATUS_Standard_F16S      = HardwareProfile_VmSize_STATUS("Standard_F16s")
	HardwareProfile_VmSize_STATUS_Standard_F16S_V2   = HardwareProfile_VmSize_STATUS("Standard_F16s_v2")
	HardwareProfile_VmSize_STATUS_Standard_F1S       = HardwareProfile_VmSize_STATUS("Standard_F1s")
	HardwareProfile_VmSize_STATUS_Standard_F2        = HardwareProfile_VmSize_STATUS("Standard_F2")
	HardwareProfile_VmSize_STATUS_Standard_F2S       = HardwareProfile_VmSize_STATUS("Standard_F2s")
	HardwareProfile_VmSize_STATUS_Standard_F2S_V2    = HardwareProfile_VmSize_STATUS("Standard_F2s_v2")
	HardwareProfile_VmSize_STATUS_Standard_F32S_V2   = HardwareProfile_VmSize_STATUS("Standard_F32s_v2")
	HardwareProfile_VmSize_STATUS_Standard_F4        = HardwareProfile_VmSize_STATUS("Standard_F4")
	HardwareProfile_VmSize_STATUS_Standard_F4S       = HardwareProfile_VmSize_STATUS("Standard_F4s")
	HardwareProfile_VmSize_STATUS_Standard_F4S_V2    = HardwareProfile_VmSize_STATUS("Standard_F4s_v2")
	HardwareProfile_VmSize_STATUS_Standard_F64S_V2   = HardwareProfile_VmSize_STATUS("Standard_F64s_v2")
	HardwareProfile_VmSize_STATUS_Standard_F72S_V2   = HardwareProfile_VmSize_STATUS("Standard_F72s_v2")
	HardwareProfile_VmSize_STATUS_Standard_F8        = HardwareProfile_VmSize_STATUS("Standard_F8")
	HardwareProfile_VmSize_STATUS_Standard_F8S       = HardwareProfile_VmSize_STATUS("Standard_F8s")
	HardwareProfile_VmSize_STATUS_Standard_F8S_V2    = HardwareProfile_VmSize_STATUS("Standard_F8s_v2")
	HardwareProfile_VmSize_STATUS_Standard_G1        = HardwareProfile_VmSize_STATUS("Standard_G1")
	HardwareProfile_VmSize_STATUS_Standard_G2        = HardwareProfile_VmSize_STATUS("Standard_G2")
	HardwareProfile_VmSize_STATUS_Standard_G3        = HardwareProfile_VmSize_STATUS("Standard_G3")
	HardwareProfile_VmSize_STATUS_Standard_G4        = HardwareProfile_VmSize_STATUS("Standard_G4")
	HardwareProfile_VmSize_STATUS_Standard_G5        = HardwareProfile_VmSize_STATUS("Standard_G5")
	HardwareProfile_VmSize_STATUS_Standard_GS1       = HardwareProfile_VmSize_STATUS("Standard_GS1")
	HardwareProfile_VmSize_STATUS_Standard_GS2       = HardwareProfile_VmSize_STATUS("Standard_GS2")
	HardwareProfile_VmSize_STATUS_Standard_GS3       = HardwareProfile_VmSize_STATUS("Standard_GS3")
	HardwareProfile_VmSize_STATUS_Standard_GS4       = HardwareProfile_VmSize_STATUS("Standard_GS4")
	HardwareProfile_VmSize_STATUS_Standard_GS44      = HardwareProfile_VmSize_STATUS("Standard_GS4-4")
	HardwareProfile_VmSize_STATUS_Standard_GS48      = HardwareProfile_VmSize_STATUS("Standard_GS4-8")
	HardwareProfile_VmSize_STATUS_Standard_GS5       = HardwareProfile_VmSize_STATUS("Standard_GS5")
	HardwareProfile_VmSize_STATUS_Standard_GS516     = HardwareProfile_VmSize_STATUS("Standard_GS5-16")
	HardwareProfile_VmSize_STATUS_Standard_GS58      = HardwareProfile_VmSize_STATUS("Standard_GS5-8")
	HardwareProfile_VmSize_STATUS_Standard_H16       = HardwareProfile_VmSize_STATUS("Standard_H16")
	HardwareProfile_VmSize_STATUS_Standard_H16M      = HardwareProfile_VmSize_STATUS("Standard_H16m")
	HardwareProfile_VmSize_STATUS_Standard_H16Mr     = HardwareProfile_VmSize_STATUS("Standard_H16mr")
	HardwareProfile_VmSize_STATUS_Standard_H16R      = HardwareProfile_VmSize_STATUS("Standard_H16r")
	HardwareProfile_VmSize_STATUS_Standard_H8        = HardwareProfile_VmSize_STATUS("Standard_H8")
	HardwareProfile_VmSize_STATUS_Standard_H8M       = HardwareProfile_VmSize_STATUS("Standard_H8m")
	HardwareProfile_VmSize_STATUS_Standard_L16S      = HardwareProfile_VmSize_STATUS("Standard_L16s")
	HardwareProfile_VmSize_STATUS_Standard_L32S      = HardwareProfile_VmSize_STATUS("Standard_L32s")
	HardwareProfile_VmSize_STATUS_Standard_L4S       = HardwareProfile_VmSize_STATUS("Standard_L4s")
	HardwareProfile_VmSize_STATUS_Standard_L8S       = HardwareProfile_VmSize_STATUS("Standard_L8s")
	HardwareProfile_VmSize_STATUS_Standard_M12832Ms  = HardwareProfile_VmSize_STATUS("Standard_M128-32ms")
	HardwareProfile_VmSize_STATUS_Standard_M12864Ms  = HardwareProfile_VmSize_STATUS("Standard_M128-64ms")
	HardwareProfile_VmSize_STATUS_Standard_M128Ms    = HardwareProfile_VmSize_STATUS("Standard_M128ms")
	HardwareProfile_VmSize_STATUS_Standard_M128S     = HardwareProfile_VmSize_STATUS("Standard_M128s")
	HardwareProfile_VmSize_STATUS_Standard_M6416Ms   = HardwareProfile_VmSize_STATUS("Standard_M64-16ms")
	HardwareProfile_VmSize_STATUS_Standard_M6432Ms   = HardwareProfile_VmSize_STATUS("Standard_M64-32ms")
	HardwareProfile_VmSize_STATUS_Standard_M64Ms     = HardwareProfile_VmSize_STATUS("Standard_M64ms")
	HardwareProfile_VmSize_STATUS_Standard_M64S      = HardwareProfile_VmSize_STATUS("Standard_M64s")
	HardwareProfile_VmSize_STATUS_Standard_NC12      = HardwareProfile_VmSize_STATUS("Standard_NC12")
	HardwareProfile_VmSize_STATUS_Standard_NC12S_V2  = HardwareProfile_VmSize_STATUS("Standard_NC12s_v2")
	HardwareProfile_VmSize_STATUS_Standard_NC12S_V3  = HardwareProfile_VmSize_STATUS("Standard_NC12s_v3")
	HardwareProfile_VmSize_STATUS_Standard_NC24      = HardwareProfile_VmSize_STATUS("Standard_NC24")
	HardwareProfile_VmSize_STATUS_Standard_NC24R     = HardwareProfile_VmSize_STATUS("Standard_NC24r")
	HardwareProfile_VmSize_STATUS_Standard_NC24Rs_V2 = HardwareProfile_VmSize_STATUS("Standard_NC24rs_v2")
	HardwareProfile_VmSize_STATUS_Standard_NC24Rs_V3 = HardwareProfile_VmSize_STATUS("Standard_NC24rs_v3")
	HardwareProfile_VmSize_STATUS_Standard_NC24S_V2  = HardwareProfile_VmSize_STATUS("Standard_NC24s_v2")
	HardwareProfile_VmSize_STATUS_Standard_NC24S_V3  = HardwareProfile_VmSize_STATUS("Standard_NC24s_v3")
	HardwareProfile_VmSize_STATUS_Standard_NC6       = HardwareProfile_VmSize_STATUS("Standard_NC6")
	HardwareProfile_VmSize_STATUS_Standard_NC6S_V2   = HardwareProfile_VmSize_STATUS("Standard_NC6s_v2")
	HardwareProfile_VmSize_STATUS_Standard_NC6S_V3   = HardwareProfile_VmSize_STATUS("Standard_NC6s_v3")
	HardwareProfile_VmSize_STATUS_Standard_ND12S     = HardwareProfile_VmSize_STATUS("Standard_ND12s")
	HardwareProfile_VmSize_STATUS_Standard_ND24Rs    = HardwareProfile_VmSize_STATUS("Standard_ND24rs")
	HardwareProfile_VmSize_STATUS_Standard_ND24S     = HardwareProfile_VmSize_STATUS("Standard_ND24s")
	HardwareProfile_VmSize_STATUS_Standard_ND6S      = HardwareProfile_VmSize_STATUS("Standard_ND6s")
	HardwareProfile_VmSize_STATUS_Standard_NV12      = HardwareProfile_VmSize_STATUS("Standard_NV12")
	HardwareProfile_VmSize_STATUS_Standard_NV24      = HardwareProfile_VmSize_STATUS("Standard_NV24")
	HardwareProfile_VmSize_STATUS_Standard_NV6       = HardwareProfile_VmSize_STATUS("Standard_NV6")
)

// Mapping from string to HardwareProfile_VmSize_STATUS
var hardwareProfile_VmSize_STATUS_Values = map[string]HardwareProfile_VmSize_STATUS{
	"basic_a0":            HardwareProfile_VmSize_STATUS_Basic_A0,
	"basic_a1":            HardwareProfile_VmSize_STATUS_Basic_A1,
	"basic_a2":            HardwareProfile_VmSize_STATUS_Basic_A2,
	"basic_a3":            HardwareProfile_VmSize_STATUS_Basic_A3,
	"basic_a4":            HardwareProfile_VmSize_STATUS_Basic_A4,
	"standard_a0":         HardwareProfile_VmSize_STATUS_Standard_A0,
	"standard_a1":         HardwareProfile_VmSize_STATUS_Standard_A1,
	"standard_a10":        HardwareProfile_VmSize_STATUS_Standard_A10,
	"standard_a11":        HardwareProfile_VmSize_STATUS_Standard_A11,
	"standard_a1_v2":      HardwareProfile_VmSize_STATUS_Standard_A1_V2,
	"standard_a2":         HardwareProfile_VmSize_STATUS_Standard_A2,
	"standard_a2m_v2":     HardwareProfile_VmSize_STATUS_Standard_A2M_V2,
	"standard_a2_v2":      HardwareProfile_VmSize_STATUS_Standard_A2_V2,
	"standard_a3":         HardwareProfile_VmSize_STATUS_Standard_A3,
	"standard_a4":         HardwareProfile_VmSize_STATUS_Standard_A4,
	"standard_a4m_v2":     HardwareProfile_VmSize_STATUS_Standard_A4M_V2,
	"standard_a4_v2":      HardwareProfile_VmSize_STATUS_Standard_A4_V2,
	"standard_a5":         HardwareProfile_VmSize_STATUS_Standard_A5,
	"standard_a6":         HardwareProfile_VmSize_STATUS_Standard_A6,
	"standard_a7":         HardwareProfile_VmSize_STATUS_Standard_A7,
	"standard_a8":         HardwareProfile_VmSize_STATUS_Standard_A8,
	"standard_a8m_v2":     HardwareProfile_VmSize_STATUS_Standard_A8M_V2,
	"standard_a8_v2":      HardwareProfile_VmSize_STATUS_Standard_A8_V2,
	"standard_a9":         HardwareProfile_VmSize_STATUS_Standard_A9,
	"standard_b1ms":       HardwareProfile_VmSize_STATUS_Standard_B1Ms,
	"standard_b1s":        HardwareProfile_VmSize_STATUS_Standard_B1S,
	"standard_b2ms":       HardwareProfile_VmSize_STATUS_Standard_B2Ms,
	"standard_b2s":        HardwareProfile_VmSize_STATUS_Standard_B2S,
	"standard_b4ms":       HardwareProfile_VmSize_STATUS_Standard_B4Ms,
	"standard_b8ms":       HardwareProfile_VmSize_STATUS_Standard_B8Ms,
	"standard_d1":         HardwareProfile_VmSize_STATUS_Standard_D1,
	"standard_d11":        HardwareProfile_VmSize_STATUS_Standard_D11,
	"standard_d11_v2":     HardwareProfile_VmSize_STATUS_Standard_D11_V2,
	"standard_d12":        HardwareProfile_VmSize_STATUS_Standard_D12,
	"standard_d12_v2":     HardwareProfile_VmSize_STATUS_Standard_D12_V2,
	"standard_d13":        HardwareProfile_VmSize_STATUS_Standard_D13,
	"standard_d13_v2":     HardwareProfile_VmSize_STATUS_Standard_D13_V2,
	"standard_d14":        HardwareProfile_VmSize_STATUS_Standard_D14,
	"standard_d14_v2":     HardwareProfile_VmSize_STATUS_Standard_D14_V2,
	"standard_d15_v2":     HardwareProfile_VmSize_STATUS_Standard_D15_V2,
	"standard_d16s_v3":    HardwareProfile_VmSize_STATUS_Standard_D16S_V3,
	"standard_d16_v3":     HardwareProfile_VmSize_STATUS_Standard_D16_V3,
	"standard_d1_v2":      HardwareProfile_VmSize_STATUS_Standard_D1_V2,
	"standard_d2":         HardwareProfile_VmSize_STATUS_Standard_D2,
	"standard_d2s_v3":     HardwareProfile_VmSize_STATUS_Standard_D2S_V3,
	"standard_d2_v2":      HardwareProfile_VmSize_STATUS_Standard_D2_V2,
	"standard_d2_v3":      HardwareProfile_VmSize_STATUS_Standard_D2_V3,
	"standard_d3":         HardwareProfile_VmSize_STATUS_Standard_D3,
	"standard_d32s_v3":    HardwareProfile_VmSize_STATUS_Standard_D32S_V3,
	"standard_d32_v3":     HardwareProfile_VmSize_STATUS_Standard_D32_V3,
	"standard_d3_v2":      HardwareProfile_VmSize_STATUS_Standard_D3_V2,
	"standard_d4":         HardwareProfile_VmSize_STATUS_Standard_D4,
	"standard_d4s_v3":     HardwareProfile_VmSize_STATUS_Standard_D4S_V3,
	"standard_d4_v2":      HardwareProfile_VmSize_STATUS_Standard_D4_V2,
	"standard_d4_v3":      HardwareProfile_VmSize_STATUS_Standard_D4_V3,
	"standard_d5_v2":      HardwareProfile_VmSize_STATUS_Standard_D5_V2,
	"standard_d64s_v3":    HardwareProfile_VmSize_STATUS_Standard_D64S_V3,
	"standard_d64_v3":     HardwareProfile_VmSize_STATUS_Standard_D64_V3,
	"standard_d8s_v3":     HardwareProfile_VmSize_STATUS_Standard_D8S_V3,
	"standard_d8_v3":      HardwareProfile_VmSize_STATUS_Standard_D8_V3,
	"standard_ds1":        HardwareProfile_VmSize_STATUS_Standard_DS1,
	"standard_ds11":       HardwareProfile_VmSize_STATUS_Standard_DS11,
	"standard_ds11_v2":    HardwareProfile_VmSize_STATUS_Standard_DS11_V2,
	"standard_ds12":       HardwareProfile_VmSize_STATUS_Standard_DS12,
	"standard_ds12_v2":    HardwareProfile_VmSize_STATUS_Standard_DS12_V2,
	"standard_ds13":       HardwareProfile_VmSize_STATUS_Standard_DS13,
	"standard_ds13-2_v2":  HardwareProfile_VmSize_STATUS_Standard_DS132_V2,
	"standard_ds13-4_v2":  HardwareProfile_VmSize_STATUS_Standard_DS134_V2,
	"standard_ds13_v2":    HardwareProfile_VmSize_STATUS_Standard_DS13_V2,
	"standard_ds14":       HardwareProfile_VmSize_STATUS_Standard_DS14,
	"standard_ds14-4_v2":  HardwareProfile_VmSize_STATUS_Standard_DS144_V2,
	"standard_ds14-8_v2":  HardwareProfile_VmSize_STATUS_Standard_DS148_V2,
	"standard_ds14_v2":    HardwareProfile_VmSize_STATUS_Standard_DS14_V2,
	"standard_ds15_v2":    HardwareProfile_VmSize_STATUS_Standard_DS15_V2,
	"standard_ds1_v2":     HardwareProfile_VmSize_STATUS_Standard_DS1_V2,
	"standard_ds2":        HardwareProfile_VmSize_STATUS_Standard_DS2,
	"standard_ds2_v2":     HardwareProfile_VmSize_STATUS_Standard_DS2_V2,
	"standard_ds3":        HardwareProfile_VmSize_STATUS_Standard_DS3,
	"standard_ds3_v2":     HardwareProfile_VmSize_STATUS_Standard_DS3_V2,
	"standard_ds4":        HardwareProfile_VmSize_STATUS_Standard_DS4,
	"standard_ds4_v2":     HardwareProfile_VmSize_STATUS_Standard_DS4_V2,
	"standard_ds5_v2":     HardwareProfile_VmSize_STATUS_Standard_DS5_V2,
	"standard_e16s_v3":    HardwareProfile_VmSize_STATUS_Standard_E16S_V3,
	"standard_e16_v3":     HardwareProfile_VmSize_STATUS_Standard_E16_V3,
	"standard_e2s_v3":     HardwareProfile_VmSize_STATUS_Standard_E2S_V3,
	"standard_e2_v3":      HardwareProfile_VmSize_STATUS_Standard_E2_V3,
	"standard_e32-16_v3":  HardwareProfile_VmSize_STATUS_Standard_E3216_V3,
	"standard_e32-8s_v3":  HardwareProfile_VmSize_STATUS_Standard_E328S_V3,
	"standard_e32s_v3":    HardwareProfile_VmSize_STATUS_Standard_E32S_V3,
	"standard_e32_v3":     HardwareProfile_VmSize_STATUS_Standard_E32_V3,
	"standard_e4s_v3":     HardwareProfile_VmSize_STATUS_Standard_E4S_V3,
	"standard_e4_v3":      HardwareProfile_VmSize_STATUS_Standard_E4_V3,
	"standard_e64-16s_v3": HardwareProfile_VmSize_STATUS_Standard_E6416S_V3,
	"standard_e64-32s_v3": HardwareProfile_VmSize_STATUS_Standard_E6432S_V3,
	"standard_e64s_v3":    HardwareProfile_VmSize_STATUS_Standard_E64S_V3,
	"standard_e64_v3":     HardwareProfile_VmSize_STATUS_Standard_E64_V3,
	"standard_e8s_v3":     HardwareProfile_VmSize_STATUS_Standard_E8S_V3,
	"standard_e8_v3":      HardwareProfile_VmSize_STATUS_Standard_E8_V3,
	"standard_f1":         HardwareProfile_VmSize_STATUS_Standard_F1,
	"standard_f16":        HardwareProfile_VmSize_STATUS_Standard_F16,
	"standard_f16s":       HardwareProfile_VmSize_STATUS_Standard_F16S,
	"standard_f16s_v2":    HardwareProfile_VmSize_STATUS_Standard_F16S_V2,
	"standard_f1s":        HardwareProfile_VmSize_STATUS_Standard_F1S,
	"standard_f2":         HardwareProfile_VmSize_STATUS_Standard_F2,
	"standard_f2s":        HardwareProfile_VmSize_STATUS_Standard_F2S,
	"standard_f2s_v2":     HardwareProfile_VmSize_STATUS_Standard_F2S_V2,
	"standard_f32s_v2":    HardwareProfile_VmSize_STATUS_Standard_F32S_V2,
	"standard_f4":         HardwareProfile_VmSize_STATUS_Standard_F4,
	"standard_f4s":        HardwareProfile_VmSize_STATUS_Standard_F4S,
	"standard_f4s_v2":     HardwareProfile_VmSize_STATUS_Standard_F4S_V2,
	"standard_f64s_v2":    HardwareProfile_VmSize_STATUS_Standard_F64S_V2,
	"standard_f72s_v2":    HardwareProfile_VmSize_STATUS_Standard_F72S_V2,
	"standard_f8":         HardwareProfile_VmSize_STATUS_Standard_F8,
	"standard_f8s":        HardwareProfile_VmSize_STATUS_Standard_F8S,
	"standard_f8s_v2":     HardwareProfile_VmSize_STATUS_Standard_F8S_V2,
	"standard_g1":         HardwareProfile_VmSize_STATUS_Standard_G1,
	"standard_g2":         HardwareProfile_VmSize_STATUS_Standard_G2,
	"standard_g3":         HardwareProfile_VmSize_STATUS_Standard_G3,
	"standard_g4":         HardwareProfile_VmSize_STATUS_Standard_G4,
	"standard_g5":         HardwareProfile_VmSize_STATUS_Standard_G5,
	"standard_gs1":        HardwareProfile_VmSize_STATUS_Standard_GS1,
	"standard_gs2":        HardwareProfile_VmSize_STATUS_Standard_GS2,
	"standard_gs3":        HardwareProfile_VmSize_STATUS_Standard_GS3,
	"standard_gs4":        HardwareProfile_VmSize_STATUS_Standard_GS4,
	"standard_gs4-4":      HardwareProfile_VmSize_STATUS_Standard_GS44,
	"standard_gs4-8":      HardwareProfile_VmSize_STATUS_Standard_GS48,
	"standard_gs5":        HardwareProfile_VmSize_STATUS_Standard_GS5,
	"standard_gs5-16":     HardwareProfile_VmSize_STATUS_Standard_GS516,
	"standard_gs5-8":      HardwareProfile_VmSize_STATUS_Standard_GS58,
	"standard_h16":        HardwareProfile_VmSize_STATUS_Standard_H16,
	"standard_h16m":       HardwareProfile_VmSize_STATUS_Standard_H16M,
	"standard_h16mr":      HardwareProfile_VmSize_STATUS_Standard_H16Mr,
	"standard_h16r":       HardwareProfile_VmSize_STATUS_Standard_H16R,
	"standard_h8":         HardwareProfile_VmSize_STATUS_Standard_H8,
	"standard_h8m":        HardwareProfile_VmSize_STATUS_Standard_H8M,
	"standard_l16s":       HardwareProfile_VmSize_STATUS_Standard_L16S,
	"standard_l32s":       HardwareProfile_VmSize_STATUS_Standard_L32S,
	"standard_l4s":        HardwareProfile_VmSize_STATUS_Standard_L4S,
	"standard_l8s":        HardwareProfile_VmSize_STATUS_Standard_L8S,
	"standard_m128-32ms":  HardwareProfile_VmSize_STATUS_Standard_M12832Ms,
	"standard_m128-64ms":  HardwareProfile_VmSize_STATUS_Standard_M12864Ms,
	"standard_m128ms":     HardwareProfile_VmSize_STATUS_Standard_M128Ms,
	"standard_m128s":      HardwareProfile_VmSize_STATUS_Standard_M128S,
	"standard_m64-16ms":   HardwareProfile_VmSize_STATUS_Standard_M6416Ms,
	"standard_m64-32ms":   HardwareProfile_VmSize_STATUS_Standard_M6432Ms,
	"standard_m64ms":      HardwareProfile_VmSize_STATUS_Standard_M64Ms,
	"standard_m64s":       HardwareProfile_VmSize_STATUS_Standard_M64S,
	"standard_nc12":       HardwareProfile_VmSize_STATUS_Standard_NC12,
	"standard_nc12s_v2":   HardwareProfile_VmSize_STATUS_Standard_NC12S_V2,
	"standard_nc12s_v3":   HardwareProfile_VmSize_STATUS_Standard_NC12S_V3,
	"standard_nc24":       HardwareProfile_VmSize_STATUS_Standard_NC24,
	"standard_nc24r":      HardwareProfile_VmSize_STATUS_Standard_NC24R,
	"standard_nc24rs_v2":  HardwareProfile_VmSize_STATUS_Standard_NC24Rs_V2,
	"standard_nc24rs_v3":  HardwareProfile_VmSize_STATUS_Standard_NC24Rs_V3,
	"standard_nc24s_v2":   HardwareProfile_VmSize_STATUS_Standard_NC24S_V2,
	"standard_nc24s_v3":   HardwareProfile_VmSize_STATUS_Standard_NC24S_V3,
	"standard_nc6":        HardwareProfile_VmSize_STATUS_Standard_NC6,
	"standard_nc6s_v2":    HardwareProfile_VmSize_STATUS_Standard_NC6S_V2,
	"standard_nc6s_v3":    HardwareProfile_VmSize_STATUS_Standard_NC6S_V3,
	"standard_nd12s":      HardwareProfile_VmSize_STATUS_Standard_ND12S,
	"standard_nd24rs":     HardwareProfile_VmSize_STATUS_Standard_ND24Rs,
	"standard_nd24s":      HardwareProfile_VmSize_STATUS_Standard_ND24S,
	"standard_nd6s":       HardwareProfile_VmSize_STATUS_Standard_ND6S,
	"standard_nv12":       HardwareProfile_VmSize_STATUS_Standard_NV12,
	"standard_nv24":       HardwareProfile_VmSize_STATUS_Standard_NV24,
	"standard_nv6":        HardwareProfile_VmSize_STATUS_Standard_NV6,
}

// Specifies information about the image to use. You can specify information about platform images, marketplace images, or
// virtual machine images. This element is required when you want to use a platform image, marketplace image, or virtual
// machine image, but is not used in other creation operations. NOTE: Image reference publisher and offer can only be set
// when you create the scale set.
type ImageReference_STATUS struct {
	// CommunityGalleryImageId: Specified the community gallery image unique id for vm deployment. This can be fetched from
	// community gallery image GET call.
	CommunityGalleryImageId *string `json:"communityGalleryImageId,omitempty"`

	// ExactVersion: Specifies in decimal numbers, the version of platform image or marketplace image used to create the
	// virtual machine. This readonly field differs from 'version', only if the value specified in 'version' field is 'latest'.
	ExactVersion *string `json:"exactVersion,omitempty"`

	// Id: Resource Id
	Id *string `json:"id,omitempty"`

	// Offer: Specifies the offer of the platform image or marketplace image used to create the virtual machine.
	Offer *string `json:"offer,omitempty"`

	// Publisher: The image publisher.
	Publisher *string `json:"publisher,omitempty"`

	// SharedGalleryImageId: Specified the shared gallery image unique id for vm deployment. This can be fetched from shared
	// gallery image GET call.
	SharedGalleryImageId *string `json:"sharedGalleryImageId,omitempty"`

	// Sku: The image SKU.
	Sku *string `json:"sku,omitempty"`

	// Version: 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'. Major, Minor, and Build are decimal numbers. 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 after deploy time even if a new version becomes available. Please do not use field 'version' for gallery image
	// deployment, gallery image should always use 'id' field for deployment, to use 'latest' version of gallery image, just
	// set
	// '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}/images/{imageName}'
	// in the 'id' field without version input.
	Version *string `json:"version,omitempty"`
}

// Instance view status.
type InstanceViewStatus_STATUS struct {
	// Code: The status code.
	Code *string `json:"code,omitempty"`

	// DisplayStatus: The short localizable label for the status.
	DisplayStatus *string `json:"displayStatus,omitempty"`

	// Level: The level code.
	Level *InstanceViewStatus_Level_STATUS `json:"level,omitempty"`

	// Message: The detailed status message, including for alerts and error messages.
	Message *string `json:"message,omitempty"`

	// Time: The time of the status.
	Time *string `json:"time,omitempty"`
}

// Specifies the Linux operating system settings on the virtual machine.
// For a list of supported Linux
// distributions, see [Linux on Azure-Endorsed
// Distributions](https://docs.microsoft.com/azure/virtual-machines/linux/endorsed-distros).
type LinuxConfiguration_STATUS struct {
	// DisablePasswordAuthentication: Specifies whether password authentication should be disabled.
	DisablePasswordAuthentication *bool `json:"disablePasswordAuthentication,omitempty"`

	// PatchSettings: [Preview Feature] Specifies settings related to VM Guest Patching on Linux.
	PatchSettings *LinuxPatchSettings_STATUS `json:"patchSettings,omitempty"`

	// ProvisionVMAgent: Indicates whether virtual machine agent should be provisioned on the virtual machine.
	// 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 so that extensions can be added to the VM later.
	ProvisionVMAgent *bool `json:"provisionVMAgent,omitempty"`

	// Ssh: Specifies the ssh key configuration for a Linux OS.
	Ssh *SshConfiguration_STATUS `json:"ssh,omitempty"`
}

// Maintenance Operation Status.
type MaintenanceRedeployStatus_STATUS struct {
	// IsCustomerInitiatedMaintenanceAllowed: True, if customer is allowed to perform Maintenance.
	IsCustomerInitiatedMaintenanceAllowed *bool `json:"isCustomerInitiatedMaintenanceAllowed,omitempty"`

	// LastOperationMessage: Message returned for the last Maintenance Operation.
	LastOperationMessage *string `json:"lastOperationMessage,omitempty"`

	// LastOperationResultCode: The Last Maintenance Operation Result Code.
	LastOperationResultCode *MaintenanceRedeployStatus_LastOperationResultCode_STATUS `json:"lastOperationResultCode,omitempty"`

	// MaintenanceWindowEndTime: End Time for the Maintenance Window.
	MaintenanceWindowEndTime *string `json:"maintenanceWindowEndTime,omitempty"`

	// MaintenanceWindowStartTime: Start Time for the Maintenance Window.
	MaintenanceWindowStartTime *string `json:"maintenanceWindowStartTime,omitempty"`

	// PreMaintenanceWindowEndTime: End Time for the Pre Maintenance Window.
	PreMaintenanceWindowEndTime *string `json:"preMaintenanceWindowEndTime,omitempty"`

	// PreMaintenanceWindowStartTime: Start Time for the Pre Maintenance Window.
	PreMaintenanceWindowStartTime *string `json:"preMaintenanceWindowStartTime,omitempty"`
}

// Describes a network interface reference.
type NetworkInterfaceReference_STATUS struct {
	// Id: Resource Id
	Id *string `json:"id,omitempty"`

	// Properties: Describes a network interface reference properties.
	Properties *NetworkInterfaceReferenceProperties_STATUS `json:"properties,omitempty"`
}

type NetworkProfile_NetworkApiVersion_STATUS string

const NetworkProfile_NetworkApiVersion_STATUS_20201101 = NetworkProfile_NetworkApiVersion_STATUS("2020-11-01")

// Mapping from string to NetworkProfile_NetworkApiVersion_STATUS
var networkProfile_NetworkApiVersion_STATUS_Values = map[string]NetworkProfile_NetworkApiVersion_STATUS{
	"2020-11-01": NetworkProfile_NetworkApiVersion_STATUS_20201101,
}

// Specifies information about the operating system disk used by the virtual machine.
// For more information about
// disks, see [About disks and VHDs for Azure virtual
// machines](https://docs.microsoft.com/azure/virtual-machines/managed-disks-overview).
type OSDisk_STATUS struct {
	// Caching: Specifies the caching requirements.
	// Possible values are:
	// None
	// ReadOnly
	// ReadWrite
	// Default: None for Standard storage. ReadOnly for Premium storage.
	Caching *Caching_STATUS `json:"caching,omitempty"`

	// CreateOption: Specifies how the virtual machine should be created.
	// Possible values are:
	// Attach \u2013 This value is used when you are using a specialized disk to create the virtual machine.
	// 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 element described above. If you are using a marketplace image, you  also
	// use the plan element previously described.
	CreateOption *CreateOption_STATUS `json:"createOption,omitempty"`

	// DeleteOption: Specifies whether OS Disk should be deleted or detached upon VM deletion.
	// Possible values:
	// Delete If this value is used, the OS disk is deleted when VM is deleted.
	// Detach If this value is used, the os disk is retained after VM is deleted.
	// The default value is set to detach. For an ephemeral OS Disk, the default value is set to Delete. User cannot change the
	// delete option for ephemeral OS Disk.
	DeleteOption *DeleteOption_STATUS `json:"deleteOption,omitempty"`

	// DiffDiskSettings: Specifies the ephemeral Disk Settings for the operating system disk used by the virtual machine.
	DiffDiskSettings *DiffDiskSettings_STATUS `json:"diffDiskSettings,omitempty"`

	// DiskSizeGB: 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.
	// This value cannot be larger than 1023 GB
	DiskSizeGB *int `json:"diskSizeGB,omitempty"`

	// EncryptionSettings: Specifies the encryption settings for the OS Disk.
	// Minimum api-version: 2015-06-15
	EncryptionSettings *DiskEncryptionSettings_STATUS `json:"encryptionSettings,omitempty"`

	// Image: 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, the destination virtual hard drive must not exist.
	Image *VirtualHardDisk_STATUS `json:"image,omitempty"`

	// ManagedDisk: The managed disk parameters.
	ManagedDisk *ManagedDiskParameters_STATUS `json:"managedDisk,omitempty"`

	// Name: The disk name.
	Name *string `json:"name,omitempty"`

	// OsType: 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.
	// Possible values are:
	// Windows
	// Linux
	OsType *OSDisk_OsType_STATUS `json:"osType,omitempty"`

	// Vhd: The virtual hard disk.
	Vhd *VirtualHardDisk_STATUS `json:"vhd,omitempty"`

	// WriteAcceleratorEnabled: Specifies whether writeAccelerator should be enabled or disabled on the disk.
	WriteAcceleratorEnabled *bool `json:"writeAcceleratorEnabled,omitempty"`
}

type SecurityProfile_SecurityType_STATUS string

const (
	SecurityProfile_SecurityType_STATUS_ConfidentialVM = SecurityProfile_SecurityType_STATUS("ConfidentialVM")
	SecurityProfile_SecurityType_STATUS_TrustedLaunch  = SecurityProfile_SecurityType_STATUS("TrustedLaunch")
)

// Mapping from string to SecurityProfile_SecurityType_STATUS
var securityProfile_SecurityType_STATUS_Values = map[string]SecurityProfile_SecurityType_STATUS{
	"confidentialvm": SecurityProfile_SecurityType_STATUS_ConfidentialVM,
	"trustedlaunch":  SecurityProfile_SecurityType_STATUS_TrustedLaunch,
}

type TerminateNotificationProfile_STATUS struct {
	// Enable: Specifies whether the Terminate Scheduled event is enabled or disabled.
	Enable *bool `json:"enable,omitempty"`

	// NotBeforeTimeout: Configurable length of time a Virtual Machine being deleted will have to potentially approve the
	// Terminate Scheduled Event before the event is auto approved (timed out). The configuration must be specified in ISO 8601
	// format, the default value is 5 minutes (PT5M)
	NotBeforeTimeout *string `json:"notBeforeTimeout,omitempty"`
}

// Specifies the security settings like secure boot and vTPM used while creating the virtual machine.
// Minimum
// api-version: 2020-12-01
type UefiSettings_STATUS struct {
	// SecureBootEnabled: Specifies whether secure boot should be enabled on the virtual machine.
	// Minimum api-version: 2020-12-01
	SecureBootEnabled *bool `json:"secureBootEnabled,omitempty"`

	// VTpmEnabled: Specifies whether vTPM should be enabled on the virtual machine.
	// Minimum api-version: 2020-12-01
	VTpmEnabled *bool `json:"vTpmEnabled,omitempty"`
}

// Describes a set of certificates which are all in the same Key Vault.
type VaultSecretGroup_STATUS struct {
	// SourceVault: The relative URL of the Key Vault containing all of the certificates in VaultCertificates.
	SourceVault *SubResource_STATUS `json:"sourceVault,omitempty"`

	// VaultCertificates: The list of key vault references in SourceVault which contain certificates.
	VaultCertificates []VaultCertificate_STATUS `json:"vaultCertificates,omitempty"`
}

// The instance view of the VM Agent running on the virtual machine.
type VirtualMachineAgentInstanceView_STATUS struct {
	// ExtensionHandlers: The virtual machine extension handler instance view.
	ExtensionHandlers []VirtualMachineExtensionHandlerInstanceView_STATUS `json:"extensionHandlers,omitempty"`

	// Statuses: The resource status information.
	Statuses []InstanceViewStatus_STATUS `json:"statuses,omitempty"`

	// VmAgentVersion: The VM Agent full version.
	VmAgentVersion *string `json:"vmAgentVersion,omitempty"`
}

// The health status of the VM.
type VirtualMachineHealthStatus_STATUS struct {
	// Status: The health status information for the VM.
	Status *InstanceViewStatus_STATUS `json:"status,omitempty"`
}

type VirtualMachineInstanceView_HyperVGeneration_STATUS string

const (
	VirtualMachineInstanceView_HyperVGeneration_STATUS_V1 = VirtualMachineInstanceView_HyperVGeneration_STATUS("V1")
	VirtualMachineInstanceView_HyperVGeneration_STATUS_V2 = VirtualMachineInstanceView_HyperVGeneration_STATUS("V2")
)

// Mapping from string to VirtualMachineInstanceView_HyperVGeneration_STATUS
var virtualMachineInstanceView_HyperVGeneration_STATUS_Values = map[string]VirtualMachineInstanceView_HyperVGeneration_STATUS{
	"v1": VirtualMachineInstanceView_HyperVGeneration_STATUS_V1,
	"v2": VirtualMachineInstanceView_HyperVGeneration_STATUS_V2,
}

// Describes a virtual machine network interface configurations.
type VirtualMachineNetworkInterfaceConfiguration_STATUS struct {
	// Name: The network interface configuration name.
	Name *string `json:"name,omitempty"`

	// Properties: Describes a virtual machine network profile's IP configuration.
	Properties *VirtualMachineNetworkInterfaceConfigurationProperties_STATUS `json:"properties,omitempty"`
}

// The status of virtual machine patch operations.
type VirtualMachinePatchStatus_STATUS struct {
	// AvailablePatchSummary: The available patch summary of the latest assessment operation for the virtual machine.
	AvailablePatchSummary *AvailablePatchSummary_STATUS `json:"availablePatchSummary,omitempty"`

	// ConfigurationStatuses: The enablement status of the specified patchMode
	ConfigurationStatuses []InstanceViewStatus_STATUS `json:"configurationStatuses,omitempty"`

	// LastPatchInstallationSummary: The installation summary of the latest installation operation for the virtual machine.
	LastPatchInstallationSummary *LastPatchInstallationSummary_STATUS `json:"lastPatchInstallationSummary,omitempty"`
}

// Specifies the required information to reference a compute gallery application version
type VMGalleryApplication_STATUS struct {
	// ConfigurationReference: Optional, Specifies the uri to an azure blob that will replace the default configuration for the
	// package if provided
	ConfigurationReference *string `json:"configurationReference,omitempty"`

	// EnableAutomaticUpgrade: If set to true, when a new Gallery Application version is available in PIR/SIG, it will be
	// automatically updated for the VM/VMSS
	EnableAutomaticUpgrade *bool `json:"enableAutomaticUpgrade,omitempty"`

	// Order: Optional, Specifies the order in which the packages have to be installed
	Order *int `json:"order,omitempty"`

	// PackageReferenceId: Specifies the GalleryApplicationVersion resource id on the form of
	// /subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}/applications/{application}/versions/{version}
	PackageReferenceId *string `json:"packageReferenceId,omitempty"`

	// Tags: Optional, Specifies a passthrough value for more generic context.
	Tags *string `json:"tags,omitempty"`

	// TreatFailureAsDeploymentFailure: Optional, If true, any failure for any operation in the VmApplication will fail the
	// deployment
	TreatFailureAsDeploymentFailure *bool `json:"treatFailureAsDeploymentFailure,omitempty"`
}

// Specifies VM Size Property settings on the virtual machine.
type VMSizeProperties_STATUS struct {
	// VCPUsAvailable: Specifies the number of vCPUs available for the VM.
	// When this property is not specified in the request body the default behavior is to set it to the value of vCPUs
	// available for that VM size exposed in api response of [List all available virtual machine sizes in a
	// region](https://docs.microsoft.com/en-us/rest/api/compute/resource-skus/list) .
	VCPUsAvailable *int `json:"vCPUsAvailable,omitempty"`

	// VCPUsPerCore: Specifies the vCPU to physical core ratio.
	// When this property is not specified in the request body the default behavior is set to the value of vCPUsPerCore for the
	// VM Size exposed in api response of [List all available virtual machine sizes in a
	// region](https://docs.microsoft.com/en-us/rest/api/compute/resource-skus/list)
	// Setting this property to 1 also means that hyper-threading is disabled.
	VCPUsPerCore *int `json:"vCPUsPerCore,omitempty"`
}

// Specifies Windows operating system settings on the virtual machine.
type WindowsConfiguration_STATUS struct {
	// AdditionalUnattendContent: Specifies additional base-64 encoded XML formatted information that can be included in the
	// Unattend.xml file, which is used by Windows Setup.
	AdditionalUnattendContent []AdditionalUnattendContent_STATUS `json:"additionalUnattendContent,omitempty"`

	// EnableAutomaticUpdates: Indicates whether Automatic Updates is enabled for the Windows virtual machine. Default value is
	// true.
	// For virtual machine scale sets, this property can be updated and updates will take effect on OS reprovisioning.
	EnableAutomaticUpdates *bool `json:"enableAutomaticUpdates,omitempty"`

	// PatchSettings: [Preview Feature] Specifies settings related to VM Guest Patching on Windows.
	PatchSettings *PatchSettings_STATUS `json:"patchSettings,omitempty"`

	// ProvisionVMAgent: Indicates whether virtual machine agent should be provisioned on the virtual machine.
	// 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 so that extensions can be added to the VM later.
	ProvisionVMAgent *bool `json:"provisionVMAgent,omitempty"`

	// TimeZone: Specifies the time zone of the virtual machine. e.g. "Pacific Standard Time".
	// Possible values can be
	// [TimeZoneInfo.Id](https://docs.microsoft.com/dotnet/api/system.timezoneinfo.id?#System_TimeZoneInfo_Id) value from time
	// zones returned by
	// [TimeZoneInfo.GetSystemTimeZones](https://docs.microsoft.com/dotnet/api/system.timezoneinfo.getsystemtimezones).
	TimeZone *string `json:"timeZone,omitempty"`

	// WinRM: Specifies the Windows Remote Management listeners. This enables remote Windows PowerShell.
	WinRM *WinRMConfiguration_STATUS `json:"winRM,omitempty"`
}

// Specifies additional XML formatted information that can be included in the Unattend.xml file, which is used by Windows
// Setup. Contents are defined by setting name, component name, and the pass in which the content is applied.
type AdditionalUnattendContent_STATUS struct {
	// ComponentName: The component name. Currently, the only allowable value is Microsoft-Windows-Shell-Setup.
	ComponentName *AdditionalUnattendContent_ComponentName_STATUS `json:"componentName,omitempty"`

	// Content: 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 include the root element for the setting or feature that is being
	// inserted.
	Content *string `json:"content,omitempty"`

	// PassName: The pass name. Currently, the only allowable value is OobeSystem.
	PassName *AdditionalUnattendContent_PassName_STATUS `json:"passName,omitempty"`

	// SettingName: Specifies the name of the setting to which the content applies. Possible values are: FirstLogonCommands and
	// AutoLogon.
	SettingName *AdditionalUnattendContent_SettingName_STATUS `json:"settingName,omitempty"`
}

// Describes the properties of an virtual machine instance view for available patch summary.
type AvailablePatchSummary_STATUS struct {
	// AssessmentActivityId: The activity ID of the operation that produced this result. It is used to correlate across CRP and
	// extension logs.
	AssessmentActivityId *string `json:"assessmentActivityId,omitempty"`

	// CriticalAndSecurityPatchCount: The number of critical or security patches that have been detected as available and not
	// yet installed.
	CriticalAndSecurityPatchCount *int `json:"criticalAndSecurityPatchCount,omitempty"`

	// Error: The errors that were encountered during execution of the operation. The details array contains the list of them.
	Error *ApiError_STATUS `json:"error,omitempty"`

	// LastModifiedTime: The UTC timestamp when the operation began.
	LastModifiedTime *string `json:"lastModifiedTime,omitempty"`

	// OtherPatchCount: The number of all available patches excluding critical and security.
	OtherPatchCount *int `json:"otherPatchCount,omitempty"`

	// RebootPending: The overall reboot status of the VM. It will be true when partially installed patches require a reboot to
	// complete installation but the reboot has not yet occurred.
	RebootPending *bool `json:"rebootPending,omitempty"`

	// StartTime: The UTC timestamp when the operation began.
	StartTime *string `json:"startTime,omitempty"`

	// Status: The overall success or failure status of the operation. It remains "InProgress" until the operation completes.
	// At that point it will become "Unknown", "Failed", "Succeeded", or "CompletedWithWarnings."
	Status *AvailablePatchSummary_Status_STATUS `json:"status,omitempty"`
}

// Specifies the caching requirements.
// Possible values are:
// None
// ReadOnly
// ReadWrite
// Default: None for Standard storage. ReadOnly for Premium storage
type Caching_STATUS string

const (
	Caching_STATUS_None      = Caching_STATUS("None")
	Caching_STATUS_ReadOnly  = Caching_STATUS("ReadOnly")
	Caching_STATUS_ReadWrite = Caching_STATUS("ReadWrite")
)

// Mapping from string to Caching_STATUS
var caching_STATUS_Values = map[string]Caching_STATUS{
	"none":      Caching_STATUS_None,
	"readonly":  Caching_STATUS_ReadOnly,
	"readwrite": Caching_STATUS_ReadWrite,
}

// Specifies how the virtual machine should be created.
// Possible values are:
// Attach \u2013 This value
// is used when you are using a specialized disk to create the virtual machine.
// 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 element described above. If you are using a marketplace image, you  also use the plan element previously
// described.
type CreateOption_STATUS string

const (
	CreateOption_STATUS_Attach    = CreateOption_STATUS("Attach")
	CreateOption_STATUS_Empty     = CreateOption_STATUS("Empty")
	CreateOption_STATUS_FromImage = CreateOption_STATUS("FromImage")
)

// Mapping from string to CreateOption_STATUS
var createOption_STATUS_Values = map[string]CreateOption_STATUS{
	"attach":    CreateOption_STATUS_Attach,
	"empty":     CreateOption_STATUS_Empty,
	"fromimage": CreateOption_STATUS_FromImage,
}

// Specifies the behavior of the managed disk when the VM gets deleted i.e whether the managed disk is deleted or detached.
// Supported values:
// Delete If this value is used, the managed disk is deleted when VM gets deleted.
// Detach If this value is used, the managed disk is retained after VM gets deleted.
// Minimum api-version:
// 2021-03-01
type DeleteOption_STATUS string

const (
	DeleteOption_STATUS_Delete = DeleteOption_STATUS("Delete")
	DeleteOption_STATUS_Detach = DeleteOption_STATUS("Detach")
)

// Mapping from string to DeleteOption_STATUS
var deleteOption_STATUS_Values = map[string]DeleteOption_STATUS{
	"delete": DeleteOption_STATUS_Delete,
	"detach": DeleteOption_STATUS_Detach,
}

// Specifies the detach behavior to be used while detaching a disk or which is already in the process of detachment from
// the virtual machine. Supported values: ForceDetach.
// detachOption: ForceDetach is applicable only for
// managed data disks. If a previous detachment attempt of the data disk did not complete due to an unexpected failure from
// the virtual machine and the disk is still not released then use force-detach as a last resort option to detach the disk
// forcibly from the VM. All writes might not have been flushed when using this detach behavior.
// This feature is
// still in preview mode and is not supported for VirtualMachineScaleSet. To force-detach a data disk update toBeDetached
// to 'true' along with setting detachOption: 'ForceDetach'.
type DetachOption_STATUS string

const DetachOption_STATUS_ForceDetach = DetachOption_STATUS("ForceDetach")

// Mapping from string to DetachOption_STATUS
var detachOption_STATUS_Values = map[string]DetachOption_STATUS{
	"forcedetach": DetachOption_STATUS_ForceDetach,
}

// Describes the parameters of ephemeral disk settings that can be specified for operating system disk.
// NOTE: The
// ephemeral disk settings can only be specified for managed disk.
type DiffDiskSettings_STATUS struct {
	// Option: Specifies the ephemeral disk settings for operating system disk.
	Option *DiffDiskOption_STATUS `json:"option,omitempty"`

	// Placement: Specifies the ephemeral disk placement for operating system disk.
	// Possible values are:
	// CacheDisk
	// ResourceDisk
	// Default: CacheDisk if one is configured for the VM size otherwise ResourceDisk is used.
	// Refer to VM size documentation for Windows VM at https://docs.microsoft.com/azure/virtual-machines/windows/sizes and
	// Linux VM at https://docs.microsoft.com/azure/virtual-machines/linux/sizes to check which VM sizes exposes a cache disk.
	Placement *DiffDiskPlacement_STATUS `json:"placement,omitempty"`
}

// Describes a Encryption Settings for a Disk
type DiskEncryptionSettings_STATUS struct {
	// DiskEncryptionKey: Specifies the location of the disk encryption key, which is a Key Vault Secret.
	DiskEncryptionKey *KeyVaultSecretReference_STATUS `json:"diskEncryptionKey,omitempty"`

	// Enabled: Specifies whether disk encryption should be enabled on the virtual machine.
	Enabled *bool `json:"enabled,omitempty"`

	// KeyEncryptionKey: Specifies the location of the key encryption key in Key Vault.
	KeyEncryptionKey *KeyVaultKeyReference_STATUS `json:"keyEncryptionKey,omitempty"`
}

type InstanceViewStatus_Level_STATUS string

const (
	InstanceViewStatus_Level_STATUS_Error   = InstanceViewStatus_Level_STATUS("Error")
	InstanceViewStatus_Level_STATUS_Info    = InstanceViewStatus_Level_STATUS("Info")
	InstanceViewStatus_Level_STATUS_Warning = InstanceViewStatus_Level_STATUS("Warning")
)

// Mapping from string to InstanceViewStatus_Level_STATUS
var instanceViewStatus_Level_STATUS_Values = map[string]InstanceViewStatus_Level_STATUS{
	"error":   InstanceViewStatus_Level_STATUS_Error,
	"info":    InstanceViewStatus_Level_STATUS_Info,
	"warning": InstanceViewStatus_Level_STATUS_Warning,
}

// Describes the properties of the last installed patch summary.
type LastPatchInstallationSummary_STATUS struct {
	// Error: The errors that were encountered during execution of the operation. The details array contains the list of them.
	Error *ApiError_STATUS `json:"error,omitempty"`

	// ExcludedPatchCount: The number of all available patches but excluded explicitly by a customer-specified exclusion list
	// match.
	ExcludedPatchCount *int `json:"excludedPatchCount,omitempty"`

	// FailedPatchCount: The count of patches that failed installation.
	FailedPatchCount *int `json:"failedPatchCount,omitempty"`

	// InstallationActivityId: The activity ID of the operation that produced this result. It is used to correlate across CRP
	// and extension logs.
	InstallationActivityId *string `json:"installationActivityId,omitempty"`

	// InstalledPatchCount: The count of patches that successfully installed.
	InstalledPatchCount *int `json:"installedPatchCount,omitempty"`

	// LastModifiedTime: The UTC timestamp when the operation began.
	LastModifiedTime *string `json:"lastModifiedTime,omitempty"`

	// MaintenanceWindowExceeded: Describes whether the operation ran out of time before it completed all its intended actions
	MaintenanceWindowExceeded *bool `json:"maintenanceWindowExceeded,omitempty"`

	// NotSelectedPatchCount: The number of all available patches but not going to be installed because it didn't match a
	// classification or inclusion list entry.
	NotSelectedPatchCount *int `json:"notSelectedPatchCount,omitempty"`

	// PendingPatchCount: The number of all available patches expected to be installed over the course of the patch
	// installation operation.
	PendingPatchCount *int `json:"pendingPatchCount,omitempty"`

	// StartTime: The UTC timestamp when the operation began.
	StartTime *string `json:"startTime,omitempty"`

	// Status: The overall success or failure status of the operation. It remains "InProgress" until the operation completes.
	// At that point it will become "Unknown", "Failed", "Succeeded", or "CompletedWithWarnings."
	Status *LastPatchInstallationSummary_Status_STATUS `json:"status,omitempty"`
}

// Specifies settings related to VM Guest Patching on Linux.
type LinuxPatchSettings_STATUS struct {
	// AssessmentMode: Specifies the mode of VM Guest Patch Assessment for the IaaS virtual machine.
	// Possible values are:
	// ImageDefault - You control the timing of patch assessments on a virtual machine.
	// AutomaticByPlatform - The platform will trigger periodic patch assessments. The property provisionVMAgent must be true.
	AssessmentMode *LinuxPatchSettings_AssessmentMode_STATUS `json:"assessmentMode,omitempty"`

	// AutomaticByPlatformSettings: Specifies additional settings for patch mode AutomaticByPlatform in VM Guest Patching on
	// Linux.
	AutomaticByPlatformSettings *LinuxVMGuestPatchAutomaticByPlatformSettings_STATUS `json:"automaticByPlatformSettings,omitempty"`

	// PatchMode: Specifies the mode of VM Guest Patching to IaaS virtual machine or virtual machines associated to virtual
	// machine scale set with OrchestrationMode as Flexible.
	// Possible values are:
	// ImageDefault - The virtual machine's default patching configuration is used.
	// AutomaticByPlatform - The virtual machine will be automatically updated by the platform. The property provisionVMAgent
	// must be true
	PatchMode *LinuxPatchSettings_PatchMode_STATUS `json:"patchMode,omitempty"`
}

type MaintenanceRedeployStatus_LastOperationResultCode_STATUS string

const (
	MaintenanceRedeployStatus_LastOperationResultCode_STATUS_MaintenanceAborted   = MaintenanceRedeployStatus_LastOperationResultCode_STATUS("MaintenanceAborted")
	MaintenanceRedeployStatus_LastOperationResultCode_STATUS_MaintenanceCompleted = MaintenanceRedeployStatus_LastOperationResultCode_STATUS("MaintenanceCompleted")
	MaintenanceRedeployStatus_LastOperationResultCode_STATUS_None                 = MaintenanceRedeployStatus_LastOperationResultCode_STATUS("None")
	MaintenanceRedeployStatus_LastOperationResultCode_STATUS_RetryLater           = MaintenanceRedeployStatus_LastOperationResultCode_STATUS("RetryLater")
)

// Mapping from string to MaintenanceRedeployStatus_LastOperationResultCode_STATUS
var maintenanceRedeployStatus_LastOperationResultCode_STATUS_Values = map[string]MaintenanceRedeployStatus_LastOperationResultCode_STATUS{
	"maintenanceaborted":   MaintenanceRedeployStatus_LastOperationResultCode_STATUS_MaintenanceAborted,
	"maintenancecompleted": MaintenanceRedeployStatus_LastOperationResultCode_STATUS_MaintenanceCompleted,
	"none":                 MaintenanceRedeployStatus_LastOperationResultCode_STATUS_None,
	"retrylater":           MaintenanceRedeployStatus_LastOperationResultCode_STATUS_RetryLater,
}

// The parameters of a managed disk.
type ManagedDiskParameters_STATUS struct {
	// DiskEncryptionSet: Specifies the customer managed disk encryption set resource id for the managed disk.
	DiskEncryptionSet *SubResource_STATUS `json:"diskEncryptionSet,omitempty"`

	// Id: Resource Id
	Id *string `json:"id,omitempty"`

	// SecurityProfile: Specifies the security profile for the managed disk.
	SecurityProfile *VMDiskSecurityProfile_STATUS `json:"securityProfile,omitempty"`

	// StorageAccountType: 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.
	StorageAccountType *StorageAccountType_STATUS `json:"storageAccountType,omitempty"`
}

// Describes a network interface reference properties.
type NetworkInterfaceReferenceProperties_STATUS struct {
	// DeleteOption: Specify what happens to the network interface when the VM is deleted
	DeleteOption *NetworkInterfaceReferenceProperties_DeleteOption_STATUS `json:"deleteOption,omitempty"`

	// Primary: Specifies the primary network interface in case the virtual machine has more than 1 network interface.
	Primary *bool `json:"primary,omitempty"`
}

type OSDisk_OsType_STATUS string

const (
	OSDisk_OsType_STATUS_Linux   = OSDisk_OsType_STATUS("Linux")
	OSDisk_OsType_STATUS_Windows = OSDisk_OsType_STATUS("Windows")
)

// Mapping from string to OSDisk_OsType_STATUS
var oSDisk_OsType_STATUS_Values = map[string]OSDisk_OsType_STATUS{
	"linux":   OSDisk_OsType_STATUS_Linux,
	"windows": OSDisk_OsType_STATUS_Windows,
}

// Specifies settings related to VM Guest Patching on Windows.
type PatchSettings_STATUS struct {
	// AssessmentMode: Specifies the mode of VM Guest patch assessment for the IaaS virtual machine.
	// Possible values are:
	// ImageDefault - You control the timing of patch assessments on a virtual machine.
	// AutomaticByPlatform - The platform will trigger periodic patch assessments. The property provisionVMAgent must be true.
	AssessmentMode *PatchSettings_AssessmentMode_STATUS `json:"assessmentMode,omitempty"`

	// AutomaticByPlatformSettings: Specifies additional settings for patch mode AutomaticByPlatform in VM Guest Patching on
	// Windows.
	AutomaticByPlatformSettings *WindowsVMGuestPatchAutomaticByPlatformSettings_STATUS `json:"automaticByPlatformSettings,omitempty"`

	// EnableHotpatching: Enables customers to patch their Azure VMs without requiring a reboot. For enableHotpatching, the
	// 'provisionVMAgent' must be set to true and 'patchMode' must be set to 'AutomaticByPlatform'.
	EnableHotpatching *bool `json:"enableHotpatching,omitempty"`

	// PatchMode: Specifies the mode of VM Guest Patching to IaaS virtual machine or virtual machines associated to virtual
	// machine scale set with OrchestrationMode as Flexible.
	// Possible values are:
	// 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 updates are disabled; the property WindowsConfiguration.enableAutomaticUpdates must be
	// false
	// AutomaticByOS - The virtual machine will automatically be updated by the OS. The property
	// WindowsConfiguration.enableAutomaticUpdates must be true.
	// AutomaticByPlatform - the virtual machine will automatically updated by the platform. The properties provisionVMAgent
	// and WindowsConfiguration.enableAutomaticUpdates must be true
	PatchMode *PatchSettings_PatchMode_STATUS `json:"patchMode,omitempty"`
}

// SSH configuration for Linux based VMs running on Azure
type SshConfiguration_STATUS struct {
	// PublicKeys: The list of SSH public keys used to authenticate with linux based VMs.
	PublicKeys []SshPublicKey_STATUS `json:"publicKeys,omitempty"`
}

// Describes a single certificate reference in a Key Vault, and where the certificate should reside on the VM.
type VaultCertificate_STATUS struct {
	// CertificateStore: For Windows VMs, specifies the certificate store on the Virtual Machine to which the certificate
	// should be added. The specified certificate store is implicitly in the LocalMachine account.
	// For Linux VMs, the certificate file is placed under the /var/lib/waagent directory, with the file name
	// &lt;UppercaseThumbprint&gt;.crt for the X509 certificate file and &lt;UppercaseThumbprint&gt;.prv for private key. Both
	// of these files are .pem formatted.
	CertificateStore *string `json:"certificateStore,omitempty"`

	// CertificateUrl: 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 key
	// vault](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 following JSON Object which is encoded in UTF-8:
	// {
	// "data":"<Base64-encoded-certificate>",
	// "dataType":"pfx",
	// "password":"<pfx-file-password>"
	// }
	// To install certificates on a virtual machine it is recommended to use the [Azure Key Vault virtual machine extension for
	// Linux](https://docs.microsoft.com/azure/virtual-machines/extensions/key-vault-linux) or the [Azure Key Vault virtual
	// machine extension for Windows](https://docs.microsoft.com/azure/virtual-machines/extensions/key-vault-windows).
	CertificateUrl *string `json:"certificateUrl,omitempty"`
}

// Describes the uri of a disk.
type VirtualHardDisk_STATUS struct {
	// Uri: Specifies the virtual hard disk's uri.
	Uri *string `json:"uri,omitempty"`
}

// The instance view of a virtual machine extension handler.
type VirtualMachineExtensionHandlerInstanceView_STATUS struct {
	// Status: The extension handler status.
	Status *InstanceViewStatus_STATUS `json:"status,omitempty"`

	// Type: Specifies the type of the extension; an example is "CustomScriptExtension".
	Type *string `json:"type,omitempty"`

	// TypeHandlerVersion: Specifies the version of the script handler.
	TypeHandlerVersion *string `json:"typeHandlerVersion,omitempty"`
}

// Describes a virtual machine network profile's IP configuration.
type VirtualMachineNetworkInterfaceConfigurationProperties_STATUS struct {
	// DeleteOption: Specify what happens to the network interface when the VM is deleted
	DeleteOption *VirtualMachineNetworkInterfaceConfigurationProperties_DeleteOption_STATUS `json:"deleteOption,omitempty"`

	// DnsSettings: The dns settings to be applied on the network interfaces.
	DnsSettings       *VirtualMachineNetworkInterfaceDnsSettingsConfiguration_STATUS `json:"dnsSettings,omitempty"`
	DscpConfiguration *SubResource_STATUS                                            `json:"dscpConfiguration,omitempty"`

	// EnableAcceleratedNetworking: Specifies whether the network interface is accelerated networking-enabled.
	EnableAcceleratedNetworking *bool `json:"enableAcceleratedNetworking,omitempty"`

	// EnableFpga: Specifies whether the network interface is FPGA networking-enabled.
	EnableFpga *bool `json:"enableFpga,omitempty"`

	// EnableIPForwarding: Whether IP forwarding enabled on this NIC.
	EnableIPForwarding *bool `json:"enableIPForwarding,omitempty"`

	// IpConfigurations: Specifies the IP configurations of the network interface.
	IpConfigurations []VirtualMachineNetworkInterfaceIPConfiguration_STATUS `json:"ipConfigurations,omitempty"`

	// NetworkSecurityGroup: The network security group.
	NetworkSecurityGroup *SubResource_STATUS `json:"networkSecurityGroup,omitempty"`

	// Primary: Specifies the primary network interface in case the virtual machine has more than 1 network interface.
	Primary *bool `json:"primary,omitempty"`
}

// Describes Windows Remote Management configuration of the VM
type WinRMConfiguration_STATUS struct {
	// Listeners: The list of Windows Remote Management listeners
	Listeners []WinRMListener_STATUS `json:"listeners,omitempty"`
}

type AdditionalUnattendContent_ComponentName_STATUS string

const AdditionalUnattendContent_ComponentName_STATUS_MicrosoftWindowsShellSetup = AdditionalUnattendContent_ComponentName_STATUS("Microsoft-Windows-Shell-Setup")

// Mapping from string to AdditionalUnattendContent_ComponentName_STATUS
var additionalUnattendContent_ComponentName_STATUS_Values = map[string]AdditionalUnattendContent_ComponentName_STATUS{
	"microsoft-windows-shell-setup": AdditionalUnattendContent_ComponentName_STATUS_MicrosoftWindowsShellSetup,
}

type AdditionalUnattendContent_PassName_STATUS string

const AdditionalUnattendContent_PassName_STATUS_OobeSystem = AdditionalUnattendContent_PassName_STATUS("OobeSystem")

// Mapping from string to AdditionalUnattendContent_PassName_STATUS
var additionalUnattendContent_PassName_STATUS_Values = map[string]AdditionalUnattendContent_PassName_STATUS{
	"oobesystem": AdditionalUnattendContent_PassName_STATUS_OobeSystem,
}

type AdditionalUnattendContent_SettingName_STATUS string

const (
	AdditionalUnattendContent_SettingName_STATUS_AutoLogon          = AdditionalUnattendContent_SettingName_STATUS("AutoLogon")
	AdditionalUnattendContent_SettingName_STATUS_FirstLogonCommands = AdditionalUnattendContent_SettingName_STATUS("FirstLogonCommands")
)

// Mapping from string to AdditionalUnattendContent_SettingName_STATUS
var additionalUnattendContent_SettingName_STATUS_Values = map[string]AdditionalUnattendContent_SettingName_STATUS{
	"autologon":          AdditionalUnattendContent_SettingName_STATUS_AutoLogon,
	"firstlogoncommands": AdditionalUnattendContent_SettingName_STATUS_FirstLogonCommands,
}

// Api error.
type ApiError_STATUS struct {
	// Code: The error code.
	Code *string `json:"code,omitempty"`

	// Details: The Api error details
	Details []ApiErrorBase_STATUS `json:"details,omitempty"`

	// Innererror: The Api inner error
	Innererror *InnerError_STATUS `json:"innererror,omitempty"`

	// Message: The error message.
	Message *string `json:"message,omitempty"`

	// Target: The target of the particular error.
	Target *string `json:"target,omitempty"`
}

type AvailablePatchSummary_Status_STATUS string

const (
	AvailablePatchSummary_Status_STATUS_CompletedWithWarnings = AvailablePatchSummary_Status_STATUS("CompletedWithWarnings")
	AvailablePatchSummary_Status_STATUS_Failed                = AvailablePatchSummary_Status_STATUS("Failed")
	AvailablePatchSummary_Status_STATUS_InProgress            = AvailablePatchSummary_Status_STATUS("InProgress")
	AvailablePatchSummary_Status_STATUS_Succeeded             = AvailablePatchSummary_Status_STATUS("Succeeded")
	AvailablePatchSummary_Status_STATUS_Unknown               = AvailablePatchSummary_Status_STATUS("Unknown")
)

// Mapping from string to AvailablePatchSummary_Status_STATUS
var availablePatchSummary_Status_STATUS_Values = map[string]AvailablePatchSummary_Status_STATUS{
	"completedwithwarnings": AvailablePatchSummary_Status_STATUS_CompletedWithWarnings,
	"failed":                AvailablePatchSummary_Status_STATUS_Failed,
	"inprogress":            AvailablePatchSummary_Status_STATUS_InProgress,
	"succeeded":             AvailablePatchSummary_Status_STATUS_Succeeded,
	"unknown":               AvailablePatchSummary_Status_STATUS_Unknown,
}

// Specifies the ephemeral disk option for operating system disk.
type DiffDiskOption_STATUS string

const DiffDiskOption_STATUS_Local = DiffDiskOption_STATUS("Local")

// Mapping from string to DiffDiskOption_STATUS
var diffDiskOption_STATUS_Values = map[string]DiffDiskOption_STATUS{
	"local": DiffDiskOption_STATUS_Local,
}

// Specifies the ephemeral disk placement for operating system disk. This property can be used by user in the request to
// choose the location i.e, cache disk or resource disk space for Ephemeral OS disk provisioning. For more information on
// Ephemeral OS disk size requirements, please refer Ephemeral OS disk size requirements for Windows VM at
// https://docs.microsoft.com/azure/virtual-machines/windows/ephemeral-os-disks#size-requirements and Linux VM at
// https://docs.microsoft.com/azure/virtual-machines/linux/ephemeral-os-disks#size-requirements
type DiffDiskPlacement_STATUS string

const (
	DiffDiskPlacement_STATUS_CacheDisk    = DiffDiskPlacement_STATUS("CacheDisk")
	DiffDiskPlacement_STATUS_ResourceDisk = DiffDiskPlacement_STATUS("ResourceDisk")
)

// Mapping from string to DiffDiskPlacement_STATUS
var diffDiskPlacement_STATUS_Values = map[string]DiffDiskPlacement_STATUS{
	"cachedisk":    DiffDiskPlacement_STATUS_CacheDisk,
	"resourcedisk": DiffDiskPlacement_STATUS_ResourceDisk,
}

// Describes a reference to Key Vault Key
type KeyVaultKeyReference_STATUS struct {
	// KeyUrl: The URL referencing a key encryption key in Key Vault.
	KeyUrl *string `json:"keyUrl,omitempty"`

	// SourceVault: The relative URL of the Key Vault containing the key.
	SourceVault *SubResource_STATUS `json:"sourceVault,omitempty"`
}

type LastPatchInstallationSummary_Status_STATUS string

const (
	LastPatchInstallationSummary_Status_STATUS_CompletedWithWarnings = LastPatchInstallationSummary_Status_STATUS("CompletedWithWarnings")
	LastPatchInstallationSummary_Status_STATUS_Failed                = LastPatchInstallationSummary_Status_STATUS("Failed")
	LastPatchInstallationSummary_Status_STATUS_InProgress            = LastPatchInstallationSummary_Status_STATUS("InProgress")
	LastPatchInstallationSummary_Status_STATUS_Succeeded             = LastPatchInstallationSummary_Status_STATUS("Succeeded")
	LastPatchInstallationSummary_Status_STATUS_Unknown               = LastPatchInstallationSummary_Status_STATUS("Unknown")
)

// Mapping from string to LastPatchInstallationSummary_Status_STATUS
var lastPatchInstallationSummary_Status_STATUS_Values = map[string]LastPatchInstallationSummary_Status_STATUS{
	"completedwithwarnings": LastPatchInstallationSummary_Status_STATUS_CompletedWithWarnings,
	"failed":                LastPatchInstallationSummary_Status_STATUS_Failed,
	"inprogress":            LastPatchInstallationSummary_Status_STATUS_InProgress,
	"succeeded":             LastPatchInstallationSummary_Status_STATUS_Succeeded,
	"unknown":               LastPatchInstallationSummary_Status_STATUS_Unknown,
}

type LinuxPatchSettings_AssessmentMode_STATUS string

const (
	LinuxPatchSettings_AssessmentMode_STATUS_AutomaticByPlatform = LinuxPatchSettings_AssessmentMode_STATUS("AutomaticByPlatform")
	LinuxPatchSettings_AssessmentMode_STATUS_ImageDefault        = LinuxPatchSettings_AssessmentMode_STATUS("ImageDefault")
)

// Mapping from string to LinuxPatchSettings_AssessmentMode_STATUS
var linuxPatchSettings_AssessmentMode_STATUS_Values = map[string]LinuxPatchSettings_AssessmentMode_STATUS{
	"automaticbyplatform": LinuxPatchSettings_AssessmentMode_STATUS_AutomaticByPlatform,
	"imagedefault":        LinuxPatchSettings_AssessmentMode_STATUS_ImageDefault,
}

type LinuxPatchSettings_PatchMode_STATUS string

const (
	LinuxPatchSettings_PatchMode_STATUS_AutomaticByPlatform = LinuxPatchSettings_PatchMode_STATUS("AutomaticByPlatform")
	LinuxPatchSettings_PatchMode_STATUS_ImageDefault        = LinuxPatchSettings_PatchMode_STATUS("ImageDefault")
)

// Mapping from string to LinuxPatchSettings_PatchMode_STATUS
var linuxPatchSettings_PatchMode_STATUS_Values = map[string]LinuxPatchSettings_PatchMode_STATUS{
	"automaticbyplatform": LinuxPatchSettings_PatchMode_STATUS_AutomaticByPlatform,
	"imagedefault":        LinuxPatchSettings_PatchMode_STATUS_ImageDefault,
}

// Specifies additional settings to be applied when patch mode AutomaticByPlatform is selected in Linux patch settings.
type LinuxVMGuestPatchAutomaticByPlatformSettings_STATUS struct {
	// RebootSetting: Specifies the reboot setting for all AutomaticByPlatform patch installation operations.
	RebootSetting *LinuxVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS `json:"rebootSetting,omitempty"`
}

type NetworkInterfaceReferenceProperties_DeleteOption_STATUS string

const (
	NetworkInterfaceReferenceProperties_DeleteOption_STATUS_Delete = NetworkInterfaceReferenceProperties_DeleteOption_STATUS("Delete")
	NetworkInterfaceReferenceProperties_DeleteOption_STATUS_Detach = NetworkInterfaceReferenceProperties_DeleteOption_STATUS("Detach")
)

// Mapping from string to NetworkInterfaceReferenceProperties_DeleteOption_STATUS
var networkInterfaceReferenceProperties_DeleteOption_STATUS_Values = map[string]NetworkInterfaceReferenceProperties_DeleteOption_STATUS{
	"delete": NetworkInterfaceReferenceProperties_DeleteOption_STATUS_Delete,
	"detach": NetworkInterfaceReferenceProperties_DeleteOption_STATUS_Detach,
}

type PatchSettings_AssessmentMode_STATUS string

const (
	PatchSettings_AssessmentMode_STATUS_AutomaticByPlatform = PatchSettings_AssessmentMode_STATUS("AutomaticByPlatform")
	PatchSettings_AssessmentMode_STATUS_ImageDefault        = PatchSettings_AssessmentMode_STATUS("ImageDefault")
)

// Mapping from string to PatchSettings_AssessmentMode_STATUS
var patchSettings_AssessmentMode_STATUS_Values = map[string]PatchSettings_AssessmentMode_STATUS{
	"automaticbyplatform": PatchSettings_AssessmentMode_STATUS_AutomaticByPlatform,
	"imagedefault":        PatchSettings_AssessmentMode_STATUS_ImageDefault,
}

type PatchSettings_PatchMode_STATUS string

const (
	PatchSettings_PatchMode_STATUS_AutomaticByOS       = PatchSettings_PatchMode_STATUS("AutomaticByOS")
	PatchSettings_PatchMode_STATUS_AutomaticByPlatform = PatchSettings_PatchMode_STATUS("AutomaticByPlatform")
	PatchSettings_PatchMode_STATUS_Manual              = PatchSettings_PatchMode_STATUS("Manual")
)

// Mapping from string to PatchSettings_PatchMode_STATUS
var patchSettings_PatchMode_STATUS_Values = map[string]PatchSettings_PatchMode_STATUS{
	"automaticbyos":       PatchSettings_PatchMode_STATUS_AutomaticByOS,
	"automaticbyplatform": PatchSettings_PatchMode_STATUS_AutomaticByPlatform,
	"manual":              PatchSettings_PatchMode_STATUS_Manual,
}

// Contains information about SSH certificate public key and the path on the Linux VM where the public key is placed.
type SshPublicKey_STATUS struct {
	// KeyData: 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.
	// For creating ssh keys, see [Create SSH keys on Linux and Mac for Linux VMs in
	// Azure]https://docs.microsoft.com/azure/virtual-machines/linux/create-ssh-keys-detailed).
	KeyData *string `json:"keyData,omitempty"`

	// Path: 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: /home/user/.ssh/authorized_keys
	Path *string `json:"path,omitempty"`
}

type VirtualMachineNetworkInterfaceConfigurationProperties_DeleteOption_STATUS string

const (
	VirtualMachineNetworkInterfaceConfigurationProperties_DeleteOption_STATUS_Delete = VirtualMachineNetworkInterfaceConfigurationProperties_DeleteOption_STATUS("Delete")
	VirtualMachineNetworkInterfaceConfigurationProperties_DeleteOption_STATUS_Detach = VirtualMachineNetworkInterfaceConfigurationProperties_DeleteOption_STATUS("Detach")
)

// Mapping from string to VirtualMachineNetworkInterfaceConfigurationProperties_DeleteOption_STATUS
var virtualMachineNetworkInterfaceConfigurationProperties_DeleteOption_STATUS_Values = map[string]VirtualMachineNetworkInterfaceConfigurationProperties_DeleteOption_STATUS{
	"delete": VirtualMachineNetworkInterfaceConfigurationProperties_DeleteOption_STATUS_Delete,
	"detach": VirtualMachineNetworkInterfaceConfigurationProperties_DeleteOption_STATUS_Detach,
}

// Describes a virtual machines network configuration's DNS settings.
type VirtualMachineNetworkInterfaceDnsSettingsConfiguration_STATUS struct {
	// DnsServers: List of DNS servers IP addresses
	DnsServers []string `json:"dnsServers,omitempty"`
}

// Describes a virtual machine network profile's IP configuration.
type VirtualMachineNetworkInterfaceIPConfiguration_STATUS struct {
	// Name: The IP configuration name.
	Name *string `json:"name,omitempty"`

	// Properties: Describes a virtual machine network interface IP configuration properties.
	Properties *VirtualMachineNetworkInterfaceIPConfigurationProperties_STATUS `json:"properties,omitempty"`
}

// Specifies the security profile settings for the managed disk.
// NOTE: It can only be set for Confidential VMs
type VMDiskSecurityProfile_STATUS struct {
	// DiskEncryptionSet: Specifies the customer managed disk encryption set resource id for the managed disk that is used for
	// Customer Managed Key encrypted ConfidentialVM OS Disk and VMGuest blob.
	DiskEncryptionSet *SubResource_STATUS `json:"diskEncryptionSet,omitempty"`

	// SecurityEncryptionType: Specifies the EncryptionType of the managed disk.
	// It is set to DiskWithVMGuestState for encryption of the managed disk along with VMGuestState blob, and VMGuestStateOnly
	// for encryption of just the VMGuestState blob.
	// NOTE: It can be set for only Confidential VMs.
	SecurityEncryptionType *VMDiskSecurityProfile_SecurityEncryptionType_STATUS `json:"securityEncryptionType,omitempty"`
}

// Specifies additional settings to be applied when patch mode AutomaticByPlatform is selected in Windows patch settings.
type WindowsVMGuestPatchAutomaticByPlatformSettings_STATUS struct {
	// RebootSetting: Specifies the reboot setting for all AutomaticByPlatform patch installation operations.
	RebootSetting *WindowsVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS `json:"rebootSetting,omitempty"`
}

// Describes Protocol and thumbprint of Windows Remote Management listener
type WinRMListener_STATUS struct {
	// CertificateUrl: 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 key
	// vault](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 following JSON Object which is encoded in UTF-8:
	// {
	// "data":"<Base64-encoded-certificate>",
	// "dataType":"pfx",
	// "password":"<pfx-file-password>"
	// }
	// To install certificates on a virtual machine it is recommended to use the [Azure Key Vault virtual machine extension for
	// Linux](https://docs.microsoft.com/azure/virtual-machines/extensions/key-vault-linux) or the [Azure Key Vault virtual
	// machine extension for Windows](https://docs.microsoft.com/azure/virtual-machines/extensions/key-vault-windows).
	CertificateUrl *string `json:"certificateUrl,omitempty"`

	// Protocol: Specifies the protocol of WinRM listener.
	// Possible values are:
	// http
	// https
	Protocol *WinRMListener_Protocol_STATUS `json:"protocol,omitempty"`
}

// Api error base.
type ApiErrorBase_STATUS struct {
	// Code: The error code.
	Code *string `json:"code,omitempty"`

	// Message: The error message.
	Message *string `json:"message,omitempty"`

	// Target: The target of the particular error.
	Target *string `json:"target,omitempty"`
}

// Inner error details.
type InnerError_STATUS struct {
	// Errordetail: The internal error message or exception dump.
	Errordetail *string `json:"errordetail,omitempty"`

	// Exceptiontype: The exception type.
	Exceptiontype *string `json:"exceptiontype,omitempty"`
}

type LinuxVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS string

const (
	LinuxVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS_Always     = LinuxVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS("Always")
	LinuxVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS_IfRequired = LinuxVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS("IfRequired")
	LinuxVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS_Never      = LinuxVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS("Never")
	LinuxVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS_Unknown    = LinuxVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS("Unknown")
)

// Mapping from string to LinuxVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS
var linuxVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS_Values = map[string]LinuxVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS{
	"always":     LinuxVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS_Always,
	"ifrequired": LinuxVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS_IfRequired,
	"never":      LinuxVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS_Never,
	"unknown":    LinuxVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS_Unknown,
}

// Describes a virtual machine network interface IP configuration properties.
type VirtualMachineNetworkInterfaceIPConfigurationProperties_STATUS struct {
	// ApplicationGatewayBackendAddressPools: Specifies an array of references to backend address pools of application
	// gateways. A virtual machine can reference backend address pools of multiple application gateways. Multiple virtual
	// machines cannot use the same application gateway.
	ApplicationGatewayBackendAddressPools []SubResource_STATUS `json:"applicationGatewayBackendAddressPools,omitempty"`

	// ApplicationSecurityGroups: Specifies an array of references to application security group.
	ApplicationSecurityGroups []SubResource_STATUS `json:"applicationSecurityGroups,omitempty"`

	// LoadBalancerBackendAddressPools: Specifies an array of references to backend address pools of load balancers. A virtual
	// machine can reference backend address pools of one public and one internal load balancer. [Multiple virtual machines
	// cannot use the same basic sku load balancer].
	LoadBalancerBackendAddressPools []SubResource_STATUS `json:"loadBalancerBackendAddressPools,omitempty"`

	// Primary: Specifies the primary network interface in case the virtual machine has more than 1 network interface.
	Primary *bool `json:"primary,omitempty"`

	// PrivateIPAddressVersion: Available from Api-Version 2017-03-30 onwards, it represents whether the specific
	// ipconfiguration is IPv4 or IPv6. Default is taken as IPv4.  Possible values are: 'IPv4' and 'IPv6'.
	PrivateIPAddressVersion *VirtualMachineNetworkInterfaceIPConfigurationProperties_PrivateIPAddressVersion_STATUS `json:"privateIPAddressVersion,omitempty"`

	// PublicIPAddressConfiguration: The publicIPAddressConfiguration.
	PublicIPAddressConfiguration *VirtualMachinePublicIPAddressConfiguration_STATUS `json:"publicIPAddressConfiguration,omitempty"`

	// Subnet: Specifies the identifier of the subnet.
	Subnet *SubResource_STATUS `json:"subnet,omitempty"`
}

type VMDiskSecurityProfile_SecurityEncryptionType_STATUS string

const (
	VMDiskSecurityProfile_SecurityEncryptionType_STATUS_DiskWithVMGuestState = VMDiskSecurityProfile_SecurityEncryptionType_STATUS("DiskWithVMGuestState")
	VMDiskSecurityProfile_SecurityEncryptionType_STATUS_VMGuestStateOnly     = VMDiskSecurityProfile_SecurityEncryptionType_STATUS("VMGuestStateOnly")
)

// Mapping from string to VMDiskSecurityProfile_SecurityEncryptionType_STATUS
var vMDiskSecurityProfile_SecurityEncryptionType_STATUS_Values = map[string]VMDiskSecurityProfile_SecurityEncryptionType_STATUS{
	"diskwithvmgueststate": VMDiskSecurityProfile_SecurityEncryptionType_STATUS_DiskWithVMGuestState,
	"vmgueststateonly":     VMDiskSecurityProfile_SecurityEncryptionType_STATUS_VMGuestStateOnly,
}

type WindowsVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS string

const (
	WindowsVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS_Always     = WindowsVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS("Always")
	WindowsVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS_IfRequired = WindowsVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS("IfRequired")
	WindowsVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS_Never      = WindowsVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS("Never")
	WindowsVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS_Unknown    = WindowsVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS("Unknown")
)

// Mapping from string to WindowsVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS
var windowsVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS_Values = map[string]WindowsVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS{
	"always":     WindowsVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS_Always,
	"ifrequired": WindowsVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS_IfRequired,
	"never":      WindowsVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS_Never,
	"unknown":    WindowsVMGuestPatchAutomaticByPlatformSettings_RebootSetting_STATUS_Unknown,
}

type WinRMListener_Protocol_STATUS string

const (
	WinRMListener_Protocol_STATUS_Http  = WinRMListener_Protocol_STATUS("Http")
	WinRMListener_Protocol_STATUS_Https = WinRMListener_Protocol_STATUS("Https")
)

// Mapping from string to WinRMListener_Protocol_STATUS
var winRMListener_Protocol_STATUS_Values = map[string]WinRMListener_Protocol_STATUS{
	"http":  WinRMListener_Protocol_STATUS_Http,
	"https": WinRMListener_Protocol_STATUS_Https,
}

type VirtualMachineNetworkInterfaceIPConfigurationProperties_PrivateIPAddressVersion_STATUS string

const (
	VirtualMachineNetworkInterfaceIPConfigurationProperties_PrivateIPAddressVersion_STATUS_IPv4 = VirtualMachineNetworkInterfaceIPConfigurationProperties_PrivateIPAddressVersion_STATUS("IPv4")
	VirtualMachineNetworkInterfaceIPConfigurationProperties_PrivateIPAddressVersion_STATUS_IPv6 = VirtualMachineNetworkInterfaceIPConfigurationProperties_PrivateIPAddressVersion_STATUS("IPv6")
)

// Mapping from string to VirtualMachineNetworkInterfaceIPConfigurationProperties_PrivateIPAddressVersion_STATUS
var virtualMachineNetworkInterfaceIPConfigurationProperties_PrivateIPAddressVersion_STATUS_Values = map[string]VirtualMachineNetworkInterfaceIPConfigurationProperties_PrivateIPAddressVersion_STATUS{
	"ipv4": VirtualMachineNetworkInterfaceIPConfigurationProperties_PrivateIPAddressVersion_STATUS_IPv4,
	"ipv6": VirtualMachineNetworkInterfaceIPConfigurationProperties_PrivateIPAddressVersion_STATUS_IPv6,
}

// Describes a virtual machines IP Configuration's PublicIPAddress configuration
type VirtualMachinePublicIPAddressConfiguration_STATUS struct {
	// Name: The publicIP address configuration name.
	Name *string `json:"name,omitempty"`

	// Properties: Describes a virtual machines IP Configuration's PublicIPAddress configuration
	Properties *VirtualMachinePublicIPAddressConfigurationProperties_STATUS `json:"properties,omitempty"`

	// Sku: Describes the public IP Sku. It can only be set with OrchestrationMode as Flexible.
	Sku *PublicIPAddressSku_STATUS `json:"sku,omitempty"`
}

// Describes the public IP Sku. It can only be set with OrchestrationMode as Flexible.
type PublicIPAddressSku_STATUS struct {
	// Name: Specify public IP sku name
	Name *PublicIPAddressSku_Name_STATUS `json:"name,omitempty"`

	// Tier: Specify public IP sku tier
	Tier *PublicIPAddressSku_Tier_STATUS `json:"tier,omitempty"`
}

// Describes a virtual machines IP Configuration's PublicIPAddress configuration
type VirtualMachinePublicIPAddressConfigurationProperties_STATUS struct {
	// DeleteOption: Specify what happens to the public IP address when the VM is deleted
	DeleteOption *VirtualMachinePublicIPAddressConfigurationProperties_DeleteOption_STATUS `json:"deleteOption,omitempty"`

	// DnsSettings: The dns settings to be applied on the publicIP addresses .
	DnsSettings *VirtualMachinePublicIPAddressDnsSettingsConfiguration_STATUS `json:"dnsSettings,omitempty"`

	// IdleTimeoutInMinutes: The idle timeout of the public IP address.
	IdleTimeoutInMinutes *int `json:"idleTimeoutInMinutes,omitempty"`

	// IpTags: The list of IP tags associated with the public IP address.
	IpTags []VirtualMachineIpTag_STATUS `json:"ipTags,omitempty"`

	// PublicIPAddressVersion: Available from Api-Version 2019-07-01 onwards, it represents whether the specific
	// ipconfiguration is IPv4 or IPv6. Default is taken as IPv4. Possible values are: 'IPv4' and 'IPv6'.
	PublicIPAddressVersion *VirtualMachinePublicIPAddressConfigurationProperties_PublicIPAddressVersion_STATUS `json:"publicIPAddressVersion,omitempty"`

	// PublicIPAllocationMethod: Specify the public IP allocation type
	PublicIPAllocationMethod *VirtualMachinePublicIPAddressConfigurationProperties_PublicIPAllocationMethod_STATUS `json:"publicIPAllocationMethod,omitempty"`

	// PublicIPPrefix: The PublicIPPrefix from which to allocate publicIP addresses.
	PublicIPPrefix *SubResource_STATUS `json:"publicIPPrefix,omitempty"`
}

type PublicIPAddressSku_Name_STATUS string

const (
	PublicIPAddressSku_Name_STATUS_Basic    = PublicIPAddressSku_Name_STATUS("Basic")
	PublicIPAddressSku_Name_STATUS_Standard = PublicIPAddressSku_Name_STATUS("Standard")
)

// Mapping from string to PublicIPAddressSku_Name_STATUS
var publicIPAddressSku_Name_STATUS_Values = map[string]PublicIPAddressSku_Name_STATUS{
	"basic":    PublicIPAddressSku_Name_STATUS_Basic,
	"standard": PublicIPAddressSku_Name_STATUS_Standard,
}

type PublicIPAddressSku_Tier_STATUS string

const (
	PublicIPAddressSku_Tier_STATUS_Global   = PublicIPAddressSku_Tier_STATUS("Global")
	PublicIPAddressSku_Tier_STATUS_Regional = PublicIPAddressSku_Tier_STATUS("Regional")
)

// Mapping from string to PublicIPAddressSku_Tier_STATUS
var publicIPAddressSku_Tier_STATUS_Values = map[string]PublicIPAddressSku_Tier_STATUS{
	"global":   PublicIPAddressSku_Tier_STATUS_Global,
	"regional": PublicIPAddressSku_Tier_STATUS_Regional,
}

// Contains the IP tag associated with the public IP address.
type VirtualMachineIpTag_STATUS struct {
	// IpTagType: IP tag type. Example: FirstPartyUsage.
	IpTagType *string `json:"ipTagType,omitempty"`

	// Tag: IP tag associated with the public IP. Example: SQL, Storage etc.
	Tag *string `json:"tag,omitempty"`
}

type VirtualMachinePublicIPAddressConfigurationProperties_DeleteOption_STATUS string

const (
	VirtualMachinePublicIPAddressConfigurationProperties_DeleteOption_STATUS_Delete = VirtualMachinePublicIPAddressConfigurationProperties_DeleteOption_STATUS("Delete")
	VirtualMachinePublicIPAddressConfigurationProperties_DeleteOption_STATUS_Detach = VirtualMachinePublicIPAddressConfigurationProperties_DeleteOption_STATUS("Detach")
)

// Mapping from string to VirtualMachinePublicIPAddressConfigurationProperties_DeleteOption_STATUS
var virtualMachinePublicIPAddressConfigurationProperties_DeleteOption_STATUS_Values = map[string]VirtualMachinePublicIPAddressConfigurationProperties_DeleteOption_STATUS{
	"delete": VirtualMachinePublicIPAddressConfigurationProperties_DeleteOption_STATUS_Delete,
	"detach": VirtualMachinePublicIPAddressConfigurationProperties_DeleteOption_STATUS_Detach,
}

type VirtualMachinePublicIPAddressConfigurationProperties_PublicIPAddressVersion_STATUS string

const (
	VirtualMachinePublicIPAddressConfigurationProperties_PublicIPAddressVersion_STATUS_IPv4 = VirtualMachinePublicIPAddressConfigurationProperties_PublicIPAddressVersion_STATUS("IPv4")
	VirtualMachinePublicIPAddressConfigurationProperties_PublicIPAddressVersion_STATUS_IPv6 = VirtualMachinePublicIPAddressConfigurationProperties_PublicIPAddressVersion_STATUS("IPv6")
)

// Mapping from string to VirtualMachinePublicIPAddressConfigurationProperties_PublicIPAddressVersion_STATUS
var virtualMachinePublicIPAddressConfigurationProperties_PublicIPAddressVersion_STATUS_Values = map[string]VirtualMachinePublicIPAddressConfigurationProperties_PublicIPAddressVersion_STATUS{
	"ipv4": VirtualMachinePublicIPAddressConfigurationProperties_PublicIPAddressVersion_STATUS_IPv4,
	"ipv6": VirtualMachinePublicIPAddressConfigurationProperties_PublicIPAddressVersion_STATUS_IPv6,
}

type VirtualMachinePublicIPAddressConfigurationProperties_PublicIPAllocationMethod_STATUS string

const (
	VirtualMachinePublicIPAddressConfigurationProperties_PublicIPAllocationMethod_STATUS_Dynamic = VirtualMachinePublicIPAddressConfigurationProperties_PublicIPAllocationMethod_STATUS("Dynamic")
	VirtualMachinePublicIPAddressConfigurationProperties_PublicIPAllocationMethod_STATUS_Static  = VirtualMachinePublicIPAddressConfigurationProperties_PublicIPAllocationMethod_STATUS("Static")
)

// Mapping from string to VirtualMachinePublicIPAddressConfigurationProperties_PublicIPAllocationMethod_STATUS
var virtualMachinePublicIPAddressConfigurationProperties_PublicIPAllocationMethod_STATUS_Values = map[string]VirtualMachinePublicIPAddressConfigurationProperties_PublicIPAllocationMethod_STATUS{
	"dynamic": VirtualMachinePublicIPAddressConfigurationProperties_PublicIPAllocationMethod_STATUS_Dynamic,
	"static":  VirtualMachinePublicIPAddressConfigurationProperties_PublicIPAllocationMethod_STATUS_Static,
}

// Describes a virtual machines network configuration's DNS settings.
type VirtualMachinePublicIPAddressDnsSettingsConfiguration_STATUS struct {
	// DomainNameLabel: The Domain name label prefix of the PublicIPAddress resources that will be created. The generated name
	// label is the concatenation of the domain name label and vm network profile unique ID.
	DomainNameLabel *string `json:"domainNameLabel,omitempty"`
}
