// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// Code generated by Microsoft (R) Go Code Generator. DO NOT EDIT.

package armcomputebulkactions

const (
	version20260201Preview string = "2026-02-01-preview"
)

// AcceleratorManufacturer - Accelerator manufacturers supported by Azure VMs.
type AcceleratorManufacturer string

const (
	// AcceleratorManufacturerAMD - AMD GpuType
	AcceleratorManufacturerAMD AcceleratorManufacturer = "AMD"
	// AcceleratorManufacturerNvidia - Nvidia GpuType
	AcceleratorManufacturerNvidia AcceleratorManufacturer = "Nvidia"
	// AcceleratorManufacturerXilinx - Xilinx GpuType
	AcceleratorManufacturerXilinx AcceleratorManufacturer = "Xilinx"
)

// PossibleAcceleratorManufacturerValues returns the possible values for the AcceleratorManufacturer const type.
func PossibleAcceleratorManufacturerValues() []AcceleratorManufacturer {
	return []AcceleratorManufacturer{
		AcceleratorManufacturerAMD,
		AcceleratorManufacturerNvidia,
		AcceleratorManufacturerXilinx,
	}
}

// AcceleratorType - Accelerator types supported by Azure VMs.
type AcceleratorType string

const (
	// AcceleratorTypeFPGA - FPGA Accelerator
	AcceleratorTypeFPGA AcceleratorType = "FPGA"
	// AcceleratorTypeGPU - GPU Accelerator
	AcceleratorTypeGPU AcceleratorType = "GPU"
)

// PossibleAcceleratorTypeValues returns the possible values for the AcceleratorType const type.
func PossibleAcceleratorTypeValues() []AcceleratorType {
	return []AcceleratorType{
		AcceleratorTypeFPGA,
		AcceleratorTypeGPU,
	}
}

// ActionType - Extensible enum. Indicates the action type. "Internal" refers to actions that are for internal only APIs.
type ActionType string

const (
	// ActionTypeInternal - Actions are for internal-only APIs.
	ActionTypeInternal ActionType = "Internal"
)

// PossibleActionTypeValues returns the possible values for the ActionType const type.
func PossibleActionTypeValues() []ActionType {
	return []ActionType{
		ActionTypeInternal,
	}
}

// AllocationStrategy - Allocation strategy types for LaunchBulkInstancesOperation
type AllocationStrategy string

const (
	// AllocationStrategyCapacityOptimized - VM sizes distribution will be determined to optimize for capacity.
	AllocationStrategyCapacityOptimized AllocationStrategy = "CapacityOptimized"
	// AllocationStrategyLowestPrice - Default. VM sizes distribution will be determined to optimize for price. Note: Capacity
	// will still be considered here but will be given much less weight.
	AllocationStrategyLowestPrice AllocationStrategy = "LowestPrice"
	// AllocationStrategyPrioritized - VM sizes distribution will be determined to optimize for the 'rank' specified for each
	// vm size.
	AllocationStrategyPrioritized AllocationStrategy = "Prioritized"
)

// PossibleAllocationStrategyValues returns the possible values for the AllocationStrategy const type.
func PossibleAllocationStrategyValues() []AllocationStrategy {
	return []AllocationStrategy{
		AllocationStrategyCapacityOptimized,
		AllocationStrategyLowestPrice,
		AllocationStrategyPrioritized,
	}
}

// ArchitectureType - Architecture types supported by Azure VMs.
type ArchitectureType string

const (
	// ArchitectureTypeARM64 - ARM64 Architecture
	ArchitectureTypeARM64 ArchitectureType = "ARM64"
	// ArchitectureTypeX64 - X64 Architecture
	ArchitectureTypeX64 ArchitectureType = "X64"
)

// PossibleArchitectureTypeValues returns the possible values for the ArchitectureType const type.
func PossibleArchitectureTypeValues() []ArchitectureType {
	return []ArchitectureType{
		ArchitectureTypeARM64,
		ArchitectureTypeX64,
	}
}

// CPUManufacturer - Cpu Manufacturers supported by Azure VMs.
type CPUManufacturer string

const (
	// CPUManufacturerAMD - AMD CPU.
	CPUManufacturerAMD CPUManufacturer = "AMD"
	// CPUManufacturerAmpere - Ampere CPU.
	CPUManufacturerAmpere CPUManufacturer = "Ampere"
	// CPUManufacturerIntel - Intel CPU.
	CPUManufacturerIntel CPUManufacturer = "Intel"
	// CPUManufacturerMicrosoft - Microsoft CPU.
	CPUManufacturerMicrosoft CPUManufacturer = "Microsoft"
)

// PossibleCPUManufacturerValues returns the possible values for the CPUManufacturer const type.
func PossibleCPUManufacturerValues() []CPUManufacturer {
	return []CPUManufacturer{
		CPUManufacturerAMD,
		CPUManufacturerAmpere,
		CPUManufacturerIntel,
		CPUManufacturerMicrosoft,
	}
}

// CachingTypes - Specifies the caching requirements. Possible values are: **None,** **ReadOnly,** **ReadWrite.** The default
// values are: **None for Standard storage. ReadOnly for Premium storage**
type CachingTypes string

const (
	// CachingTypesNone - Caching type:None
	CachingTypesNone CachingTypes = "None"
	// CachingTypesReadOnly - Caching type:ReadOnly
	CachingTypesReadOnly CachingTypes = "ReadOnly"
	// CachingTypesReadWrite - Caching type:ReadWrite
	CachingTypesReadWrite CachingTypes = "ReadWrite"
)

// PossibleCachingTypesValues returns the possible values for the CachingTypes const type.
func PossibleCachingTypesValues() []CachingTypes {
	return []CachingTypes{
		CachingTypesNone,
		CachingTypesReadOnly,
		CachingTypesReadWrite,
	}
}

// CapacityType - Capacity types for LaunchBulkInstancesOperation.
type CapacityType string

const (
	// CapacityTypeVCPU - VCpu is the capacity type for LaunchBulkInstancesOperation where capacity is provisioned in terms of
	// VCpus. If VCpu capacity is not exactly divisible by VCpu count in VMSizes, capacity in VCpus will be overprovisioned by
	// default.
	CapacityTypeVCPU CapacityType = "VCpu"
	// CapacityTypeVM - Default. VM is the default capacity type for LaunchBulkInstancesOperation where capacity is provisioned
	// in terms of VMs.
	CapacityTypeVM CapacityType = "VM"
)

// PossibleCapacityTypeValues returns the possible values for the CapacityType const type.
func PossibleCapacityTypeValues() []CapacityType {
	return []CapacityType{
		CapacityTypeVCPU,
		CapacityTypeVM,
	}
}

// CreatedByType - The kind of entity that created the resource.
type CreatedByType string

const (
	// CreatedByTypeApplication - The entity was created by an application.
	CreatedByTypeApplication CreatedByType = "Application"
	// CreatedByTypeKey - The entity was created by a key.
	CreatedByTypeKey CreatedByType = "Key"
	// CreatedByTypeManagedIdentity - The entity was created by a managed identity.
	CreatedByTypeManagedIdentity CreatedByType = "ManagedIdentity"
	// CreatedByTypeUser - The entity was created by a user.
	CreatedByTypeUser CreatedByType = "User"
)

// PossibleCreatedByTypeValues returns the possible values for the CreatedByType const type.
func PossibleCreatedByTypeValues() []CreatedByType {
	return []CreatedByType{
		CreatedByTypeApplication,
		CreatedByTypeKey,
		CreatedByTypeManagedIdentity,
		CreatedByTypeUser,
	}
}

