# 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__ = [
    'GetInstancePluginResult',
    'AwaitableGetInstancePluginResult',
    'get_instance_plugin',
    'get_instance_plugin_output',
]

@pulumi.output_type
class GetInstancePluginResult:
    """
    A collection of values returned by getInstancePlugin.
    """
    def __init__(__self__, description=None, disable_prompt=None, enable_prompt=None, enabled=None, id=None, instance_id=None, need_reboot_on_change=None, plugin_name=None, port=None, version=None):
        if description and not isinstance(description, str):
            raise TypeError("Expected argument 'description' to be a str")
        pulumi.set(__self__, "description", description)
        if disable_prompt and not isinstance(disable_prompt, str):
            raise TypeError("Expected argument 'disable_prompt' to be a str")
        pulumi.set(__self__, "disable_prompt", disable_prompt)
        if enable_prompt and not isinstance(enable_prompt, str):
            raise TypeError("Expected argument 'enable_prompt' to be a str")
        pulumi.set(__self__, "enable_prompt", enable_prompt)
        if enabled and not isinstance(enabled, bool):
            raise TypeError("Expected argument 'enabled' to be a bool")
        pulumi.set(__self__, "enabled", enabled)
        if id and not isinstance(id, str):
            raise TypeError("Expected argument 'id' to be a str")
        pulumi.set(__self__, "id", id)
        if instance_id and not isinstance(instance_id, str):
            raise TypeError("Expected argument 'instance_id' to be a str")
        pulumi.set(__self__, "instance_id", instance_id)
        if need_reboot_on_change and not isinstance(need_reboot_on_change, bool):
            raise TypeError("Expected argument 'need_reboot_on_change' to be a bool")
        pulumi.set(__self__, "need_reboot_on_change", need_reboot_on_change)
        if plugin_name and not isinstance(plugin_name, str):
            raise TypeError("Expected argument 'plugin_name' to be a str")
        pulumi.set(__self__, "plugin_name", plugin_name)
        if port and not isinstance(port, int):
            raise TypeError("Expected argument 'port' to be a int")
        pulumi.set(__self__, "port", port)
        if version and not isinstance(version, str):
            raise TypeError("Expected argument 'version' to be a str")
        pulumi.set(__self__, "version", version)

    @property
    @pulumi.getter
    def description(self) -> builtins.str:
        """
        插件描述。
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="disablePrompt")
    def disable_prompt(self) -> builtins.str:
        """
        关闭此插件的注意事项说明。
        """
        return pulumi.get(self, "disable_prompt")

    @property
    @pulumi.getter(name="enablePrompt")
    def enable_prompt(self) -> builtins.str:
        """
        开启此插件的注意事项说明。
        """
        return pulumi.get(self, "enable_prompt")

    @property
    @pulumi.getter
    def enabled(self) -> builtins.bool:
        """
        是否已开启插件。true：插件已开启。false：插件已关闭。
        """
        return pulumi.get(self, "enabled")

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

    @property
    @pulumi.getter(name="instanceId")
    def instance_id(self) -> builtins.str:
        """
        实例 ID。
        """
        return pulumi.get(self, "instance_id")

    @property
    @pulumi.getter(name="needRebootOnChange")
    def need_reboot_on_change(self) -> builtins.bool:
        """
        开启或关闭插件是否会引发 RabbitMQ 实例重启。true：会重启实例。false：不会重启实例。
        """
        return pulumi.get(self, "need_reboot_on_change")

    @property
    @pulumi.getter(name="pluginName")
    def plugin_name(self) -> builtins.str:
        """
        插件名称。
        """
        return pulumi.get(self, "plugin_name")

    @property
    @pulumi.getter
    def port(self) -> builtins.int:
        """
        插件监听的端口。
        """
        return pulumi.get(self, "port")

    @property
    @pulumi.getter
    def version(self) -> builtins.str:
        """
        插件版本。
        """
        return pulumi.get(self, "version")


class AwaitableGetInstancePluginResult(GetInstancePluginResult):
    # pylint: disable=using-constant-test
    def __await__(self):
        if False:
            yield self
        return GetInstancePluginResult(
            description=self.description,
            disable_prompt=self.disable_prompt,
            enable_prompt=self.enable_prompt,
            enabled=self.enabled,
            id=self.id,
            instance_id=self.instance_id,
            need_reboot_on_change=self.need_reboot_on_change,
            plugin_name=self.plugin_name,
            port=self.port,
            version=self.version)


def get_instance_plugin(id: Optional[builtins.str] = None,
                        opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetInstancePluginResult:
    """
    Data Source schema for Byteplus::RabbitMQ::InstancePlugin


    :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:rabbitmq/getInstancePlugin:getInstancePlugin', __args__, opts=opts, typ=GetInstancePluginResult).value

    return AwaitableGetInstancePluginResult(
        description=pulumi.get(__ret__, 'description'),
        disable_prompt=pulumi.get(__ret__, 'disable_prompt'),
        enable_prompt=pulumi.get(__ret__, 'enable_prompt'),
        enabled=pulumi.get(__ret__, 'enabled'),
        id=pulumi.get(__ret__, 'id'),
        instance_id=pulumi.get(__ret__, 'instance_id'),
        need_reboot_on_change=pulumi.get(__ret__, 'need_reboot_on_change'),
        plugin_name=pulumi.get(__ret__, 'plugin_name'),
        port=pulumi.get(__ret__, 'port'),
        version=pulumi.get(__ret__, 'version'))
def get_instance_plugin_output(id: Optional[pulumi.Input[builtins.str]] = None,
                               opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetInstancePluginResult]:
    """
    Data Source schema for Byteplus::RabbitMQ::InstancePlugin


    :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:rabbitmq/getInstancePlugin:getInstancePlugin', __args__, opts=opts, typ=GetInstancePluginResult)
    return __ret__.apply(lambda __response__: GetInstancePluginResult(
        description=pulumi.get(__response__, 'description'),
        disable_prompt=pulumi.get(__response__, 'disable_prompt'),
        enable_prompt=pulumi.get(__response__, 'enable_prompt'),
        enabled=pulumi.get(__response__, 'enabled'),
        id=pulumi.get(__response__, 'id'),
        instance_id=pulumi.get(__response__, 'instance_id'),
        need_reboot_on_change=pulumi.get(__response__, 'need_reboot_on_change'),
        plugin_name=pulumi.get(__response__, 'plugin_name'),
        port=pulumi.get(__response__, 'port'),
        version=pulumi.get(__response__, 'version')))
