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

import "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"

type FlexibleServer_STATUS struct {
	// Id: Fully qualified resource ID for the resource. E.g.
	// "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	Id *string `json:"id,omitempty"`

	// Identity: The cmk identity for the server.
	Identity *MySQLServerIdentity_STATUS `json:"identity,omitempty"`

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

	// Name: The name of the resource
	Name *string `json:"name,omitempty"`

	// Properties: Properties of the server.
	Properties *ServerProperties_STATUS `json:"properties,omitempty"`

	// Sku: The SKU (pricing tier) of the server.
	Sku *MySQLServerSku_STATUS `json:"sku,omitempty"`

	// SystemData: Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData_STATUS `json:"systemData,omitempty"`

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

	// Type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string `json:"type,omitempty"`
}

// Properties to configure Identity for Bring your Own Keys
type MySQLServerIdentity_STATUS struct {
	// PrincipalId: ObjectId from the KeyVault
	PrincipalId *string `json:"principalId,omitempty"`

	// TenantId: TenantId from the KeyVault
	TenantId *string `json:"tenantId,omitempty"`

	// Type: Type of managed service identity.
	Type *MySQLServerIdentity_Type_STATUS `json:"type,omitempty"`

	// UserAssignedIdentities: Metadata of user assigned identity.
	UserAssignedIdentities map[string]v1.JSON `json:"userAssignedIdentities,omitempty"`
}

// Billing information related properties of a server.
type MySQLServerSku_STATUS struct {
	// Name: The name of the sku, e.g. Standard_D32s_v3.
	Name *string `json:"name,omitempty"`

	// Tier: The tier of the particular SKU, e.g. GeneralPurpose.
	Tier *MySQLServerSku_Tier_STATUS `json:"tier,omitempty"`
}

// The properties of a server.
type ServerProperties_STATUS struct {
	// AdministratorLogin: The administrator's login name of a server. Can only be specified when the server is being created
	// (and is required for creation).
	AdministratorLogin *string `json:"administratorLogin,omitempty"`

	// AvailabilityZone: availability Zone information of the server.
	AvailabilityZone *string `json:"availabilityZone,omitempty"`

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

	// CreateMode: The mode to create a new MySQL server.
	CreateMode *ServerProperties_CreateMode_STATUS `json:"createMode,omitempty"`

	// DataEncryption: The Data Encryption for CMK.
	DataEncryption *DataEncryption_STATUS `json:"dataEncryption,omitempty"`

	// FullyQualifiedDomainName: The fully qualified domain name of a server.
	FullyQualifiedDomainName *string `json:"fullyQualifiedDomainName,omitempty"`

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

	// ImportSourceProperties: Source properties for import from storage.
	ImportSourceProperties *ImportSourceProperties_STATUS `json:"importSourceProperties,omitempty"`

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

	// Network: Network related properties of a server.
	Network *Network_STATUS `json:"network,omitempty"`

	// PrivateEndpointConnections: PrivateEndpointConnections related properties of a server.
	PrivateEndpointConnections []PrivateEndpointConnection_STATUS `json:"privateEndpointConnections,omitempty"`

	// ReplicaCapacity: The maximum number of replicas that a primary server can have.
	ReplicaCapacity *int `json:"replicaCapacity,omitempty"`

	// ReplicationRole: The replication role.
	ReplicationRole *ReplicationRole_STATUS `json:"replicationRole,omitempty"`

	// RestorePointInTime: Restore point creation time (ISO8601 format), specifying the time to restore from.
	RestorePointInTime *string `json:"restorePointInTime,omitempty"`

	// SourceServerResourceId: The source MySQL server id.
	SourceServerResourceId *string `json:"sourceServerResourceId,omitempty"`

	// State: The state of a server.
	State *ServerProperties_State_STATUS `json:"state,omitempty"`

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

	// Version: Server version.
	Version *ServerVersion_STATUS `json:"version,omitempty"`
}

