# coding=utf-8
# *** 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! ***

import builtins
import copy
import warnings
import sys
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
if sys.version_info >= (3, 11):
    from typing import NotRequired, TypedDict, TypeAlias
else:
    from typing_extensions import NotRequired, TypedDict, TypeAlias
from .. import _utilities
from . import outputs

__all__ = [
    'GetDeploymentSetResult',
    'AwaitableGetDeploymentSetResult',
    'get_deployment_set',
    'get_deployment_set_output',
]

@pulumi.output_type
class GetDeploymentSetResult:
    """
    A collection of values returned by getDeploymentSet.
    """
    def __init__(__self__, capacities=None, created_at=None, deployment_set_group_number=None, deployment_set_id=None, deployment_set_name=None, description=None, granularity=None, group_count=None, id=None, instance_amount=None, instance_ids=None, strategy=None):
        if capacities and not isinstance(capacities, list):
            raise TypeError("Expected argument 'capacities' to be a list")
        pulumi.set(__self__, "capacities", capacities)
        if created_at and not isinstance(created_at, str):
            raise TypeError("Expected argument 'created_at' to be a str")
        pulumi.set(__self__, "created_at", created_at)
        if deployment_set_group_number and not isinstance(deployment_set_group_number, int):
            raise TypeError("Expected argument 'deployment_set_group_number' to be a int")
        pulumi.set(__self__, "deployment_set_group_number", deployment_set_group_number)
        if deployment_set_id and not isinstance(deployment_set_id, str):
            raise TypeError("Expected argument 'deployment_set_id' to be a str")
        pulumi.set(__self__, "deployment_set_id", deployment_set_id)
        if deployment_set_name and not isinstance(deployment_set_name, str):
            raise TypeError("Expected argument 'deployment_set_name' to be a str")
        pulumi.set(__self__, "deployment_set_name", deployment_set_name)
        if description and not isinstance(description, str):
            raise TypeError("Expected argument 'description' to be a str")
        pulumi.set(__self__, "description", description)
        if granularity and not isinstance(granularity, str):
            raise TypeError("Expected argument 'granularity' to be a str")
        pulumi.set(__self__, "granularity", granularity)
        if group_count and not isinstance(group_count, int):
            raise TypeError("Expected argument 'group_count' to be a int")
        pulumi.set(__self__, "group_count", group_count)
        if id and not isinstance(id, str):
            raise TypeError("Expected argument 'id' to be a str")
        pulumi.set(__self__, "id", id)
        if instance_amount and not isinstance(instance_amount, int):
            raise TypeError("Expected argument 'instance_amount' to be a int")
        pulumi.set(__self__, "instance_amount", instance_amount)
        if instance_ids and not isinstance(instance_ids, list):
            raise TypeError("Expected argument 'instance_ids' to be a list")
        pulumi.set(__self__, "instance_ids", instance_ids)
        if strategy and not isinstance(strategy, str):
            raise TypeError("Expected argument 'strategy' to be a str")
        pulumi.set(__self__, "strategy", strategy)

    @property
    @pulumi.getter
    def capacities(self) -> Sequence['outputs.GetDeploymentSetCapacityResult']:
        """
        实例启动模板版本信息。
        """
        return pulumi.get(self, "capacities")

    @property
    @pulumi.getter(name="createdAt")
    def created_at(self) -> builtins.str:
        """
        部署集的创建时间。
        """
        return pulumi.get(self, "created_at")

    @property
    @pulumi.getter(name="deploymentSetGroupNumber")
    def deployment_set_group_number(self) -> builtins.int:
        """
        部署集组的序号，取值范围：1～7。
        """
        return pulumi.get(self, "deployment_set_group_number")

    @property
    @pulumi.getter(name="deploymentSetId")
    def deployment_set_id(self) -> builtins.str:
        """
        部署集ID。
        """
        return pulumi.get(self, "deployment_set_id")

    @property
    @pulumi.getter(name="deploymentSetName")
    def deployment_set_name(self) -> builtins.str:
        """
        部署集名称。不能以数字、中划线、下划线开头。只能包含中文、字母、数字、下划线和中划线。长度限制为1～128个字符。
        """
        return pulumi.get(self, "deployment_set_name")

    @property
    @pulumi.getter
    def description(self) -> builtins.str:
        """
        部署集的描述信息。必须以字母或中文开头。只能包含中文、字母、数字、点“.”、空格、下划线“_”、中划线“-”、等号“=”、英文逗号“,”、中文逗号“，”和中文句号“。”。长度限制在255个字符以内。
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter
    def granularity(self) -> builtins.str:
        """
        部署粒度，取值：host：物理机。rack：机架。switch：交换机。
        """
        return pulumi.get(self, "granularity")

    @property
    @pulumi.getter(name="groupCount")
    def group_count(self) -> builtins.int:
        """
        部署集组数量。为部署集组高可用策略设置分组数量。取值范围：1～7。默认值：7。
        """
        return pulumi.get(self, "group_count")

    @property
    @pulumi.getter
    def id(self) -> builtins.str:
        """
        Uniquely identifies the resource.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="instanceAmount")
    def instance_amount(self) -> builtins.int:
        """
        部署集内的ECS实例数量。
        """
        return pulumi.get(self, "instance_amount")

    @property
    @pulumi.getter(name="instanceIds")
    def instance_ids(self) -> Sequence[builtins.str]:
        """
        部署集内的ECS实例ID列表。
        """
        return pulumi.get(self, "instance_ids")

    @property
    @pulumi.getter
    def strategy(self) -> builtins.str:
        """
        部署策略，取值：Availability（默认）：高可用策略。AvailabilityGroup：部署集组高可用策略。
        """
        return pulumi.get(self, "strategy")


