text: # 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
  from . import outputs
  from ._inputs import *
  
  __all__ = ['OptionGroup']
  
  
  class OptionGroup(pulumi.CustomResource):
      def __init__(__self__,
                   resource_name: str,
                   opts: Optional[pulumi.ResourceOptions] = None,
                   engine_name: Optional[pulumi.Input[str]] = None,
                   major_engine_version: Optional[pulumi.Input[str]] = None,
                   name: Optional[pulumi.Input[str]] = None,
                   name_prefix: Optional[pulumi.Input[str]] = None,
                   option_group_description: Optional[pulumi.Input[str]] = None,
                   options: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['OptionGroupOptionArgs']]]]] = None,
                   tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                   __props__=None,
                   __name__=None,
                   __opts__=None):
          """
          Provides an RDS DB option group resource. Documentation of the available options for various RDS engines can be found at:
  
          * [MariaDB Options](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.MariaDB.Options.html)
          * [Microsoft SQL Server Options](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.SQLServer.Options.html)
          * [MySQL Options](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.MySQL.Options.html)
          * [Oracle Options](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.Options.html)
  
          ## Example Usage
  
          ```python
          import pulumi
          import pulumi_aws as aws
  
          example = aws.rds.OptionGroup("example",
              option_group_description="Option Group",
              engine_name="sqlserver-ee",
              major_engine_version="11.00",
              options=[
                  aws.rds.OptionGroupOptionArgs(
                      option_name="Timezone",
                      option_settings=[aws.rds.OptionGroupOptionOptionSettingArgs(
                          name="TIME_ZONE",
                          value="UTC",
                      )],
                  ),
                  aws.rds.OptionGroupOptionArgs(
                      option_name="SQLSERVER_BACKUP_RESTORE",
                      option_settings=[aws.rds.OptionGroupOptionOptionSettingArgs(
                          name="IAM_ROLE_ARN",
                          value=aws_iam_role["example"]["arn"],
                      )],
                  ),
                  aws.rds.OptionGroupOptionArgs(
                      option_name="TDE",
                  ),
              ])
          ```
  
          > **Note**: Any modifications to the `db_option_group` are set to happen immediately as we default to applying immediately.
  
          ## Import
  
          DB Option groups can be imported using the `name`, e.g.
  
          ```sh
           $ pulumi import aws:rds/optionGroup:OptionGroup bar mysql-option-group
          ```
  
          :param str resource_name: The name of the resource.
          :param pulumi.ResourceOptions opts: Options for the resource.
          :param pulumi.Input[str] engine_name: Specifies the name of the engine that this option group should be associated with.
          :param pulumi.Input[str] major_engine_version: Specifies the major version of the engine that this option group should be associated with.
          :param pulumi.Input[str] name: The Name of the setting.
          :param pulumi.Input[str] name_prefix: Creates a unique name beginning with the specified prefix. Conflicts with `name`. Must be lowercase, to match as it is stored in AWS.
          :param pulumi.Input[str] option_group_description: The description of the option group. Defaults to "Managed by Pulumi".
          :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['OptionGroupOptionArgs']]]] options: A list of Options to apply.
          :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: A map of tags to assign to the resource.
          """
          if __name__ is not None:
              warnings.warn("explicit use of __name__ is deprecated", DeprecationWarning)
              resource_name = __name__
          if __opts__ is not None:
              warnings.warn("explicit use of __opts__ is deprecated, use 'opts' instead", DeprecationWarning)
              opts = __opts__
          if opts is None:
              opts = pulumi.ResourceOptions()
          if not isinstance(opts, pulumi.ResourceOptions):
              raise TypeError('Expected resource options to be a ResourceOptions instance')
          if opts.version is None:
              opts.version = _utilities.get_version()
          if opts.id is None:
              if __props__ is not None:
                  raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
              __props__ = dict()
  
              if engine_name is None and not opts.urn:
                  raise TypeError("Missing required property 'engine_name'")
              __props__['engine_name'] = engine_name
              if major_engine_version is None and not opts.urn:
                  raise TypeError("Missing required property 'major_engine_version'")
              __props__['major_engine_version'] = major_engine_version
              __props__['name'] = name
              __props__['name_prefix'] = name_prefix
              if option_group_description is None:
                  option_group_description = 'Managed by Pulumi'
              __props__['option_group_description'] = option_group_description
              __props__['options'] = options
              __props__['tags'] = tags
              __props__['arn'] = None
          super(OptionGroup, __self__).__init__(
              'aws:rds/optionGroup:OptionGroup',
              resource_name,
              __props__,
              opts)
  
      @staticmethod
      def get(resource_name: str,
              id: pulumi.Input[str],
              opts: Optional[pulumi.ResourceOptions] = None,
              arn: Optional[pulumi.Input[str]] = None,
              engine_name: Optional[pulumi.Input[str]] = None,
              major_engine_version: Optional[pulumi.Input[str]] = None,
              name: Optional[pulumi.Input[str]] = None,
              name_prefix: Optional[pulumi.Input[str]] = None,
              option_group_description: Optional[pulumi.Input[str]] = None,
              options: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['OptionGroupOptionArgs']]]]] = None,
              tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None) -> 'OptionGroup':
          """
          Get an existing OptionGroup resource's state with the given name, id, and optional extra
          properties used to qualify the lookup.
  
          :param str resource_name: The unique name of the resulting resource.
          :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
          :param pulumi.ResourceOptions opts: Options for the resource.
          :param pulumi.Input[str] arn: The ARN of the db option group.
          :param pulumi.Input[str] engine_name: Specifies the name of the engine that this option group should be associated with.
          :param pulumi.Input[str] major_engine_version: Specifies the major version of the engine that this option group should be associated with.
          :param pulumi.Input[str] name: The Name of the setting.
          :param pulumi.Input[str] name_prefix: Creates a unique name beginning with the specified prefix. Conflicts with `name`. Must be lowercase, to match as it is stored in AWS.
          :param pulumi.Input[str] option_group_description: The description of the option group. Defaults to "Managed by Pulumi".
          :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['OptionGroupOptionArgs']]]] options: A list of Options to apply.
          :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: A map of tags to assign to the resource.
          """
          opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
  
          __props__ = dict()
  
          __props__["arn"] = arn
          __props__["engine_name"] = engine_name
          __props__["major_engine_version"] = major_engine_version
          __props__["name"] = name
          __props__["name_prefix"] = name_prefix
          __props__["option_group_description"] = option_group_description
          __props__["options"] = options
          __props__["tags"] = tags
          return OptionGroup(resource_name, opts=opts, __props__=__props__)
  
      @property
      @pulumi.getter
      def arn(self) -> pulumi.Output[str]:
          """
          The ARN of the db option group.
          """
          return pulumi.get(self, "arn")
  
      @property
      @pulumi.getter(name="engineName")
      def engine_name(self) -> pulumi.Output[str]:
          """
          Specifies the name of the engine that this option group should be associated with.
          """
          return pulumi.get(self, "engine_name")
  
      @property
      @pulumi.getter(name="majorEngineVersion")
      def major_engine_version(self) -> pulumi.Output[str]:
          """
          Specifies the major version of the engine that this option group should be associated with.
          """
          return pulumi.get(self, "major_engine_version")
  
      @property
      @pulumi.getter
      def name(self) -> pulumi.Output[str]:
          """
          The Name of the setting.
          """
          return pulumi.get(self, "name")
  
      @property
      @pulumi.getter(name="namePrefix")
      def name_prefix(self) -> pulumi.Output[str]:
          """
          Creates a unique name beginning with the specified prefix. Conflicts with `name`. Must be lowercase, to match as it is stored in AWS.
          """
          return pulumi.get(self, "name_prefix")
  
      @property
      @pulumi.getter(name="optionGroupDescription")
      def option_group_description(self) -> pulumi.Output[str]:
          """
          The description of the option group. Defaults to "Managed by Pulumi".
          """
          return pulumi.get(self, "option_group_description")
  
      @property
      @pulumi.getter
      def options(self) -> pulumi.Output[Optional[Sequence['outputs.OptionGroupOption']]]:
          """
          A list of Options to apply.
          """
          return pulumi.get(self, "options")
  
      @property
      @pulumi.getter
      def tags(self) -> pulumi.Output[Optional[Mapping[str, str]]]:
          """
          A map of tags to assign to the resource.
          """
          return pulumi.get(self, "tags")
  
      def translate_output_property(self, prop):
          return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop
  
      def translate_input_property(self, prop):
          return _tables.SNAKE_TO_CAMEL_CASE_TABLE.get(prop) or prop
  
  