// DeadlineType - The types of deadlines supported by Bulkactions
type DeadlineType string

const (
	// DeadlineTypeCompleteBy - Complete the operation by the given deadline.
	DeadlineTypeCompleteBy DeadlineType = "CompleteBy"
	// DeadlineTypeInitiateAt - Initiate the operation at the given deadline.
	DeadlineTypeInitiateAt DeadlineType = "InitiateAt"
	// DeadlineTypeUnknown - Default value of Unknown.
	DeadlineTypeUnknown DeadlineType = "Unknown"
)

// PossibleDeadlineTypeValues returns the possible values for the DeadlineType const type.
func PossibleDeadlineTypeValues() []DeadlineType {
	return []DeadlineType{
		DeadlineTypeCompleteBy,
		DeadlineTypeInitiateAt,
		DeadlineTypeUnknown,
	}
}

// DeleteOptions - Specify what happens to the network interface when the VM is deleted
type DeleteOptions string

const (
	// DeleteOptionsDelete - Delete network interface when the VM is deleted
	DeleteOptionsDelete DeleteOptions = "Delete"
	// DeleteOptionsDetach - Detach network interface when the VM is deleted
	DeleteOptionsDetach DeleteOptions = "Detach"
)

// PossibleDeleteOptionsValues returns the possible values for the DeleteOptions const type.
func PossibleDeleteOptionsValues() []DeleteOptions {
	return []DeleteOptions{
		DeleteOptionsDelete,
		DeleteOptionsDetach,
	}
}

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

const (
	// DiffDiskOptionsLocal - Local Ephemeral disk option: Local
	DiffDiskOptionsLocal DiffDiskOptions = "Local"
)

// PossibleDiffDiskOptionsValues returns the possible values for the DiffDiskOptions const type.
func PossibleDiffDiskOptionsValues() []DiffDiskOptions {
	return []DiffDiskOptions{
		DiffDiskOptionsLocal,
	}
}

// DiffDiskPlacement - 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, resource disk or nvme 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.
// Minimum api-version for NvmeDisk: 2024-03-01.
type DiffDiskPlacement string

const (
	// DiffDiskPlacementCacheDisk - CacheDisk disk placement
	DiffDiskPlacementCacheDisk DiffDiskPlacement = "CacheDisk"
	// DiffDiskPlacementNvmeDisk - NvmeDisk disk placement
	DiffDiskPlacementNvmeDisk DiffDiskPlacement = "NvmeDisk"
	// DiffDiskPlacementResourceDisk - ResourceDisk disk placement
	DiffDiskPlacementResourceDisk DiffDiskPlacement = "ResourceDisk"
)

// PossibleDiffDiskPlacementValues returns the possible values for the DiffDiskPlacement const type.
func PossibleDiffDiskPlacementValues() []DiffDiskPlacement {
	return []DiffDiskPlacement{
		DiffDiskPlacementCacheDisk,
		DiffDiskPlacementNvmeDisk,
		DiffDiskPlacementResourceDisk,
	}
}

// DiskControllerTypes - Specifies the disk controller type configured for the VM and VirtualMachineScaleSet. This property
// is only supported for virtual machines whose operating system disk and VM sku supports Generation 2 (https://docs.microsoft.com/en-us/azure/virtual-machines/generation-2),
// please check the HyperVGenerations capability returned as part of VM sku capabilities in the response of Microsoft.Compute
// SKUs api for the region contains V2 (https://docs.microsoft.com/rest/api/compute/resourceskus/list). For more information
// about Disk Controller Types supported please refer to https://aka.ms/azure-diskcontrollertypes.
type DiskControllerTypes string

const (
	// DiskControllerTypesNVMe - NVMe disk controller type
	DiskControllerTypesNVMe DiskControllerTypes = "NVMe"
	// DiskControllerTypesSCSI - SCSI disk controller type
	DiskControllerTypesSCSI DiskControllerTypes = "SCSI"
)

// PossibleDiskControllerTypesValues returns the possible values for the DiskControllerTypes const type.
func PossibleDiskControllerTypesValues() []DiskControllerTypes {
	return []DiskControllerTypes{
		DiskControllerTypesNVMe,
		DiskControllerTypesSCSI,
	}
}

// DiskCreateOptionTypes - Specifies how the virtual machine disk should be created. Possible values are **Attach:** This
// value is used when you are using a specialized disk to create the virtual machine. **FromImage:** This value is used when
// you are using an image to create the virtual machine. If you are using a platform image, you should also use the imageReference
// element described above. If you are using a marketplace image, you should also use the plan element previously described.
// **Empty:** This value is used when creating an empty data disk. **Copy:** This value is used to create a data disk from
// a snapshot or another disk. **Restore:** This value is used to create a data disk from a disk restore point.
type DiskCreateOptionTypes string

const (
	// DiskCreateOptionTypesAttach - Create disk by Attach
	DiskCreateOptionTypesAttach DiskCreateOptionTypes = "Attach"
	// DiskCreateOptionTypesCopy - Create disk by Copy
	DiskCreateOptionTypesCopy DiskCreateOptionTypes = "Copy"
	// DiskCreateOptionTypesEmpty - Empty value
	DiskCreateOptionTypesEmpty DiskCreateOptionTypes = "Empty"
	// DiskCreateOptionTypesFromImage - Create disk FromImage
	DiskCreateOptionTypesFromImage DiskCreateOptionTypes = "FromImage"
	// DiskCreateOptionTypesRestore - Create disk by Restore
	DiskCreateOptionTypesRestore DiskCreateOptionTypes = "Restore"
)

// PossibleDiskCreateOptionTypesValues returns the possible values for the DiskCreateOptionTypes const type.
func PossibleDiskCreateOptionTypesValues() []DiskCreateOptionTypes {
	return []DiskCreateOptionTypes{
		DiskCreateOptionTypesAttach,
		DiskCreateOptionTypesCopy,
		DiskCreateOptionTypesEmpty,
		DiskCreateOptionTypesFromImage,
		DiskCreateOptionTypesRestore,
	}
}

// DiskDeleteOptionTypes - Specifies the behavior of the managed disk when the VM gets deleted, for example whether the managed
// disk is deleted or detached. Supported values are: **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 DiskDeleteOptionTypes string

const (
	// DiskDeleteOptionTypesDelete - Delete the disk upon VM deletion
	DiskDeleteOptionTypesDelete DiskDeleteOptionTypes = "Delete"
	// DiskDeleteOptionTypesDetach - Detach the disk upon VM deletion
	DiskDeleteOptionTypesDetach DiskDeleteOptionTypes = "Detach"
)

// PossibleDiskDeleteOptionTypesValues returns the possible values for the DiskDeleteOptionTypes const type.
func PossibleDiskDeleteOptionTypesValues() []DiskDeleteOptionTypes {
	return []DiskDeleteOptionTypes{
		DiskDeleteOptionTypesDelete,
		DiskDeleteOptionTypesDetach,
	}
}

// DiskDetachOptionTypes - 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 are: **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**. To force-detach a data disk update toBeDetached to 'true' along with setting detachOption: 'ForceDetach'.
type DiskDetachOptionTypes string

const (
	// DiskDetachOptionTypesForceDetach - ForceDetach the disk
	DiskDetachOptionTypesForceDetach DiskDetachOptionTypes = "ForceDetach"
)