// Metadata pertaining to creation and last modification of the resource.
type SystemData_STATUS struct {
	// CreatedAt: The timestamp of resource creation (UTC).
	CreatedAt *string `json:"createdAt,omitempty"`

	// CreatedBy: The identity that created the resource.
	CreatedBy *string `json:"createdBy,omitempty"`

	// CreatedByType: The type of identity that created the resource.
	CreatedByType *SystemData_CreatedByType_STATUS `json:"createdByType,omitempty"`

	// LastModifiedAt: The timestamp of resource last modification (UTC)
	LastModifiedAt *string `json:"lastModifiedAt,omitempty"`

	// LastModifiedBy: The identity that last modified the resource.
	LastModifiedBy *string `json:"lastModifiedBy,omitempty"`

	// LastModifiedByType: The type of identity that last modified the resource.
	LastModifiedByType *SystemData_LastModifiedByType_STATUS `json:"lastModifiedByType,omitempty"`
}

// Storage Profile properties of a server
type Backup_STATUS struct {
	// BackupIntervalHours: Backup interval hours for the server.
	BackupIntervalHours *int `json:"backupIntervalHours,omitempty"`

	// BackupRetentionDays: Backup retention days for the server.
	BackupRetentionDays *int `json:"backupRetentionDays,omitempty"`

	// EarliestRestoreDate: Earliest restore point creation time (ISO8601 format)
	EarliestRestoreDate *string `json:"earliestRestoreDate,omitempty"`

	// GeoRedundantBackup: Whether or not geo redundant backup is enabled.
	GeoRedundantBackup *EnableStatusEnum_STATUS `json:"geoRedundantBackup,omitempty"`
}

// The date encryption for cmk.
type DataEncryption_STATUS struct {
	// GeoBackupKeyURI: Geo backup key uri as key vault can't cross region, need cmk in same region as geo backup
	GeoBackupKeyURI *string `json:"geoBackupKeyURI,omitempty"`

	// GeoBackupUserAssignedIdentityId: Geo backup user identity resource id as identity can't cross region, need identity in
	// same region as geo backup
	GeoBackupUserAssignedIdentityId *string `json:"geoBackupUserAssignedIdentityId,omitempty"`

	// PrimaryKeyURI: Primary key uri
	PrimaryKeyURI *string `json:"primaryKeyURI,omitempty"`

	// PrimaryUserAssignedIdentityId: Primary user identity resource id
	PrimaryUserAssignedIdentityId *string `json:"primaryUserAssignedIdentityId,omitempty"`

	// Type: The key type, AzureKeyVault for enable cmk, SystemManaged for disable cmk.
	Type *DataEncryption_Type_STATUS `json:"type,omitempty"`
}

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

	// StandbyAvailabilityZone: Availability zone of the standby server.
	StandbyAvailabilityZone *string `json:"standbyAvailabilityZone,omitempty"`

	// State: The state of server high availability.
	State *HighAvailability_State_STATUS `json:"state,omitempty"`
}

// Import source related properties.
type ImportSourceProperties_STATUS struct {
	// DataDirPath: Relative path of data directory in storage.
	DataDirPath *string `json:"dataDirPath,omitempty"`

	// StorageType: Storage type of import source.
	StorageType *ImportSourceProperties_StorageType_STATUS `json:"storageType,omitempty"`

	// StorageUrl: Uri of the import source storage.
	StorageUrl *string `json:"storageUrl,omitempty"`
}

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

	// DayOfWeek: day of week for maintenance window
	DayOfWeek *int `json:"dayOfWeek,omitempty"`

	// StartHour: start hour for maintenance window
	StartHour *int `json:"startHour,omitempty"`

	// StartMinute: start minute for maintenance window
	StartMinute *int `json:"startMinute,omitempty"`
}

type MySQLServerIdentity_Type_STATUS string

const MySQLServerIdentity_Type_STATUS_UserAssigned = MySQLServerIdentity_Type_STATUS("UserAssigned")

// Mapping from string to MySQLServerIdentity_Type_STATUS
var mySQLServerIdentity_Type_STATUS_Values = map[string]MySQLServerIdentity_Type_STATUS{
	"userassigned": MySQLServerIdentity_Type_STATUS_UserAssigned,
}

