# 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__ = [
    'GetNodePoolResult',
    'AwaitableGetNodePoolResult',
    'get_node_pool',
    'get_node_pool_output',
]

@pulumi.output_type
class GetNodePoolResult:
    """
    A collection of values returned by getNodePool.
    """
    def __init__(__self__, auto_scaling=None, cluster_id=None, created_time=None, id=None, kubernetes_config=None, management=None, name=None, node_config=None, node_pool_id=None, node_statistics=None, retain_resources=None, status=None, tags=None, updated_time=None):
        if auto_scaling and not isinstance(auto_scaling, dict):
            raise TypeError("Expected argument 'auto_scaling' to be a dict")
        pulumi.set(__self__, "auto_scaling", auto_scaling)
        if cluster_id and not isinstance(cluster_id, str):
            raise TypeError("Expected argument 'cluster_id' to be a str")
        pulumi.set(__self__, "cluster_id", cluster_id)
        if created_time and not isinstance(created_time, str):
            raise TypeError("Expected argument 'created_time' to be a str")
        pulumi.set(__self__, "created_time", created_time)
        if id and not isinstance(id, str):
            raise TypeError("Expected argument 'id' to be a str")
        pulumi.set(__self__, "id", id)
        if kubernetes_config and not isinstance(kubernetes_config, dict):
            raise TypeError("Expected argument 'kubernetes_config' to be a dict")
        pulumi.set(__self__, "kubernetes_config", kubernetes_config)
        if management and not isinstance(management, dict):
            raise TypeError("Expected argument 'management' to be a dict")
        pulumi.set(__self__, "management", management)
        if name and not isinstance(name, str):
            raise TypeError("Expected argument 'name' to be a str")
        pulumi.set(__self__, "name", name)
        if node_config and not isinstance(node_config, dict):
            raise TypeError("Expected argument 'node_config' to be a dict")
        pulumi.set(__self__, "node_config", node_config)
        if node_pool_id and not isinstance(node_pool_id, str):
            raise TypeError("Expected argument 'node_pool_id' to be a str")
        pulumi.set(__self__, "node_pool_id", node_pool_id)
        if node_statistics and not isinstance(node_statistics, dict):
            raise TypeError("Expected argument 'node_statistics' to be a dict")
        pulumi.set(__self__, "node_statistics", node_statistics)
        if retain_resources and not isinstance(retain_resources, list):
            raise TypeError("Expected argument 'retain_resources' to be a list")
        pulumi.set(__self__, "retain_resources", retain_resources)
        if status and not isinstance(status, dict):
            raise TypeError("Expected argument 'status' to be a dict")
        pulumi.set(__self__, "status", status)
        if tags and not isinstance(tags, list):
            raise TypeError("Expected argument 'tags' to be a list")
        pulumi.set(__self__, "tags", tags)
        if updated_time and not isinstance(updated_time, str):
            raise TypeError("Expected argument 'updated_time' to be a str")
        pulumi.set(__self__, "updated_time", updated_time)

    @property
    @pulumi.getter(name="autoScaling")
    def auto_scaling(self) -> 'outputs.GetNodePoolAutoScalingResult':
        """
        节点池伸缩策略配置。
        """
        return pulumi.get(self, "auto_scaling")

    @property
    @pulumi.getter(name="clusterId")
    def cluster_id(self) -> builtins.str:
        """
        节点池所在集群的 ID。
        """
        return pulumi.get(self, "cluster_id")

    @property
    @pulumi.getter(name="createdTime")
    def created_time(self) -> builtins.str:
        """
        创建节点池的时间。
        """
        return pulumi.get(self, "created_time")

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

    @property
    @pulumi.getter(name="kubernetesConfig")
    def kubernetes_config(self) -> 'outputs.GetNodePoolKubernetesConfigResult':
        """
        节点池 Kubernetes 相关配置。
        """
        return pulumi.get(self, "kubernetes_config")

    @property
    @pulumi.getter
    def management(self) -> 'outputs.GetNodePoolManagementResult':
        """
        托管节点池配置。
        """
        return pulumi.get(self, "management")

    @property
    @pulumi.getter
    def name(self) -> builtins.str:
        """
        节点池名称。同一个集群下，节点池名称必须唯一。支持大小写英文字母、汉字、数字、短划线（-），长度限制为 2～64 个字符。
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="nodeConfig")
    def node_config(self) -> 'outputs.GetNodePoolNodeConfigResult':
        """
        节点池中云服务器（ECS）实例配置。
        """
        return pulumi.get(self, "node_config")

    @property
    @pulumi.getter(name="nodePoolId")
    def node_pool_id(self) -> builtins.str:
        """
        节点池 ID 。
        """
        return pulumi.get(self, "node_pool_id")

    @property
    @pulumi.getter(name="nodeStatistics")
    def node_statistics(self) -> 'outputs.GetNodePoolNodeStatisticsResult':
        """
        节点池中的节点统计。
        """
        return pulumi.get(self, "node_statistics")

    @property
    @pulumi.getter(name="retainResources")
    def retain_resources(self) -> Sequence[builtins.str]:
        """
        删除节点池时，指定保留的相关资源，取值：取值为空：（默认值）删除关联资源。Ecs：删除节点池时，保留节点池中的云服务器（ECS）实例。若指定的节点池内存在包年包月的云服务器实例，且未选择保留云服务器，则该接口仅从节点池中移除云服务器实例，不会删除。您可以通过云服务器控制台或云服务器API查询到该实例，并按需执行后续操作。
        """
        return pulumi.get(self, "retain_resources")

    @property
    @pulumi.getter
    def status(self) -> 'outputs.GetNodePoolStatusResult':
        """
        节点池状态。
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter
    def tags(self) -> Sequence['outputs.GetNodePoolTagResult']:
        """
        节点池的标签信息
        """
        return pulumi.get(self, "tags")

    @property
    @pulumi.getter(name="updatedTime")
    def updated_time(self) -> builtins.str:
        """
        更新节点池的时间。
        """
        return pulumi.get(self, "updated_time")


