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

// Represents a mongo cluster resource.
type MongoCluster_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"`

	// 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: The resource-specific properties for this resource.
	Properties *MongoClusterProperties_STATUS `json:"properties,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"`
}

// The properties of a mongo cluster.
type MongoClusterProperties_STATUS struct {
	// Administrator: The local administrator properties for the mongo cluster.
	Administrator *AdministratorProperties_STATUS `json:"administrator,omitempty"`

	// Backup: The backup properties of the mongo cluster.
	Backup *BackupProperties_STATUS `json:"backup,omitempty"`

	// ClusterStatus: The status of the mongo cluster.
	ClusterStatus *MongoClusterStatus_STATUS `json:"clusterStatus,omitempty"`

	// Compute: The compute properties of the mongo cluster.
	Compute *ComputeProperties_STATUS `json:"compute,omitempty"`

	// ConnectionString: The default mongo connection string for the cluster.
	ConnectionString *string `json:"connectionString,omitempty"`

	// CreateMode: The mode to create a mongo cluster.
	CreateMode *CreateMode_STATUS `json:"createMode,omitempty"`

	// HighAvailability: The high availability properties of the mongo cluster.
	HighAvailability *HighAvailabilityProperties_STATUS `json:"highAvailability,omitempty"`

	// InfrastructureVersion: The infrastructure version the cluster is provisioned on.
	InfrastructureVersion *string `json:"infrastructureVersion,omitempty"`

	// PreviewFeatures: List of private endpoint connections.
	PreviewFeatures []PreviewFeature_STATUS `json:"previewFeatures,omitempty"`

	// PrivateEndpointConnections: List of private endpoint connections.
	PrivateEndpointConnections []PrivateEndpointConnection_STATUS `json:"privateEndpointConnections,omitempty"`

	// ProvisioningState: The provisioning state of the mongo cluster.
	ProvisioningState *ProvisioningState_STATUS `json:"provisioningState,omitempty"`

	// PublicNetworkAccess: Whether or not public endpoint access is allowed for this mongo cluster.
	PublicNetworkAccess *PublicNetworkAccess_STATUS `json:"publicNetworkAccess,omitempty"`

	// Replica: The replication properties for the mongo cluster
	Replica *ReplicationProperties_STATUS `json:"replica,omitempty"`

	// ReplicaParameters: The parameters to create a replica mongo cluster.
	ReplicaParameters *MongoClusterReplicaParameters_STATUS `json:"replicaParameters,omitempty"`

	// RestoreParameters: The parameters to create a point-in-time restore mongo cluster.
	RestoreParameters *MongoClusterRestoreParameters_STATUS `json:"restoreParameters,omitempty"`

	// ServerVersion: The Mongo DB server version. Defaults to the latest available version if not specified.
	ServerVersion *string `json:"serverVersion,omitempty"`

	// Sharding: The sharding properties of the mongo cluster.
	Sharding *ShardingProperties_STATUS `json:"sharding,omitempty"`

	// Storage: The storage properties of the mongo cluster.
	Storage *StorageProperties_STATUS `json:"storage,omitempty"`
}

// The local administrator login properties.
type AdministratorProperties_STATUS struct {
	// UserName: The administrator user name.
	UserName *string `json:"userName,omitempty"`
}

// The backup properties of the cluster. This includes the earliest restore time and retention settings.
type BackupProperties_STATUS struct {
	// EarliestRestoreTime: Earliest restore timestamp in UTC ISO8601 format.
	EarliestRestoreTime *string `json:"earliestRestoreTime,omitempty"`
}

// The compute properties of the cluster. This includes the virtual-cores/memory and scaling options applied to servers in
// the cluster.
type ComputeProperties_STATUS struct {
	// Tier: The compute tier to assign to the cluster, where each tier maps to a virtual-core and memory size. Example values:
	// 'M30', 'M40'.
	Tier *string `json:"tier,omitempty"`
}

// The mode that the Mongo Cluster is created with.
type CreateMode_STATUS string

