// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading.Tasks;
using Pulumi.Serialization;

namespace Pulumi.AliCloud.MongoDB.Outputs
{

    [OutputType]
    public sealed class GetInstancesInstanceResult
    {
        /// <summary>
        /// Instance availability zone.
        /// </summary>
        public readonly string AvailabilityZone;
        /// <summary>
        /// Billing method. Value options are `PostPaid` for  Pay-As-You-Go and `PrePaid` for yearly or monthly subscription.
        /// </summary>
        public readonly string ChargeType;
        /// <summary>
        /// Creation time of the instance in RFC3339 format.
        /// </summary>
        public readonly string CreationTime;
        /// <summary>
        /// Database engine type. Supported option is `MongoDB`.
        /// </summary>
        public readonly string Engine;
        /// <summary>
        /// Database engine version.
        /// </summary>
        public readonly string EngineVersion;
        /// <summary>
        /// Expiration time in RFC3339 format. Pay-As-You-Go instances are never expire.
        /// </summary>
        public readonly string ExpirationTime;
        /// <summary>
        /// The ID of the MongoDB instance.
        /// </summary>
        public readonly string Id;
        /// <summary>
        /// Sizing of the instance to be queried.
        /// </summary>
        public readonly string InstanceClass;
        /// <summary>
        /// Type of the instance to be queried. If it is set to `sharding`, the sharded cluster instances are listed. If it is set to `replicate`, replica set instances are listed. Default value `replicate`.
        /// </summary>
        public readonly string InstanceType;
        /// <summary>
        /// Lock status of the instance.
        /// </summary>
        public readonly string LockMode;
        /// <summary>
        /// Array composed of Mongos.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetInstancesInstanceMongoResult> Mongos;
        /// <summary>
        /// The name of the MongoDB instance.
        /// </summary>
        public readonly string Name;
        /// <summary>
        /// Classic network or VPC.
        /// </summary>
        public readonly string NetworkType;
        /// <summary>
        /// Region ID the instance belongs to.
        /// </summary>
        public readonly string RegionId;
        /// <summary>
        /// Replication factor corresponds to number of nodes. Optional values are `1` for single node and `3` for three nodes replica set.
        /// </summary>
        public readonly string Replication;
        /// <summary>
        /// Array composed of shards.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetInstancesInstanceShardResult> Shards;
        /// <summary>
        /// Status of the instance.
        /// </summary>
        public readonly string Status;
        /// <summary>
        /// Shard disk.
        /// </summary>
        public readonly int Storage;
        /// <summary>
        /// A mapping of tags to assign to the resource.
        /// </summary>
        public readonly ImmutableDictionary<string, object> Tags;

        [OutputConstructor]
        private GetInstancesInstanceResult(
            string availabilityZone,

            string chargeType,

            string creationTime,

            string engine,

            string engineVersion,

            string expirationTime,

            string id,

            string instanceClass,

            string instanceType,

            string lockMode,

            ImmutableArray<Outputs.GetInstancesInstanceMongoResult> mongos,

            string name,

            string networkType,

            string regionId,

            string replication,

            ImmutableArray<Outputs.GetInstancesInstanceShardResult> shards,

            string status,

            int storage,

            ImmutableDictionary<string, object> tags)
        {
            AvailabilityZone = availabilityZone;
            ChargeType = chargeType;
            CreationTime = creationTime;
            Engine = engine;
            EngineVersion = engineVersion;
            ExpirationTime = expirationTime;
            Id = id;
            InstanceClass = instanceClass;
            InstanceType = instanceType;
            LockMode = lockMode;
            Mongos = mongos;
            Name = name;
            NetworkType = networkType;
            RegionId = regionId;
            Replication = replication;
            Shards = shards;
            Status = status;
            Storage = storage;
            Tags = tags;
        }
    }
}
