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

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

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

	// Properties: Other properties of the database.
	Properties *DatabaseProperties_STATUS `json:"properties,omitempty"`

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

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

// Properties of Redis Enterprise databases, as opposed to general resource properties like location, tags
type DatabaseProperties_STATUS struct {
	// AccessKeysAuthentication: This property can be Enabled/Disabled to allow or deny access with the current access keys.
	// Can be updated even after database is created.
	AccessKeysAuthentication *DatabaseProperties_AccessKeysAuthentication_STATUS `json:"accessKeysAuthentication,omitempty"`

	// ClientProtocol: Specifies whether redis clients can connect using TLS-encrypted or plaintext redis protocols. Default is
	// TLS-encrypted.
	ClientProtocol *DatabaseProperties_ClientProtocol_STATUS `json:"clientProtocol,omitempty"`

	// ClusteringPolicy: Clustering policy - default is OSSCluster. This property must be chosen at create time, and cannot be
	// changed without deleting the database.
	ClusteringPolicy *DatabaseProperties_ClusteringPolicy_STATUS `json:"clusteringPolicy,omitempty"`

	// DeferUpgrade: Option to defer upgrade when newest version is released - default is NotDeferred. Learn more:
	// https://aka.ms/redisversionupgrade
	DeferUpgrade *DatabaseProperties_DeferUpgrade_STATUS `json:"deferUpgrade,omitempty"`

	// EvictionPolicy: Redis eviction policy - default is VolatileLRU
	EvictionPolicy *DatabaseProperties_EvictionPolicy_STATUS `json:"evictionPolicy,omitempty"`

	// GeoReplication: Optional set of properties to configure geo replication for this database.
	GeoReplication *DatabaseProperties_GeoReplication_STATUS `json:"geoReplication,omitempty"`

	// Modules: Optional set of redis modules to enable in this database - modules can only be added at creation time.
	Modules []Module_STATUS `json:"modules,omitempty"`

	// Persistence: Persistence settings
	Persistence *Persistence_STATUS `json:"persistence,omitempty"`

	// Port: TCP port of the database endpoint. Specified at create time. Defaults to an available port.
	Port *int `json:"port,omitempty"`

	// ProvisioningState: Current provisioning status of the database
	ProvisioningState *ProvisioningState_STATUS `json:"provisioningState,omitempty"`

	// RedisVersion: Version of Redis the database is running on, e.g. '6.0'
	RedisVersion *string `json:"redisVersion,omitempty"`

	// ResourceState: Current resource status of the database
	ResourceState *ResourceState_STATUS `json:"resourceState,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"`
}

type DatabaseProperties_AccessKeysAuthentication_STATUS string

const (
	DatabaseProperties_AccessKeysAuthentication_STATUS_Disabled = DatabaseProperties_AccessKeysAuthentication_STATUS("Disabled")
	DatabaseProperties_AccessKeysAuthentication_STATUS_Enabled  = DatabaseProperties_AccessKeysAuthentication_STATUS("Enabled")
)

// Mapping from string to DatabaseProperties_AccessKeysAuthentication_STATUS
var databaseProperties_AccessKeysAuthentication_STATUS_Values = map[string]DatabaseProperties_AccessKeysAuthentication_STATUS{
	"disabled": DatabaseProperties_AccessKeysAuthentication_STATUS_Disabled,
	"enabled":  DatabaseProperties_AccessKeysAuthentication_STATUS_Enabled,
}

type DatabaseProperties_ClientProtocol_STATUS string

const (
	DatabaseProperties_ClientProtocol_STATUS_Encrypted = DatabaseProperties_ClientProtocol_STATUS("Encrypted")
	DatabaseProperties_ClientProtocol_STATUS_Plaintext = DatabaseProperties_ClientProtocol_STATUS("Plaintext")
)

// Mapping from string to DatabaseProperties_ClientProtocol_STATUS
var databaseProperties_ClientProtocol_STATUS_Values = map[string]DatabaseProperties_ClientProtocol_STATUS{
	"encrypted": DatabaseProperties_ClientProtocol_STATUS_Encrypted,
	"plaintext": DatabaseProperties_ClientProtocol_STATUS_Plaintext,
}