// PossibleDiskDetachOptionTypesValues returns the possible values for the DiskDetachOptionTypes const type.
func PossibleDiskDetachOptionTypesValues() []DiskDetachOptionTypes {
	return []DiskDetachOptionTypes{
		DiskDetachOptionTypesForceDetach,
	}
}

// DomainNameLabelScopeTypes - The Domain name label scope.The concatenation of the hashed domain name label that generated
// according to the policy from domain name label scope and vm index will be the domain name labels of the PublicIPAddress
// resources that will be created
type DomainNameLabelScopeTypes string

const (
	// DomainNameLabelScopeTypesNoReuse - NoReuse scope type
	DomainNameLabelScopeTypesNoReuse DomainNameLabelScopeTypes = "NoReuse"
	// DomainNameLabelScopeTypesResourceGroupReuse - ResourceGroupReuse scope type
	DomainNameLabelScopeTypesResourceGroupReuse DomainNameLabelScopeTypes = "ResourceGroupReuse"
	// DomainNameLabelScopeTypesSubscriptionReuse - SubscriptionReuse scope type
	DomainNameLabelScopeTypesSubscriptionReuse DomainNameLabelScopeTypes = "SubscriptionReuse"
	// DomainNameLabelScopeTypesTenantReuse - TenantReuse scope type
	DomainNameLabelScopeTypesTenantReuse DomainNameLabelScopeTypes = "TenantReuse"
)

// PossibleDomainNameLabelScopeTypesValues returns the possible values for the DomainNameLabelScopeTypes const type.
func PossibleDomainNameLabelScopeTypesValues() []DomainNameLabelScopeTypes {
	return []DomainNameLabelScopeTypes{
		DomainNameLabelScopeTypesNoReuse,
		DomainNameLabelScopeTypesResourceGroupReuse,
		DomainNameLabelScopeTypesSubscriptionReuse,
		DomainNameLabelScopeTypesTenantReuse,
	}
}

// EvictionPolicy - Different kind of eviction policies
type EvictionPolicy string

const (
	// EvictionPolicyDeallocate - When evicted, the Spot VM will be deallocated/stopped
	EvictionPolicyDeallocate EvictionPolicy = "Deallocate"
	// EvictionPolicyDelete - When evicted, the Spot VM will be deleted and the corresponding capacity will be updated to reflect
	// this.
	EvictionPolicyDelete EvictionPolicy = "Delete"
)

// PossibleEvictionPolicyValues returns the possible values for the EvictionPolicy const type.
func PossibleEvictionPolicyValues() []EvictionPolicy {
	return []EvictionPolicy{
		EvictionPolicyDeallocate,
		EvictionPolicyDelete,
	}
}

// HyperVGeneration - HyperVGenerations supported by Azure VMs.
type HyperVGeneration string

const (
	// HyperVGenerationGen1 - Gen1 hyperV.
	HyperVGenerationGen1 HyperVGeneration = "Gen1"
	// HyperVGenerationGen2 - Gen2 hyperV.
	HyperVGenerationGen2 HyperVGeneration = "Gen2"
)

// PossibleHyperVGenerationValues returns the possible values for the HyperVGeneration const type.
func PossibleHyperVGenerationValues() []HyperVGeneration {
	return []HyperVGeneration{
		HyperVGenerationGen1,
		HyperVGenerationGen2,
	}
}

// IPVersions - Available from compute 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'.
type IPVersions string

const (
	// IPVersionsIPv4 - IPv4 version
	IPVersionsIPv4 IPVersions = "IPv4"
	// IPVersionsIPv6 - IPv6 version
	IPVersionsIPv6 IPVersions = "IPv6"
)

// PossibleIPVersionsValues returns the possible values for the IPVersions const type.
func PossibleIPVersionsValues() []IPVersions {
	return []IPVersions{
		IPVersionsIPv4,
		IPVersionsIPv6,
	}
}

// LinuxPatchAssessmentMode - Specifies the mode of VM Guest Patch Assessment for the IaaS virtual machine.<br /><br /> Possible
// values are:<br /><br /> **ImageDefault** - You control the timing of patch assessments on a virtual machine. <br /><br
// /> **AutomaticByPlatform** - The platform will trigger periodic patch assessments. The property provisionVMAgent must be
// true.
type LinuxPatchAssessmentMode string

const (
	// LinuxPatchAssessmentModeAutomaticByPlatform - AutomaticByPlatform mode
	LinuxPatchAssessmentModeAutomaticByPlatform LinuxPatchAssessmentMode = "AutomaticByPlatform"
	// LinuxPatchAssessmentModeImageDefault - ImageDefault mode
	LinuxPatchAssessmentModeImageDefault LinuxPatchAssessmentMode = "ImageDefault"
)

// PossibleLinuxPatchAssessmentModeValues returns the possible values for the LinuxPatchAssessmentMode const type.
func PossibleLinuxPatchAssessmentModeValues() []LinuxPatchAssessmentMode {
	return []LinuxPatchAssessmentMode{
		LinuxPatchAssessmentModeAutomaticByPlatform,
		LinuxPatchAssessmentModeImageDefault,
	}
}

// LinuxVMGuestPatchAutomaticByPlatformRebootSetting - Specifies the reboot setting for all AutomaticByPlatform patch installation
// operations.
type LinuxVMGuestPatchAutomaticByPlatformRebootSetting string

const (
	// LinuxVMGuestPatchAutomaticByPlatformRebootSettingAlways - Always reboot
	LinuxVMGuestPatchAutomaticByPlatformRebootSettingAlways LinuxVMGuestPatchAutomaticByPlatformRebootSetting = "Always"
	// LinuxVMGuestPatchAutomaticByPlatformRebootSettingIfRequired - Reboot if required
	LinuxVMGuestPatchAutomaticByPlatformRebootSettingIfRequired LinuxVMGuestPatchAutomaticByPlatformRebootSetting = "IfRequired"
	// LinuxVMGuestPatchAutomaticByPlatformRebootSettingNever - Never reboot
	LinuxVMGuestPatchAutomaticByPlatformRebootSettingNever LinuxVMGuestPatchAutomaticByPlatformRebootSetting = "Never"
	// LinuxVMGuestPatchAutomaticByPlatformRebootSettingUnknown - Unknown reboot setting
	LinuxVMGuestPatchAutomaticByPlatformRebootSettingUnknown LinuxVMGuestPatchAutomaticByPlatformRebootSetting = "Unknown"
)

// PossibleLinuxVMGuestPatchAutomaticByPlatformRebootSettingValues returns the possible values for the LinuxVMGuestPatchAutomaticByPlatformRebootSetting const type.
func PossibleLinuxVMGuestPatchAutomaticByPlatformRebootSettingValues() []LinuxVMGuestPatchAutomaticByPlatformRebootSetting {
	return []LinuxVMGuestPatchAutomaticByPlatformRebootSetting{
		LinuxVMGuestPatchAutomaticByPlatformRebootSettingAlways,
		LinuxVMGuestPatchAutomaticByPlatformRebootSettingIfRequired,
		LinuxVMGuestPatchAutomaticByPlatformRebootSettingNever,
		LinuxVMGuestPatchAutomaticByPlatformRebootSettingUnknown,
	}
}

// LinuxVMGuestPatchMode - Specifies the mode of VM Guest Patching to IaaS virtual machine or virtual machines associated
// to virtual machine scale set with OrchestrationMode as Flexible.<br /><br /> Possible values are:<br /><br /> **ImageDefault**
// - The virtual machine's default patching configuration is used. <br /><br /> **AutomaticByPlatform** - The virtual machine
// will be automatically updated by the platform. The property provisionVMAgent must be true
type LinuxVMGuestPatchMode string