const (
	CreateMode_STATUS_Default            = CreateMode_STATUS("Default")
	CreateMode_STATUS_GeoReplica         = CreateMode_STATUS("GeoReplica")
	CreateMode_STATUS_PointInTimeRestore = CreateMode_STATUS("PointInTimeRestore")
	CreateMode_STATUS_Replica            = CreateMode_STATUS("Replica")
)

// Mapping from string to CreateMode_STATUS
var createMode_STATUS_Values = map[string]CreateMode_STATUS{
	"default":            CreateMode_STATUS_Default,
	"georeplica":         CreateMode_STATUS_GeoReplica,
	"pointintimerestore": CreateMode_STATUS_PointInTimeRestore,
	"replica":            CreateMode_STATUS_Replica,
}

// The high availability properties of the cluster.
type HighAvailabilityProperties_STATUS struct {
	// TargetMode: The target high availability mode requested for the cluster.
	TargetMode *HighAvailabilityMode_STATUS `json:"targetMode,omitempty"`
}

// Parameters used for replica operations.
type MongoClusterReplicaParameters_STATUS struct {
	// SourceLocation: The location of the source cluster
	SourceLocation *string `json:"sourceLocation,omitempty"`

	// SourceResourceId: The id of the replication source cluster.
	SourceResourceId *string `json:"sourceResourceId,omitempty"`
}

// Parameters used for restore operations
type MongoClusterRestoreParameters_STATUS struct {
	// PointInTimeUTC: UTC point in time to restore a mongo cluster
	PointInTimeUTC *string `json:"pointInTimeUTC,omitempty"`

	// SourceResourceId: Resource ID to locate the source cluster to restore
	SourceResourceId *string `json:"sourceResourceId,omitempty"`
}

// The status of the Mongo cluster resource.
type MongoClusterStatus_STATUS string

const (
	MongoClusterStatus_STATUS_Dropping     = MongoClusterStatus_STATUS("Dropping")
	MongoClusterStatus_STATUS_Provisioning = MongoClusterStatus_STATUS("Provisioning")
	MongoClusterStatus_STATUS_Ready        = MongoClusterStatus_STATUS("Ready")
	MongoClusterStatus_STATUS_Starting     = MongoClusterStatus_STATUS("Starting")
	MongoClusterStatus_STATUS_Stopped      = MongoClusterStatus_STATUS("Stopped")
	MongoClusterStatus_STATUS_Stopping     = MongoClusterStatus_STATUS("Stopping")
	MongoClusterStatus_STATUS_Updating     = MongoClusterStatus_STATUS("Updating")
)

// Mapping from string to MongoClusterStatus_STATUS
var mongoClusterStatus_STATUS_Values = map[string]MongoClusterStatus_STATUS{
	"dropping":     MongoClusterStatus_STATUS_Dropping,
	"provisioning": MongoClusterStatus_STATUS_Provisioning,
	"ready":        MongoClusterStatus_STATUS_Ready,
	"starting":     MongoClusterStatus_STATUS_Starting,
	"stopped":      MongoClusterStatus_STATUS_Stopped,
	"stopping":     MongoClusterStatus_STATUS_Stopping,
	"updating":     MongoClusterStatus_STATUS_Updating,
}

// Preview features that can be enabled on a mongo cluster.
type PreviewFeature_STATUS string

const PreviewFeature_STATUS_GeoReplicas = PreviewFeature_STATUS("GeoReplicas")

// Mapping from string to PreviewFeature_STATUS
var previewFeature_STATUS_Values = map[string]PreviewFeature_STATUS{
	"georeplicas": PreviewFeature_STATUS_GeoReplicas,
}

// 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"`
}

// Whether or not public endpoint access is allowed for this Mongo cluster.  Value is optional and default value is
// 'Enabled'
type PublicNetworkAccess_STATUS string

const (
	PublicNetworkAccess_STATUS_Disabled = PublicNetworkAccess_STATUS("Disabled")
	PublicNetworkAccess_STATUS_Enabled  = PublicNetworkAccess_STATUS("Enabled")
)

