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

import "github.com/Azure/azure-service-operator/v2/pkg/genruntime"

type FlexibleServer_Spec struct {
	// Identity: User assigned managed identities assigned to the flexible server.
	Identity *UserAssignedIdentity `json:"identity,omitempty"`

	// Location: The geo-location where the resource lives
	Location *string `json:"location,omitempty"`
	Name     string  `json:"name,omitempty"`

	// Properties: Properties of a flexible server.
	Properties *ServerProperties `json:"properties,omitempty"`

	// Sku: Compute tier and size of a flexible server.
	Sku *Sku `json:"sku,omitempty"`

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

var _ genruntime.ARMResourceSpec = &FlexibleServer_Spec{}

// GetAPIVersion returns the ARM API version of the resource. This is always "2024-08-01"
func (server FlexibleServer_Spec) GetAPIVersion() string {
	return "2024-08-01"
}

// GetName returns the Name of the resource
func (server *FlexibleServer_Spec) GetName() string {
	return server.Name
}

// GetType returns the ARM Type of the resource. This is always "Microsoft.DBforPostgreSQL/flexibleServers"
func (server *FlexibleServer_Spec) GetType() string {
	return "Microsoft.DBforPostgreSQL/flexibleServers"
}

// Properties of a flexible server.
type ServerProperties struct {
	// AdministratorLogin: Name of the login designated as the first password based administrator assigned to your instance of
	// PostgreSQL. Must be specified the first time that you enable password based authentication on a server. Once set to a
	// given value, it cannot be changed for the rest of the life of a server. If you disable password based authentication on
	// a server which had it enabled, this password based role isn't deleted.
	AdministratorLogin *string `json:"administratorLogin,omitempty"`

	// AdministratorLoginPassword: Password assigned to the administrator login. As long as password authentication is enabled,
	// this password can be changed at any time.
	AdministratorLoginPassword *string `json:"administratorLoginPassword,omitempty"`

	// AuthConfig: Authentication configuration properties of a flexible server.
	AuthConfig *AuthConfig `json:"authConfig,omitempty"`

	// AvailabilityZone: Availability zone of a flexible server.
	AvailabilityZone *string `json:"availabilityZone,omitempty"`

	// Backup: Backup properties of a flexible server.
	Backup *Backup `json:"backup,omitempty"`

	// CreateMode: Creation mode of a new flexible server.
	CreateMode *ServerProperties_CreateMode `json:"createMode,omitempty"`

	// DataEncryption: Data encryption properties of a flexible server.
	DataEncryption *DataEncryption `json:"dataEncryption,omitempty"`

	// HighAvailability: High availability properties of a flexible server.
	HighAvailability *HighAvailability `json:"highAvailability,omitempty"`

	// MaintenanceWindow: Maintenance window properties of a flexible server.
	MaintenanceWindow *MaintenanceWindow `json:"maintenanceWindow,omitempty"`

	// Network: Network properties of a flexible server. Only required if you want your server to be integrated into a virtual
	// network provided by customer.
	Network *Network `json:"network,omitempty"`

	// PointInTimeUTC: Creation time (in ISO8601 format) of the backup which you want to restore in the new flexible server.
	// It's required when 'createMode' is 'PointInTimeRestore', 'GeoRestore', or 'ReviveDropped'.
	PointInTimeUTC *string `json:"pointInTimeUTC,omitempty"`

	// Replica: Read replica properties of a flexible server. Required only in case that you want to promote a server.
	Replica *Replica `json:"replica,omitempty"`

	// ReplicationRole: Role of the server in a replication set.
	ReplicationRole *ReplicationRole `json:"replicationRole,omitempty"`

	// SourceServerResourceId: Identifier of the flexible server to be used as the source of the new flexible server. Required
	// when 'createMode' is 'PointInTimeRestore', 'GeoRestore', 'Replica', or 'ReviveDropped'. This property is returned only
	// when the target flexible server is a read replica.
	SourceServerResourceId *string `json:"sourceServerResourceId,omitempty"`

	// Storage: Storage properties of a flexible server.
	Storage *Storage `json:"storage,omitempty"`

	// Version: Major version of PostgreSQL database engine.
	Version *ServerVersion `json:"version,omitempty"`
}

// Compute information of a flexible server.
type Sku struct {
	// Name: Name by which is known a given compute size assigned to a flexible server.
	Name *string `json:"name,omitempty"`

	// Tier: Tier of the compute assigned to a flexible server.
	Tier *Sku_Tier `json:"tier,omitempty"`
}

// Identities associated with a flexible server.
type UserAssignedIdentity struct {
	// PrincipalId: Identifier of the object of the service principal associated to the user assigned managed identity.
	PrincipalId *string `json:"principalId,omitempty"`

	// Type: Types of identities associated with a flexible server.
	Type                   *UserAssignedIdentity_Type             `json:"type,omitempty"`
	UserAssignedIdentities map[string]UserAssignedIdentityDetails `json:"userAssignedIdentities,omitempty"`
}

// Authentication configuration properties of a flexible server.
type AuthConfig struct {
	// ActiveDirectoryAuth: Indicates if the server supports Microsoft Entra authentication.
	ActiveDirectoryAuth *AuthConfig_ActiveDirectoryAuth `json:"activeDirectoryAuth,omitempty"`

	// PasswordAuth: Indicates if the server supports password based authentication.
	PasswordAuth *AuthConfig_PasswordAuth `json:"passwordAuth,omitempty"`

	// TenantId: Identifier of the tenant of the delegated resource.
	TenantId *string `json:"tenantId,omitempty"`
}

// Backup properties of a flexible server.
type Backup struct {
	// BackupRetentionDays: Backup retention days for the flexible server.
	BackupRetentionDays *int `json:"backupRetentionDays,omitempty"`

	// GeoRedundantBackup: Indicates if the server is configured to create geographically redundant backups.
	GeoRedundantBackup *Backup_GeoRedundantBackup `json:"geoRedundantBackup,omitempty"`
}

// Data encryption properties of a flexible server.
type DataEncryption struct {
	// GeoBackupEncryptionKeyStatus: Status of key used by a flexible server configured with data encryption based on customer
	// managed key, to encrypt the geographically redundant storage associated to the server when it is configured to support
	// geographically redundant backups.
	GeoBackupEncryptionKeyStatus *DataEncryption_GeoBackupEncryptionKeyStatus `json:"geoBackupEncryptionKeyStatus,omitempty"`

	// GeoBackupKeyURI: Identifier of the user assigned managed identity used to access the key in Azure Key Vault for data
	// encryption of the geographically redundant storage associated to a flexible server that is configured to support
	// geographically redundant backups.
	GeoBackupKeyURI *string `json:"geoBackupKeyURI,omitempty" optionalConfigMapPair:"GeoBackupKeyURI"`

	// GeoBackupUserAssignedIdentityId: Identifier of the user assigned managed identity used to access the key in Azure Key
	// Vault for data encryption of the geographically redundant storage associated to a flexible server that is configured to
	// support geographically redundant backups.
	GeoBackupUserAssignedIdentityId *string `json:"geoBackupUserAssignedIdentityId,omitempty"`

	// PrimaryEncryptionKeyStatus: Status of key used by a flexible server configured with data encryption based on customer
	// managed key, to encrypt the primary storage associated to the server.
	PrimaryEncryptionKeyStatus *DataEncryption_PrimaryEncryptionKeyStatus `json:"primaryEncryptionKeyStatus,omitempty"`

	// PrimaryKeyURI: URI of the key in Azure Key Vault used for data encryption of the primary storage associated to a
	// flexible server.
	PrimaryKeyURI *string `json:"primaryKeyURI,omitempty" optionalConfigMapPair:"PrimaryKeyURI"`

	// PrimaryUserAssignedIdentityId: Identifier of the user assigned managed identity used to access the key in Azure Key
	// Vault for data encryption of the primary storage associated to a flexible server.
	PrimaryUserAssignedIdentityId *string `json:"primaryUserAssignedIdentityId,omitempty"`

	// Type: Data encryption type used by a flexible server.
	Type *DataEncryption_Type `json:"type,omitempty"`
}

// High availability properties of a flexible server.
type HighAvailability struct {
	// Mode: High availability mode for a flexible server.
	Mode *HighAvailability_Mode `json:"mode,omitempty"`

	// StandbyAvailabilityZone: Availability zone associated to the standby server created when high availability is set to
	// SameZone or ZoneRedundant.
	StandbyAvailabilityZone *string `json:"standbyAvailabilityZone,omitempty"`
}

// Maintenance window properties of a flexible server.
type MaintenanceWindow struct {
	// CustomWindow: Indicates whether custom window is enabled or disabled.
	CustomWindow *string `json:"customWindow,omitempty"`

	// DayOfWeek: Day of the week to be used for maintenance window.
	DayOfWeek *int `json:"dayOfWeek,omitempty"`

	// StartHour: Start hour to be used for maintenance window.
	StartHour *int `json:"startHour,omitempty"`

	// StartMinute: Start minute to be used for maintenance window.
	StartMinute *int `json:"startMinute,omitempty"`
}

// Network properties of a flexible server.
type Network struct {
	// DelegatedSubnetResourceId: Resource identifier of the delegated subnet. Required during creation of a new server, in
	// case you want the server to be integrated into your own virtual network. For an update operation, you only have to
	// provide this property if you want to change the value assigned for the private DNS zone.
	DelegatedSubnetResourceId *string `json:"delegatedSubnetResourceId,omitempty"`

	// PrivateDnsZoneArmResourceId: Identifier of the private DNS zone. Required during creation of a new server, in case you
	// want the server to be integrated into your own virtual network. For an update operation, you only have to provide this
	// property if you want to change the value assigned for the private DNS zone.
	PrivateDnsZoneArmResourceId *string `json:"privateDnsZoneArmResourceId,omitempty"`

	// PublicNetworkAccess: Indicates if public network access is enabled or not.
	PublicNetworkAccess *Network_PublicNetworkAccess `json:"publicNetworkAccess,omitempty"`
}

// Replica properties of a flexible server.
type Replica struct {
	// PromoteMode: Type of operation to apply on the read replica. This property is write only. Standalone means that the read
	// replica will be promoted to a standalone server, and will become a completely independent entity from the replication
	// set. Switchover means that the read replica will roles with the primary server.
	PromoteMode *Replica_PromoteMode `json:"promoteMode,omitempty"`

	// PromoteOption: Data synchronization option to use when processing the operation specified in the promoteMode property
	// This property is write only. Planned means that the operation will wait for data in the read replica to be fully
	// synchronized with its source server before it initiates the operation. Forced means that the operation will not wait for
	// data in the read replica to be synchronized with its source server before it initiates the operation.
	PromoteOption *Replica_PromoteOption `json:"promoteOption,omitempty"`

	// Role: Role of the server in a replication set.
	Role *ReplicationRole `json:"role,omitempty"`
}

// Role of the flexible server in a replication set.
// +kubebuilder:validation:Enum={"AsyncReplica","GeoAsyncReplica","None","Primary"}
type ReplicationRole string

const (
	ReplicationRole_AsyncReplica    = ReplicationRole("AsyncReplica")
	ReplicationRole_GeoAsyncReplica = ReplicationRole("GeoAsyncReplica")
	ReplicationRole_None            = ReplicationRole("None")
	ReplicationRole_Primary         = ReplicationRole("Primary")
)

// Mapping from string to ReplicationRole
var replicationRole_Values = map[string]ReplicationRole{
	"asyncreplica":    ReplicationRole_AsyncReplica,
	"geoasyncreplica": ReplicationRole_GeoAsyncReplica,
	"none":            ReplicationRole_None,
	"primary":         ReplicationRole_Primary,
}

// +kubebuilder:validation:Enum={"Create","Default","GeoRestore","PointInTimeRestore","Replica","ReviveDropped","Update"}
type ServerProperties_CreateMode string

const (
	ServerProperties_CreateMode_Create             = ServerProperties_CreateMode("Create")
	ServerProperties_CreateMode_Default            = ServerProperties_CreateMode("Default")
	ServerProperties_CreateMode_GeoRestore         = ServerProperties_CreateMode("GeoRestore")
	ServerProperties_CreateMode_PointInTimeRestore = ServerProperties_CreateMode("PointInTimeRestore")
	ServerProperties_CreateMode_Replica            = ServerProperties_CreateMode("Replica")
	ServerProperties_CreateMode_ReviveDropped      = ServerProperties_CreateMode("ReviveDropped")
	ServerProperties_CreateMode_Update             = ServerProperties_CreateMode("Update")
)

// Mapping from string to ServerProperties_CreateMode
var serverProperties_CreateMode_Values = map[string]ServerProperties_CreateMode{
	"create":             ServerProperties_CreateMode_Create,
	"default":            ServerProperties_CreateMode_Default,
	"georestore":         ServerProperties_CreateMode_GeoRestore,
	"pointintimerestore": ServerProperties_CreateMode_PointInTimeRestore,
	"replica":            ServerProperties_CreateMode_Replica,
	"revivedropped":      ServerProperties_CreateMode_ReviveDropped,
	"update":             ServerProperties_CreateMode_Update,
}

// Major version of PostgreSQL database engine.
// +kubebuilder:validation:Enum={"11","12","13","14","15","16"}
type ServerVersion string

const (
	ServerVersion_11 = ServerVersion("11")
	ServerVersion_12 = ServerVersion("12")
	ServerVersion_13 = ServerVersion("13")
	ServerVersion_14 = ServerVersion("14")
	ServerVersion_15 = ServerVersion("15")
	ServerVersion_16 = ServerVersion("16")
)

// Mapping from string to ServerVersion
var serverVersion_Values = map[string]ServerVersion{
	"11": ServerVersion_11,
	"12": ServerVersion_12,
	"13": ServerVersion_13,
	"14": ServerVersion_14,
	"15": ServerVersion_15,
	"16": ServerVersion_16,
}

// +kubebuilder:validation:Enum={"Burstable","GeneralPurpose","MemoryOptimized"}
type Sku_Tier string

const (
	Sku_Tier_Burstable       = Sku_Tier("Burstable")
	Sku_Tier_GeneralPurpose  = Sku_Tier("GeneralPurpose")
	Sku_Tier_MemoryOptimized = Sku_Tier("MemoryOptimized")
)

// Mapping from string to Sku_Tier
var sku_Tier_Values = map[string]Sku_Tier{
	"burstable":       Sku_Tier_Burstable,
	"generalpurpose":  Sku_Tier_GeneralPurpose,
	"memoryoptimized": Sku_Tier_MemoryOptimized,
}

// Storage properties of a flexible server.
type Storage struct {
	// AutoGrow: Flag to enable or disable the automatic growth of storage size of a flexible server when available space is
	// nearing zero and conditions allow for automatically growing storage size.
	AutoGrow *Storage_AutoGrow `json:"autoGrow,omitempty"`

	// Iops: Maximum IOPS supported for storage. Required when type of storage is PremiumV2_LRS.
	Iops *int `json:"iops,omitempty"`

	// StorageSizeGB: Size of storage assigned to a flexible server.
	StorageSizeGB *int `json:"storageSizeGB,omitempty"`

	// Throughput: Maximum throughput supported for storage. Required when type of storage is PremiumV2_LRS.
	Throughput *int `json:"throughput,omitempty"`

	// Tier: Storage tier of a flexible server.
	Tier *Storage_Tier `json:"tier,omitempty"`

	// Type: Type of storage assigned to a flexible server. Allowed values are Premium_LRS or PremiumV2_LRS. If not specified,
	// it defaults to Premium_LRS.
	Type *Storage_Type `json:"type,omitempty"`
}

// +kubebuilder:validation:Enum={"None","SystemAssigned","SystemAssigned,UserAssigned","UserAssigned"}
type UserAssignedIdentity_Type string

const (
	UserAssignedIdentity_Type_None                       = UserAssignedIdentity_Type("None")
	UserAssignedIdentity_Type_SystemAssigned             = UserAssignedIdentity_Type("SystemAssigned")
	UserAssignedIdentity_Type_SystemAssignedUserAssigned = UserAssignedIdentity_Type("SystemAssigned,UserAssigned")
	UserAssignedIdentity_Type_UserAssigned               = UserAssignedIdentity_Type("UserAssigned")
)

// Mapping from string to UserAssignedIdentity_Type
var userAssignedIdentity_Type_Values = map[string]UserAssignedIdentity_Type{
	"none":                        UserAssignedIdentity_Type_None,
	"systemassigned":              UserAssignedIdentity_Type_SystemAssigned,
	"systemassigned,userassigned": UserAssignedIdentity_Type_SystemAssignedUserAssigned,
	"userassigned":                UserAssignedIdentity_Type_UserAssigned,
}

// Information about the user assigned identity for the resource
type UserAssignedIdentityDetails struct {
}

// +kubebuilder:validation:Enum={"Disabled","Enabled"}
type AuthConfig_ActiveDirectoryAuth string

const (
	AuthConfig_ActiveDirectoryAuth_Disabled = AuthConfig_ActiveDirectoryAuth("Disabled")
	AuthConfig_ActiveDirectoryAuth_Enabled  = AuthConfig_ActiveDirectoryAuth("Enabled")
)

// Mapping from string to AuthConfig_ActiveDirectoryAuth
var authConfig_ActiveDirectoryAuth_Values = map[string]AuthConfig_ActiveDirectoryAuth{
	"disabled": AuthConfig_ActiveDirectoryAuth_Disabled,
	"enabled":  AuthConfig_ActiveDirectoryAuth_Enabled,
}

// +kubebuilder:validation:Enum={"Disabled","Enabled"}
type AuthConfig_PasswordAuth string

const (
	AuthConfig_PasswordAuth_Disabled = AuthConfig_PasswordAuth("Disabled")
	AuthConfig_PasswordAuth_Enabled  = AuthConfig_PasswordAuth("Enabled")
)

// Mapping from string to AuthConfig_PasswordAuth
var authConfig_PasswordAuth_Values = map[string]AuthConfig_PasswordAuth{
	"disabled": AuthConfig_PasswordAuth_Disabled,
	"enabled":  AuthConfig_PasswordAuth_Enabled,
}

// +kubebuilder:validation:Enum={"Disabled","Enabled"}
type Backup_GeoRedundantBackup string

const (
	Backup_GeoRedundantBackup_Disabled = Backup_GeoRedundantBackup("Disabled")
	Backup_GeoRedundantBackup_Enabled  = Backup_GeoRedundantBackup("Enabled")
)

// Mapping from string to Backup_GeoRedundantBackup
var backup_GeoRedundantBackup_Values = map[string]Backup_GeoRedundantBackup{
	"disabled": Backup_GeoRedundantBackup_Disabled,
	"enabled":  Backup_GeoRedundantBackup_Enabled,
}

// +kubebuilder:validation:Enum={"Invalid","Valid"}
type DataEncryption_GeoBackupEncryptionKeyStatus string

const (
	DataEncryption_GeoBackupEncryptionKeyStatus_Invalid = DataEncryption_GeoBackupEncryptionKeyStatus("Invalid")
	DataEncryption_GeoBackupEncryptionKeyStatus_Valid   = DataEncryption_GeoBackupEncryptionKeyStatus("Valid")
)

// Mapping from string to DataEncryption_GeoBackupEncryptionKeyStatus
var dataEncryption_GeoBackupEncryptionKeyStatus_Values = map[string]DataEncryption_GeoBackupEncryptionKeyStatus{
	"invalid": DataEncryption_GeoBackupEncryptionKeyStatus_Invalid,
	"valid":   DataEncryption_GeoBackupEncryptionKeyStatus_Valid,
}

// +kubebuilder:validation:Enum={"Invalid","Valid"}
type DataEncryption_PrimaryEncryptionKeyStatus string

const (
	DataEncryption_PrimaryEncryptionKeyStatus_Invalid = DataEncryption_PrimaryEncryptionKeyStatus("Invalid")
	DataEncryption_PrimaryEncryptionKeyStatus_Valid   = DataEncryption_PrimaryEncryptionKeyStatus("Valid")
)

// Mapping from string to DataEncryption_PrimaryEncryptionKeyStatus
var dataEncryption_PrimaryEncryptionKeyStatus_Values = map[string]DataEncryption_PrimaryEncryptionKeyStatus{
	"invalid": DataEncryption_PrimaryEncryptionKeyStatus_Invalid,
	"valid":   DataEncryption_PrimaryEncryptionKeyStatus_Valid,
}

// +kubebuilder:validation:Enum={"AzureKeyVault","SystemManaged"}
type DataEncryption_Type string

const (
	DataEncryption_Type_AzureKeyVault = DataEncryption_Type("AzureKeyVault")
	DataEncryption_Type_SystemManaged = DataEncryption_Type("SystemManaged")
)

// Mapping from string to DataEncryption_Type
var dataEncryption_Type_Values = map[string]DataEncryption_Type{
	"azurekeyvault": DataEncryption_Type_AzureKeyVault,
	"systemmanaged": DataEncryption_Type_SystemManaged,
}

// +kubebuilder:validation:Enum={"Disabled","SameZone","ZoneRedundant"}
type HighAvailability_Mode string

const (
	HighAvailability_Mode_Disabled      = HighAvailability_Mode("Disabled")
	HighAvailability_Mode_SameZone      = HighAvailability_Mode("SameZone")
	HighAvailability_Mode_ZoneRedundant = HighAvailability_Mode("ZoneRedundant")
)

// Mapping from string to HighAvailability_Mode
var highAvailability_Mode_Values = map[string]HighAvailability_Mode{
	"disabled":      HighAvailability_Mode_Disabled,
	"samezone":      HighAvailability_Mode_SameZone,
	"zoneredundant": HighAvailability_Mode_ZoneRedundant,
}

// +kubebuilder:validation:Enum={"Disabled","Enabled"}
type Network_PublicNetworkAccess string

const (
	Network_PublicNetworkAccess_Disabled = Network_PublicNetworkAccess("Disabled")
	Network_PublicNetworkAccess_Enabled  = Network_PublicNetworkAccess("Enabled")
)

// Mapping from string to Network_PublicNetworkAccess
var network_PublicNetworkAccess_Values = map[string]Network_PublicNetworkAccess{
	"disabled": Network_PublicNetworkAccess_Disabled,
	"enabled":  Network_PublicNetworkAccess_Enabled,
}

// +kubebuilder:validation:Enum={"standalone","switchover"}
type Replica_PromoteMode string

const (
	Replica_PromoteMode_Standalone = Replica_PromoteMode("standalone")
	Replica_PromoteMode_Switchover = Replica_PromoteMode("switchover")
)

// Mapping from string to Replica_PromoteMode
var replica_PromoteMode_Values = map[string]Replica_PromoteMode{
	"standalone": Replica_PromoteMode_Standalone,
	"switchover": Replica_PromoteMode_Switchover,
}

// +kubebuilder:validation:Enum={"forced","planned"}
type Replica_PromoteOption string

const (
	Replica_PromoteOption_Forced  = Replica_PromoteOption("forced")
	Replica_PromoteOption_Planned = Replica_PromoteOption("planned")
)

// Mapping from string to Replica_PromoteOption
var replica_PromoteOption_Values = map[string]Replica_PromoteOption{
	"forced":  Replica_PromoteOption_Forced,
	"planned": Replica_PromoteOption_Planned,
}

// +kubebuilder:validation:Enum={"Disabled","Enabled"}
type Storage_AutoGrow string

const (
	Storage_AutoGrow_Disabled = Storage_AutoGrow("Disabled")
	Storage_AutoGrow_Enabled  = Storage_AutoGrow("Enabled")
)

// Mapping from string to Storage_AutoGrow
var storage_AutoGrow_Values = map[string]Storage_AutoGrow{
	"disabled": Storage_AutoGrow_Disabled,
	"enabled":  Storage_AutoGrow_Enabled,
}

// +kubebuilder:validation:Enum={"P1","P10","P15","P2","P20","P3","P30","P4","P40","P50","P6","P60","P70","P80"}
type Storage_Tier string

const (
	Storage_Tier_P1  = Storage_Tier("P1")
	Storage_Tier_P10 = Storage_Tier("P10")
	Storage_Tier_P15 = Storage_Tier("P15")
	Storage_Tier_P2  = Storage_Tier("P2")
	Storage_Tier_P20 = Storage_Tier("P20")
	Storage_Tier_P3  = Storage_Tier("P3")
	Storage_Tier_P30 = Storage_Tier("P30")
	Storage_Tier_P4  = Storage_Tier("P4")
	Storage_Tier_P40 = Storage_Tier("P40")
	Storage_Tier_P50 = Storage_Tier("P50")
	Storage_Tier_P6  = Storage_Tier("P6")
	Storage_Tier_P60 = Storage_Tier("P60")
	Storage_Tier_P70 = Storage_Tier("P70")
	Storage_Tier_P80 = Storage_Tier("P80")
)

// Mapping from string to Storage_Tier
var storage_Tier_Values = map[string]Storage_Tier{
	"p1":  Storage_Tier_P1,
	"p10": Storage_Tier_P10,
	"p15": Storage_Tier_P15,
	"p2":  Storage_Tier_P2,
	"p20": Storage_Tier_P20,
	"p3":  Storage_Tier_P3,
	"p30": Storage_Tier_P30,
	"p4":  Storage_Tier_P4,
	"p40": Storage_Tier_P40,
	"p50": Storage_Tier_P50,
	"p6":  Storage_Tier_P6,
	"p60": Storage_Tier_P60,
	"p70": Storage_Tier_P70,
	"p80": Storage_Tier_P80,
}

// +kubebuilder:validation:Enum={"PremiumV2_LRS","Premium_LRS"}
type Storage_Type string

const (
	Storage_Type_PremiumV2_LRS = Storage_Type("PremiumV2_LRS")
	Storage_Type_Premium_LRS   = Storage_Type("Premium_LRS")
)

// Mapping from string to Storage_Type
var storage_Type_Values = map[string]Storage_Type{
	"premiumv2_lrs": Storage_Type_PremiumV2_LRS,
	"premium_lrs":   Storage_Type_Premium_LRS,
}
