# 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

__all__ = [
    'GetSnapshotResult',
    'AwaitableGetSnapshotResult',
    'get_snapshot',
    'get_snapshot_output',
]

@pulumi.output_type
class GetSnapshotResult:
    """
    A collection of values returned by getSnapshot.
    """
    def __init__(__self__, created_time=None, description=None, file_system_id=None, file_system_name=None, id=None, is_encrypt=None, progress=None, retention_days=None, snapshot_id=None, snapshot_name=None, snapshot_type=None, source_size=None, source_version=None, status=None, zone_id=None):
        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 description and not isinstance(description, str):
            raise TypeError("Expected argument 'description' to be a str")
        pulumi.set(__self__, "description", description)
        if file_system_id and not isinstance(file_system_id, str):
            raise TypeError("Expected argument 'file_system_id' to be a str")
        pulumi.set(__self__, "file_system_id", file_system_id)
        if file_system_name and not isinstance(file_system_name, str):
            raise TypeError("Expected argument 'file_system_name' to be a str")
        pulumi.set(__self__, "file_system_name", file_system_name)
        if id and not isinstance(id, str):
            raise TypeError("Expected argument 'id' to be a str")
        pulumi.set(__self__, "id", id)
        if is_encrypt and not isinstance(is_encrypt, bool):
            raise TypeError("Expected argument 'is_encrypt' to be a bool")
        pulumi.set(__self__, "is_encrypt", is_encrypt)
        if progress and not isinstance(progress, str):
            raise TypeError("Expected argument 'progress' to be a str")
        pulumi.set(__self__, "progress", progress)
        if retention_days and not isinstance(retention_days, int):
            raise TypeError("Expected argument 'retention_days' to be a int")
        pulumi.set(__self__, "retention_days", retention_days)
        if snapshot_id and not isinstance(snapshot_id, str):
            raise TypeError("Expected argument 'snapshot_id' to be a str")
        pulumi.set(__self__, "snapshot_id", snapshot_id)
        if snapshot_name and not isinstance(snapshot_name, str):
            raise TypeError("Expected argument 'snapshot_name' to be a str")
        pulumi.set(__self__, "snapshot_name", snapshot_name)
        if snapshot_type and not isinstance(snapshot_type, str):
            raise TypeError("Expected argument 'snapshot_type' to be a str")
        pulumi.set(__self__, "snapshot_type", snapshot_type)
        if source_size and not isinstance(source_size, int):
            raise TypeError("Expected argument 'source_size' to be a int")
        pulumi.set(__self__, "source_size", source_size)
        if source_version and not isinstance(source_version, str):
            raise TypeError("Expected argument 'source_version' to be a str")
        pulumi.set(__self__, "source_version", source_version)
        if status and not isinstance(status, str):
            raise TypeError("Expected argument 'status' to be a str")
        pulumi.set(__self__, "status", status)
        if zone_id and not isinstance(zone_id, str):
            raise TypeError("Expected argument 'zone_id' to be a str")
        pulumi.set(__self__, "zone_id", zone_id)

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

    @property
    @pulumi.getter
    def description(self) -> builtins.str:
        """
        快照描述信息。
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="fileSystemId")
    def file_system_id(self) -> builtins.str:
        """
        文件系统 ID。
        """
        return pulumi.get(self, "file_system_id")

    @property
    @pulumi.getter(name="fileSystemName")
    def file_system_name(self) -> builtins.str:
        """
        文件系统名称。
        """
        return pulumi.get(self, "file_system_name")

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

    @property
    @pulumi.getter(name="isEncrypt")
    def is_encrypt(self) -> builtins.bool:
        """
        是否加密，当前仅支持false，即不加密。
        """
        return pulumi.get(self, "is_encrypt")

    @property
    @pulumi.getter
    def progress(self) -> builtins.str:
        """
        快照创建进度。
        """
        return pulumi.get(self, "progress")

    @property
    @pulumi.getter(name="retentionDays")
    def retention_days(self) -> builtins.int:
        """
        快照保留时间，默认为2147483647，即永久保留。
        """
        return pulumi.get(self, "retention_days")

    @property
    @pulumi.getter(name="snapshotId")
    def snapshot_id(self) -> builtins.str:
        """
        快照 ID。
        """
        return pulumi.get(self, "snapshot_id")

    @property
    @pulumi.getter(name="snapshotName")
    def snapshot_name(self) -> builtins.str:
        """
        快照名称。
        """
        return pulumi.get(self, "snapshot_name")

    @property
    @pulumi.getter(name="snapshotType")
    def snapshot_type(self) -> builtins.str:
        """
        快照类型，默认为Manual，即手动快照。
        """
        return pulumi.get(self, "snapshot_type")

    @property
    @pulumi.getter(name="sourceSize")
    def source_size(self) -> builtins.int:
        """
        文件系统容量，单位为 GiB。
        """
        return pulumi.get(self, "source_size")

    @property
    @pulumi.getter(name="sourceVersion")
    def source_version(self) -> builtins.str:
        """
        文件系统版本。
        """
        return pulumi.get(self, "source_version")

    @property
    @pulumi.getter
    def status(self) -> builtins.str:
        """
        快照状态。说明如下：Progressing：正在创建。Accomplished：创建成功。Failed：创建失败。
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> builtins.str:
        """
        可用区 ID。
        """
        return pulumi.get(self, "zone_id")