const (
	// LinuxVMGuestPatchModeAutomaticByPlatform - AutomaticByPlatform linux VM guest patch mode
	LinuxVMGuestPatchModeAutomaticByPlatform LinuxVMGuestPatchMode = "AutomaticByPlatform"
	// LinuxVMGuestPatchModeImageDefault - ImageDefault linux VM guest patch mode
	LinuxVMGuestPatchModeImageDefault LinuxVMGuestPatchMode = "ImageDefault"
)

// PossibleLinuxVMGuestPatchModeValues returns the possible values for the LinuxVMGuestPatchMode const type.
func PossibleLinuxVMGuestPatchModeValues() []LinuxVMGuestPatchMode {
	return []LinuxVMGuestPatchMode{
		LinuxVMGuestPatchModeAutomaticByPlatform,
		LinuxVMGuestPatchModeImageDefault,
	}
}

// LocalStorageDiskType - Local storage disk types supported by Azure VMs.
type LocalStorageDiskType string

const (
	// LocalStorageDiskTypeHDD - HDD DiskType.
	LocalStorageDiskTypeHDD LocalStorageDiskType = "HDD"
	// LocalStorageDiskTypeSSD - SSD DiskType.
	LocalStorageDiskTypeSSD LocalStorageDiskType = "SSD"
)

// PossibleLocalStorageDiskTypeValues returns the possible values for the LocalStorageDiskType const type.
func PossibleLocalStorageDiskTypeValues() []LocalStorageDiskType {
	return []LocalStorageDiskType{
		LocalStorageDiskTypeHDD,
		LocalStorageDiskTypeSSD,
	}
}

// ManagedServiceIdentityType - Type of managed service identity (where both SystemAssigned and UserAssigned types are allowed).
type ManagedServiceIdentityType string

const (
	// ManagedServiceIdentityTypeNone - No managed identity.
	ManagedServiceIdentityTypeNone ManagedServiceIdentityType = "None"
	// ManagedServiceIdentityTypeSystemAssigned - System assigned managed identity.
	ManagedServiceIdentityTypeSystemAssigned ManagedServiceIdentityType = "SystemAssigned"
	// ManagedServiceIdentityTypeSystemAssignedUserAssigned - System and user assigned managed identity.
	ManagedServiceIdentityTypeSystemAssignedUserAssigned ManagedServiceIdentityType = "SystemAssigned,UserAssigned"
	// ManagedServiceIdentityTypeUserAssigned - User assigned managed identity.
	ManagedServiceIdentityTypeUserAssigned ManagedServiceIdentityType = "UserAssigned"
)

// PossibleManagedServiceIdentityTypeValues returns the possible values for the ManagedServiceIdentityType const type.
func PossibleManagedServiceIdentityTypeValues() []ManagedServiceIdentityType {
	return []ManagedServiceIdentityType{
		ManagedServiceIdentityTypeNone,
		ManagedServiceIdentityTypeSystemAssigned,
		ManagedServiceIdentityTypeSystemAssignedUserAssigned,
		ManagedServiceIdentityTypeUserAssigned,
	}
}

// Mode - Specifies the mode that ProxyAgent will execute on if the feature is enabled. ProxyAgent will start to audit or
// monitor but not enforce access control over requests to host endpoints in Audit mode, while in Enforce mode it will enforce
// access control. The default value is Enforce mode.
type Mode string

const (
	// ModeAudit - Audit mode
	ModeAudit Mode = "Audit"
	// ModeEnforce - Enforce mode
	ModeEnforce Mode = "Enforce"
)

// PossibleModeValues returns the possible values for the Mode const type.
func PossibleModeValues() []Mode {
	return []Mode{
		ModeAudit,
		ModeEnforce,
	}
}

// Modes - Specifies the execution mode. In Audit mode, the system acts as if it is enforcing the access control policy, including
// emitting access denial entries in the logs but it does not actually deny any requests to host endpoints. In Enforce mode,
// the system will enforce the access control and it is the recommended mode of operation.
type Modes string

const (
	// ModesAudit - Audit mode
	ModesAudit Modes = "Audit"
	// ModesDisabled - Disabled mode
	ModesDisabled Modes = "Disabled"
	// ModesEnforce - Enforce mode
	ModesEnforce Modes = "Enforce"
)

// PossibleModesValues returns the possible values for the Modes const type.
func PossibleModesValues() []Modes {
	return []Modes{
		ModesAudit,
		ModesDisabled,
		ModesEnforce,
	}
}

// NetworkAPIVersion - Specifies the Microsoft.Network API version used when creating networking resources in the Network
// Interface Configurations
type NetworkAPIVersion string

const (
	// NetworkAPIVersion20201101 - 2020-11-01 version
	NetworkAPIVersion20201101 NetworkAPIVersion = "2020-11-01"
	// NetworkAPIVersion20221101 - 2022-11-01 version
	NetworkAPIVersion20221101 NetworkAPIVersion = "2022-11-01"
)

// PossibleNetworkAPIVersionValues returns the possible values for the NetworkAPIVersion const type.
func PossibleNetworkAPIVersionValues() []NetworkAPIVersion {
	return []NetworkAPIVersion{
		NetworkAPIVersion20201101,
		NetworkAPIVersion20221101,
	}
}

// NetworkInterfaceAuxiliaryMode - Specifies whether the Auxiliary mode is enabled for the Network Interface resource.
type NetworkInterfaceAuxiliaryMode string

const (
	// NetworkInterfaceAuxiliaryModeAcceleratedConnections - AcceleratedConnections mode
	NetworkInterfaceAuxiliaryModeAcceleratedConnections NetworkInterfaceAuxiliaryMode = "AcceleratedConnections"
	// NetworkInterfaceAuxiliaryModeFloating - Floating mode
	NetworkInterfaceAuxiliaryModeFloating NetworkInterfaceAuxiliaryMode = "Floating"
	// NetworkInterfaceAuxiliaryModeNone - None mode
	NetworkInterfaceAuxiliaryModeNone NetworkInterfaceAuxiliaryMode = "None"
)

// PossibleNetworkInterfaceAuxiliaryModeValues returns the possible values for the NetworkInterfaceAuxiliaryMode const type.
func PossibleNetworkInterfaceAuxiliaryModeValues() []NetworkInterfaceAuxiliaryMode {
	return []NetworkInterfaceAuxiliaryMode{
		NetworkInterfaceAuxiliaryModeAcceleratedConnections,
		NetworkInterfaceAuxiliaryModeFloating,
		NetworkInterfaceAuxiliaryModeNone,
	}
}

// NetworkInterfaceAuxiliarySKU - Specifies whether the Auxiliary sku is enabled for the Network Interface resource.
type NetworkInterfaceAuxiliarySKU string

const (
	// NetworkInterfaceAuxiliarySKUA1 - A1 sku
	NetworkInterfaceAuxiliarySKUA1 NetworkInterfaceAuxiliarySKU = "A1"
	// NetworkInterfaceAuxiliarySKUA2 - A2 sku
	NetworkInterfaceAuxiliarySKUA2 NetworkInterfaceAuxiliarySKU = "A2"
	// NetworkInterfaceAuxiliarySKUA4 - A4 sku
	NetworkInterfaceAuxiliarySKUA4 NetworkInterfaceAuxiliarySKU = "A4"
	// NetworkInterfaceAuxiliarySKUA8 - A8 sku
	NetworkInterfaceAuxiliarySKUA8 NetworkInterfaceAuxiliarySKU = "A8"
	// NetworkInterfaceAuxiliarySKUNone - None: None sku
	NetworkInterfaceAuxiliarySKUNone NetworkInterfaceAuxiliarySKU = "None"
)