type DatabaseProperties_ClusteringPolicy_STATUS string

const (
	DatabaseProperties_ClusteringPolicy_STATUS_EnterpriseCluster = DatabaseProperties_ClusteringPolicy_STATUS("EnterpriseCluster")
	DatabaseProperties_ClusteringPolicy_STATUS_OSSCluster        = DatabaseProperties_ClusteringPolicy_STATUS("OSSCluster")
)

// Mapping from string to DatabaseProperties_ClusteringPolicy_STATUS
var databaseProperties_ClusteringPolicy_STATUS_Values = map[string]DatabaseProperties_ClusteringPolicy_STATUS{
	"enterprisecluster": DatabaseProperties_ClusteringPolicy_STATUS_EnterpriseCluster,
	"osscluster":        DatabaseProperties_ClusteringPolicy_STATUS_OSSCluster,
}

type DatabaseProperties_DeferUpgrade_STATUS string

const (
	DatabaseProperties_DeferUpgrade_STATUS_Deferred    = DatabaseProperties_DeferUpgrade_STATUS("Deferred")
	DatabaseProperties_DeferUpgrade_STATUS_NotDeferred = DatabaseProperties_DeferUpgrade_STATUS("NotDeferred")
)

// Mapping from string to DatabaseProperties_DeferUpgrade_STATUS
var databaseProperties_DeferUpgrade_STATUS_Values = map[string]DatabaseProperties_DeferUpgrade_STATUS{
	"deferred":    DatabaseProperties_DeferUpgrade_STATUS_Deferred,
	"notdeferred": DatabaseProperties_DeferUpgrade_STATUS_NotDeferred,
}

type DatabaseProperties_EvictionPolicy_STATUS string

const (
	DatabaseProperties_EvictionPolicy_STATUS_AllKeysLFU     = DatabaseProperties_EvictionPolicy_STATUS("AllKeysLFU")
	DatabaseProperties_EvictionPolicy_STATUS_AllKeysLRU     = DatabaseProperties_EvictionPolicy_STATUS("AllKeysLRU")
	DatabaseProperties_EvictionPolicy_STATUS_AllKeysRandom  = DatabaseProperties_EvictionPolicy_STATUS("AllKeysRandom")
	DatabaseProperties_EvictionPolicy_STATUS_NoEviction     = DatabaseProperties_EvictionPolicy_STATUS("NoEviction")
	DatabaseProperties_EvictionPolicy_STATUS_VolatileLFU    = DatabaseProperties_EvictionPolicy_STATUS("VolatileLFU")
	DatabaseProperties_EvictionPolicy_STATUS_VolatileLRU    = DatabaseProperties_EvictionPolicy_STATUS("VolatileLRU")
	DatabaseProperties_EvictionPolicy_STATUS_VolatileRandom = DatabaseProperties_EvictionPolicy_STATUS("VolatileRandom")
	DatabaseProperties_EvictionPolicy_STATUS_VolatileTTL    = DatabaseProperties_EvictionPolicy_STATUS("VolatileTTL")
)

// Mapping from string to DatabaseProperties_EvictionPolicy_STATUS
var databaseProperties_EvictionPolicy_STATUS_Values = map[string]DatabaseProperties_EvictionPolicy_STATUS{
	"allkeyslfu":     DatabaseProperties_EvictionPolicy_STATUS_AllKeysLFU,
	"allkeyslru":     DatabaseProperties_EvictionPolicy_STATUS_AllKeysLRU,
	"allkeysrandom":  DatabaseProperties_EvictionPolicy_STATUS_AllKeysRandom,
	"noeviction":     DatabaseProperties_EvictionPolicy_STATUS_NoEviction,
	"volatilelfu":    DatabaseProperties_EvictionPolicy_STATUS_VolatileLFU,
	"volatilelru":    DatabaseProperties_EvictionPolicy_STATUS_VolatileLRU,
	"volatilerandom": DatabaseProperties_EvictionPolicy_STATUS_VolatileRandom,
	"volatilettl":    DatabaseProperties_EvictionPolicy_STATUS_VolatileTTL,
}

