com.pulumi.alicloud.rds.kotlin.DatabaseArgs.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of pulumi-alicloud-kotlin Show documentation
Show all versions of pulumi-alicloud-kotlin Show documentation
Build cloud applications and infrastructure by combining the safety and reliability of infrastructure as code with the power of the Kotlin programming language.
@file:Suppress("NAME_SHADOWING", "DEPRECATION")
package com.pulumi.alicloud.rds.kotlin
import com.pulumi.alicloud.rds.DatabaseArgs.builder
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import kotlin.String
import kotlin.Suppress
import kotlin.jvm.JvmName
/**
* Provides an RDS database resource. A DB database deployed in a DB instance. A DB instance can own multiple databases, see [What is DB Database](https://www.alibabacloud.com/help/en/apsaradb-for-rds/latest/api-rds-2014-08-15-createdatabase).
* > **NOTE:** Available since v1.5.0.
* ## Example Usage
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as alicloud from "@pulumi/alicloud";
* const config = new pulumi.Config();
* const name = config.get("name") || "tf-example";
* const default = alicloud.rds.getZones({
* engine: "MySQL",
* engineVersion: "5.6",
* });
* const defaultNetwork = new alicloud.vpc.Network("default", {
* vpcName: name,
* cidrBlock: "172.16.0.0/16",
* });
* const defaultSwitch = new alicloud.vpc.Switch("default", {
* vpcId: defaultNetwork.id,
* cidrBlock: "172.16.0.0/24",
* zoneId: _default.then(_default => _default.zones?.[0]?.id),
* vswitchName: name,
* });
* const defaultInstance = new alicloud.rds.Instance("default", {
* engine: "MySQL",
* engineVersion: "5.6",
* instanceType: "rds.mysql.s1.small",
* instanceStorage: 10,
* vswitchId: defaultSwitch.id,
* instanceName: name,
* });
* const defaultDatabase = new alicloud.rds.Database("default", {
* instanceId: defaultInstance.id,
* name: name,
* });
* ```
* ```python
* import pulumi
* import pulumi_alicloud as alicloud
* config = pulumi.Config()
* name = config.get("name")
* if name is None:
* name = "tf-example"
* default = alicloud.rds.get_zones(engine="MySQL",
* engine_version="5.6")
* default_network = alicloud.vpc.Network("default",
* vpc_name=name,
* cidr_block="172.16.0.0/16")
* default_switch = alicloud.vpc.Switch("default",
* vpc_id=default_network.id,
* cidr_block="172.16.0.0/24",
* zone_id=default.zones[0].id,
* vswitch_name=name)
* default_instance = alicloud.rds.Instance("default",
* engine="MySQL",
* engine_version="5.6",
* instance_type="rds.mysql.s1.small",
* instance_storage=10,
* vswitch_id=default_switch.id,
* instance_name=name)
* default_database = alicloud.rds.Database("default",
* instance_id=default_instance.id,
* name=name)
* ```
* ```csharp
* using System.Collections.Generic;
* using System.Linq;
* using Pulumi;
* using AliCloud = Pulumi.AliCloud;
* return await Deployment.RunAsync(() =>
* {
* var config = new Config();
* var name = config.Get("name") ?? "tf-example";
* var @default = AliCloud.Rds.GetZones.Invoke(new()
* {
* Engine = "MySQL",
* EngineVersion = "5.6",
* });
* var defaultNetwork = new AliCloud.Vpc.Network("default", new()
* {
* VpcName = name,
* CidrBlock = "172.16.0.0/16",
* });
* var defaultSwitch = new AliCloud.Vpc.Switch("default", new()
* {
* VpcId = defaultNetwork.Id,
* CidrBlock = "172.16.0.0/24",
* ZoneId = @default.Apply(@default => @default.Apply(getZonesResult => getZonesResult.Zones[0]?.Id)),
* VswitchName = name,
* });
* var defaultInstance = new AliCloud.Rds.Instance("default", new()
* {
* Engine = "MySQL",
* EngineVersion = "5.6",
* InstanceType = "rds.mysql.s1.small",
* InstanceStorage = 10,
* VswitchId = defaultSwitch.Id,
* InstanceName = name,
* });
* var defaultDatabase = new AliCloud.Rds.Database("default", new()
* {
* InstanceId = defaultInstance.Id,
* Name = name,
* });
* });
* ```
* ```go
* package main
* import (
* "github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/rds"
* "github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/vpc"
* "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
* "github.com/pulumi/pulumi/sdk/v3/go/pulumi/config"
* )
* func main() {
* pulumi.Run(func(ctx *pulumi.Context) error {
* cfg := config.New(ctx, "")
* name := "tf-example"
* if param := cfg.Get("name"); param != "" {
* name = param
* }
* _default, err := rds.GetZones(ctx, &rds.GetZonesArgs{
* Engine: pulumi.StringRef("MySQL"),
* EngineVersion: pulumi.StringRef("5.6"),
* }, nil)
* if err != nil {
* return err
* }
* defaultNetwork, err := vpc.NewNetwork(ctx, "default", &vpc.NetworkArgs{
* VpcName: pulumi.String(name),
* CidrBlock: pulumi.String("172.16.0.0/16"),
* })
* if err != nil {
* return err
* }
* defaultSwitch, err := vpc.NewSwitch(ctx, "default", &vpc.SwitchArgs{
* VpcId: defaultNetwork.ID(),
* CidrBlock: pulumi.String("172.16.0.0/24"),
* ZoneId: pulumi.String(_default.Zones[0].Id),
* VswitchName: pulumi.String(name),
* })
* if err != nil {
* return err
* }
* defaultInstance, err := rds.NewInstance(ctx, "default", &rds.InstanceArgs{
* Engine: pulumi.String("MySQL"),
* EngineVersion: pulumi.String("5.6"),
* InstanceType: pulumi.String("rds.mysql.s1.small"),
* InstanceStorage: pulumi.Int(10),
* VswitchId: defaultSwitch.ID(),
* InstanceName: pulumi.String(name),
* })
* if err != nil {
* return err
* }
* _, err = rds.NewDatabase(ctx, "default", &rds.DatabaseArgs{
* InstanceId: defaultInstance.ID(),
* Name: pulumi.String(name),
* })
* if err != nil {
* return err
* }
* return nil
* })
* }
* ```
* ```java
* package generated_program;
* import com.pulumi.Context;
* import com.pulumi.Pulumi;
* import com.pulumi.core.Output;
* import com.pulumi.alicloud.rds.RdsFunctions;
* import com.pulumi.alicloud.rds.inputs.GetZonesArgs;
* import com.pulumi.alicloud.vpc.Network;
* import com.pulumi.alicloud.vpc.NetworkArgs;
* import com.pulumi.alicloud.vpc.Switch;
* import com.pulumi.alicloud.vpc.SwitchArgs;
* import com.pulumi.alicloud.rds.Instance;
* import com.pulumi.alicloud.rds.InstanceArgs;
* import com.pulumi.alicloud.rds.Database;
* import com.pulumi.alicloud.rds.DatabaseArgs;
* import java.util.List;
* import java.util.ArrayList;
* import java.util.Map;
* import java.io.File;
* import java.nio.file.Files;
* import java.nio.file.Paths;
* public class App {
* public static void main(String[] args) {
* Pulumi.run(App::stack);
* }
* public static void stack(Context ctx) {
* final var config = ctx.config();
* final var name = config.get("name").orElse("tf-example");
* final var default = RdsFunctions.getZones(GetZonesArgs.builder()
* .engine("MySQL")
* .engineVersion("5.6")
* .build());
* var defaultNetwork = new Network("defaultNetwork", NetworkArgs.builder()
* .vpcName(name)
* .cidrBlock("172.16.0.0/16")
* .build());
* var defaultSwitch = new Switch("defaultSwitch", SwitchArgs.builder()
* .vpcId(defaultNetwork.id())
* .cidrBlock("172.16.0.0/24")
* .zoneId(default_.zones()[0].id())
* .vswitchName(name)
* .build());
* var defaultInstance = new Instance("defaultInstance", InstanceArgs.builder()
* .engine("MySQL")
* .engineVersion("5.6")
* .instanceType("rds.mysql.s1.small")
* .instanceStorage("10")
* .vswitchId(defaultSwitch.id())
* .instanceName(name)
* .build());
* var defaultDatabase = new Database("defaultDatabase", DatabaseArgs.builder()
* .instanceId(defaultInstance.id())
* .name(name)
* .build());
* }
* }
* ```
* ```yaml
* configuration:
* name:
* type: string
* default: tf-example
* resources:
* defaultNetwork:
* type: alicloud:vpc:Network
* name: default
* properties:
* vpcName: ${name}
* cidrBlock: 172.16.0.0/16
* defaultSwitch:
* type: alicloud:vpc:Switch
* name: default
* properties:
* vpcId: ${defaultNetwork.id}
* cidrBlock: 172.16.0.0/24
* zoneId: ${default.zones[0].id}
* vswitchName: ${name}
* defaultInstance:
* type: alicloud:rds:Instance
* name: default
* properties:
* engine: MySQL
* engineVersion: '5.6'
* instanceType: rds.mysql.s1.small
* instanceStorage: '10'
* vswitchId: ${defaultSwitch.id}
* instanceName: ${name}
* defaultDatabase:
* type: alicloud:rds:Database
* name: default
* properties:
* instanceId: ${defaultInstance.id}
* name: ${name}
* variables:
* default:
* fn::invoke:
* Function: alicloud:rds:getZones
* Arguments:
* engine: MySQL
* engineVersion: '5.6'
* ```
*
* ## Import
* RDS database can be imported using the id, e.g.
* ```sh
* $ pulumi import alicloud:rds/database:Database example "rm-12345:tf_database"
* ```
* @property characterSet Character set. The value range is limited to the following:
* - MySQL: [ utf8, gbk, latin1, utf8mb4 ] \(`utf8mb4` only supports versions 5.5 and 5.6\).
* - SQLServer: [ Chinese_PRC_CI_AS, Chinese_PRC_CS_AS, SQL_Latin1_General_CP1_CI_AS, SQL_Latin1_General_CP1_CS_AS, Chinese_PRC_BIN ]
* - PostgreSQL: Valid values for PostgreSQL databases: a value in the `character set,,` format. Example: `UTF8,C,en_US.utf8`.
* > - Valid values for the character set : [ KOI8U, UTF8, WIN866, WIN874, WIN1250, WIN1251, WIN1252, WIN1253, WIN1254, WIN1255, WIN1256, WIN1257, WIN1258, EUC_CN, EUC_KR, EUC_TW, EUC_JP, EUC_JIS_2004, KOI8R, MULE_INTERNAL, LATIN1, LATIN2, LATIN3, LATIN4, LATIN5, LATIN6, LATIN7, LATIN8, LATIN9, LATIN10, ISO_8859_5, ISO_8859_6, ISO_8859_7, ISO_8859_8, SQL_ASCII ]
* > - Valid values for the Collate field: You can execute the `SELECT DISTINCT collname FROM pg_collation;` statement to obtain the field value. The default value is `C`.
* > - Valid values for the Ctype field: You can execute the `SELECT DISTINCT collctype FROM pg_collation;` statement to obtain the field value. The default value is `en_US.utf8`.
* - MariaDB: [ utf8, gbk, latin1, utf8mb4 ]
* More details refer to [API Docs](https://www.alibabacloud.com/help/zh/doc-detail/26258.htm)
* @property description Database description. It cannot begin with https://. It must start with a Chinese character or English letter. It can include Chinese and English characters, underlines (_), hyphens (-), and numbers. The length may be 2-256 characters.
* > **NOTE:** The value of "name" or "character_set" does not support modification.
* @property instanceId The Id of instance that can run database.
* @property name The name of the database.
* * > **NOTE:**
* The name must be 2 to 64 characters in length.
* The name must start with a lowercase letter and end with a lowercase letter or digit.
* The name can contain lowercase letters, digits, underscores (_), and hyphens (-).
* The name must be unique within the instance.
* For more information about invalid characters, see [Forbidden keywords table](https://help.aliyun.com/zh/rds/developer-reference/forbidden-keywords?spm=api-workbench.api_explorer.0.0.20e15f16d1z52p).
*/
public data class DatabaseArgs(
public val characterSet: Output? = null,
public val description: Output? = null,
public val instanceId: Output? = null,
public val name: Output? = null,
) : ConvertibleToJava {
override fun toJava(): com.pulumi.alicloud.rds.DatabaseArgs =
com.pulumi.alicloud.rds.DatabaseArgs.builder()
.characterSet(characterSet?.applyValue({ args0 -> args0 }))
.description(description?.applyValue({ args0 -> args0 }))
.instanceId(instanceId?.applyValue({ args0 -> args0 }))
.name(name?.applyValue({ args0 -> args0 })).build()
}
/**
* Builder for [DatabaseArgs].
*/
@PulumiTagMarker
public class DatabaseArgsBuilder internal constructor() {
private var characterSet: Output? = null
private var description: Output? = null
private var instanceId: Output? = null
private var name: Output? = null
/**
* @param value Character set. The value range is limited to the following:
* - MySQL: [ utf8, gbk, latin1, utf8mb4 ] \(`utf8mb4` only supports versions 5.5 and 5.6\).
* - SQLServer: [ Chinese_PRC_CI_AS, Chinese_PRC_CS_AS, SQL_Latin1_General_CP1_CI_AS, SQL_Latin1_General_CP1_CS_AS, Chinese_PRC_BIN ]
* - PostgreSQL: Valid values for PostgreSQL databases: a value in the `character set,,` format. Example: `UTF8,C,en_US.utf8`.
* > - Valid values for the character set : [ KOI8U, UTF8, WIN866, WIN874, WIN1250, WIN1251, WIN1252, WIN1253, WIN1254, WIN1255, WIN1256, WIN1257, WIN1258, EUC_CN, EUC_KR, EUC_TW, EUC_JP, EUC_JIS_2004, KOI8R, MULE_INTERNAL, LATIN1, LATIN2, LATIN3, LATIN4, LATIN5, LATIN6, LATIN7, LATIN8, LATIN9, LATIN10, ISO_8859_5, ISO_8859_6, ISO_8859_7, ISO_8859_8, SQL_ASCII ]
* > - Valid values for the Collate field: You can execute the `SELECT DISTINCT collname FROM pg_collation;` statement to obtain the field value. The default value is `C`.
* > - Valid values for the Ctype field: You can execute the `SELECT DISTINCT collctype FROM pg_collation;` statement to obtain the field value. The default value is `en_US.utf8`.
* - MariaDB: [ utf8, gbk, latin1, utf8mb4 ]
* More details refer to [API Docs](https://www.alibabacloud.com/help/zh/doc-detail/26258.htm)
*/
@JvmName("pufixytmkqymkrmr")
public suspend fun characterSet(`value`: Output) {
this.characterSet = value
}
/**
* @param value Database description. It cannot begin with https://. It must start with a Chinese character or English letter. It can include Chinese and English characters, underlines (_), hyphens (-), and numbers. The length may be 2-256 characters.
* > **NOTE:** The value of "name" or "character_set" does not support modification.
*/
@JvmName("gjsnymuiqkilokcg")
public suspend fun description(`value`: Output) {
this.description = value
}
/**
* @param value The Id of instance that can run database.
*/
@JvmName("knksntxbengvqgbl")
public suspend fun instanceId(`value`: Output) {
this.instanceId = value
}
/**
* @param value The name of the database.
* * > **NOTE:**
* The name must be 2 to 64 characters in length.
* The name must start with a lowercase letter and end with a lowercase letter or digit.
* The name can contain lowercase letters, digits, underscores (_), and hyphens (-).
* The name must be unique within the instance.
* For more information about invalid characters, see [Forbidden keywords table](https://help.aliyun.com/zh/rds/developer-reference/forbidden-keywords?spm=api-workbench.api_explorer.0.0.20e15f16d1z52p).
*/
@JvmName("rvunmurmmmsiyuph")
public suspend fun name(`value`: Output) {
this.name = value
}
/**
* @param value Character set. The value range is limited to the following:
* - MySQL: [ utf8, gbk, latin1, utf8mb4 ] \(`utf8mb4` only supports versions 5.5 and 5.6\).
* - SQLServer: [ Chinese_PRC_CI_AS, Chinese_PRC_CS_AS, SQL_Latin1_General_CP1_CI_AS, SQL_Latin1_General_CP1_CS_AS, Chinese_PRC_BIN ]
* - PostgreSQL: Valid values for PostgreSQL databases: a value in the `character set,,` format. Example: `UTF8,C,en_US.utf8`.
* > - Valid values for the character set : [ KOI8U, UTF8, WIN866, WIN874, WIN1250, WIN1251, WIN1252, WIN1253, WIN1254, WIN1255, WIN1256, WIN1257, WIN1258, EUC_CN, EUC_KR, EUC_TW, EUC_JP, EUC_JIS_2004, KOI8R, MULE_INTERNAL, LATIN1, LATIN2, LATIN3, LATIN4, LATIN5, LATIN6, LATIN7, LATIN8, LATIN9, LATIN10, ISO_8859_5, ISO_8859_6, ISO_8859_7, ISO_8859_8, SQL_ASCII ]
* > - Valid values for the Collate field: You can execute the `SELECT DISTINCT collname FROM pg_collation;` statement to obtain the field value. The default value is `C`.
* > - Valid values for the Ctype field: You can execute the `SELECT DISTINCT collctype FROM pg_collation;` statement to obtain the field value. The default value is `en_US.utf8`.
* - MariaDB: [ utf8, gbk, latin1, utf8mb4 ]
* More details refer to [API Docs](https://www.alibabacloud.com/help/zh/doc-detail/26258.htm)
*/
@JvmName("ucwndtyocirnamgs")
public suspend fun characterSet(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.characterSet = mapped
}
/**
* @param value Database description. It cannot begin with https://. It must start with a Chinese character or English letter. It can include Chinese and English characters, underlines (_), hyphens (-), and numbers. The length may be 2-256 characters.
* > **NOTE:** The value of "name" or "character_set" does not support modification.
*/
@JvmName("sqxdtmefxdndnmei")
public suspend fun description(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.description = mapped
}
/**
* @param value The Id of instance that can run database.
*/
@JvmName("puuopvuttfmptveb")
public suspend fun instanceId(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.instanceId = mapped
}
/**
* @param value The name of the database.
* * > **NOTE:**
* The name must be 2 to 64 characters in length.
* The name must start with a lowercase letter and end with a lowercase letter or digit.
* The name can contain lowercase letters, digits, underscores (_), and hyphens (-).
* The name must be unique within the instance.
* For more information about invalid characters, see [Forbidden keywords table](https://help.aliyun.com/zh/rds/developer-reference/forbidden-keywords?spm=api-workbench.api_explorer.0.0.20e15f16d1z52p).
*/
@JvmName("vqkakrnlxovuhagp")
public suspend fun name(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.name = mapped
}
internal fun build(): DatabaseArgs = DatabaseArgs(
characterSet = characterSet,
description = description,
instanceId = instanceId,
name = name,
)
}