// PossibleNetworkInterfaceAuxiliarySKUValues returns the possible values for the NetworkInterfaceAuxiliarySKU const type.
func PossibleNetworkInterfaceAuxiliarySKUValues() []NetworkInterfaceAuxiliarySKU {
	return []NetworkInterfaceAuxiliarySKU{
		NetworkInterfaceAuxiliarySKUA1,
		NetworkInterfaceAuxiliarySKUA2,
		NetworkInterfaceAuxiliarySKUA4,
		NetworkInterfaceAuxiliarySKUA8,
		NetworkInterfaceAuxiliarySKUNone,
	}
}

// OperatingSystemTypes - This property allows you to specify the supported type of the OS that application is built for.
// Possible values are: **Windows,** **Linux.**
type OperatingSystemTypes string

const (
	// OperatingSystemTypesLinux - Linux OS
	OperatingSystemTypesLinux OperatingSystemTypes = "Linux"
	// OperatingSystemTypesWindows - Windows OS
	OperatingSystemTypesWindows OperatingSystemTypes = "Windows"
)

// PossibleOperatingSystemTypesValues returns the possible values for the OperatingSystemTypes const type.
func PossibleOperatingSystemTypesValues() []OperatingSystemTypes {
	return []OperatingSystemTypes{
		OperatingSystemTypesLinux,
		OperatingSystemTypesWindows,
	}
}

// OperationState - Values that define the states of operations in BulkActions
type OperationState string

const (
	// OperationStateBlocked - Operations that are blocked
	OperationStateBlocked OperationState = "Blocked"
	// OperationStateCancelled - Operations that have been Cancelled by the user
	OperationStateCancelled OperationState = "Cancelled"
	// OperationStateExecuting - Operations that are in the process of being executed
	OperationStateExecuting OperationState = "Executing"
	// OperationStateFailed - Operations that have failed
	OperationStateFailed OperationState = "Failed"
	// OperationStatePendingExecution - Operations that are waiting to be executed
	OperationStatePendingExecution OperationState = "PendingExecution"
	// OperationStatePendingScheduling - Operations that are pending scheduling
	OperationStatePendingScheduling OperationState = "PendingScheduling"
	// OperationStateScheduled - Operations that have been scheduled
	OperationStateScheduled OperationState = "Scheduled"
	// OperationStateSucceeded - Operations that succeeded
	OperationStateSucceeded OperationState = "Succeeded"
	// OperationStateUnknown - The default value for the operation state enum
	OperationStateUnknown OperationState = "Unknown"
)

// PossibleOperationStateValues returns the possible values for the OperationState const type.
func PossibleOperationStateValues() []OperationState {
	return []OperationState{
		OperationStateBlocked,
		OperationStateCancelled,
		OperationStateExecuting,
		OperationStateFailed,
		OperationStatePendingExecution,
		OperationStatePendingScheduling,
		OperationStateScheduled,
		OperationStateSucceeded,
		OperationStateUnknown,
	}
}

// OptimizationPreference - The preferences customers can select to optimize their requests to Bulkactions
type OptimizationPreference string

const (
	// OptimizationPreferenceAvailability - Optimize while considering availability of resources
	OptimizationPreferenceAvailability OptimizationPreference = "Availability"
	// OptimizationPreferenceCost - Optimize while considering cost savings
	OptimizationPreferenceCost OptimizationPreference = "Cost"
	// OptimizationPreferenceCostAvailabilityBalanced - Optimize while considering a balance of cost and availability
	OptimizationPreferenceCostAvailabilityBalanced OptimizationPreference = "CostAvailabilityBalanced"
)

// PossibleOptimizationPreferenceValues returns the possible values for the OptimizationPreference const type.
func PossibleOptimizationPreferenceValues() []OptimizationPreference {
	return []OptimizationPreference{
		OptimizationPreferenceAvailability,
		OptimizationPreferenceCost,
		OptimizationPreferenceCostAvailabilityBalanced,
	}
}

// Origin - The intended executor of the operation; as in Resource Based Access Control (RBAC) and audit logs UX. Default
// value is "user,system"
type Origin string

const (
	// OriginSystem - Indicates the operation is initiated by a system.
	OriginSystem Origin = "system"
	// OriginUser - Indicates the operation is initiated by a user.
	OriginUser Origin = "user"
	// OriginUserSystem - Indicates the operation is initiated by a user or system.
	OriginUserSystem Origin = "user,system"
)

// PossibleOriginValues returns the possible values for the Origin const type.
func PossibleOriginValues() []Origin {
	return []Origin{
		OriginSystem,
		OriginUser,
		OriginUserSystem,
	}
}

// ProtocolTypes - Specifies the protocol of WinRM listener. Possible values are: **http,** **https.**
type ProtocolTypes string

const (
	// ProtocolTypesHTTP - Http protocol
	ProtocolTypesHTTP ProtocolTypes = "Http"
	// ProtocolTypesHTTPS - Https protocol
	ProtocolTypesHTTPS ProtocolTypes = "Https"
)

// PossibleProtocolTypesValues returns the possible values for the ProtocolTypes const type.
func PossibleProtocolTypesValues() []ProtocolTypes {
	return []ProtocolTypes{
		ProtocolTypesHTTP,
		ProtocolTypesHTTPS,
	}
}

// ProvisioningState - The status of the LaunchBulkInstancesOperation.
type ProvisioningState string

const (
	// ProvisioningStateCanceled - The operation has been canceled.
	ProvisioningStateCanceled ProvisioningState = "Canceled"
	// ProvisioningStateCreating - Initial creation in progress.
	ProvisioningStateCreating ProvisioningState = "Creating"
	// ProvisioningStateDeleting - Deletion in progress.
	ProvisioningStateDeleting ProvisioningState = "Deleting"
	// ProvisioningStateFailed - The operation has failed.
	ProvisioningStateFailed ProvisioningState = "Failed"
	// ProvisioningStateSucceeded - The operation has completed successfully.
	ProvisioningStateSucceeded ProvisioningState = "Succeeded"
)

// PossibleProvisioningStateValues returns the possible values for the ProvisioningState const type.
func PossibleProvisioningStateValues() []ProvisioningState {
	return []ProvisioningState{
		ProvisioningStateCanceled,
		ProvisioningStateCreating,
		ProvisioningStateDeleting,
		ProvisioningStateFailed,
		ProvisioningStateSucceeded,
	}
}

// PublicIPAddressSKUName - Specify public IP sku name
type PublicIPAddressSKUName string

const (
	// PublicIPAddressSKUNameBasic - Basic IP sku name
	PublicIPAddressSKUNameBasic PublicIPAddressSKUName = "Basic"
	// PublicIPAddressSKUNameStandard - Standard IP sku name
	PublicIPAddressSKUNameStandard PublicIPAddressSKUName = "Standard"
)

// PossiblePublicIPAddressSKUNameValues returns the possible values for the PublicIPAddressSKUName const type.
func PossiblePublicIPAddressSKUNameValues() []PublicIPAddressSKUName {
	return []PublicIPAddressSKUName{
		PublicIPAddressSKUNameBasic,
		PublicIPAddressSKUNameStandard,
	}
}

