# 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 copy
import warnings
import pulumi
import pulumi.runtime
from typing import Any, Callable, Mapping, Optional, Sequence, Union, overload
from .. import _utilities

__all__ = [
    'GroupAcl',
    'PoolMember',
    'UserAcl',
    'GetGroupAclResult',
    'GetPoolMemberResult',
    'GetUserAclResult',
]

@pulumi.output_type
class GroupAcl(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "roleId":
            suggest = "role_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GroupAcl. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GroupAcl.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GroupAcl.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 path: str,
                 role_id: str,
                 propagate: Optional[bool] = None):
        """
        :param str path: The path.
        :param str role_id: The role identifier.
        :param bool propagate: Whether to propagate to child paths.
        """
        GroupAcl._configure(
            lambda key, value: pulumi.set(__self__, key, value),
            path=path,
            role_id=role_id,
            propagate=propagate,
        )
    @staticmethod
    def _configure(
             _setter: Callable[[Any, Any], None],
             path: str,
             role_id: str,
             propagate: Optional[bool] = None,
             opts: Optional[pulumi.ResourceOptions]=None,
             **kwargs):
        if 'roleId' in kwargs:
            role_id = kwargs['roleId']

        _setter("path", path)
        _setter("role_id", role_id)
        if propagate is not None:
            _setter("propagate", propagate)

    @property
    @pulumi.getter
    def path(self) -> str:
        """
        The path.
        """
        return pulumi.get(self, "path")

    @property
    @pulumi.getter(name="roleId")
    def role_id(self) -> str:
        """
        The role identifier.
        """
        return pulumi.get(self, "role_id")

    @property
    @pulumi.getter
    def propagate(self) -> Optional[bool]:
        """
        Whether to propagate to child paths.
        """
        return pulumi.get(self, "propagate")


@pulumi.output_type
class PoolMember(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "datastoreId":
            suggest = "datastore_id"
        elif key == "nodeName":
            suggest = "node_name"
        elif key == "vmId":
            suggest = "vm_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in PoolMember. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        PoolMember.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        PoolMember.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 datastore_id: Optional[str] = None,
                 id: Optional[str] = None,
                 node_name: Optional[str] = None,
                 type: Optional[str] = None,
                 vm_id: Optional[int] = None):
        """
        :param str datastore_id: The datastore identifier.
        :param str id: The member identifier.
        :param str node_name: The node name.
        :param str type: The member type.
        :param int vm_id: The virtual machine identifier.
        """
        PoolMember._configure(
            lambda key, value: pulumi.set(__self__, key, value),
            datastore_id=datastore_id,
            id=id,
            node_name=node_name,
            type=type,
            vm_id=vm_id,
        )
    @staticmethod
    def _configure(
             _setter: Callable[[Any, Any], None],
             datastore_id: Optional[str] = None,
             id: Optional[str] = None,
             node_name: Optional[str] = None,
             type: Optional[str] = None,
             vm_id: Optional[int] = None,
             opts: Optional[pulumi.ResourceOptions]=None,
             **kwargs):
        if 'datastoreId' in kwargs:
            datastore_id = kwargs['datastoreId']
        if 'nodeName' in kwargs:
            node_name = kwargs['nodeName']
        if 'vmId' in kwargs:
            vm_id = kwargs['vmId']

        if datastore_id is not None:
            _setter("datastore_id", datastore_id)
        if id is not None:
            _setter("id", id)
        if node_name is not None:
            _setter("node_name", node_name)
        if type is not None:
            _setter("type", type)
        if vm_id is not None:
            _setter("vm_id", vm_id)

    @property
    @pulumi.getter(name="datastoreId")
    def datastore_id(self) -> Optional[str]:
        """
        The datastore identifier.
        """
        return pulumi.get(self, "datastore_id")

    @property
    @pulumi.getter
    def id(self) -> Optional[str]:
        """
        The member identifier.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="nodeName")
    def node_name(self) -> Optional[str]:
        """
        The node name.
        """
        return pulumi.get(self, "node_name")

    @property
    @pulumi.getter
    def type(self) -> Optional[str]:
        """
        The member type.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="vmId")
    def vm_id(self) -> Optional[int]:
        """
        The virtual machine identifier.
        """
        return pulumi.get(self, "vm_id")


@pulumi.output_type
class UserAcl(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "roleId":
            suggest = "role_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in UserAcl. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        UserAcl.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        UserAcl.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 path: str,
                 role_id: str,
                 propagate: Optional[bool] = None):
        """
        :param str path: The path.
        :param str role_id: The role identifier.
        :param bool propagate: Whether to propagate to child paths.
        """
        UserAcl._configure(
            lambda key, value: pulumi.set(__self__, key, value),
            path=path,
            role_id=role_id,
            propagate=propagate,
        )
    @staticmethod
    def _configure(
             _setter: Callable[[Any, Any], None],
             path: str,
             role_id: str,
             propagate: Optional[bool] = None,
             opts: Optional[pulumi.ResourceOptions]=None,
             **kwargs):
        if 'roleId' in kwargs:
            role_id = kwargs['roleId']

        _setter("path", path)
        _setter("role_id", role_id)
        if propagate is not None:
            _setter("propagate", propagate)

    @property
    @pulumi.getter
    def path(self) -> str:
        """
        The path.
        """
        return pulumi.get(self, "path")

    @property
    @pulumi.getter(name="roleId")
    def role_id(self) -> str:
        """
        The role identifier.
        """
        return pulumi.get(self, "role_id")

    @property
    @pulumi.getter
    def propagate(self) -> Optional[bool]:
        """
        Whether to propagate to child paths.
        """
        return pulumi.get(self, "propagate")


