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

__all__ = [
    'BrokerConfiguration',
    'BrokerEncryptionOptions',
    'BrokerInstance',
    'BrokerLogs',
    'BrokerMaintenanceWindowStartTime',
    'BrokerUser',
    'GetBrokerConfigurationResult',
    'GetBrokerEncryptionOptionResult',
    'GetBrokerInstanceResult',
    'GetBrokerLogsResult',
    'GetBrokerMaintenanceWindowStartTimeResult',
    'GetBrokerUserResult',
]

@pulumi.output_type
class BrokerConfiguration(dict):
    def __init__(__self__, *,
                 id: Optional[str] = None,
                 revision: Optional[int] = None):
        """
        :param str id: The Configuration ID.
        :param int revision: Revision of the Configuration.
        """
        if id is not None:
            pulumi.set(__self__, "id", id)
        if revision is not None:
            pulumi.set(__self__, "revision", revision)

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

    @property
    @pulumi.getter
    def revision(self) -> Optional[int]:
        """
        Revision of the Configuration.
        """
        return pulumi.get(self, "revision")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class BrokerEncryptionOptions(dict):
    def __init__(__self__, *,
                 kms_key_id: Optional[str] = None,
                 use_aws_owned_key: Optional[bool] = None):
        """
        :param str kms_key_id: Amazon Resource Name (ARN) of Key Management Service (KMS) Customer Master Key (CMK) to use for encryption at rest. Requires setting `use_aws_owned_key` to `false`. To perform drift detection when AWS managed CMKs or customer managed CMKs are in use, this value must be configured.
        :param bool use_aws_owned_key: Boolean to enable an AWS owned Key Management Service (KMS) Customer Master Key (CMK) that is not in your account. Defaults to `true`. Setting to `false` without configuring `kms_key_id` will create an AWS managed Customer Master Key (CMK) aliased to `aws/mq` in your account.
        """
        if kms_key_id is not None:
            pulumi.set(__self__, "kms_key_id", kms_key_id)
        if use_aws_owned_key is not None:
            pulumi.set(__self__, "use_aws_owned_key", use_aws_owned_key)

    @property
    @pulumi.getter(name="kmsKeyId")
    def kms_key_id(self) -> Optional[str]:
        """
        Amazon Resource Name (ARN) of Key Management Service (KMS) Customer Master Key (CMK) to use for encryption at rest. Requires setting `use_aws_owned_key` to `false`. To perform drift detection when AWS managed CMKs or customer managed CMKs are in use, this value must be configured.
        """
        return pulumi.get(self, "kms_key_id")

    @property
    @pulumi.getter(name="useAwsOwnedKey")
    def use_aws_owned_key(self) -> Optional[bool]:
        """
        Boolean to enable an AWS owned Key Management Service (KMS) Customer Master Key (CMK) that is not in your account. Defaults to `true`. Setting to `false` without configuring `kms_key_id` will create an AWS managed Customer Master Key (CMK) aliased to `aws/mq` in your account.
        """
        return pulumi.get(self, "use_aws_owned_key")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class BrokerInstance(dict):
    def __init__(__self__, *,
                 console_url: Optional[str] = None,
                 endpoints: Optional[Sequence[str]] = None,
                 ip_address: Optional[str] = None):
        if console_url is not None:
            pulumi.set(__self__, "console_url", console_url)
        if endpoints is not None:
            pulumi.set(__self__, "endpoints", endpoints)
        if ip_address is not None:
            pulumi.set(__self__, "ip_address", ip_address)

    @property
    @pulumi.getter(name="consoleUrl")
    def console_url(self) -> Optional[str]:
        return pulumi.get(self, "console_url")

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

    @property
    @pulumi.getter(name="ipAddress")
    def ip_address(self) -> Optional[str]:
        return pulumi.get(self, "ip_address")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class BrokerLogs(dict):
    def __init__(__self__, *,
                 audit: Optional[bool] = None,
                 general: Optional[bool] = None):
        """
        :param bool audit: Enables audit logging. User management action made using JMX or the ActiveMQ Web Console is logged. Defaults to `false`.
        :param bool general: Enables general logging via CloudWatch. Defaults to `false`.
        """
        if audit is not None:
            pulumi.set(__self__, "audit", audit)
        if general is not None:
            pulumi.set(__self__, "general", general)

    @property
    @pulumi.getter
    def audit(self) -> Optional[bool]:
        """
        Enables audit logging. User management action made using JMX or the ActiveMQ Web Console is logged. Defaults to `false`.
        """
        return pulumi.get(self, "audit")

    @property
    @pulumi.getter
    def general(self) -> Optional[bool]:
        """
        Enables general logging via CloudWatch. Defaults to `false`.
        """
        return pulumi.get(self, "general")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class BrokerMaintenanceWindowStartTime(dict):
    def __init__(__self__, *,
                 day_of_week: str,
                 time_of_day: str,
                 time_zone: str):
        """
        :param str day_of_week: The day of the week. e.g. `MONDAY`, `TUESDAY`, or `WEDNESDAY`
        :param str time_of_day: The time, in 24-hour format. e.g. `02:00`
        :param str time_zone: The time zone, UTC by default, in either the Country/City format, or the UTC offset format. e.g. `CET`
        """
        pulumi.set(__self__, "day_of_week", day_of_week)
        pulumi.set(__self__, "time_of_day", time_of_day)
        pulumi.set(__self__, "time_zone", time_zone)

    @property
    @pulumi.getter(name="dayOfWeek")
    def day_of_week(self) -> str:
        """
        The day of the week. e.g. `MONDAY`, `TUESDAY`, or `WEDNESDAY`
        """
        return pulumi.get(self, "day_of_week")

    @property
    @pulumi.getter(name="timeOfDay")
    def time_of_day(self) -> str:
        """
        The time, in 24-hour format. e.g. `02:00`
        """
        return pulumi.get(self, "time_of_day")

    @property
    @pulumi.getter(name="timeZone")
    def time_zone(self) -> str:
        """
        The time zone, UTC by default, in either the Country/City format, or the UTC offset format. e.g. `CET`
        """
        return pulumi.get(self, "time_zone")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class BrokerUser(dict):
    def __init__(__self__, *,
                 password: str,
                 username: str,
                 console_access: Optional[bool] = None,
                 groups: Optional[Sequence[str]] = None):
        """
        :param str password: The password of the user. It must be 12 to 250 characters long, at least 4 unique characters, and must not contain commas.
        :param str username: The username of the user.
        :param bool console_access: Whether to enable access to the [ActiveMQ Web Console](http://activemq.apache.org/web-console.html) for the user.
        :param Sequence[str] groups: The list of groups (20 maximum) to which the ActiveMQ user belongs.
        """
        pulumi.set(__self__, "password", password)
        pulumi.set(__self__, "username", username)
        if console_access is not None:
            pulumi.set(__self__, "console_access", console_access)
        if groups is not None:
            pulumi.set(__self__, "groups", groups)

    @property
    @pulumi.getter
    def password(self) -> str:
        """
        The password of the user. It must be 12 to 250 characters long, at least 4 unique characters, and must not contain commas.
        """
        return pulumi.get(self, "password")

    @property
    @pulumi.getter
    def username(self) -> str:
        """
        The username of the user.
        """
        return pulumi.get(self, "username")

    @property
    @pulumi.getter(name="consoleAccess")
    def console_access(self) -> Optional[bool]:
        """
        Whether to enable access to the [ActiveMQ Web Console](http://activemq.apache.org/web-console.html) for the user.
        """
        return pulumi.get(self, "console_access")

    @property
    @pulumi.getter
    def groups(self) -> Optional[Sequence[str]]:
        """
        The list of groups (20 maximum) to which the ActiveMQ user belongs.
        """
        return pulumi.get(self, "groups")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class GetBrokerConfigurationResult(dict):
    def __init__(__self__, *,
                 id: str,
                 revision: int):
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "revision", revision)

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

    @property
    @pulumi.getter
    def revision(self) -> int:
        return pulumi.get(self, "revision")