class AwaitableGetNodePoolResult(GetNodePoolResult):
    # pylint: disable=using-constant-test
    def __await__(self):
        if False:
            yield self
        return GetNodePoolResult(
            auto_scaling=self.auto_scaling,
            cluster_id=self.cluster_id,
            created_time=self.created_time,
            id=self.id,
            kubernetes_config=self.kubernetes_config,
            management=self.management,
            name=self.name,
            node_config=self.node_config,
            node_pool_id=self.node_pool_id,
            node_statistics=self.node_statistics,
            retain_resources=self.retain_resources,
            status=self.status,
            tags=self.tags,
            updated_time=self.updated_time)


def get_node_pool(id: Optional[builtins.str] = None,
                  opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetNodePoolResult:
    """
    Data Source schema for Byteplus::VKE::NodePool


    :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:vke/getNodePool:getNodePool', __args__, opts=opts, typ=GetNodePoolResult).value

    return AwaitableGetNodePoolResult(
        auto_scaling=pulumi.get(__ret__, 'auto_scaling'),
        cluster_id=pulumi.get(__ret__, 'cluster_id'),
        created_time=pulumi.get(__ret__, 'created_time'),
        id=pulumi.get(__ret__, 'id'),
        kubernetes_config=pulumi.get(__ret__, 'kubernetes_config'),
        management=pulumi.get(__ret__, 'management'),
        name=pulumi.get(__ret__, 'name'),
        node_config=pulumi.get(__ret__, 'node_config'),
        node_pool_id=pulumi.get(__ret__, 'node_pool_id'),
        node_statistics=pulumi.get(__ret__, 'node_statistics'),
        retain_resources=pulumi.get(__ret__, 'retain_resources'),
        status=pulumi.get(__ret__, 'status'),
        tags=pulumi.get(__ret__, 'tags'),
        updated_time=pulumi.get(__ret__, 'updated_time'))
def get_node_pool_output(id: Optional[pulumi.Input[builtins.str]] = None,
                         opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetNodePoolResult]:
    """
    Data Source schema for Byteplus::VKE::NodePool


    :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:vke/getNodePool:getNodePool', __args__, opts=opts, typ=GetNodePoolResult)
    return __ret__.apply(lambda __response__: GetNodePoolResult(
        auto_scaling=pulumi.get(__response__, 'auto_scaling'),
        cluster_id=pulumi.get(__response__, 'cluster_id'),
        created_time=pulumi.get(__response__, 'created_time'),
        id=pulumi.get(__response__, 'id'),
        kubernetes_config=pulumi.get(__response__, 'kubernetes_config'),
        management=pulumi.get(__response__, 'management'),
        name=pulumi.get(__response__, 'name'),
        node_config=pulumi.get(__response__, 'node_config'),
        node_pool_id=pulumi.get(__response__, 'node_pool_id'),
        node_statistics=pulumi.get(__response__, 'node_statistics'),
        retain_resources=pulumi.get(__response__, 'retain_resources'),
        status=pulumi.get(__response__, 'status'),
        tags=pulumi.get(__response__, 'tags'),
        updated_time=pulumi.get(__response__, 'updated_time')))