class AwaitableGetDeploymentSetResult(GetDeploymentSetResult):
    # pylint: disable=using-constant-test
    def __await__(self):
        if False:
            yield self
        return GetDeploymentSetResult(
            capacities=self.capacities,
            created_at=self.created_at,
            deployment_set_group_number=self.deployment_set_group_number,
            deployment_set_id=self.deployment_set_id,
            deployment_set_name=self.deployment_set_name,
            description=self.description,
            granularity=self.granularity,
            group_count=self.group_count,
            id=self.id,
            instance_amount=self.instance_amount,
            instance_ids=self.instance_ids,
            strategy=self.strategy)


def get_deployment_set(id: Optional[builtins.str] = None,
                       opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetDeploymentSetResult:
    """
    Data Source schema for Byteplus::ECS::DeploymentSet


    :param builtins.str id: Uniquely identifies the resource.
    """
    __args__ = dict()
    __args__['id'] = id
    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke('bytepluscc:ecs/getDeploymentSet:getDeploymentSet', __args__, opts=opts, typ=GetDeploymentSetResult).value

    return AwaitableGetDeploymentSetResult(
        capacities=pulumi.get(__ret__, 'capacities'),
        created_at=pulumi.get(__ret__, 'created_at'),
        deployment_set_group_number=pulumi.get(__ret__, 'deployment_set_group_number'),
        deployment_set_id=pulumi.get(__ret__, 'deployment_set_id'),
        deployment_set_name=pulumi.get(__ret__, 'deployment_set_name'),
        description=pulumi.get(__ret__, 'description'),
        granularity=pulumi.get(__ret__, 'granularity'),
        group_count=pulumi.get(__ret__, 'group_count'),
        id=pulumi.get(__ret__, 'id'),
        instance_amount=pulumi.get(__ret__, 'instance_amount'),
        instance_ids=pulumi.get(__ret__, 'instance_ids'),
        strategy=pulumi.get(__ret__, 'strategy'))
def get_deployment_set_output(id: Optional[pulumi.Input[builtins.str]] = None,
                              opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetDeploymentSetResult]:
    """
    Data Source schema for Byteplus::ECS::DeploymentSet


    :param builtins.str id: Uniquely identifies the resource.
    """
    __args__ = dict()
    __args__['id'] = id
    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke_output('bytepluscc:ecs/getDeploymentSet:getDeploymentSet', __args__, opts=opts, typ=GetDeploymentSetResult)
    return __ret__.apply(lambda __response__: GetDeploymentSetResult(
        capacities=pulumi.get(__response__, 'capacities'),
        created_at=pulumi.get(__response__, 'created_at'),
        deployment_set_group_number=pulumi.get(__response__, 'deployment_set_group_number'),
        deployment_set_id=pulumi.get(__response__, 'deployment_set_id'),
        deployment_set_name=pulumi.get(__response__, 'deployment_set_name'),
        description=pulumi.get(__response__, 'description'),
        granularity=pulumi.get(__response__, 'granularity'),
        group_count=pulumi.get(__response__, 'group_count'),
        id=pulumi.get(__response__, 'id'),
        instance_amount=pulumi.get(__response__, 'instance_amount'),
        instance_ids=pulumi.get(__response__, 'instance_ids'),
        strategy=pulumi.get(__response__, 'strategy')))