type MySQLServerSku_Tier_STATUS string

const (
	MySQLServerSku_Tier_STATUS_Burstable       = MySQLServerSku_Tier_STATUS("Burstable")
	MySQLServerSku_Tier_STATUS_GeneralPurpose  = MySQLServerSku_Tier_STATUS("GeneralPurpose")
	MySQLServerSku_Tier_STATUS_MemoryOptimized = MySQLServerSku_Tier_STATUS("MemoryOptimized")
)

// Mapping from string to MySQLServerSku_Tier_STATUS
var mySQLServerSku_Tier_STATUS_Values = map[string]MySQLServerSku_Tier_STATUS{
	"burstable":       MySQLServerSku_Tier_STATUS_Burstable,
	"generalpurpose":  MySQLServerSku_Tier_STATUS_GeneralPurpose,
	"memoryoptimized": MySQLServerSku_Tier_STATUS_MemoryOptimized,
}

// Network related properties of a server
type Network_STATUS struct {
	// DelegatedSubnetResourceId: Delegated subnet resource id used to setup vnet for a server.
	DelegatedSubnetResourceId *string `json:"delegatedSubnetResourceId,omitempty"`

	// PrivateDnsZoneResourceId: Private DNS zone resource id.
	PrivateDnsZoneResourceId *string `json:"privateDnsZoneResourceId,omitempty"`

	// PublicNetworkAccess: Whether or not public network access is allowed for this server. Value is 'Disabled' when server
	// has VNet integration.
	PublicNetworkAccess *EnableStatusEnum_STATUS `json:"publicNetworkAccess,omitempty"`
}

// The private endpoint connection resource.
type PrivateEndpointConnection_STATUS struct {
	// Id: Fully qualified resource ID for the resource. E.g.
	// "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	Id *string `json:"id,omitempty"`
}

// The replication role.
type ReplicationRole_STATUS string

const (
	ReplicationRole_STATUS_None    = ReplicationRole_STATUS("None")
	ReplicationRole_STATUS_Replica = ReplicationRole_STATUS("Replica")
	ReplicationRole_STATUS_Source  = ReplicationRole_STATUS("Source")
)

// Mapping from string to ReplicationRole_STATUS
var replicationRole_STATUS_Values = map[string]ReplicationRole_STATUS{
	"none":    ReplicationRole_STATUS_None,
	"replica": ReplicationRole_STATUS_Replica,
	"source":  ReplicationRole_STATUS_Source,
}

type ServerProperties_CreateMode_STATUS string

const (
	ServerProperties_CreateMode_STATUS_Default            = ServerProperties_CreateMode_STATUS("Default")
	ServerProperties_CreateMode_STATUS_GeoRestore         = ServerProperties_CreateMode_STATUS("GeoRestore")
	ServerProperties_CreateMode_STATUS_PointInTimeRestore = ServerProperties_CreateMode_STATUS("PointInTimeRestore")
	ServerProperties_CreateMode_STATUS_Replica            = ServerProperties_CreateMode_STATUS("Replica")
)

// Mapping from string to ServerProperties_CreateMode_STATUS
var serverProperties_CreateMode_STATUS_Values = map[string]ServerProperties_CreateMode_STATUS{
	"default":            ServerProperties_CreateMode_STATUS_Default,
	"georestore":         ServerProperties_CreateMode_STATUS_GeoRestore,
	"pointintimerestore": ServerProperties_CreateMode_STATUS_PointInTimeRestore,
	"replica":            ServerProperties_CreateMode_STATUS_Replica,
}

type ServerProperties_State_STATUS string

const (
	ServerProperties_State_STATUS_Disabled = ServerProperties_State_STATUS("Disabled")
	ServerProperties_State_STATUS_Dropping = ServerProperties_State_STATUS("Dropping")
	ServerProperties_State_STATUS_Ready    = ServerProperties_State_STATUS("Ready")
	ServerProperties_State_STATUS_Starting = ServerProperties_State_STATUS("Starting")
	ServerProperties_State_STATUS_Stopped  = ServerProperties_State_STATUS("Stopped")
	ServerProperties_State_STATUS_Stopping = ServerProperties_State_STATUS("Stopping")
	ServerProperties_State_STATUS_Updating = ServerProperties_State_STATUS("Updating")
)