@pulumi.output_type
class GetBrokerEncryptionOptionResult(dict):
    def __init__(__self__, *,
                 kms_key_id: str,
                 use_aws_owned_key: bool):
        pulumi.set(__self__, "kms_key_id", kms_key_id)
        pulumi.set(__self__, "use_aws_owned_key", use_aws_owned_key)

    @property
    @pulumi.getter(name="kmsKeyId")
    def kms_key_id(self) -> str:
        return pulumi.get(self, "kms_key_id")

    @property
    @pulumi.getter(name="useAwsOwnedKey")
    def use_aws_owned_key(self) -> bool:
        return pulumi.get(self, "use_aws_owned_key")


@pulumi.output_type
class GetBrokerInstanceResult(dict):
    def __init__(__self__, *,
                 console_url: str,
                 endpoints: Sequence[str],
                 ip_address: str):
        pulumi.set(__self__, "console_url", console_url)
        pulumi.set(__self__, "endpoints", endpoints)
        pulumi.set(__self__, "ip_address", ip_address)

    @property
    @pulumi.getter(name="consoleUrl")
    def console_url(self) -> str:
        return pulumi.get(self, "console_url")

    @property
    @pulumi.getter
    def endpoints(self) -> Sequence[str]:
        return pulumi.get(self, "endpoints")

    @property
    @pulumi.getter(name="ipAddress")
    def ip_address(self) -> str:
        return pulumi.get(self, "ip_address")


@pulumi.output_type
class GetBrokerLogsResult(dict):
    def __init__(__self__, *,
                 audit: bool,
                 general: bool):
        pulumi.set(__self__, "audit", audit)
        pulumi.set(__self__, "general", general)

    @property
    @pulumi.getter
    def audit(self) -> bool:
        return pulumi.get(self, "audit")

    @property
    @pulumi.getter
    def general(self) -> bool:
        return pulumi.get(self, "general")


@pulumi.output_type
class GetBrokerMaintenanceWindowStartTimeResult(dict):
    def __init__(__self__, *,
                 day_of_week: str,
                 time_of_day: str,
                 time_zone: str):
        pulumi.set(__self__, "day_of_week", day_of_week)
        pulumi.set(__self__, "time_of_day", time_of_day)
        pulumi.set(__self__, "time_zone", time_zone)

    @property
    @pulumi.getter(name="dayOfWeek")
    def day_of_week(self) -> str:
        return pulumi.get(self, "day_of_week")

    @property
    @pulumi.getter(name="timeOfDay")
    def time_of_day(self) -> str:
        return pulumi.get(self, "time_of_day")

    @property
    @pulumi.getter(name="timeZone")
    def time_zone(self) -> str:
        return pulumi.get(self, "time_zone")


@pulumi.output_type
class GetBrokerUserResult(dict):
    def __init__(__self__, *,
                 console_access: bool,
                 groups: Sequence[str],
                 username: str):
        pulumi.set(__self__, "console_access", console_access)
        pulumi.set(__self__, "groups", groups)
        pulumi.set(__self__, "username", username)

    @property
    @pulumi.getter(name="consoleAccess")
    def console_access(self) -> bool:
        return pulumi.get(self, "console_access")

    @property
    @pulumi.getter
    def groups(self) -> Sequence[str]:
        return pulumi.get(self, "groups")

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