type DatabaseProperties_GeoReplication_STATUS struct {
	// GroupNickname: Name for the group of linked database resources
	GroupNickname *string `json:"groupNickname,omitempty"`

	// LinkedDatabases: List of database resources to link with this database
	LinkedDatabases []LinkedDatabase_STATUS `json:"linkedDatabases,omitempty"`
}

// Specifies configuration of a redis module
type Module_STATUS struct {
	// Args: Configuration options for the module, e.g. 'ERROR_RATE 0.01 INITIAL_SIZE 400'.
	Args *string `json:"args,omitempty"`

	// Name: The name of the module, e.g. 'RedisBloom', 'RediSearch', 'RedisTimeSeries'
	Name *string `json:"name,omitempty"`

	// Version: The version of the module, e.g. '1.0'.
	Version *string `json:"version,omitempty"`
}

// Persistence-related configuration for the Redis Enterprise database
type Persistence_STATUS struct {
	// AofEnabled: Sets whether AOF is enabled. Note that at most one of AOF or RDB persistence may be enabled.
	AofEnabled *bool `json:"aofEnabled,omitempty"`

	// AofFrequency: Sets the frequency at which data is written to disk. Defaults to '1s', meaning 'every second'. Note that
	// the 'always' setting is deprecated, because of its performance impact.
	AofFrequency *Persistence_AofFrequency_STATUS `json:"aofFrequency,omitempty"`

	// RdbEnabled: Sets whether RDB is enabled. Note that at most one of AOF or RDB persistence may be enabled.
	RdbEnabled *bool `json:"rdbEnabled,omitempty"`

	// RdbFrequency: Sets the frequency at which a snapshot of the database is created.
	RdbFrequency *Persistence_RdbFrequency_STATUS `json:"rdbFrequency,omitempty"`
}

// Current provisioning status
type ProvisioningState_STATUS string

const (
	ProvisioningState_STATUS_Canceled  = ProvisioningState_STATUS("Canceled")
	ProvisioningState_STATUS_Creating  = ProvisioningState_STATUS("Creating")
	ProvisioningState_STATUS_Deleting  = ProvisioningState_STATUS("Deleting")
	ProvisioningState_STATUS_Failed    = ProvisioningState_STATUS("Failed")
	ProvisioningState_STATUS_Succeeded = ProvisioningState_STATUS("Succeeded")
	ProvisioningState_STATUS_Updating  = ProvisioningState_STATUS("Updating")
)

// Mapping from string to ProvisioningState_STATUS
var provisioningState_STATUS_Values = map[string]ProvisioningState_STATUS{
	"canceled":  ProvisioningState_STATUS_Canceled,
	"creating":  ProvisioningState_STATUS_Creating,
	"deleting":  ProvisioningState_STATUS_Deleting,
	"failed":    ProvisioningState_STATUS_Failed,
	"succeeded": ProvisioningState_STATUS_Succeeded,
	"updating":  ProvisioningState_STATUS_Updating,
}

// Current resource status
type ResourceState_STATUS string

const (
	ResourceState_STATUS_CreateFailed  = ResourceState_STATUS("CreateFailed")
	ResourceState_STATUS_Creating      = ResourceState_STATUS("Creating")
	ResourceState_STATUS_DeleteFailed  = ResourceState_STATUS("DeleteFailed")
	ResourceState_STATUS_Deleting      = ResourceState_STATUS("Deleting")
	ResourceState_STATUS_DisableFailed = ResourceState_STATUS("DisableFailed")
	ResourceState_STATUS_Disabled      = ResourceState_STATUS("Disabled")
	ResourceState_STATUS_Disabling     = ResourceState_STATUS("Disabling")
	ResourceState_STATUS_EnableFailed  = ResourceState_STATUS("EnableFailed")
	ResourceState_STATUS_Enabling      = ResourceState_STATUS("Enabling")
	ResourceState_STATUS_Moving        = ResourceState_STATUS("Moving")
	ResourceState_STATUS_Running       = ResourceState_STATUS("Running")
	ResourceState_STATUS_Scaling       = ResourceState_STATUS("Scaling")
	ResourceState_STATUS_ScalingFailed = ResourceState_STATUS("ScalingFailed")
	ResourceState_STATUS_UpdateFailed  = ResourceState_STATUS("UpdateFailed")
	ResourceState_STATUS_Updating      = ResourceState_STATUS("Updating")
)