// PublicIPAddressSKUTier - Specify public IP sku tier
type PublicIPAddressSKUTier string

const (
	// PublicIPAddressSKUTierGlobal - Global IP address sku tier
	PublicIPAddressSKUTierGlobal PublicIPAddressSKUTier = "Global"
	// PublicIPAddressSKUTierRegional - Regional IP address sku tier
	PublicIPAddressSKUTierRegional PublicIPAddressSKUTier = "Regional"
)

// PossiblePublicIPAddressSKUTierValues returns the possible values for the PublicIPAddressSKUTier const type.
func PossiblePublicIPAddressSKUTierValues() []PublicIPAddressSKUTier {
	return []PublicIPAddressSKUTier{
		PublicIPAddressSKUTierGlobal,
		PublicIPAddressSKUTierRegional,
	}
}

// PublicIPAllocationMethod - Specify the public IP allocation type
type PublicIPAllocationMethod string

const (
	// PublicIPAllocationMethodDynamic - Dynamic IP allocation
	PublicIPAllocationMethodDynamic PublicIPAllocationMethod = "Dynamic"
	// PublicIPAllocationMethodStatic - Static IP allocation
	PublicIPAllocationMethodStatic PublicIPAllocationMethod = "Static"
)

// PossiblePublicIPAllocationMethodValues returns the possible values for the PublicIPAllocationMethod const type.
func PossiblePublicIPAllocationMethodValues() []PublicIPAllocationMethod {
	return []PublicIPAllocationMethod{
		PublicIPAllocationMethodDynamic,
		PublicIPAllocationMethodStatic,
	}
}

// ResourceOperationType - The kind of operation types that can be performed on resources eg Virtual Machines, using BulkActions
type ResourceOperationType string

const (
	// ResourceOperationTypeCreate - Create operations on the resources
	ResourceOperationTypeCreate ResourceOperationType = "Create"
	// ResourceOperationTypeDeallocate - Deallocate operations on the resources
	ResourceOperationTypeDeallocate ResourceOperationType = "Deallocate"
	// ResourceOperationTypeDelete - Delete operations on the resources
	ResourceOperationTypeDelete ResourceOperationType = "Delete"
	// ResourceOperationTypeHibernate - Hibernate operations on the resources
	ResourceOperationTypeHibernate ResourceOperationType = "Hibernate"
	// ResourceOperationTypeStart - Start operations on the resources
	ResourceOperationTypeStart ResourceOperationType = "Start"
	// ResourceOperationTypeUnknown - The default value for this enum type
	ResourceOperationTypeUnknown ResourceOperationType = "Unknown"
)

// PossibleResourceOperationTypeValues returns the possible values for the ResourceOperationType const type.
func PossibleResourceOperationTypeValues() []ResourceOperationType {
	return []ResourceOperationType{
		ResourceOperationTypeCreate,
		ResourceOperationTypeDeallocate,
		ResourceOperationTypeDelete,
		ResourceOperationTypeHibernate,
		ResourceOperationTypeStart,
		ResourceOperationTypeUnknown,
	}
}

// SecurityEncryptionTypes - Specifies the EncryptionType of the managed disk. It is set to DiskWithVMGuestState for encryption
// of the managed disk along with VMGuestState blob, VMGuestStateOnly for encryption of just the VMGuestState blob, and NonPersistedTPM
// for not persisting firmware state in the VMGuestState blob.. **Note:** It can be set for only Confidential VMs.
type SecurityEncryptionTypes string

const (
	// SecurityEncryptionTypesDiskWithVMGuestState - DiskWithVMGuestState encryption
	SecurityEncryptionTypesDiskWithVMGuestState SecurityEncryptionTypes = "DiskWithVMGuestState"
	// SecurityEncryptionTypesNonPersistedTPM - NonPersistedTPM encryption
	SecurityEncryptionTypesNonPersistedTPM SecurityEncryptionTypes = "NonPersistedTPM"
	// SecurityEncryptionTypesVMGuestStateOnly - VMGuestStateOnly encryption
	SecurityEncryptionTypesVMGuestStateOnly SecurityEncryptionTypes = "VMGuestStateOnly"
)

// PossibleSecurityEncryptionTypesValues returns the possible values for the SecurityEncryptionTypes const type.
func PossibleSecurityEncryptionTypesValues() []SecurityEncryptionTypes {
	return []SecurityEncryptionTypes{
		SecurityEncryptionTypesDiskWithVMGuestState,
		SecurityEncryptionTypesNonPersistedTPM,
		SecurityEncryptionTypesVMGuestStateOnly,
	}
}

// SecurityTypes - Specifies the SecurityType of the virtual machine. It has to be set to any specified value to enable UefiSettings.
// The default behavior is: UefiSettings will not be enabled unless this property is set.
type SecurityTypes string

const (
	// SecurityTypesConfidentialVM - ConfidentialVM security type
	SecurityTypesConfidentialVM SecurityTypes = "ConfidentialVM"
	// SecurityTypesTrustedLaunch - TrustedLaunch security type
	SecurityTypesTrustedLaunch SecurityTypes = "TrustedLaunch"
)

// PossibleSecurityTypesValues returns the possible values for the SecurityTypes const type.
func PossibleSecurityTypesValues() []SecurityTypes {
	return []SecurityTypes{
		SecurityTypesConfidentialVM,
		SecurityTypesTrustedLaunch,
	}
}

// SettingNames - Specifies the name of the setting to which the content applies. Possible values are: FirstLogonCommands
// and AutoLogon.
type SettingNames string

const (
	// SettingNamesAutoLogon - AutoLogon mode
	SettingNamesAutoLogon SettingNames = "AutoLogon"
	// SettingNamesFirstLogonCommands - FirstLogonCommands mode
	SettingNamesFirstLogonCommands SettingNames = "FirstLogonCommands"
)

// PossibleSettingNamesValues returns the possible values for the SettingNames const type.
func PossibleSettingNamesValues() []SettingNames {
	return []SettingNames{
		SettingNamesAutoLogon,
		SettingNamesFirstLogonCommands,
	}
}

// StorageAccountTypes - Specifies the storage account type for the managed disk. Managed OS disk storage account type can
// only be set when you create the scale set. NOTE: UltraSSD_LRS can only be used with data disks. It cannot be used with
// OS Disk. Standard_LRS uses Standard HDD. StandardSSD_LRS uses Standard SSD. Premium_LRS uses Premium SSD. UltraSSD_LRS
// uses Ultra disk. Premium_ZRS uses Premium SSD zone redundant storage. StandardSSD_ZRS uses Standard SSD zone redundant
// storage. For more information regarding disks supported for Windows Virtual Machines, refer to https://docs.microsoft.com/azure/virtual-machines/windows/disks-types
// and, for Linux Virtual Machines, refer to https://docs.microsoft.com/azure/virtual-machines/linux/disks-types
type StorageAccountTypes string