// Mapping from string to ServerProperties_State_STATUS
var serverProperties_State_STATUS_Values = map[string]ServerProperties_State_STATUS{
	"disabled": ServerProperties_State_STATUS_Disabled,
	"dropping": ServerProperties_State_STATUS_Dropping,
	"ready":    ServerProperties_State_STATUS_Ready,
	"starting": ServerProperties_State_STATUS_Starting,
	"stopped":  ServerProperties_State_STATUS_Stopped,
	"stopping": ServerProperties_State_STATUS_Stopping,
	"updating": ServerProperties_State_STATUS_Updating,
}

// The version of a server.
type ServerVersion_STATUS string

const (
	ServerVersion_STATUS_57   = ServerVersion_STATUS("5.7")
	ServerVersion_STATUS_8021 = ServerVersion_STATUS("8.0.21")
)

// Mapping from string to ServerVersion_STATUS
var serverVersion_STATUS_Values = map[string]ServerVersion_STATUS{
	"5.7":    ServerVersion_STATUS_57,
	"8.0.21": ServerVersion_STATUS_8021,
}

// Storage Profile properties of a server
type Storage_STATUS struct {
	// AutoGrow: Enable Storage Auto Grow or not.
	AutoGrow *EnableStatusEnum_STATUS `json:"autoGrow,omitempty"`

	// AutoIoScaling: Enable IO Auto Scaling or not.
	AutoIoScaling *EnableStatusEnum_STATUS `json:"autoIoScaling,omitempty"`

	// Iops: Storage IOPS for a server.
	Iops *int `json:"iops,omitempty"`

	// LogOnDisk: Enable Log On Disk or not.
	LogOnDisk *EnableStatusEnum_STATUS `json:"logOnDisk,omitempty"`

	// StorageSizeGB: Max storage size allowed for a server.
	StorageSizeGB *int `json:"storageSizeGB,omitempty"`

	// StorageSku: The sku name of the server storage.
	StorageSku *string `json:"storageSku,omitempty"`
}

type SystemData_CreatedByType_STATUS string

const (
	SystemData_CreatedByType_STATUS_Application     = SystemData_CreatedByType_STATUS("Application")
	SystemData_CreatedByType_STATUS_Key             = SystemData_CreatedByType_STATUS("Key")
	SystemData_CreatedByType_STATUS_ManagedIdentity = SystemData_CreatedByType_STATUS("ManagedIdentity")
	SystemData_CreatedByType_STATUS_User            = SystemData_CreatedByType_STATUS("User")
)

// Mapping from string to SystemData_CreatedByType_STATUS
var systemData_CreatedByType_STATUS_Values = map[string]SystemData_CreatedByType_STATUS{
	"application":     SystemData_CreatedByType_STATUS_Application,
	"key":             SystemData_CreatedByType_STATUS_Key,
	"managedidentity": SystemData_CreatedByType_STATUS_ManagedIdentity,
	"user":            SystemData_CreatedByType_STATUS_User,
}

type SystemData_LastModifiedByType_STATUS string

const (
	SystemData_LastModifiedByType_STATUS_Application     = SystemData_LastModifiedByType_STATUS("Application")
	SystemData_LastModifiedByType_STATUS_Key             = SystemData_LastModifiedByType_STATUS("Key")
	SystemData_LastModifiedByType_STATUS_ManagedIdentity = SystemData_LastModifiedByType_STATUS("ManagedIdentity")
	SystemData_LastModifiedByType_STATUS_User            = SystemData_LastModifiedByType_STATUS("User")
)