@pulumi.output_type
class GetGroupAclResult(dict):
    def __init__(__self__, *,
                 path: str,
                 propagate: bool,
                 role_id: str):
        """
        :param str path: The path.
        :param bool propagate: Whether to propagate to child paths.
        :param str role_id: The role identifier.
        """
        GetGroupAclResult._configure(
            lambda key, value: pulumi.set(__self__, key, value),
            path=path,
            propagate=propagate,
            role_id=role_id,
        )
    @staticmethod
    def _configure(
             _setter: Callable[[Any, Any], None],
             path: str,
             propagate: bool,
             role_id: str,
             opts: Optional[pulumi.ResourceOptions]=None,
             **kwargs):
        if 'roleId' in kwargs:
            role_id = kwargs['roleId']

        _setter("path", path)
        _setter("propagate", propagate)
        _setter("role_id", role_id)

    @property
    @pulumi.getter
    def path(self) -> str:
        """
        The path.
        """
        return pulumi.get(self, "path")

    @property
    @pulumi.getter
    def propagate(self) -> bool:
        """
        Whether to propagate to child paths.
        """
        return pulumi.get(self, "propagate")

    @property
    @pulumi.getter(name="roleId")
    def role_id(self) -> str:
        """
        The role identifier.
        """
        return pulumi.get(self, "role_id")


@pulumi.output_type
class GetPoolMemberResult(dict):
    def __init__(__self__, *,
                 datastore_id: str,
                 id: str,
                 node_name: str,
                 type: str,
                 vm_id: int):
        """
        :param str datastore_id: The datastore identifier.
        :param str id: The member identifier.
        :param str node_name: The node name.
        :param str type: The member type.
        :param int vm_id: The virtual machine identifier.
        """
        GetPoolMemberResult._configure(
            lambda key, value: pulumi.set(__self__, key, value),
            datastore_id=datastore_id,
            id=id,
            node_name=node_name,
            type=type,
            vm_id=vm_id,
        )
    @staticmethod
    def _configure(
             _setter: Callable[[Any, Any], None],
             datastore_id: str,
             id: str,
             node_name: str,
             type: str,
             vm_id: int,
             opts: Optional[pulumi.ResourceOptions]=None,
             **kwargs):
        if 'datastoreId' in kwargs:
            datastore_id = kwargs['datastoreId']
        if 'nodeName' in kwargs:
            node_name = kwargs['nodeName']
        if 'vmId' in kwargs:
            vm_id = kwargs['vmId']

        _setter("datastore_id", datastore_id)
        _setter("id", id)
        _setter("node_name", node_name)
        _setter("type", type)
        _setter("vm_id", vm_id)

    @property
    @pulumi.getter(name="datastoreId")
    def datastore_id(self) -> str:
        """
        The datastore identifier.
        """
        return pulumi.get(self, "datastore_id")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The member identifier.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="nodeName")
    def node_name(self) -> str:
        """
        The node name.
        """
        return pulumi.get(self, "node_name")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        The member type.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="vmId")
    def vm_id(self) -> int:
        """
        The virtual machine identifier.
        """
        return pulumi.get(self, "vm_id")


@pulumi.output_type
class GetUserAclResult(dict):
    def __init__(__self__, *,
                 path: str,
                 propagate: bool,
                 role_id: str):
        """
        :param str path: The path.
        :param bool propagate: Whether to propagate to child paths.
        :param str role_id: The role identifier.
        """
        GetUserAclResult._configure(
            lambda key, value: pulumi.set(__self__, key, value),
            path=path,
            propagate=propagate,
            role_id=role_id,
        )
    @staticmethod
    def _configure(
             _setter: Callable[[Any, Any], None],
             path: str,
             propagate: bool,
             role_id: str,
             opts: Optional[pulumi.ResourceOptions]=None,
             **kwargs):
        if 'roleId' in kwargs:
            role_id = kwargs['roleId']

        _setter("path", path)
        _setter("propagate", propagate)
        _setter("role_id", role_id)

    @property
    @pulumi.getter
    def path(self) -> str:
        """
        The path.
        """
        return pulumi.get(self, "path")

    @property
    @pulumi.getter
    def propagate(self) -> bool:
        """
        Whether to propagate to child paths.
        """
        return pulumi.get(self, "propagate")

    @property
    @pulumi.getter(name="roleId")
    def role_id(self) -> str:
        """
        The role identifier.
        """
        return pulumi.get(self, "role_id")