const (
	// StorageAccountTypesPremiumLRS - Premium_LRS storage account type
	StorageAccountTypesPremiumLRS StorageAccountTypes = "Premium_LRS"
	// StorageAccountTypesPremiumV2LRS - PremiumV2_LRS storage account type
	StorageAccountTypesPremiumV2LRS StorageAccountTypes = "PremiumV2_LRS"
	// StorageAccountTypesPremiumZRS - Premium_ZRS storage account type
	StorageAccountTypesPremiumZRS StorageAccountTypes = "Premium_ZRS"
	// StorageAccountTypesStandardLRS - Standard_LRS storage account type
	StorageAccountTypesStandardLRS StorageAccountTypes = "Standard_LRS"
	// StorageAccountTypesStandardSSDLRS - StandardSSD_LRS storage account type
	StorageAccountTypesStandardSSDLRS StorageAccountTypes = "StandardSSD_LRS"
	// StorageAccountTypesStandardSSDZRS - StandardSSD_ZRS storage account type
	StorageAccountTypesStandardSSDZRS StorageAccountTypes = "StandardSSD_ZRS"
	// StorageAccountTypesUltraSSDLRS - UltraSSD_LRS storage account type
	StorageAccountTypesUltraSSDLRS StorageAccountTypes = "UltraSSD_LRS"
)

// PossibleStorageAccountTypesValues returns the possible values for the StorageAccountTypes const type.
func PossibleStorageAccountTypesValues() []StorageAccountTypes {
	return []StorageAccountTypes{
		StorageAccountTypesPremiumLRS,
		StorageAccountTypesPremiumV2LRS,
		StorageAccountTypesPremiumZRS,
		StorageAccountTypesStandardLRS,
		StorageAccountTypesStandardSSDLRS,
		StorageAccountTypesStandardSSDZRS,
		StorageAccountTypesUltraSSDLRS,
	}
}

// VMAttributeSupport - VMSizes supported by Azure VMs. Included is a union of Excluded and Required.
type VMAttributeSupport string

const (
	// VMAttributeSupportExcluded - All VMSizes having the feature support will be excluded.
	VMAttributeSupportExcluded VMAttributeSupport = "Excluded"
	// VMAttributeSupportIncluded - VMSizes that have the feature support and that do not have the feature support will be used.
	// Included is a union of Excluded and Required.
	VMAttributeSupportIncluded VMAttributeSupport = "Included"
	// VMAttributeSupportRequired - Only the VMSizes having the feature support will be used.
	VMAttributeSupportRequired VMAttributeSupport = "Required"
)

// PossibleVMAttributeSupportValues returns the possible values for the VMAttributeSupport const type.
func PossibleVMAttributeSupportValues() []VMAttributeSupport {
	return []VMAttributeSupport{
		VMAttributeSupportExcluded,
		VMAttributeSupportIncluded,
		VMAttributeSupportRequired,
	}
}

// VMCategory - VMCategories defined for Azure VMs.
// See: https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/overview?tabs=breakdownseries%2Cgeneralsizelist%2Ccomputesizelist%2Cmemorysizelist%2Cstoragesizelist%2Cgpusizelist%2Cfpgasizelist%2Chpcsizelist#general-purpose
type VMCategory string

const (
	// VMCategoryComputeOptimized - Compute optimized VM sizes have a high CPU-to-memory ratio. These sizes are good for medium
	// traffic web servers, network appliances, batch processes, and application servers.
	VMCategoryComputeOptimized VMCategory = "ComputeOptimized"
	// VMCategoryFpgaAccelerated - FPGA optimized VM sizes are specialized virtual machines available with single or multiple
	// FPGA.
	// These sizes are designed for compute-intensive workloads. This article provides information about the number and type of
	// FPGA, vCPUs, data disks, and NICs.
	// Storage throughput and network bandwidth are also included for each size in this grouping.
	VMCategoryFpgaAccelerated VMCategory = "FpgaAccelerated"
	// VMCategoryGeneralPurpose - General purpose VM sizes provide balanced CPU-to-memory ratio. Ideal for testing and development,
	// small to medium databases, and low to medium traffic web servers.
	VMCategoryGeneralPurpose VMCategory = "GeneralPurpose"
	// VMCategoryGpuAccelerated - GPU optimized VM sizes are specialized virtual machines available with single, multiple, or
	// fractional GPUs.
	// These sizes are designed for compute-intensive, graphics-intensive, and visualization workloads.
	VMCategoryGpuAccelerated VMCategory = "GpuAccelerated"
	// VMCategoryHighPerformanceCompute - Azure High Performance Compute VMs are optimized for various HPC workloads such as computational
	// fluid dynamics, finite element analysis, frontend and backend EDA,
	// rendering, molecular dynamics, computational geo science, weather simulation, and financial risk analysis.
	VMCategoryHighPerformanceCompute VMCategory = "HighPerformanceCompute"
	// VMCategoryMemoryOptimized - Memory optimized VM sizes offer a high memory-to-CPU ratio that is great for relational database
	// servers, medium to large caches, and in-memory analytics.
	VMCategoryMemoryOptimized VMCategory = "MemoryOptimized"
	// VMCategoryStorageOptimized - Storage optimized virtual machine (VM) sizes offer high disk throughput and IO, and are ideal
	// for Big Data, SQL, NoSQL databases, data warehousing, and large transactional databases.
	// Examples include Cassandra, MongoDB, Cloudera, and Redis.
	VMCategoryStorageOptimized VMCategory = "StorageOptimized"
)

// PossibleVMCategoryValues returns the possible values for the VMCategory const type.
func PossibleVMCategoryValues() []VMCategory {
	return []VMCategory{
		VMCategoryComputeOptimized,
		VMCategoryFpgaAccelerated,
		VMCategoryGeneralPurpose,
		VMCategoryGpuAccelerated,
		VMCategoryHighPerformanceCompute,
		VMCategoryMemoryOptimized,
		VMCategoryStorageOptimized,
	}
}

// VMOperationStatus - Virtual Machine operation status values.
type VMOperationStatus string

const (
	// VMOperationStatusCancelFailedStatusUnknown - Indicates that the cancellation request could not be applied because the virtual
	// machine had already been created.
	VMOperationStatusCancelFailedStatusUnknown VMOperationStatus = "CancelFailedStatusUnknown"
	// VMOperationStatusCanceled - Indicates that the cancellation request was successful because the virtual machine had not
	// been created yet.
	VMOperationStatusCanceled VMOperationStatus = "Canceled"
	// VMOperationStatusCancelling - Indicates that the virtual machine operation is being cancelled.
	VMOperationStatusCancelling VMOperationStatus = "Cancelling"
	// VMOperationStatusCreating - Indicates that the virtual machine is either in the process of being created or is scheduled
	// to be created.
	VMOperationStatusCreating VMOperationStatus = "Creating"
	// VMOperationStatusDeleting - Indicates that the virtual machine is being deleted.
	VMOperationStatusDeleting VMOperationStatus = "Deleting"
	// VMOperationStatusFailed - Indicates that the virtual machine operation failed.
	VMOperationStatusFailed VMOperationStatus = "Failed"
	// VMOperationStatusSucceeded - Indicates that the virtual machine operation completed successfully.
	VMOperationStatusSucceeded VMOperationStatus = "Succeeded"
)

// PossibleVMOperationStatusValues returns the possible values for the VMOperationStatus const type.
func PossibleVMOperationStatusValues() []VMOperationStatus {
	return []VMOperationStatus{
		VMOperationStatusCancelFailedStatusUnknown,
		VMOperationStatusCanceled,
		VMOperationStatusCancelling,
		VMOperationStatusCreating,
		VMOperationStatusDeleting,
		VMOperationStatusFailed,
		VMOperationStatusSucceeded,
	}
}

// VirtualMachineType - Specifies the priority type of virtual machines to launch.
type VirtualMachineType string