class AwaitableGetSnapshotResult(GetSnapshotResult):
    # pylint: disable=using-constant-test
    def __await__(self):
        if False:
            yield self
        return GetSnapshotResult(
            created_time=self.created_time,
            description=self.description,
            file_system_id=self.file_system_id,
            file_system_name=self.file_system_name,
            id=self.id,
            is_encrypt=self.is_encrypt,
            progress=self.progress,
            retention_days=self.retention_days,
            snapshot_id=self.snapshot_id,
            snapshot_name=self.snapshot_name,
            snapshot_type=self.snapshot_type,
            source_size=self.source_size,
            source_version=self.source_version,
            status=self.status,
            zone_id=self.zone_id)


def get_snapshot(id: Optional[builtins.str] = None,
                 opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetSnapshotResult:
    """
    Data Source schema for Byteplus::FileNAS::Snapshot


    :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:filenas/getSnapshot:getSnapshot', __args__, opts=opts, typ=GetSnapshotResult).value

    return AwaitableGetSnapshotResult(
        created_time=pulumi.get(__ret__, 'created_time'),
        description=pulumi.get(__ret__, 'description'),
        file_system_id=pulumi.get(__ret__, 'file_system_id'),
        file_system_name=pulumi.get(__ret__, 'file_system_name'),
        id=pulumi.get(__ret__, 'id'),
        is_encrypt=pulumi.get(__ret__, 'is_encrypt'),
        progress=pulumi.get(__ret__, 'progress'),
        retention_days=pulumi.get(__ret__, 'retention_days'),
        snapshot_id=pulumi.get(__ret__, 'snapshot_id'),
        snapshot_name=pulumi.get(__ret__, 'snapshot_name'),
        snapshot_type=pulumi.get(__ret__, 'snapshot_type'),
        source_size=pulumi.get(__ret__, 'source_size'),
        source_version=pulumi.get(__ret__, 'source_version'),
        status=pulumi.get(__ret__, 'status'),
        zone_id=pulumi.get(__ret__, 'zone_id'))
def get_snapshot_output(id: Optional[pulumi.Input[builtins.str]] = None,
                        opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetSnapshotResult]:
    """
    Data Source schema for Byteplus::FileNAS::Snapshot


    :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:filenas/getSnapshot:getSnapshot', __args__, opts=opts, typ=GetSnapshotResult)
    return __ret__.apply(lambda __response__: GetSnapshotResult(
        created_time=pulumi.get(__response__, 'created_time'),
        description=pulumi.get(__response__, 'description'),
        file_system_id=pulumi.get(__response__, 'file_system_id'),
        file_system_name=pulumi.get(__response__, 'file_system_name'),
        id=pulumi.get(__response__, 'id'),
        is_encrypt=pulumi.get(__response__, 'is_encrypt'),
        progress=pulumi.get(__response__, 'progress'),
        retention_days=pulumi.get(__response__, 'retention_days'),
        snapshot_id=pulumi.get(__response__, 'snapshot_id'),
        snapshot_name=pulumi.get(__response__, 'snapshot_name'),
        snapshot_type=pulumi.get(__response__, 'snapshot_type'),
        source_size=pulumi.get(__response__, 'source_size'),
        source_version=pulumi.get(__response__, 'source_version'),
        status=pulumi.get(__response__, 'status'),
        zone_id=pulumi.get(__response__, 'zone_id')))
