"""
Autogenerated state module using `pop-create-idem <https://gitlab.com/saltstack/pop/pop-create-idem>`__

hub.exec.boto3.client.rds.create_db_instance
hub.exec.boto3.client.rds.delete_db_instance
hub.exec.boto3.client.rds.describe_db_instances
hub.exec.boto3.client.rds.modify_db_instance
hub.exec.boto3.client.rds.reboot_db_instance
hub.exec.boto3.client.rds.start_db_instance
hub.exec.boto3.client.rds.stop_db_instance
"""



from typing import *
import dict_tools.differ as differ
async def present(hub, ctx, name: Text, db_instance_identifier: Text, db_instance_class: Text, engine: Text, db_name: Text = None, allocated_storage: int = None, master_username: Text = None, master_user_password: Text = None, db_security_groups: List = None, vpc_security_group_ids: List = None, availability_zone: Text = None, db_subnet_group_name: Text = None, preferred_maintenance_window: Text = None, db_parameter_group_name: Text = None, backup_retention_period: int = None, preferred_backup_window: Text = None, port: int = None, multi_az: bool = None, engine_version: Text = None, auto_minor_version_upgrade: bool = None, license_model: Text = None, iops: int = None, option_group_name: Text = None, character_set_name: Text = None, nchar_character_set_name: Text = None, publicly_accessible: bool = None, tags: List = None, db_cluster_identifier: Text = None, storage_type: Text = None, tde_credential_arn: Text = None, tde_credential_password: Text = None, storage_encrypted: bool = None, kms_key_id: Text = None, domain: Text = None, copy_tags_to_snapshot: bool = None, monitoring_interval: int = None, monitoring_role_arn: Text = None, domain_iam_role_name: Text = None, promotion_tier: int = None, timezone: Text = None, enable_iam_database_authentication: bool = None, enable_performance_insights: bool = None, performance_insights_kms_key_id: Text = None, performance_insights_retention_period: int = None, enable_cloudwatch_logs_exports: List = None, processor_features: List = None, deletion_protection: bool = None, max_allocated_storage: int = None, enable_customer_owned_ip: bool = None)  -> Dict[str, Any]:
    r'''
    **Autogenerated function**
    
    Creates a new DB instance.

    Args:
        name(Text): A name, ID, or JMES search path to identify the resource.
        db_name(Text, optional): The meaning of this parameter differs according to the database engine you use.  MySQL  The name
            of the database to create when the DB instance is created. If this parameter isn't specified, no
            database is created in the DB instance. Constraints:   Must contain 1 to 64 letters or numbers.
            Must begin with a letter. Subsequent characters can be letters, underscores, or digits (0-9).
            Can't be a word reserved by the specified database engine    MariaDB  The name of the database
            to create when the DB instance is created. If this parameter isn't specified, no database is
            created in the DB instance. Constraints:   Must contain 1 to 64 letters or numbers.   Must begin
            with a letter. Subsequent characters can be letters, underscores, or digits (0-9).   Can't be a
            word reserved by the specified database engine    PostgreSQL  The name of the database to create
            when the DB instance is created. If this parameter isn't specified, a database named postgres is
            created in the DB instance. Constraints:   Must contain 1 to 63 letters, numbers, or
            underscores.   Must begin with a letter. Subsequent characters can be letters, underscores, or
            digits (0-9).   Can't be a word reserved by the specified database engine    Oracle  The Oracle
            System ID (SID) of the created DB instance. If you specify null, the default value ORCL is used.
            You can't specify the string NULL, or any other reserved word, for DBName.  Default: ORCL
            Constraints:   Can't be longer than 8 characters    SQL Server  Not applicable. Must be null.
            Amazon Aurora MySQL  The name of the database to create when the primary DB instance of the
            Aurora MySQL DB cluster is created. If this parameter isn't specified for an Aurora MySQL DB
            cluster, no database is created in the DB cluster. Constraints:   It must contain 1 to 64
            alphanumeric characters.   It can't be a word reserved by the database engine.    Amazon Aurora
            PostgreSQL  The name of the database to create when the primary DB instance of the Aurora
            PostgreSQL DB cluster is created. If this parameter isn't specified for an Aurora PostgreSQL DB
            cluster, a database named postgres is created in the DB cluster. Constraints:   It must contain
            1 to 63 alphanumeric characters.   It must begin with a letter or an underscore. Subsequent
            characters can be letters, underscores, or digits (0 to 9).   It can't be a word reserved by the
            database engine. Defaults to None.
        db_instance_identifier(Text): The DB instance identifier. This parameter is stored as a lowercase string. Constraints:   Must
            contain from 1 to 63 letters, numbers, or hyphens.   First character must be a letter.   Can't
            end with a hyphen or contain two consecutive hyphens.   Example: mydbinstance.
        allocated_storage(int, optional): The amount of storage in gibibytes (GiB) to allocate for the DB instance. Type: Integer  Amazon
            Aurora  Not applicable. Aurora cluster volumes automatically grow as the amount of data in your
            database increases, though you are only charged for the space that you use in an Aurora cluster
            volume.  MySQL  Constraints to the amount of storage for each storage type are the following:
            General Purpose (SSD) storage (gp2): Must be an integer from 20 to 65536.   Provisioned IOPS
            storage (io1): Must be an integer from 100 to 65536.   Magnetic storage (standard): Must be an
            integer from 5 to 3072.    MariaDB  Constraints to the amount of storage for each storage type
            are the following:    General Purpose (SSD) storage (gp2): Must be an integer from 20 to 65536.
            Provisioned IOPS storage (io1): Must be an integer from 100 to 65536.   Magnetic storage
            (standard): Must be an integer from 5 to 3072.    PostgreSQL  Constraints to the amount of
            storage for each storage type are the following:    General Purpose (SSD) storage (gp2): Must be
            an integer from 20 to 65536.   Provisioned IOPS storage (io1): Must be an integer from 100 to
            65536.   Magnetic storage (standard): Must be an integer from 5 to 3072.    Oracle  Constraints
            to the amount of storage for each storage type are the following:    General Purpose (SSD)
            storage (gp2): Must be an integer from 20 to 65536.   Provisioned IOPS storage (io1): Must be an
            integer from 100 to 65536.   Magnetic storage (standard): Must be an integer from 10 to 3072.
            SQL Server  Constraints to the amount of storage for each storage type are the following:
            General Purpose (SSD) storage (gp2):   Enterprise and Standard editions: Must be an integer from
            200 to 16384.   Web and Express editions: Must be an integer from 20 to 16384.     Provisioned
            IOPS storage (io1):   Enterprise and Standard editions: Must be an integer from 200 to 16384.
            Web and Express editions: Must be an integer from 100 to 16384.     Magnetic storage (standard):
            Enterprise and Standard editions: Must be an integer from 200 to 1024.   Web and Express
            editions: Must be an integer from 20 to 1024. Defaults to None.
        db_instance_class(Text): The compute and memory capacity of the DB instance, for example, db.m4.large. Not all DB
            instance classes are available in all Amazon Web Services Regions, or for all database engines.
            For the full list of DB instance classes, and availability for your engine, see DB Instance
            Class in the Amazon RDS User Guide.
        engine(Text): The name of the database engine to be used for this instance.  Not every database engine is
            available for every Amazon Web Services Region.  Valid Values:     aurora (for MySQL
            5.6-compatible Aurora)    aurora-mysql (for MySQL 5.7-compatible Aurora)    aurora-postgresql
            mariadb     mysql     oracle-ee     oracle-ee-cdb     oracle-se2     oracle-se2-cdb     postgres
            sqlserver-ee     sqlserver-se     sqlserver-ex     sqlserver-web.
        master_username(Text, optional): The name for the master user.  Amazon Aurora  Not applicable. The name for the master user is
            managed by the DB cluster.   MariaDB  Constraints:   Required for MariaDB.   Must be 1 to 16
            letters or numbers.   Can't be a reserved word for the chosen database engine.    Microsoft SQL
            Server  Constraints:   Required for SQL Server.   Must be 1 to 128 letters or numbers.   The
            first character must be a letter.   Can't be a reserved word for the chosen database engine.
            MySQL  Constraints:   Required for MySQL.   Must be 1 to 16 letters or numbers.   First
            character must be a letter.   Can't be a reserved word for the chosen database engine.    Oracle
            Constraints:   Required for Oracle.   Must be 1 to 30 letters or numbers.   First character must
            be a letter.   Can't be a reserved word for the chosen database engine.    PostgreSQL
            Constraints:   Required for PostgreSQL.   Must be 1 to 63 letters or numbers.   First character
            must be a letter.   Can't be a reserved word for the chosen database engine. Defaults to None.
        master_user_password(Text, optional): The password for the master user. The password can include any printable ASCII character except
            "/", """, or "@".  Amazon Aurora  Not applicable. The password for the master user is managed by
            the DB cluster.  MariaDB  Constraints: Must contain from 8 to 41 characters.  Microsoft SQL
            Server  Constraints: Must contain from 8 to 128 characters.  MySQL  Constraints: Must contain
            from 8 to 41 characters.  Oracle  Constraints: Must contain from 8 to 30 characters.  PostgreSQL
            Constraints: Must contain from 8 to 128 characters. Defaults to None.
        db_security_groups(List, optional): A list of DB security groups to associate with this DB instance. Default: The default DB
            security group for the database engine. Defaults to None.
        vpc_security_group_ids(List, optional): A list of Amazon EC2 VPC security groups to associate with this DB instance.  Amazon Aurora  Not
            applicable. The associated list of EC2 VPC security groups is managed by the DB cluster.
            Default: The default EC2 VPC security group for the DB subnet group's VPC. Defaults to None.
        availability_zone(Text, optional):  The Availability Zone (AZ) where the database will be created. For information on Amazon Web
            Services Regions and Availability Zones, see Regions and Availability Zones.  Default: A random,
            system-chosen Availability Zone in the endpoint's Amazon Web Services Region.  Example: us-
            east-1d   Constraint: The AvailabilityZone parameter can't be specified if the DB instance is a
            Multi-AZ deployment. The specified Availability Zone must be in the same Amazon Web Services
            Region as the current endpoint.   If you're creating a DB instance in an RDS on VMware
            environment, specify the identifier of the custom Availability Zone to create the DB instance
            in. For more information about RDS on VMware, see the  RDS on VMware User Guide. Defaults to None.
        db_subnet_group_name(Text, optional): A DB subnet group to associate with this DB instance. If there is no DB subnet group, then it is
            a non-VPC DB instance. Defaults to None.
        preferred_maintenance_window(Text, optional): The time range each week during which system maintenance can occur, in Universal Coordinated
            Time (UTC). For more information, see Amazon RDS Maintenance Window.   Format: ddd:hh24:mi-
            ddd:hh24:mi  The default is a 30-minute window selected at random from an 8-hour block of time
            for each Amazon Web Services Region, occurring on a random day of the week.  Valid Days: Mon,
            Tue, Wed, Thu, Fri, Sat, Sun. Constraints: Minimum 30-minute window. Defaults to None.
        db_parameter_group_name(Text, optional): The name of the DB parameter group to associate with this DB instance. If you do not specify a
            value, then the default DB parameter group for the specified DB engine and version is used.
            Constraints:   Must be 1 to 255 letters, numbers, or hyphens.   First character must be a letter
            Can't end with a hyphen or contain two consecutive hyphens. Defaults to None.
        backup_retention_period(int, optional): The number of days for which automated backups are retained. Setting this parameter to a
            positive number enables backups. Setting this parameter to 0 disables automated backups.  Amazon
            Aurora  Not applicable. The retention period for automated backups is managed by the DB cluster.
            Default: 1 Constraints:   Must be a value from 0 to 35   Can't be set to 0 if the DB instance is
            a source to read replicas. Defaults to None.
        preferred_backup_window(Text, optional):  The daily time range during which automated backups are created if automated backups are
            enabled, using the BackupRetentionPeriod parameter. The default is a 30-minute window selected
            at random from an 8-hour block of time for each Amazon Web Services Region. For more
            information, see Backup window in the Amazon RDS User Guide.   Amazon Aurora  Not applicable.
            The daily time range for creating automated backups is managed by the DB cluster. Constraints:
            Must be in the format hh24:mi-hh24:mi.   Must be in Universal Coordinated Time (UTC).   Must not
            conflict with the preferred maintenance window.   Must be at least 30 minutes. Defaults to None.
        port(int, optional): The port number on which the database accepts connections.  MySQL   Default: 3306   Valid
            values: 1150-65535  Type: Integer  MariaDB   Default: 3306   Valid values: 1150-65535  Type:
            Integer  PostgreSQL   Default: 5432   Valid values: 1150-65535  Type: Integer  Oracle   Default:
            1521   Valid values: 1150-65535   SQL Server   Default: 1433   Valid values: 1150-65535 except
            1234, 1434, 3260, 3343, 3389, 47001, and 49152-49156.  Amazon Aurora   Default: 3306   Valid
            values: 1150-65535  Type: Integer. Defaults to None.
        multi_az(bool, optional): A value that indicates whether the DB instance is a Multi-AZ deployment. You can't set the
            AvailabilityZone parameter if the DB instance is a Multi-AZ deployment. Defaults to None.
        engine_version(Text, optional): The version number of the database engine to use. For a list of valid engine versions, use the
            DescribeDBEngineVersions action. The following are the database engines and links to information
            about the major and minor versions that are available with Amazon RDS. Not every database engine
            is available for every Amazon Web Services Region.  Amazon Aurora  Not applicable. The version
            number of the database engine to be used by the DB instance is managed by the DB cluster.
            MariaDB  See MariaDB on Amazon RDS Versions in the Amazon RDS User Guide.   Microsoft SQL Server
            See Microsoft SQL Server Versions on Amazon RDS in the Amazon RDS User Guide.   MySQL  See MySQL
            on Amazon RDS Versions in the Amazon RDS User Guide.   Oracle  See Oracle Database Engine
            Release Notes in the Amazon RDS User Guide.   PostgreSQL  See Amazon RDS for PostgreSQL versions
            and extensions in the Amazon RDS User Guide. Defaults to None.
        auto_minor_version_upgrade(bool, optional): A value that indicates whether minor engine upgrades are applied automatically to the DB
            instance during the maintenance window. By default, minor engine upgrades are applied
            automatically. Defaults to None.
        license_model(Text, optional): License model information for this DB instance.  Valid values: license-included | bring-your-
            own-license | general-public-license. Defaults to None.
        iops(int, optional): The amount of Provisioned IOPS (input/output operations per second) to be initially allocated
            for the DB instance. For information about valid Iops values, see Amazon RDS Provisioned IOPS
            Storage to Improve Performance in the Amazon RDS User Guide.  Constraints: For MariaDB, MySQL,
            Oracle, and PostgreSQL DB instances, must be a multiple between .5 and 50 of the storage amount
            for the DB instance. For SQL Server DB instances, must be a multiple between 1 and 50 of the
            storage amount for the DB instance. Defaults to None.
        option_group_name(Text, optional): A value that indicates that the DB instance should be associated with the specified option
            group. Permanent options, such as the TDE option for Oracle Advanced Security TDE, can't be
            removed from an option group. Also, that option group can't be removed from a DB instance once
            it is associated with a DB instance. Defaults to None.
        character_set_name(Text, optional): For supported engines, indicates that the DB instance should be associated with the specified
            CharacterSet.  Amazon Aurora  Not applicable. The character set is managed by the DB cluster.
            For more information, see CreateDBCluster. Defaults to None.
        nchar_character_set_name(Text, optional): The name of the NCHAR character set for the Oracle DB instance. Defaults to None.
        publicly_accessible(bool, optional): A value that indicates whether the DB instance is publicly accessible. When the DB instance is
            publicly accessible, its DNS endpoint resolves to the private IP address from within the DB
            instance's VPC, and to the public IP address from outside of the DB instance's VPC. Access to
            the DB instance is ultimately controlled by the security group it uses, and that public access
            is not permitted if the security group assigned to the DB instance doesn't permit it. When the
            DB instance isn't publicly accessible, it is an internal DB instance with a DNS name that
            resolves to a private IP address. Default: The default behavior varies depending on whether
            DBSubnetGroupName is specified. If DBSubnetGroupName isn't specified, and PubliclyAccessible
            isn't specified, the following applies:   If the default VPC in the target region doesn’t have
            an Internet gateway attached to it, the DB instance is private.   If the default VPC in the
            target region has an Internet gateway attached to it, the DB instance is public.   If
            DBSubnetGroupName is specified, and PubliclyAccessible isn't specified, the following applies:
            If the subnets are part of a VPC that doesn’t have an Internet gateway attached to it, the DB
            instance is private.   If the subnets are part of a VPC that has an Internet gateway attached to
            it, the DB instance is public. Defaults to None.
        tags(List, optional): Tags to assign to the DB instance. Defaults to None.
        db_cluster_identifier(Text, optional): The identifier of the DB cluster that the instance will belong to. Defaults to None.
        storage_type(Text, optional): Specifies the storage type to be associated with the DB instance.  Valid values: standard | gp2
            | io1   If you specify io1, you must also include a value for the Iops parameter.   Default: io1
            if the Iops parameter is specified, otherwise gp2. Defaults to None.
        tde_credential_arn(Text, optional): The ARN from the key store with which to associate the instance for TDE encryption. Defaults to None.
        tde_credential_password(Text, optional): The password for the given ARN from the key store in order to access the device. Defaults to None.
        storage_encrypted(bool, optional): A value that indicates whether the DB instance is encrypted. By default, it isn't encrypted.
            Amazon Aurora  Not applicable. The encryption for DB instances is managed by the DB cluster. Defaults to None.
        kms_key_id(Text, optional): The Amazon Web Services KMS key identifier for an encrypted DB instance. The Amazon Web Services
            KMS key identifier is the key ARN, key ID, alias ARN, or alias name for the Amazon Web Services
            KMS customer master key (CMK). To use a CMK in a different Amazon Web Services account, specify
            the key ARN or alias ARN.  Amazon Aurora  Not applicable. The Amazon Web Services KMS key
            identifier is managed by the DB cluster. For more information, see CreateDBCluster. If
            StorageEncrypted is enabled, and you do not specify a value for the KmsKeyId parameter, then
            Amazon RDS uses your default CMK. There is a default CMK for your Amazon Web Services account.
            Your Amazon Web Services account has a different default CMK for each Amazon Web Services
            Region. Defaults to None.
        domain(Text, optional): The Active Directory directory ID to create the DB instance in. Currently, only MySQL, Microsoft
            SQL Server, Oracle, and PostgreSQL DB instances can be created in an Active Directory Domain.
            For more information, see  Kerberos Authentication in the Amazon RDS User Guide. Defaults to None.
        copy_tags_to_snapshot(bool, optional): A value that indicates whether to copy tags from the DB instance to snapshots of the DB
            instance. By default, tags are not copied.  Amazon Aurora  Not applicable. Copying tags to
            snapshots is managed by the DB cluster. Setting this value for an Aurora DB instance has no
            effect on the DB cluster setting. Defaults to None.
        monitoring_interval(int, optional): The interval, in seconds, between points when Enhanced Monitoring metrics are collected for the
            DB instance. To disable collecting Enhanced Monitoring metrics, specify 0. The default is 0. If
            MonitoringRoleArn is specified, then you must also set MonitoringInterval to a value other than
            0. Valid Values: 0, 1, 5, 10, 15, 30, 60. Defaults to None.
        monitoring_role_arn(Text, optional): The ARN for the IAM role that permits RDS to send enhanced monitoring metrics to Amazon
            CloudWatch Logs. For example, arn:aws:iam:123456789012:role/emaccess. For information on
            creating a monitoring role, go to Setting Up and Enabling Enhanced Monitoring in the Amazon RDS
            User Guide. If MonitoringInterval is set to a value other than 0, then you must supply a
            MonitoringRoleArn value. Defaults to None.
        domain_iam_role_name(Text, optional): Specify the name of the IAM role to be used when making API calls to the Directory Service. Defaults to None.
        promotion_tier(int, optional): A value that specifies the order in which an Aurora Replica is promoted to the primary instance
            after a failure of the existing primary instance. For more information, see  Fault Tolerance for
            an Aurora DB Cluster in the Amazon Aurora User Guide.  Default: 1 Valid Values: 0 - 15. Defaults to None.
        timezone(Text, optional): The time zone of the DB instance. The time zone parameter is currently supported only by
            Microsoft SQL Server. Defaults to None.
        enable_iam_database_authentication(bool, optional): A value that indicates whether to enable mapping of Amazon Web Services Identity and Access
            Management (IAM) accounts to database accounts. By default, mapping is disabled. This setting
            doesn't apply to Amazon Aurora. Mapping Amazon Web Services IAM accounts to database accounts is
            managed by the DB cluster. For more information, see  IAM Database Authentication for MySQL and
            PostgreSQL in the Amazon RDS User Guide. Defaults to None.
        enable_performance_insights(bool, optional): A value that indicates whether to enable Performance Insights for the DB instance.  For more
            information, see Using Amazon Performance Insights in the Amazon Relational Database Service
            User Guide. Defaults to None.
        performance_insights_kms_key_id(Text, optional): The Amazon Web Services KMS key identifier for encryption of Performance Insights data. The
            Amazon Web Services KMS key identifier is the key ARN, key ID, alias ARN, or alias name for the
            Amazon Web Services KMS customer master key (CMK). If you do not specify a value for
            PerformanceInsightsKMSKeyId, then Amazon RDS uses your default CMK. There is a default CMK for
            your Amazon Web Services account. Your Amazon Web Services account has a different default CMK
            for each Amazon Web Services Region. Defaults to None.
        performance_insights_retention_period(int, optional): The amount of time, in days, to retain Performance Insights data. Valid values are 7 or 731 (2
            years). Defaults to None.
        enable_cloudwatch_logs_exports(List, optional): The list of log types that need to be enabled for exporting to CloudWatch Logs. The values in
            the list depend on the DB engine being used. For more information, see Publishing Database Logs
            to Amazon CloudWatch Logs  in the Amazon Relational Database Service User Guide.  Amazon Aurora
            Not applicable. CloudWatch Logs exports are managed by the DB cluster.   MariaDB  Possible
            values are audit, error, general, and slowquery.   Microsoft SQL Server  Possible values are
            agent and error.   MySQL  Possible values are audit, error, general, and slowquery.   Oracle
            Possible values are alert, audit, listener, trace, and oemagent.   PostgreSQL  Possible values
            are postgresql and upgrade. Defaults to None.
        processor_features(List, optional): The number of CPU cores and the number of threads per core for the DB instance class of the DB
            instance. Defaults to None.
        deletion_protection(bool, optional): A value that indicates whether the DB instance has deletion protection enabled. The database
            can't be deleted when deletion protection is enabled. By default, deletion protection is
            disabled. For more information, see  Deleting a DB Instance.   Amazon Aurora  Not applicable.
            You can enable or disable deletion protection for the DB cluster. For more information, see
            CreateDBCluster. DB instances in a DB cluster can be deleted even when deletion protection is
            enabled for the DB cluster. Defaults to None.
        max_allocated_storage(int, optional): The upper limit in gibibytes (GiB) to which Amazon RDS can automatically scale the storage of
            the DB instance. For more information about this setting, including limitations that apply to
            it, see  Managing capacity automatically with Amazon RDS storage autoscaling in the Amazon RDS
            User Guide. Defaults to None.
        enable_customer_owned_ip(bool, optional): A value that indicates whether to enable a customer-owned IP address (CoIP) for an RDS on
            Outposts DB instance. A CoIP provides local or external connectivity to resources in your
            Outpost subnets through your on-premises network. For some use cases, a CoIP can provide lower
            latency for connections to the DB instance from outside of its virtual private cloud (VPC) on
            your local network. For more information about RDS on Outposts, see Working with Amazon RDS on
            Amazon Web Services Outposts in the Amazon RDS User Guide. For more information about CoIPs, see
            Customer-owned IP addresses in the Amazon Web Services Outposts User Guide. Defaults to None.

    Returns:
        Dict[str, Any]

    Examples:

        .. code-block:: sls

            resource_is_present:
              aws_auto.rds.db_instance.present:
                - name: value
                - db_instance_identifier: value
                - db_instance_class: value
                - engine: value
    '''
    
    result = dict(comment="", changes= None, name=name, result=True)
    ret = await hub.exec.boto3.client.rds.db_instance.id(
        ctx,
        jmes_path=name
    )
    if ret["status"]:
        # name is now the first id that matched the JMES search path
        name = ret["ret"]
    

    
    before = await hub.exec.boto3.client.rds.describe_db_instances(name)

    if before:
        result["comment"] = f"'{name}' already exists"
    else:
        try:
            ret = await hub.exec.boto3.client.rds.create_db_instance(
                ctx,
                
                
                **{"DBName": db_name, "DBInstanceIdentifier": db_instance_identifier, "AllocatedStorage": allocated_storage, "DBInstanceClass": db_instance_class, "Engine": engine, "MasterUsername": master_username, "MasterUserPassword": master_user_password, "DBSecurityGroups": db_security_groups, "VpcSecurityGroupIds": vpc_security_group_ids, "AvailabilityZone": availability_zone, "DBSubnetGroupName": db_subnet_group_name, "PreferredMaintenanceWindow": preferred_maintenance_window, "DBParameterGroupName": db_parameter_group_name, "BackupRetentionPeriod": backup_retention_period, "PreferredBackupWindow": preferred_backup_window, "Port": port, "MultiAZ": multi_az, "EngineVersion": engine_version, "AutoMinorVersionUpgrade": auto_minor_version_upgrade, "LicenseModel": license_model, "Iops": iops, "OptionGroupName": option_group_name, "CharacterSetName": character_set_name, "NcharCharacterSetName": nchar_character_set_name, "PubliclyAccessible": publicly_accessible, "Tags": tags, "DBClusterIdentifier": db_cluster_identifier, "StorageType": storage_type, "TdeCredentialArn": tde_credential_arn, "TdeCredentialPassword": tde_credential_password, "StorageEncrypted": storage_encrypted, "KmsKeyId": kms_key_id, "Domain": domain, "CopyTagsToSnapshot": copy_tags_to_snapshot, "MonitoringInterval": monitoring_interval, "MonitoringRoleArn": monitoring_role_arn, "DomainIAMRoleName": domain_iam_role_name, "PromotionTier": promotion_tier, "Timezone": timezone, "EnableIAMDatabaseAuthentication": enable_iam_database_authentication, "EnablePerformanceInsights": enable_performance_insights, "PerformanceInsightsKMSKeyId": performance_insights_kms_key_id, "PerformanceInsightsRetentionPeriod": performance_insights_retention_period, "EnableCloudwatchLogsExports": enable_cloudwatch_logs_exports, "ProcessorFeatures": processor_features, "DeletionProtection": deletion_protection, "MaxAllocatedStorage": max_allocated_storage, "EnableCustomerOwnedIp": enable_customer_owned_ip}
            )
            result["result"] = ret["status"]
            if not result["result"]:
                result["comment"] = ret["comment"]
                return result
            ret["comment"] = f"Created '{name}'"
        except hub.tool.boto3.exception.ClientError as e:
            result["comment"] = f"{e.__class__.__name__}: {e}"

    
    # TODO perform other modifications as needed here
    ...

    after = await hub.exec.boto3.client.rds.describe_db_instances(name)
    result["changes"] = differ.deep_diff(before, after)
    return result