// Mapping from string to PublicNetworkAccess_STATUS
var publicNetworkAccess_STATUS_Values = map[string]PublicNetworkAccess_STATUS{
	"disabled": PublicNetworkAccess_STATUS_Disabled,
	"enabled":  PublicNetworkAccess_STATUS_Enabled,
}

// Replica properties of the mongo cluster.
type ReplicationProperties_STATUS struct {
	// ReplicationState: The replication link state of the replica cluster.
	ReplicationState *ReplicationState_STATUS `json:"replicationState,omitempty"`

	// Role: The replication role of the cluster
	Role *ReplicationRole_STATUS `json:"role,omitempty"`

	// SourceResourceId: The resource id the source cluster for the replica cluster.
	SourceResourceId *string `json:"sourceResourceId,omitempty"`
}

// The sharding properties of the cluster. This includes the shard count and scaling options for the cluster.
type ShardingProperties_STATUS struct {
	// ShardCount: Number of shards to provision on the cluster.
	ShardCount *int `json:"shardCount,omitempty"`
}

// The storage properties of the cluster. This includes the data storage size and scaling applied to servers in the cluster.
type StorageProperties_STATUS struct {
	// SizeGb: The size of the data disk assigned to each server.
	SizeGb *int `json:"sizeGb,omitempty"`
}

// The high availability modes for a cluster.
type HighAvailabilityMode_STATUS string

const (
	HighAvailabilityMode_STATUS_Disabled               = HighAvailabilityMode_STATUS("Disabled")
	HighAvailabilityMode_STATUS_SameZone               = HighAvailabilityMode_STATUS("SameZone")
	HighAvailabilityMode_STATUS_ZoneRedundantPreferred = HighAvailabilityMode_STATUS("ZoneRedundantPreferred")
)

// Mapping from string to HighAvailabilityMode_STATUS
var highAvailabilityMode_STATUS_Values = map[string]HighAvailabilityMode_STATUS{
	"disabled":               HighAvailabilityMode_STATUS_Disabled,
	"samezone":               HighAvailabilityMode_STATUS_SameZone,
	"zoneredundantpreferred": HighAvailabilityMode_STATUS_ZoneRedundantPreferred,
}

// Replication role of the mongo cluster.
type ReplicationRole_STATUS string

const (
	ReplicationRole_STATUS_AsyncReplica    = ReplicationRole_STATUS("AsyncReplica")
	ReplicationRole_STATUS_GeoAsyncReplica = ReplicationRole_STATUS("GeoAsyncReplica")
	ReplicationRole_STATUS_Primary         = ReplicationRole_STATUS("Primary")
)

// Mapping from string to ReplicationRole_STATUS
var replicationRole_STATUS_Values = map[string]ReplicationRole_STATUS{
	"asyncreplica":    ReplicationRole_STATUS_AsyncReplica,
	"geoasyncreplica": ReplicationRole_STATUS_GeoAsyncReplica,
	"primary":         ReplicationRole_STATUS_Primary,
}

// The state of the replication link between the replica and source cluster.
type ReplicationState_STATUS string

const (
	ReplicationState_STATUS_Active        = ReplicationState_STATUS("Active")
	ReplicationState_STATUS_Broken        = ReplicationState_STATUS("Broken")
	ReplicationState_STATUS_Catchup       = ReplicationState_STATUS("Catchup")
	ReplicationState_STATUS_Provisioning  = ReplicationState_STATUS("Provisioning")
	ReplicationState_STATUS_Reconfiguring = ReplicationState_STATUS("Reconfiguring")
	ReplicationState_STATUS_Updating      = ReplicationState_STATUS("Updating")
)

// Mapping from string to ReplicationState_STATUS
var replicationState_STATUS_Values = map[string]ReplicationState_STATUS{
	"active":        ReplicationState_STATUS_Active,
	"broken":        ReplicationState_STATUS_Broken,
	"catchup":       ReplicationState_STATUS_Catchup,
	"provisioning":  ReplicationState_STATUS_Provisioning,
	"reconfiguring": ReplicationState_STATUS_Reconfiguring,
	"updating":      ReplicationState_STATUS_Updating,
}
