# coding=utf-8
# *** WARNING: this file was generated by pulumi-language-python. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import builtins as _builtins
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__ = [
    'ConfigurationConfigurationArgs',
    'ConfigurationConfigurationArgsDict',
    'ConfigurationDatastoreArgs',
    'ConfigurationDatastoreArgsDict',
    'InstanceDatabaseArgs',
    'InstanceDatabaseArgsDict',
    'InstanceDatastoreArgs',
    'InstanceDatastoreArgsDict',
    'InstanceNetworkArgs',
    'InstanceNetworkArgsDict',
    'InstanceUserArgs',
    'InstanceUserArgsDict',
]

class ConfigurationConfigurationArgsDict(TypedDict):
    name: pulumi.Input[_builtins.str]
    """
    Configuration parameter name. Changing this creates a new resource.
    """
    value: pulumi.Input[_builtins.str]
    """
    Configuration parameter value. Changing this creates a new resource.
    """
    string_type: NotRequired[pulumi.Input[_builtins.bool]]
    """
    Whether or not to store configuration parameter value as string. Changing this creates a new resource. See the below note for more information.
    """

@pulumi.input_type
class ConfigurationConfigurationArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[_builtins.str],
                 value: pulumi.Input[_builtins.str],
                 string_type: Optional[pulumi.Input[_builtins.bool]] = None):
        """
        :param pulumi.Input[_builtins.str] name: Configuration parameter name. Changing this creates a new resource.
        :param pulumi.Input[_builtins.str] value: Configuration parameter value. Changing this creates a new resource.
        :param pulumi.Input[_builtins.bool] string_type: Whether or not to store configuration parameter value as string. Changing this creates a new resource. See the below note for more information.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "value", value)
        if string_type is not None:
            pulumi.set(__self__, "string_type", string_type)

    @_builtins.property
    @pulumi.getter
    def name(self) -> pulumi.Input[_builtins.str]:
        """
        Configuration parameter name. Changing this creates a new resource.
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: pulumi.Input[_builtins.str]):
        pulumi.set(self, "name", value)

    @_builtins.property
    @pulumi.getter
    def value(self) -> pulumi.Input[_builtins.str]:
        """
        Configuration parameter value. Changing this creates a new resource.
        """
        return pulumi.get(self, "value")

    @value.setter
    def value(self, value: pulumi.Input[_builtins.str]):
        pulumi.set(self, "value", value)

    @_builtins.property
    @pulumi.getter(name="stringType")
    def string_type(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether or not to store configuration parameter value as string. Changing this creates a new resource. See the below note for more information.
        """
        return pulumi.get(self, "string_type")

    @string_type.setter
    def string_type(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "string_type", value)


class ConfigurationDatastoreArgsDict(TypedDict):
    type: pulumi.Input[_builtins.str]
    """
    Database engine type to be used with this configuration. Changing this creates a new resource.
    """
    version: pulumi.Input[_builtins.str]
    """
    Version of database engine type to be used with this configuration. Changing this creates a new resource.
    """

@pulumi.input_type
class ConfigurationDatastoreArgs:
    def __init__(__self__, *,
                 type: pulumi.Input[_builtins.str],
                 version: pulumi.Input[_builtins.str]):
        """
        :param pulumi.Input[_builtins.str] type: Database engine type to be used with this configuration. Changing this creates a new resource.
        :param pulumi.Input[_builtins.str] version: Version of database engine type to be used with this configuration. Changing this creates a new resource.
        """
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter
    def type(self) -> pulumi.Input[_builtins.str]:
        """
        Database engine type to be used with this configuration. Changing this creates a new resource.
        """
        return pulumi.get(self, "type")

    @type.setter
    def type(self, value: pulumi.Input[_builtins.str]):
        pulumi.set(self, "type", value)

    @_builtins.property
    @pulumi.getter
    def version(self) -> pulumi.Input[_builtins.str]:
        """
        Version of database engine type to be used with this configuration. Changing this creates a new resource.
        """
        return pulumi.get(self, "version")

    @version.setter
    def version(self, value: pulumi.Input[_builtins.str]):
        pulumi.set(self, "version", value)


class InstanceDatabaseArgsDict(TypedDict):
    name: pulumi.Input[_builtins.str]
    """
    Database to be created on new instance. Changing this creates a
    new instance.
    """
    charset: NotRequired[pulumi.Input[_builtins.str]]
    """
    Database character set. Changing this creates a
    new instance.
    """
    collate: NotRequired[pulumi.Input[_builtins.str]]
    """
    Database collation. Changing this creates a new instance.
    """

@pulumi.input_type
class InstanceDatabaseArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[_builtins.str],
                 charset: Optional[pulumi.Input[_builtins.str]] = None,
                 collate: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[_builtins.str] name: Database to be created on new instance. Changing this creates a
               new instance.
        :param pulumi.Input[_builtins.str] charset: Database character set. Changing this creates a
               new instance.
        :param pulumi.Input[_builtins.str] collate: Database collation. Changing this creates a new instance.
        """
        pulumi.set(__self__, "name", name)
        if charset is not None:
            pulumi.set(__self__, "charset", charset)
        if collate is not None:
            pulumi.set(__self__, "collate", collate)

    @_builtins.property
    @pulumi.getter
    def name(self) -> pulumi.Input[_builtins.str]:
        """
        Database to be created on new instance. Changing this creates a
        new instance.
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: pulumi.Input[_builtins.str]):
        pulumi.set(self, "name", value)

    @_builtins.property
    @pulumi.getter
    def charset(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Database character set. Changing this creates a
        new instance.
        """
        return pulumi.get(self, "charset")

    @charset.setter
    def charset(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "charset", value)

    @_builtins.property
    @pulumi.getter
    def collate(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Database collation. Changing this creates a new instance.
        """
        return pulumi.get(self, "collate")

    @collate.setter
    def collate(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "collate", value)


class InstanceDatastoreArgsDict(TypedDict):
    type: pulumi.Input[_builtins.str]
    """
    Database engine type to be used in new instance. Changing this
    creates a new instance.
    """
    version: pulumi.Input[_builtins.str]
    """
    Version of database engine type to be used in new instance.
    Changing this creates a new instance.
    """

@pulumi.input_type
class InstanceDatastoreArgs:
    def __init__(__self__, *,
                 type: pulumi.Input[_builtins.str],
                 version: pulumi.Input[_builtins.str]):
        """
        :param pulumi.Input[_builtins.str] type: Database engine type to be used in new instance. Changing this
               creates a new instance.
        :param pulumi.Input[_builtins.str] version: Version of database engine type to be used in new instance.
               Changing this creates a new instance.
        """
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter
    def type(self) -> pulumi.Input[_builtins.str]:
        """
        Database engine type to be used in new instance. Changing this
        creates a new instance.
        """
        return pulumi.get(self, "type")

    @type.setter
    def type(self, value: pulumi.Input[_builtins.str]):
        pulumi.set(self, "type", value)

    @_builtins.property
    @pulumi.getter
    def version(self) -> pulumi.Input[_builtins.str]:
        """
        Version of database engine type to be used in new instance.
        Changing this creates a new instance.
        """
        return pulumi.get(self, "version")

    @version.setter
    def version(self, value: pulumi.Input[_builtins.str]):
        pulumi.set(self, "version", value)


class InstanceNetworkArgsDict(TypedDict):
    fixed_ip_v4: NotRequired[pulumi.Input[_builtins.str]]
    """
    Specifies a fixed IPv4 address to be used on this
    network. Changing this creates a new instance.
    """
    fixed_ip_v6: NotRequired[pulumi.Input[_builtins.str]]
    """
    Specifies a fixed IPv6 address to be used on this
    network. Changing this creates a new instance.
    """
    port: NotRequired[pulumi.Input[_builtins.str]]
    """
    The port UUID of a
    network to attach to the instance. Changing this creates a new instance.
    """
    uuid: NotRequired[pulumi.Input[_builtins.str]]
    """
    The network UUID to
    attach to the instance. Changing this creates a new instance.
    """

@pulumi.input_type
class InstanceNetworkArgs:
    def __init__(__self__, *,
                 fixed_ip_v4: Optional[pulumi.Input[_builtins.str]] = None,
                 fixed_ip_v6: Optional[pulumi.Input[_builtins.str]] = None,
                 port: Optional[pulumi.Input[_builtins.str]] = None,
                 uuid: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[_builtins.str] fixed_ip_v4: Specifies a fixed IPv4 address to be used on this
               network. Changing this creates a new instance.
        :param pulumi.Input[_builtins.str] fixed_ip_v6: Specifies a fixed IPv6 address to be used on this
               network. Changing this creates a new instance.
        :param pulumi.Input[_builtins.str] port: The port UUID of a
               network to attach to the instance. Changing this creates a new instance.
        :param pulumi.Input[_builtins.str] uuid: The network UUID to
               attach to the instance. Changing this creates a new instance.
        """
        if fixed_ip_v4 is not None:
            pulumi.set(__self__, "fixed_ip_v4", fixed_ip_v4)
        if fixed_ip_v6 is not None:
            pulumi.set(__self__, "fixed_ip_v6", fixed_ip_v6)
        if port is not None:
            pulumi.set(__self__, "port", port)
        if uuid is not None:
            pulumi.set(__self__, "uuid", uuid)

    @_builtins.property
    @pulumi.getter(name="fixedIpV4")
    def fixed_ip_v4(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specifies a fixed IPv4 address to be used on this
        network. Changing this creates a new instance.
        """
        return pulumi.get(self, "fixed_ip_v4")

    @fixed_ip_v4.setter
    def fixed_ip_v4(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "fixed_ip_v4", value)

    @_builtins.property
    @pulumi.getter(name="fixedIpV6")
    def fixed_ip_v6(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specifies a fixed IPv6 address to be used on this
        network. Changing this creates a new instance.
        """
        return pulumi.get(self, "fixed_ip_v6")

    @fixed_ip_v6.setter
    def fixed_ip_v6(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "fixed_ip_v6", value)

    @_builtins.property
    @pulumi.getter
    def port(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The port UUID of a
        network to attach to the instance. Changing this creates a new instance.
        """
        return pulumi.get(self, "port")

    @port.setter
    def port(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "port", value)

    @_builtins.property
    @pulumi.getter
    def uuid(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The network UUID to
        attach to the instance. Changing this creates a new instance.
        """
        return pulumi.get(self, "uuid")

    @uuid.setter
    def uuid(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "uuid", value)


class InstanceUserArgsDict(TypedDict):
    name: pulumi.Input[_builtins.str]
    """
    Username to be created on new instance. Changing this creates a
    new instance.
    """
    databases: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
    """
    A list of databases that user will have access to. If not specified,
    user has access to all databases on th einstance. Changing this creates a new instance.
    """
    host: NotRequired[pulumi.Input[_builtins.str]]
    """
    An ip address or % sign indicating what ip addresses can connect with
    this user credentials. Changing this creates a new instance.
    """
    password: NotRequired[pulumi.Input[_builtins.str]]
    """
    User's password. Changing this creates a
    new instance.
    """

@pulumi.input_type
class InstanceUserArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[_builtins.str],
                 databases: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 host: Optional[pulumi.Input[_builtins.str]] = None,
                 password: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[_builtins.str] name: Username to be created on new instance. Changing this creates a
               new instance.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] databases: A list of databases that user will have access to. If not specified,
               user has access to all databases on th einstance. Changing this creates a new instance.
        :param pulumi.Input[_builtins.str] host: An ip address or % sign indicating what ip addresses can connect with
               this user credentials. Changing this creates a new instance.
        :param pulumi.Input[_builtins.str] password: User's password. Changing this creates a
               new instance.
        """
        pulumi.set(__self__, "name", name)
        if databases is not None:
            pulumi.set(__self__, "databases", databases)
        if host is not None:
            pulumi.set(__self__, "host", host)
        if password is not None:
            pulumi.set(__self__, "password", password)

    @_builtins.property
    @pulumi.getter
    def name(self) -> pulumi.Input[_builtins.str]:
        """
        Username to be created on new instance. Changing this creates a
        new instance.
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: pulumi.Input[_builtins.str]):
        pulumi.set(self, "name", value)

    @_builtins.property
    @pulumi.getter
    def databases(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of databases that user will have access to. If not specified,
        user has access to all databases on th einstance. Changing this creates a new instance.
        """
        return pulumi.get(self, "databases")

    @databases.setter
    def databases(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "databases", value)

    @_builtins.property
    @pulumi.getter
    def host(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        An ip address or % sign indicating what ip addresses can connect with
        this user credentials. Changing this creates a new instance.
        """
        return pulumi.get(self, "host")

    @host.setter
    def host(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "host", value)

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        User's password. Changing this creates a
        new instance.
        """
        return pulumi.get(self, "password")

    @password.setter
    def password(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "password", value)


