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

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

	// Identity: The identity of the resource.
	Identity *ManagedServiceIdentity_STATUS `json:"identity,omitempty"`

	// Kind: Distinguishes the kind of cluster. Read-only.
	Kind *Kind_STATUS `json:"kind,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: Other properties of the cluster.
	Properties *ClusterProperties_STATUS `json:"properties,omitempty"`

	// Sku: The SKU to create, which affects price, performance, and features.
	Sku *Sku_STATUS `json:"sku,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"`

	// Zones: The Availability Zones where this cluster will be deployed.
	Zones []string `json:"zones,omitempty"`
}

// Properties of Redis Enterprise clusters, as opposed to general resource properties like location, tags
type ClusterProperties_STATUS struct {
	// Encryption: Encryption-at-rest configuration for the cluster.
	Encryption *ClusterProperties_Encryption_STATUS `json:"encryption,omitempty"`

	// HighAvailability: Enabled by default. If highAvailability is disabled, the data set is not replicated. This affects the
	// availability SLA, and increases the risk of data loss.
	HighAvailability *ClusterProperties_HighAvailability_STATUS `json:"highAvailability,omitempty"`

	// HostName: DNS name of the cluster endpoint
	HostName *string `json:"hostName,omitempty"`

	// MinimumTlsVersion: The minimum TLS version for the cluster to support, e.g. '1.2'. Newer versions can be added in the
	// future. Note that TLS 1.0 and TLS 1.1 are now completely obsolete -- you cannot use them. They are mentioned only for
	// the sake of consistency with old API versions.
	MinimumTlsVersion *ClusterProperties_MinimumTlsVersion_STATUS `json:"minimumTlsVersion,omitempty"`

	// PrivateEndpointConnections: List of private endpoint connections associated with the specified Redis Enterprise cluster
	PrivateEndpointConnections []PrivateEndpointConnection_STATUS `json:"privateEndpointConnections,omitempty"`

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

	// RedisVersion: Version of redis the cluster supports, e.g. '6'
	RedisVersion *string `json:"redisVersion,omitempty"`

	// RedundancyMode: Explains the current redundancy strategy of the cluster, which affects the expected SLA.
	RedundancyMode *ClusterProperties_RedundancyMode_STATUS `json:"redundancyMode,omitempty"`

	// ResourceState: Current resource status of the cluster
	ResourceState *ResourceState_STATUS `json:"resourceState,omitempty"`
}

// Distinguishes the kind of cluster. Read-only.
type Kind_STATUS string

const (
	Kind_STATUS_V1 = Kind_STATUS("v1")
	Kind_STATUS_V2 = Kind_STATUS("v2")
)

// Mapping from string to Kind_STATUS
var kind_STATUS_Values = map[string]Kind_STATUS{
	"v1": Kind_STATUS_V1,
	"v2": Kind_STATUS_V2,
}

// Managed service identity (system assigned and/or user assigned identities)
type ManagedServiceIdentity_STATUS struct {
	// PrincipalId: The service principal ID of the system assigned identity. This property will only be provided for a system
	// assigned identity.
	PrincipalId *string `json:"principalId,omitempty"`

	// TenantId: The tenant ID of the system assigned identity. This property will only be provided for a system assigned
	// identity.
	TenantId *string `json:"tenantId,omitempty"`

	// Type: Type of managed service identity (where both SystemAssigned and UserAssigned types are allowed).
	Type                   *ManagedServiceIdentityType_STATUS     `json:"type,omitempty"`
	UserAssignedIdentities map[string]UserAssignedIdentity_STATUS `json:"userAssignedIdentities,omitempty"`
}

// SKU parameters supplied to the create Redis Enterprise cluster operation.
type Sku_STATUS struct {
	// Capacity: This property is only used with Enterprise and EnterpriseFlash SKUs. Determines the size of the cluster. Valid
	// values are (2, 4, 6, ...) for Enterprise SKUs and (3, 9, 15, ...) for EnterpriseFlash SKUs.
	Capacity *int `json:"capacity,omitempty"`

	// Name: The level of Redis Enterprise cluster to deploy. Possible values: ('Balanced_B5', 'MemoryOptimized_M10',
	// 'ComputeOptimized_X5', etc.). For more information on SKUs see the latest pricing documentation. Note that additional
	// SKUs may become supported in the future.
	Name *Sku_Name_STATUS `json:"name,omitempty"`
}

type ClusterProperties_Encryption_STATUS struct {
	// CustomerManagedKeyEncryption: All Customer-managed key encryption properties for the resource. Set this to an empty
	// object to use Microsoft-managed key encryption.
	CustomerManagedKeyEncryption *ClusterProperties_Encryption_CustomerManagedKeyEncryption_STATUS `json:"customerManagedKeyEncryption,omitempty"`
}

type ClusterProperties_HighAvailability_STATUS string

const (
	ClusterProperties_HighAvailability_STATUS_Disabled = ClusterProperties_HighAvailability_STATUS("Disabled")
	ClusterProperties_HighAvailability_STATUS_Enabled  = ClusterProperties_HighAvailability_STATUS("Enabled")
)

// Mapping from string to ClusterProperties_HighAvailability_STATUS
var clusterProperties_HighAvailability_STATUS_Values = map[string]ClusterProperties_HighAvailability_STATUS{
	"disabled": ClusterProperties_HighAvailability_STATUS_Disabled,
	"enabled":  ClusterProperties_HighAvailability_STATUS_Enabled,
}

type ClusterProperties_MinimumTlsVersion_STATUS string

const (
	ClusterProperties_MinimumTlsVersion_STATUS_10 = ClusterProperties_MinimumTlsVersion_STATUS("1.0")
	ClusterProperties_MinimumTlsVersion_STATUS_11 = ClusterProperties_MinimumTlsVersion_STATUS("1.1")
	ClusterProperties_MinimumTlsVersion_STATUS_12 = ClusterProperties_MinimumTlsVersion_STATUS("1.2")
)

// Mapping from string to ClusterProperties_MinimumTlsVersion_STATUS
var clusterProperties_MinimumTlsVersion_STATUS_Values = map[string]ClusterProperties_MinimumTlsVersion_STATUS{
	"1.0": ClusterProperties_MinimumTlsVersion_STATUS_10,
	"1.1": ClusterProperties_MinimumTlsVersion_STATUS_11,
	"1.2": ClusterProperties_MinimumTlsVersion_STATUS_12,
}

type ClusterProperties_RedundancyMode_STATUS string

const (
	ClusterProperties_RedundancyMode_STATUS_LR   = ClusterProperties_RedundancyMode_STATUS("LR")
	ClusterProperties_RedundancyMode_STATUS_None = ClusterProperties_RedundancyMode_STATUS("None")
	ClusterProperties_RedundancyMode_STATUS_ZR   = ClusterProperties_RedundancyMode_STATUS("ZR")
)

// Mapping from string to ClusterProperties_RedundancyMode_STATUS
var clusterProperties_RedundancyMode_STATUS_Values = map[string]ClusterProperties_RedundancyMode_STATUS{
	"lr":   ClusterProperties_RedundancyMode_STATUS_LR,
	"none": ClusterProperties_RedundancyMode_STATUS_None,
	"zr":   ClusterProperties_RedundancyMode_STATUS_ZR,
}

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

const (
	ManagedServiceIdentityType_STATUS_None                       = ManagedServiceIdentityType_STATUS("None")
	ManagedServiceIdentityType_STATUS_SystemAssigned             = ManagedServiceIdentityType_STATUS("SystemAssigned")
	ManagedServiceIdentityType_STATUS_SystemAssignedUserAssigned = ManagedServiceIdentityType_STATUS("SystemAssigned, UserAssigned")
	ManagedServiceIdentityType_STATUS_UserAssigned               = ManagedServiceIdentityType_STATUS("UserAssigned")
)

// Mapping from string to ManagedServiceIdentityType_STATUS
var managedServiceIdentityType_STATUS_Values = map[string]ManagedServiceIdentityType_STATUS{
	"none":                         ManagedServiceIdentityType_STATUS_None,
	"systemassigned":               ManagedServiceIdentityType_STATUS_SystemAssigned,
	"systemassigned, userassigned": ManagedServiceIdentityType_STATUS_SystemAssignedUserAssigned,
	"userassigned":                 ManagedServiceIdentityType_STATUS_UserAssigned,
}

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

type Sku_Name_STATUS string

const (
	Sku_Name_STATUS_Balanced_B0           = Sku_Name_STATUS("Balanced_B0")
	Sku_Name_STATUS_Balanced_B1           = Sku_Name_STATUS("Balanced_B1")
	Sku_Name_STATUS_Balanced_B10          = Sku_Name_STATUS("Balanced_B10")
	Sku_Name_STATUS_Balanced_B100         = Sku_Name_STATUS("Balanced_B100")
	Sku_Name_STATUS_Balanced_B1000        = Sku_Name_STATUS("Balanced_B1000")
	Sku_Name_STATUS_Balanced_B150         = Sku_Name_STATUS("Balanced_B150")
	Sku_Name_STATUS_Balanced_B20          = Sku_Name_STATUS("Balanced_B20")
	Sku_Name_STATUS_Balanced_B250         = Sku_Name_STATUS("Balanced_B250")
	Sku_Name_STATUS_Balanced_B3           = Sku_Name_STATUS("Balanced_B3")
	Sku_Name_STATUS_Balanced_B350         = Sku_Name_STATUS("Balanced_B350")
	Sku_Name_STATUS_Balanced_B5           = Sku_Name_STATUS("Balanced_B5")
	Sku_Name_STATUS_Balanced_B50          = Sku_Name_STATUS("Balanced_B50")
	Sku_Name_STATUS_Balanced_B500         = Sku_Name_STATUS("Balanced_B500")
	Sku_Name_STATUS_Balanced_B700         = Sku_Name_STATUS("Balanced_B700")
	Sku_Name_STATUS_ComputeOptimized_X10  = Sku_Name_STATUS("ComputeOptimized_X10")
	Sku_Name_STATUS_ComputeOptimized_X100 = Sku_Name_STATUS("ComputeOptimized_X100")
	Sku_Name_STATUS_ComputeOptimized_X150 = Sku_Name_STATUS("ComputeOptimized_X150")
	Sku_Name_STATUS_ComputeOptimized_X20  = Sku_Name_STATUS("ComputeOptimized_X20")
	Sku_Name_STATUS_ComputeOptimized_X250 = Sku_Name_STATUS("ComputeOptimized_X250")
	Sku_Name_STATUS_ComputeOptimized_X3   = Sku_Name_STATUS("ComputeOptimized_X3")
	Sku_Name_STATUS_ComputeOptimized_X350 = Sku_Name_STATUS("ComputeOptimized_X350")
	Sku_Name_STATUS_ComputeOptimized_X5   = Sku_Name_STATUS("ComputeOptimized_X5")
	Sku_Name_STATUS_ComputeOptimized_X50  = Sku_Name_STATUS("ComputeOptimized_X50")
	Sku_Name_STATUS_ComputeOptimized_X500 = Sku_Name_STATUS("ComputeOptimized_X500")
	Sku_Name_STATUS_ComputeOptimized_X700 = Sku_Name_STATUS("ComputeOptimized_X700")
	Sku_Name_STATUS_EnterpriseFlash_F1500 = Sku_Name_STATUS("EnterpriseFlash_F1500")
	Sku_Name_STATUS_EnterpriseFlash_F300  = Sku_Name_STATUS("EnterpriseFlash_F300")
	Sku_Name_STATUS_EnterpriseFlash_F700  = Sku_Name_STATUS("EnterpriseFlash_F700")
	Sku_Name_STATUS_Enterprise_E1         = Sku_Name_STATUS("Enterprise_E1")
	Sku_Name_STATUS_Enterprise_E10        = Sku_Name_STATUS("Enterprise_E10")
	Sku_Name_STATUS_Enterprise_E100       = Sku_Name_STATUS("Enterprise_E100")
	Sku_Name_STATUS_Enterprise_E20        = Sku_Name_STATUS("Enterprise_E20")
	Sku_Name_STATUS_Enterprise_E200       = Sku_Name_STATUS("Enterprise_E200")
	Sku_Name_STATUS_Enterprise_E400       = Sku_Name_STATUS("Enterprise_E400")
	Sku_Name_STATUS_Enterprise_E5         = Sku_Name_STATUS("Enterprise_E5")
	Sku_Name_STATUS_Enterprise_E50        = Sku_Name_STATUS("Enterprise_E50")
	Sku_Name_STATUS_FlashOptimized_A1000  = Sku_Name_STATUS("FlashOptimized_A1000")
	Sku_Name_STATUS_FlashOptimized_A1500  = Sku_Name_STATUS("FlashOptimized_A1500")
	Sku_Name_STATUS_FlashOptimized_A2000  = Sku_Name_STATUS("FlashOptimized_A2000")
	Sku_Name_STATUS_FlashOptimized_A250   = Sku_Name_STATUS("FlashOptimized_A250")
	Sku_Name_STATUS_FlashOptimized_A4500  = Sku_Name_STATUS("FlashOptimized_A4500")
	Sku_Name_STATUS_FlashOptimized_A500   = Sku_Name_STATUS("FlashOptimized_A500")
	Sku_Name_STATUS_FlashOptimized_A700   = Sku_Name_STATUS("FlashOptimized_A700")
	Sku_Name_STATUS_MemoryOptimized_M10   = Sku_Name_STATUS("MemoryOptimized_M10")
	Sku_Name_STATUS_MemoryOptimized_M100  = Sku_Name_STATUS("MemoryOptimized_M100")
	Sku_Name_STATUS_MemoryOptimized_M1000 = Sku_Name_STATUS("MemoryOptimized_M1000")
	Sku_Name_STATUS_MemoryOptimized_M150  = Sku_Name_STATUS("MemoryOptimized_M150")
	Sku_Name_STATUS_MemoryOptimized_M1500 = Sku_Name_STATUS("MemoryOptimized_M1500")
	Sku_Name_STATUS_MemoryOptimized_M20   = Sku_Name_STATUS("MemoryOptimized_M20")
	Sku_Name_STATUS_MemoryOptimized_M2000 = Sku_Name_STATUS("MemoryOptimized_M2000")
	Sku_Name_STATUS_MemoryOptimized_M250  = Sku_Name_STATUS("MemoryOptimized_M250")
	Sku_Name_STATUS_MemoryOptimized_M350  = Sku_Name_STATUS("MemoryOptimized_M350")
	Sku_Name_STATUS_MemoryOptimized_M50   = Sku_Name_STATUS("MemoryOptimized_M50")
	Sku_Name_STATUS_MemoryOptimized_M500  = Sku_Name_STATUS("MemoryOptimized_M500")
	Sku_Name_STATUS_MemoryOptimized_M700  = Sku_Name_STATUS("MemoryOptimized_M700")
)

// Mapping from string to Sku_Name_STATUS
var sku_Name_STATUS_Values = map[string]Sku_Name_STATUS{
	"balanced_b0":           Sku_Name_STATUS_Balanced_B0,
	"balanced_b1":           Sku_Name_STATUS_Balanced_B1,
	"balanced_b10":          Sku_Name_STATUS_Balanced_B10,
	"balanced_b100":         Sku_Name_STATUS_Balanced_B100,
	"balanced_b1000":        Sku_Name_STATUS_Balanced_B1000,
	"balanced_b150":         Sku_Name_STATUS_Balanced_B150,
	"balanced_b20":          Sku_Name_STATUS_Balanced_B20,
	"balanced_b250":         Sku_Name_STATUS_Balanced_B250,
	"balanced_b3":           Sku_Name_STATUS_Balanced_B3,
	"balanced_b350":         Sku_Name_STATUS_Balanced_B350,
	"balanced_b5":           Sku_Name_STATUS_Balanced_B5,
	"balanced_b50":          Sku_Name_STATUS_Balanced_B50,
	"balanced_b500":         Sku_Name_STATUS_Balanced_B500,
	"balanced_b700":         Sku_Name_STATUS_Balanced_B700,
	"computeoptimized_x10":  Sku_Name_STATUS_ComputeOptimized_X10,
	"computeoptimized_x100": Sku_Name_STATUS_ComputeOptimized_X100,
	"computeoptimized_x150": Sku_Name_STATUS_ComputeOptimized_X150,
	"computeoptimized_x20":  Sku_Name_STATUS_ComputeOptimized_X20,
	"computeoptimized_x250": Sku_Name_STATUS_ComputeOptimized_X250,
	"computeoptimized_x3":   Sku_Name_STATUS_ComputeOptimized_X3,
	"computeoptimized_x350": Sku_Name_STATUS_ComputeOptimized_X350,
	"computeoptimized_x5":   Sku_Name_STATUS_ComputeOptimized_X5,
	"computeoptimized_x50":  Sku_Name_STATUS_ComputeOptimized_X50,
	"computeoptimized_x500": Sku_Name_STATUS_ComputeOptimized_X500,
	"computeoptimized_x700": Sku_Name_STATUS_ComputeOptimized_X700,
	"enterpriseflash_f1500": Sku_Name_STATUS_EnterpriseFlash_F1500,
	"enterpriseflash_f300":  Sku_Name_STATUS_EnterpriseFlash_F300,
	"enterpriseflash_f700":  Sku_Name_STATUS_EnterpriseFlash_F700,
	"enterprise_e1":         Sku_Name_STATUS_Enterprise_E1,
	"enterprise_e10":        Sku_Name_STATUS_Enterprise_E10,
	"enterprise_e100":       Sku_Name_STATUS_Enterprise_E100,
	"enterprise_e20":        Sku_Name_STATUS_Enterprise_E20,
	"enterprise_e200":       Sku_Name_STATUS_Enterprise_E200,
	"enterprise_e400":       Sku_Name_STATUS_Enterprise_E400,
	"enterprise_e5":         Sku_Name_STATUS_Enterprise_E5,
	"enterprise_e50":        Sku_Name_STATUS_Enterprise_E50,
	"flashoptimized_a1000":  Sku_Name_STATUS_FlashOptimized_A1000,
	"flashoptimized_a1500":  Sku_Name_STATUS_FlashOptimized_A1500,
	"flashoptimized_a2000":  Sku_Name_STATUS_FlashOptimized_A2000,
	"flashoptimized_a250":   Sku_Name_STATUS_FlashOptimized_A250,
	"flashoptimized_a4500":  Sku_Name_STATUS_FlashOptimized_A4500,
	"flashoptimized_a500":   Sku_Name_STATUS_FlashOptimized_A500,
	"flashoptimized_a700":   Sku_Name_STATUS_FlashOptimized_A700,
	"memoryoptimized_m10":   Sku_Name_STATUS_MemoryOptimized_M10,
	"memoryoptimized_m100":  Sku_Name_STATUS_MemoryOptimized_M100,
	"memoryoptimized_m1000": Sku_Name_STATUS_MemoryOptimized_M1000,
	"memoryoptimized_m150":  Sku_Name_STATUS_MemoryOptimized_M150,
	"memoryoptimized_m1500": Sku_Name_STATUS_MemoryOptimized_M1500,
	"memoryoptimized_m20":   Sku_Name_STATUS_MemoryOptimized_M20,
	"memoryoptimized_m2000": Sku_Name_STATUS_MemoryOptimized_M2000,
	"memoryoptimized_m250":  Sku_Name_STATUS_MemoryOptimized_M250,
	"memoryoptimized_m350":  Sku_Name_STATUS_MemoryOptimized_M350,
	"memoryoptimized_m50":   Sku_Name_STATUS_MemoryOptimized_M50,
	"memoryoptimized_m500":  Sku_Name_STATUS_MemoryOptimized_M500,
	"memoryoptimized_m700":  Sku_Name_STATUS_MemoryOptimized_M700,
}

// User assigned identity properties
type UserAssignedIdentity_STATUS struct {
	// ClientId: The client ID of the assigned identity.
	ClientId *string `json:"clientId,omitempty"`

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

type ClusterProperties_Encryption_CustomerManagedKeyEncryption_STATUS struct {
	// KeyEncryptionKeyIdentity: All identity configuration for Customer-managed key settings defining which identity should be
	// used to auth to Key Vault.
	KeyEncryptionKeyIdentity *ClusterProperties_Encryption_CustomerManagedKeyEncryption_KeyEncryptionKeyIdentity_STATUS `json:"keyEncryptionKeyIdentity,omitempty"`

	// KeyEncryptionKeyUrl: Key encryption key Url, versioned only. Ex:
	// https://contosovault.vault.azure.net/keys/contosokek/562a4bb76b524a1493a6afe8e536ee78
	KeyEncryptionKeyUrl *string `json:"keyEncryptionKeyUrl,omitempty"`
}

type ClusterProperties_Encryption_CustomerManagedKeyEncryption_KeyEncryptionKeyIdentity_STATUS struct {
	// IdentityType: Only userAssignedIdentity is supported in this API version; other types may be supported in the future
	IdentityType *ClusterProperties_Encryption_CustomerManagedKeyEncryption_KeyEncryptionKeyIdentity_IdentityType_STATUS `json:"identityType,omitempty"`

	// UserAssignedIdentityResourceId: User assigned identity to use for accessing key encryption key Url. Ex:
	// /subscriptions/<sub uuid>/resourceGroups/<resource
	// group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myId.
	UserAssignedIdentityResourceId *string `json:"userAssignedIdentityResourceId,omitempty"`
}

type ClusterProperties_Encryption_CustomerManagedKeyEncryption_KeyEncryptionKeyIdentity_IdentityType_STATUS string

const (
	ClusterProperties_Encryption_CustomerManagedKeyEncryption_KeyEncryptionKeyIdentity_IdentityType_STATUS_SystemAssignedIdentity = ClusterProperties_Encryption_CustomerManagedKeyEncryption_KeyEncryptionKeyIdentity_IdentityType_STATUS("systemAssignedIdentity")
	ClusterProperties_Encryption_CustomerManagedKeyEncryption_KeyEncryptionKeyIdentity_IdentityType_STATUS_UserAssignedIdentity   = ClusterProperties_Encryption_CustomerManagedKeyEncryption_KeyEncryptionKeyIdentity_IdentityType_STATUS("userAssignedIdentity")
)

// Mapping from string to ClusterProperties_Encryption_CustomerManagedKeyEncryption_KeyEncryptionKeyIdentity_IdentityType_STATUS
var clusterProperties_Encryption_CustomerManagedKeyEncryption_KeyEncryptionKeyIdentity_IdentityType_STATUS_Values = map[string]ClusterProperties_Encryption_CustomerManagedKeyEncryption_KeyEncryptionKeyIdentity_IdentityType_STATUS{
	"systemassignedidentity": ClusterProperties_Encryption_CustomerManagedKeyEncryption_KeyEncryptionKeyIdentity_IdentityType_STATUS_SystemAssignedIdentity,
	"userassignedidentity":   ClusterProperties_Encryption_CustomerManagedKeyEncryption_KeyEncryptionKeyIdentity_IdentityType_STATUS_UserAssignedIdentity,
}