const (
	// VirtualMachineTypeRegular - Default. Regular/On-demand VMs will be launched
	VirtualMachineTypeRegular VirtualMachineType = "Regular"
	// VirtualMachineTypeSpot - Spot VMs will be launched.
	VirtualMachineTypeSpot VirtualMachineType = "Spot"
)

// PossibleVirtualMachineTypeValues returns the possible values for the VirtualMachineType const type.
func PossibleVirtualMachineTypeValues() []VirtualMachineType {
	return []VirtualMachineType{
		VirtualMachineTypeRegular,
		VirtualMachineTypeSpot,
	}
}

// WindowsPatchAssessmentMode - Specifies the mode of VM Guest patch assessment for the IaaS virtual machine.<br /><br />
// Possible values are:<br /><br /> **ImageDefault** - You control the timing of patch assessments on a virtual machine.<br
// /><br /> **AutomaticByPlatform** - The platform will trigger periodic patch assessments. The property provisionVMAgent
// must be true.
type WindowsPatchAssessmentMode string

const (
	// WindowsPatchAssessmentModeAutomaticByPlatform - AutomaticByPlatform patch assessment mode
	WindowsPatchAssessmentModeAutomaticByPlatform WindowsPatchAssessmentMode = "AutomaticByPlatform"
	// WindowsPatchAssessmentModeImageDefault - ImageDefault patch assessment mode
	WindowsPatchAssessmentModeImageDefault WindowsPatchAssessmentMode = "ImageDefault"
)

// PossibleWindowsPatchAssessmentModeValues returns the possible values for the WindowsPatchAssessmentMode const type.
func PossibleWindowsPatchAssessmentModeValues() []WindowsPatchAssessmentMode {
	return []WindowsPatchAssessmentMode{
		WindowsPatchAssessmentModeAutomaticByPlatform,
		WindowsPatchAssessmentModeImageDefault,
	}
}

// WindowsVMGuestPatchAutomaticByPlatformRebootSetting - Specifies the reboot setting for all AutomaticByPlatform patch installation
// operations.
type WindowsVMGuestPatchAutomaticByPlatformRebootSetting string

const (
	// WindowsVMGuestPatchAutomaticByPlatformRebootSettingAlways - Reboot setting for Always
	WindowsVMGuestPatchAutomaticByPlatformRebootSettingAlways WindowsVMGuestPatchAutomaticByPlatformRebootSetting = "Always"
	// WindowsVMGuestPatchAutomaticByPlatformRebootSettingIfRequired - Reboot setting for IfRequired
	WindowsVMGuestPatchAutomaticByPlatformRebootSettingIfRequired WindowsVMGuestPatchAutomaticByPlatformRebootSetting = "IfRequired"
	// WindowsVMGuestPatchAutomaticByPlatformRebootSettingNever - Reboot setting for Never
	WindowsVMGuestPatchAutomaticByPlatformRebootSettingNever WindowsVMGuestPatchAutomaticByPlatformRebootSetting = "Never"
	// WindowsVMGuestPatchAutomaticByPlatformRebootSettingUnknown - Reboot setting for Unknown
	WindowsVMGuestPatchAutomaticByPlatformRebootSettingUnknown WindowsVMGuestPatchAutomaticByPlatformRebootSetting = "Unknown"
)

// PossibleWindowsVMGuestPatchAutomaticByPlatformRebootSettingValues returns the possible values for the WindowsVMGuestPatchAutomaticByPlatformRebootSetting const type.
func PossibleWindowsVMGuestPatchAutomaticByPlatformRebootSettingValues() []WindowsVMGuestPatchAutomaticByPlatformRebootSetting {
	return []WindowsVMGuestPatchAutomaticByPlatformRebootSetting{
		WindowsVMGuestPatchAutomaticByPlatformRebootSettingAlways,
		WindowsVMGuestPatchAutomaticByPlatformRebootSettingIfRequired,
		WindowsVMGuestPatchAutomaticByPlatformRebootSettingNever,
		WindowsVMGuestPatchAutomaticByPlatformRebootSettingUnknown,
	}
}

// WindowsVMGuestPatchMode - Specifies the mode of VM Guest Patching to IaaS virtual machine or virtual machines associated
// to virtual machine scale set with OrchestrationMode as Flexible.<br /><br /> Possible values are:<br /><br /> **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<br
// /><br /> **AutomaticByOS** - The virtual machine will automatically be updated by the OS. The property WindowsConfiguration.enableAutomaticUpdates
// must be true. <br /><br /> **AutomaticByPlatform** - the virtual machine will automatically updated by the platform. The
// properties provisionVMAgent and WindowsConfiguration.enableAutomaticUpdates must be true
type WindowsVMGuestPatchMode string

const (
	// WindowsVMGuestPatchModeAutomaticByOS - AutomaticByOS VM guest patch mode
	WindowsVMGuestPatchModeAutomaticByOS WindowsVMGuestPatchMode = "AutomaticByOS"
	// WindowsVMGuestPatchModeAutomaticByPlatform - AutomaticByPlatform VM guest patch mode
	WindowsVMGuestPatchModeAutomaticByPlatform WindowsVMGuestPatchMode = "AutomaticByPlatform"
	// WindowsVMGuestPatchModeManual - Manual VM guest patch mode
	WindowsVMGuestPatchModeManual WindowsVMGuestPatchMode = "Manual"
)

// PossibleWindowsVMGuestPatchModeValues returns the possible values for the WindowsVMGuestPatchMode const type.
func PossibleWindowsVMGuestPatchModeValues() []WindowsVMGuestPatchMode {
	return []WindowsVMGuestPatchMode{
		WindowsVMGuestPatchModeAutomaticByOS,
		WindowsVMGuestPatchModeAutomaticByPlatform,
		WindowsVMGuestPatchModeManual,
	}
}

// ZoneDistributionStrategy - Distribution strategies for LaunchBulkInstancesOperation zone allocation policy.
type ZoneDistributionStrategy string

const (
	// ZoneDistributionStrategyBestEffortBalanced - Balance launching instances across zones specified based on best effort.
	// If capacity is not available, LaunchBulkInstancesOperation can deviate balancing across all zones.
	ZoneDistributionStrategyBestEffortBalanced ZoneDistributionStrategy = "BestEffortBalanced"
	// ZoneDistributionStrategyBestEffortSingleZone - Default. Launch instances in a single zone based on best effort.
	// If capacity is not available, LaunchBulkInstancesOperation can allocate capacity in different zones.
	ZoneDistributionStrategyBestEffortSingleZone ZoneDistributionStrategy = "BestEffortSingleZone"
	// ZoneDistributionStrategyPrioritized - Launch instances based on zone preferences.
	// Higher priority zones are filled first before allocating to lower priority zones.
	ZoneDistributionStrategyPrioritized ZoneDistributionStrategy = "Prioritized"
	// ZoneDistributionStrategyStrictBalanced - Launch instances across all provided zones, ensuring the difference between any
	// two zones is no more than one instance.
	ZoneDistributionStrategyStrictBalanced ZoneDistributionStrategy = "StrictBalanced"
)

// PossibleZoneDistributionStrategyValues returns the possible values for the ZoneDistributionStrategy const type.
func PossibleZoneDistributionStrategyValues() []ZoneDistributionStrategy {
	return []ZoneDistributionStrategy{
		ZoneDistributionStrategyBestEffortBalanced,
		ZoneDistributionStrategyBestEffortSingleZone,
		ZoneDistributionStrategyPrioritized,
		ZoneDistributionStrategyStrictBalanced,
	}
}