async def absent(hub, ctx, name: Text, db_instance_identifier: Text, skip_final_snapshot: bool = None, final_db_snapshot_identifier: Text = None, delete_automated_backups: bool = None)  -> Dict[str, Any]:
    r'''
    **Autogenerated function**
    
    The DeleteDBInstance action deletes a previously provisioned DB instance. When you delete a DB instance, all
    automated backups for that instance are deleted and can't be recovered. Manual DB snapshots of the DB instance
    to be deleted by DeleteDBInstance are not deleted.  If you request a final DB snapshot the status of the Amazon
    RDS DB instance is deleting until the DB snapshot is created. The API action DescribeDBInstance is used to
    monitor the status of this operation. The action can't be canceled or reverted once submitted.  When a DB
    instance is in a failure state and has a status of failed, incompatible-restore, or incompatible-network, you
    can only delete it when you skip creation of the final snapshot with the SkipFinalSnapshot parameter. If the
    specified DB instance is part of an Amazon Aurora DB cluster, you can't delete the DB instance if both of the
    following conditions are true:   The DB cluster is a read replica of another Amazon Aurora DB cluster.   The DB
    instance is the only instance in the DB cluster.   To delete a DB instance in this case, first call the
    PromoteReadReplicaDBCluster API action to promote the DB cluster so it's no longer a read replica. After the
    promotion completes, then call the DeleteDBInstance API action to delete the final instance in the DB cluster.

    Args:
        name(Text): A name, ID, or JMES search path to identify the resource.
        db_instance_identifier(Text): The DB instance identifier for the DB instance to be deleted. This parameter isn't case-
            sensitive. Constraints:   Must match the name of an existing DB instance.
        skip_final_snapshot(bool, optional): A value that indicates whether to skip the creation of a final DB snapshot before the DB
            instance is deleted. If skip is specified, no DB snapshot is created. If skip isn't specified, a
            DB snapshot is created before the DB instance is deleted. By default, skip isn't specified, and
            the DB snapshot is created. When a DB instance is in a failure state and has a status of
            'failed', 'incompatible-restore', or 'incompatible-network', it can only be deleted when skip is
            specified. Specify skip when deleting a read replica.  The FinalDBSnapshotIdentifier parameter
            must be specified if skip isn't specified. Defaults to None.
        final_db_snapshot_identifier(Text, optional):  The DBSnapshotIdentifier of the new DBSnapshot created when the SkipFinalSnapshot parameter is
            disabled.   Specifying this parameter and also specifying to skip final DB snapshot creation in
            SkipFinalShapshot results in an error.  Constraints:   Must be 1 to 255 letters or numbers.
            First character must be a letter.   Can't end with a hyphen or contain two consecutive hyphens.
            Can't be specified when deleting a read replica. Defaults to None.
        delete_automated_backups(bool, optional): A value that indicates whether to remove automated backups immediately after the DB instance is
            deleted. This parameter isn't case-sensitive. The default is to remove automated backups
            immediately after the DB instance is deleted. Defaults to None.

    Returns:
        Dict[str, Any]

    Examples:

        .. code-block:: sls

            resource_is_absent:
              aws_auto.rds.db_instance.absent:
                - name: value
                - db_instance_identifier: value
    '''
    
    result = dict(comment="", changes= None, name=name, result=True)
    ret = await hub.exec.boto3.client.rds.db_instance.id(
        ctx,
        jmes_path=name
    )
    if ret["status"]:
        # name is now the first id that matched the JMES search path
        name = ret["ret"]
    

    

    before = await hub.exec.boto3.client.rds.describe_db_instances(name)

    if not before:
        result["comment"] = f"'{name}' already absent"
    else:
        try:
            ret = await hub.exec.boto3.client.rds.delete_db_instance(
                ctx,
                
                
                **{"DBInstanceIdentifier": db_instance_identifier, "SkipFinalSnapshot": skip_final_snapshot, "FinalDBSnapshotIdentifier": final_db_snapshot_identifier, "DeleteAutomatedBackups": delete_automated_backups}
            )
            result["result"] = ret["status"]
            if not result["result"]:
                result["comment"] = ret["comment"]
                return result
            result["comment"] = f"Deleted '{name}'"
        except hub.tool.boto3.exception.ClientError as e:
            result["comment"] = f"{e.__class__.__name__}: {e}"

    

    after = await hub.exec.boto3.client.rds.describe_db_instances(name)
    result["changes"] = differ.deep_diff(before, after)
    return result