// Mapping from string to ResourceState_STATUS
var resourceState_STATUS_Values = map[string]ResourceState_STATUS{
	"createfailed":  ResourceState_STATUS_CreateFailed,
	"creating":      ResourceState_STATUS_Creating,
	"deletefailed":  ResourceState_STATUS_DeleteFailed,
	"deleting":      ResourceState_STATUS_Deleting,
	"disablefailed": ResourceState_STATUS_DisableFailed,
	"disabled":      ResourceState_STATUS_Disabled,
	"disabling":     ResourceState_STATUS_Disabling,
	"enablefailed":  ResourceState_STATUS_EnableFailed,
	"enabling":      ResourceState_STATUS_Enabling,
	"moving":        ResourceState_STATUS_Moving,
	"running":       ResourceState_STATUS_Running,
	"scaling":       ResourceState_STATUS_Scaling,
	"scalingfailed": ResourceState_STATUS_ScalingFailed,
	"updatefailed":  ResourceState_STATUS_UpdateFailed,
	"updating":      ResourceState_STATUS_Updating,
}

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,
}

// Specifies details of a linked database resource.
type LinkedDatabase_STATUS struct {
	// Id: Resource ID of a database resource to link with this database.
	Id *string `json:"id,omitempty"`

	// State: State of the link between the database resources.
	State *LinkedDatabase_State_STATUS `json:"state,omitempty"`
}

type Persistence_AofFrequency_STATUS string

const (
	Persistence_AofFrequency_STATUS_1S     = Persistence_AofFrequency_STATUS("1s")
	Persistence_AofFrequency_STATUS_Always = Persistence_AofFrequency_STATUS("always")
)

// Mapping from string to Persistence_AofFrequency_STATUS
var persistence_AofFrequency_STATUS_Values = map[string]Persistence_AofFrequency_STATUS{
	"1s":     Persistence_AofFrequency_STATUS_1S,
	"always": Persistence_AofFrequency_STATUS_Always,
}

type Persistence_RdbFrequency_STATUS string

const (
	Persistence_RdbFrequency_STATUS_12H = Persistence_RdbFrequency_STATUS("12h")
	Persistence_RdbFrequency_STATUS_1H  = Persistence_RdbFrequency_STATUS("1h")
	Persistence_RdbFrequency_STATUS_6H  = Persistence_RdbFrequency_STATUS("6h")
)

// Mapping from string to Persistence_RdbFrequency_STATUS
var persistence_RdbFrequency_STATUS_Values = map[string]Persistence_RdbFrequency_STATUS{
	"12h": Persistence_RdbFrequency_STATUS_12H,
	"1h":  Persistence_RdbFrequency_STATUS_1H,
	"6h":  Persistence_RdbFrequency_STATUS_6H,
}

type LinkedDatabase_State_STATUS string

const (
	LinkedDatabase_State_STATUS_LinkFailed   = LinkedDatabase_State_STATUS("LinkFailed")
	LinkedDatabase_State_STATUS_Linked       = LinkedDatabase_State_STATUS("Linked")
	LinkedDatabase_State_STATUS_Linking      = LinkedDatabase_State_STATUS("Linking")
	LinkedDatabase_State_STATUS_UnlinkFailed = LinkedDatabase_State_STATUS("UnlinkFailed")
	LinkedDatabase_State_STATUS_Unlinking    = LinkedDatabase_State_STATUS("Unlinking")
)

// Mapping from string to LinkedDatabase_State_STATUS
var linkedDatabase_State_STATUS_Values = map[string]LinkedDatabase_State_STATUS{
	"linkfailed":   LinkedDatabase_State_STATUS_LinkFailed,
	"linked":       LinkedDatabase_State_STATUS_Linked,
	"linking":      LinkedDatabase_State_STATUS_Linking,
	"unlinkfailed": LinkedDatabase_State_STATUS_UnlinkFailed,
	"unlinking":    LinkedDatabase_State_STATUS_Unlinking,
}
