<gh_stars>0// *** 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.Yandex.Outputs
{

    [OutputType]
    public sealed class ComputeInstanceGroupDeployPolicy
    {
        /// <summary>
        /// The maximum number of instances that can be created at the same time.
        /// </summary>
        public readonly int? MaxCreating;
        /// <summary>
        /// The maximum number of instances that can be deleted at the same time.
        /// </summary>
        public readonly int? MaxDeleting;
        /// <summary>
        /// The maximum number of instances that can be temporarily allocated above the group's target size
        /// during the update process.
        /// </summary>
        public readonly int MaxExpansion;
        /// <summary>
        /// The maximum number of running instances that can be taken offline (stopped or deleted) at the same time
        /// during the update process.
        /// </summary>
        public readonly int MaxUnavailable;
        /// <summary>
        /// The amount of time in seconds to allow for an instance to start.
        /// Instance will be considered up and running (and start receiving traffic) only after the startup_duration
        /// has elapsed and all health checks are passed.
        /// </summary>
        public readonly int? StartupDuration;
        /// <summary>
        /// Affects the lifecycle of the instance during deployment. If set to `proactive` (default), Instance Groups
        /// can forcefully stop a running instance. If `opportunistic`, Instance Groups does not stop a running instance. Instead,
        /// it will wait until the instance stops itself or becomes unhealthy.
        /// </summary>
        public readonly string? Strategy;

        [OutputConstructor]
        private ComputeInstanceGroupDeployPolicy(
            int? maxCreating,

            int? maxDeleting,

            int maxExpansion,

            int maxUnavailable,

            int? startupDuration,

            string? strategy)
        {
            MaxCreating = maxCreating;
            MaxDeleting = maxDeleting;
            MaxExpansion = maxExpansion;
            MaxUnavailable = maxUnavailable;
            StartupDuration = startupDuration;
            Strategy = strategy;
        }
    }
}