// Mapping from string to SystemData_LastModifiedByType_STATUS
var systemData_LastModifiedByType_STATUS_Values = map[string]SystemData_LastModifiedByType_STATUS{
	"application":     SystemData_LastModifiedByType_STATUS_Application,
	"key":             SystemData_LastModifiedByType_STATUS_Key,
	"managedidentity": SystemData_LastModifiedByType_STATUS_ManagedIdentity,
	"user":            SystemData_LastModifiedByType_STATUS_User,
}

type DataEncryption_Type_STATUS string

const (
	DataEncryption_Type_STATUS_AzureKeyVault = DataEncryption_Type_STATUS("AzureKeyVault")
	DataEncryption_Type_STATUS_SystemManaged = DataEncryption_Type_STATUS("SystemManaged")
)

// Mapping from string to DataEncryption_Type_STATUS
var dataEncryption_Type_STATUS_Values = map[string]DataEncryption_Type_STATUS{
	"azurekeyvault": DataEncryption_Type_STATUS_AzureKeyVault,
	"systemmanaged": DataEncryption_Type_STATUS_SystemManaged,
}

// Enum to indicate whether value is 'Enabled' or 'Disabled'
type EnableStatusEnum_STATUS string

const (
	EnableStatusEnum_STATUS_Disabled = EnableStatusEnum_STATUS("Disabled")
	EnableStatusEnum_STATUS_Enabled  = EnableStatusEnum_STATUS("Enabled")
)

// Mapping from string to EnableStatusEnum_STATUS
var enableStatusEnum_STATUS_Values = map[string]EnableStatusEnum_STATUS{
	"disabled": EnableStatusEnum_STATUS_Disabled,
	"enabled":  EnableStatusEnum_STATUS_Enabled,
}

type HighAvailability_Mode_STATUS string

const (
	HighAvailability_Mode_STATUS_Disabled      = HighAvailability_Mode_STATUS("Disabled")
	HighAvailability_Mode_STATUS_SameZone      = HighAvailability_Mode_STATUS("SameZone")
	HighAvailability_Mode_STATUS_ZoneRedundant = HighAvailability_Mode_STATUS("ZoneRedundant")
)

// Mapping from string to HighAvailability_Mode_STATUS
var highAvailability_Mode_STATUS_Values = map[string]HighAvailability_Mode_STATUS{
	"disabled":      HighAvailability_Mode_STATUS_Disabled,
	"samezone":      HighAvailability_Mode_STATUS_SameZone,
	"zoneredundant": HighAvailability_Mode_STATUS_ZoneRedundant,
}

type HighAvailability_State_STATUS string

const (
	HighAvailability_State_STATUS_CreatingStandby = HighAvailability_State_STATUS("CreatingStandby")
	HighAvailability_State_STATUS_FailingOver     = HighAvailability_State_STATUS("FailingOver")
	HighAvailability_State_STATUS_Healthy         = HighAvailability_State_STATUS("Healthy")
	HighAvailability_State_STATUS_NotEnabled      = HighAvailability_State_STATUS("NotEnabled")
	HighAvailability_State_STATUS_RemovingStandby = HighAvailability_State_STATUS("RemovingStandby")
)

// Mapping from string to HighAvailability_State_STATUS
var highAvailability_State_STATUS_Values = map[string]HighAvailability_State_STATUS{
	"creatingstandby": HighAvailability_State_STATUS_CreatingStandby,
	"failingover":     HighAvailability_State_STATUS_FailingOver,
	"healthy":         HighAvailability_State_STATUS_Healthy,
	"notenabled":      HighAvailability_State_STATUS_NotEnabled,
	"removingstandby": HighAvailability_State_STATUS_RemovingStandby,
}

type ImportSourceProperties_StorageType_STATUS string

const ImportSourceProperties_StorageType_STATUS_AzureBlob = ImportSourceProperties_StorageType_STATUS("AzureBlob")

// Mapping from string to ImportSourceProperties_StorageType_STATUS
var importSourceProperties_StorageType_STATUS_Values = map[string]ImportSourceProperties_StorageType_STATUS{
	"azureblob": ImportSourceProperties_StorageType_STATUS_AzureBlob,
}
