All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.googlenative.bigtableadmin.v2.kotlin.TableArgs.kt Maven / Gradle / Ivy

@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.googlenative.bigtableadmin.v2.kotlin

import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.googlenative.bigtableadmin.v2.TableArgs.builder
import com.pulumi.googlenative.bigtableadmin.v2.kotlin.enums.TableGranularity
import com.pulumi.googlenative.bigtableadmin.v2.kotlin.inputs.SplitArgs
import com.pulumi.googlenative.bigtableadmin.v2.kotlin.inputs.SplitArgsBuilder
import com.pulumi.googlenative.bigtableadmin.v2.kotlin.inputs.TableStatsArgs
import com.pulumi.googlenative.bigtableadmin.v2.kotlin.inputs.TableStatsArgsBuilder
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Boolean
import kotlin.Pair
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.collections.Map
import kotlin.jvm.JvmName

/**
 * Creates a new table in the specified instance. The table can be created with a full set of initial column families, specified in the request.
 * @property columnFamilies The column families configured for this table, mapped by column family ID. Views: `SCHEMA_VIEW`, `STATS_VIEW`, `FULL`
 * @property deletionProtection Set to true to make the table protected against data loss. i.e. deleting the following resources through Admin APIs are prohibited: * The table. * The column families in the table. * The instance containing the table. Note one can still delete the data stored in the table through Data APIs.
 * @property granularity Immutable. The granularity (i.e. `MILLIS`) at which timestamps are stored in this table. Timestamps not matching the granularity will be rejected. If unspecified at creation time, the value will be set to `MILLIS`. Views: `SCHEMA_VIEW`, `FULL`.
 * @property initialSplits The optional list of row keys that will be used to initially split the table into several tablets (tablets are similar to HBase regions). Given two split keys, `s1` and `s2`, three tablets will be created, spanning the key ranges: `[, s1), [s1, s2), [s2, )`. Example: * Row keys := `["a", "apple", "custom", "customer_1", "customer_2",` `"other", "zz"]` * initial_split_keys := `["apple", "customer_1", "customer_2", "other"]` * Key assignment: - Tablet 1 `[, apple) => {"a"}.` - Tablet 2 `[apple, customer_1) => {"apple", "custom"}.` - Tablet 3 `[customer_1, customer_2) => {"customer_1"}.` - Tablet 4 `[customer_2, other) => {"customer_2"}.` - Tablet 5 `[other, ) => {"other", "zz"}.`
 * @property instanceId
 * @property name The unique name of the table. Values are of the form `projects/{project}/instances/{instance}/tables/_a-zA-Z0-9*`. Views: `NAME_ONLY`, `SCHEMA_VIEW`, `REPLICATION_VIEW`, `STATS_VIEW`, `FULL`
 * @property project
 * @property stats Only available with STATS_VIEW, this includes summary statistics about the entire table contents. For statistics about a specific column family, see ColumnFamilyStats in the mapped ColumnFamily collection above.
 * @property tableId The name by which the new table should be referred to within the parent instance, e.g., `foobar` rather than `{parent}/tables/foobar`. Maximum 50 characters.
 */
public data class TableArgs(
    public val columnFamilies: Output>? = null,
    public val deletionProtection: Output? = null,
    public val granularity: Output? = null,
    public val initialSplits: Output>? = null,
    public val instanceId: Output? = null,
    public val name: Output? = null,
    public val project: Output? = null,
    public val stats: Output? = null,
    public val tableId: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.googlenative.bigtableadmin.v2.TableArgs =
        com.pulumi.googlenative.bigtableadmin.v2.TableArgs.builder()
            .columnFamilies(
                columnFamilies?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.key.to(args0.value)
                    }).toMap()
                }),
            )
            .deletionProtection(deletionProtection?.applyValue({ args0 -> args0 }))
            .granularity(granularity?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .initialSplits(
                initialSplits?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .instanceId(instanceId?.applyValue({ args0 -> args0 }))
            .name(name?.applyValue({ args0 -> args0 }))
            .project(project?.applyValue({ args0 -> args0 }))
            .stats(stats?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .tableId(tableId?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [TableArgs].
 */
@PulumiTagMarker
public class TableArgsBuilder internal constructor() {
    private var columnFamilies: Output>? = null

    private var deletionProtection: Output? = null

    private var granularity: Output? = null

    private var initialSplits: Output>? = null

    private var instanceId: Output? = null

    private var name: Output? = null

    private var project: Output? = null

    private var stats: Output? = null

    private var tableId: Output? = null

    /**
     * @param value The column families configured for this table, mapped by column family ID. Views: `SCHEMA_VIEW`, `STATS_VIEW`, `FULL`
     */
    @JvmName("vuhsdxlwpjvoxlkb")
    public suspend fun columnFamilies(`value`: Output>) {
        this.columnFamilies = value
    }

    /**
     * @param value Set to true to make the table protected against data loss. i.e. deleting the following resources through Admin APIs are prohibited: * The table. * The column families in the table. * The instance containing the table. Note one can still delete the data stored in the table through Data APIs.
     */
    @JvmName("bylxrysckcfipksh")
    public suspend fun deletionProtection(`value`: Output) {
        this.deletionProtection = value
    }

    /**
     * @param value Immutable. The granularity (i.e. `MILLIS`) at which timestamps are stored in this table. Timestamps not matching the granularity will be rejected. If unspecified at creation time, the value will be set to `MILLIS`. Views: `SCHEMA_VIEW`, `FULL`.
     */
    @JvmName("dgdpfbjmshdxrkat")
    public suspend fun granularity(`value`: Output) {
        this.granularity = value
    }

    /**
     * @param value The optional list of row keys that will be used to initially split the table into several tablets (tablets are similar to HBase regions). Given two split keys, `s1` and `s2`, three tablets will be created, spanning the key ranges: `[, s1), [s1, s2), [s2, )`. Example: * Row keys := `["a", "apple", "custom", "customer_1", "customer_2",` `"other", "zz"]` * initial_split_keys := `["apple", "customer_1", "customer_2", "other"]` * Key assignment: - Tablet 1 `[, apple) => {"a"}.` - Tablet 2 `[apple, customer_1) => {"apple", "custom"}.` - Tablet 3 `[customer_1, customer_2) => {"customer_1"}.` - Tablet 4 `[customer_2, other) => {"customer_2"}.` - Tablet 5 `[other, ) => {"other", "zz"}.`
     */
    @JvmName("elkmhknjfkyqtkoo")
    public suspend fun initialSplits(`value`: Output>) {
        this.initialSplits = value
    }

    @JvmName("qslpjylqrsqfpenl")
    public suspend fun initialSplits(vararg values: Output) {
        this.initialSplits = Output.all(values.asList())
    }

    /**
     * @param values The optional list of row keys that will be used to initially split the table into several tablets (tablets are similar to HBase regions). Given two split keys, `s1` and `s2`, three tablets will be created, spanning the key ranges: `[, s1), [s1, s2), [s2, )`. Example: * Row keys := `["a", "apple", "custom", "customer_1", "customer_2",` `"other", "zz"]` * initial_split_keys := `["apple", "customer_1", "customer_2", "other"]` * Key assignment: - Tablet 1 `[, apple) => {"a"}.` - Tablet 2 `[apple, customer_1) => {"apple", "custom"}.` - Tablet 3 `[customer_1, customer_2) => {"customer_1"}.` - Tablet 4 `[customer_2, other) => {"customer_2"}.` - Tablet 5 `[other, ) => {"other", "zz"}.`
     */
    @JvmName("udmnfmnkfadqljuw")
    public suspend fun initialSplits(values: List>) {
        this.initialSplits = Output.all(values)
    }

    /**
     * @param value
     */
    @JvmName("qenftjsogaprubvo")
    public suspend fun instanceId(`value`: Output) {
        this.instanceId = value
    }

    /**
     * @param value The unique name of the table. Values are of the form `projects/{project}/instances/{instance}/tables/_a-zA-Z0-9*`. Views: `NAME_ONLY`, `SCHEMA_VIEW`, `REPLICATION_VIEW`, `STATS_VIEW`, `FULL`
     */
    @JvmName("odvyouoqrxyqoflg")
    public suspend fun name(`value`: Output) {
        this.name = value
    }

    /**
     * @param value
     */
    @JvmName("epghprccmsfbslbp")
    public suspend fun project(`value`: Output) {
        this.project = value
    }

    /**
     * @param value Only available with STATS_VIEW, this includes summary statistics about the entire table contents. For statistics about a specific column family, see ColumnFamilyStats in the mapped ColumnFamily collection above.
     */
    @JvmName("kypamvpalnfpmaso")
    public suspend fun stats(`value`: Output) {
        this.stats = value
    }

    /**
     * @param value The name by which the new table should be referred to within the parent instance, e.g., `foobar` rather than `{parent}/tables/foobar`. Maximum 50 characters.
     */
    @JvmName("rbtensyicwsqjtxt")
    public suspend fun tableId(`value`: Output) {
        this.tableId = value
    }

    /**
     * @param value The column families configured for this table, mapped by column family ID. Views: `SCHEMA_VIEW`, `STATS_VIEW`, `FULL`
     */
    @JvmName("wnhqqwxcpqadlfih")
    public suspend fun columnFamilies(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.columnFamilies = mapped
    }

    /**
     * @param values The column families configured for this table, mapped by column family ID. Views: `SCHEMA_VIEW`, `STATS_VIEW`, `FULL`
     */
    @JvmName("byncyrybpvgbuixi")
    public fun columnFamilies(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.columnFamilies = mapped
    }

    /**
     * @param value Set to true to make the table protected against data loss. i.e. deleting the following resources through Admin APIs are prohibited: * The table. * The column families in the table. * The instance containing the table. Note one can still delete the data stored in the table through Data APIs.
     */
    @JvmName("pjlgjjalaoermydd")
    public suspend fun deletionProtection(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.deletionProtection = mapped
    }

    /**
     * @param value Immutable. The granularity (i.e. `MILLIS`) at which timestamps are stored in this table. Timestamps not matching the granularity will be rejected. If unspecified at creation time, the value will be set to `MILLIS`. Views: `SCHEMA_VIEW`, `FULL`.
     */
    @JvmName("kbnevkqfcjkbvaim")
    public suspend fun granularity(`value`: TableGranularity?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.granularity = mapped
    }

    /**
     * @param value The optional list of row keys that will be used to initially split the table into several tablets (tablets are similar to HBase regions). Given two split keys, `s1` and `s2`, three tablets will be created, spanning the key ranges: `[, s1), [s1, s2), [s2, )`. Example: * Row keys := `["a", "apple", "custom", "customer_1", "customer_2",` `"other", "zz"]` * initial_split_keys := `["apple", "customer_1", "customer_2", "other"]` * Key assignment: - Tablet 1 `[, apple) => {"a"}.` - Tablet 2 `[apple, customer_1) => {"apple", "custom"}.` - Tablet 3 `[customer_1, customer_2) => {"customer_1"}.` - Tablet 4 `[customer_2, other) => {"customer_2"}.` - Tablet 5 `[other, ) => {"other", "zz"}.`
     */
    @JvmName("wwkncpqtdwxobpjm")
    public suspend fun initialSplits(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.initialSplits = mapped
    }

    /**
     * @param argument The optional list of row keys that will be used to initially split the table into several tablets (tablets are similar to HBase regions). Given two split keys, `s1` and `s2`, three tablets will be created, spanning the key ranges: `[, s1), [s1, s2), [s2, )`. Example: * Row keys := `["a", "apple", "custom", "customer_1", "customer_2",` `"other", "zz"]` * initial_split_keys := `["apple", "customer_1", "customer_2", "other"]` * Key assignment: - Tablet 1 `[, apple) => {"a"}.` - Tablet 2 `[apple, customer_1) => {"apple", "custom"}.` - Tablet 3 `[customer_1, customer_2) => {"customer_1"}.` - Tablet 4 `[customer_2, other) => {"customer_2"}.` - Tablet 5 `[other, ) => {"other", "zz"}.`
     */
    @JvmName("qnkdsnegmpqrocmq")
    public suspend fun initialSplits(argument: List Unit>) {
        val toBeMapped = argument.toList().map { SplitArgsBuilder().applySuspend { it() }.build() }
        val mapped = of(toBeMapped)
        this.initialSplits = mapped
    }

    /**
     * @param argument The optional list of row keys that will be used to initially split the table into several tablets (tablets are similar to HBase regions). Given two split keys, `s1` and `s2`, three tablets will be created, spanning the key ranges: `[, s1), [s1, s2), [s2, )`. Example: * Row keys := `["a", "apple", "custom", "customer_1", "customer_2",` `"other", "zz"]` * initial_split_keys := `["apple", "customer_1", "customer_2", "other"]` * Key assignment: - Tablet 1 `[, apple) => {"a"}.` - Tablet 2 `[apple, customer_1) => {"apple", "custom"}.` - Tablet 3 `[customer_1, customer_2) => {"customer_1"}.` - Tablet 4 `[customer_2, other) => {"customer_2"}.` - Tablet 5 `[other, ) => {"other", "zz"}.`
     */
    @JvmName("nhulthoorawldmoa")
    public suspend fun initialSplits(vararg argument: suspend SplitArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map { SplitArgsBuilder().applySuspend { it() }.build() }
        val mapped = of(toBeMapped)
        this.initialSplits = mapped
    }

    /**
     * @param argument The optional list of row keys that will be used to initially split the table into several tablets (tablets are similar to HBase regions). Given two split keys, `s1` and `s2`, three tablets will be created, spanning the key ranges: `[, s1), [s1, s2), [s2, )`. Example: * Row keys := `["a", "apple", "custom", "customer_1", "customer_2",` `"other", "zz"]` * initial_split_keys := `["apple", "customer_1", "customer_2", "other"]` * Key assignment: - Tablet 1 `[, apple) => {"a"}.` - Tablet 2 `[apple, customer_1) => {"apple", "custom"}.` - Tablet 3 `[customer_1, customer_2) => {"customer_1"}.` - Tablet 4 `[customer_2, other) => {"customer_2"}.` - Tablet 5 `[other, ) => {"other", "zz"}.`
     */
    @JvmName("drprpprelovvkgji")
    public suspend fun initialSplits(argument: suspend SplitArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(SplitArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.initialSplits = mapped
    }

    /**
     * @param values The optional list of row keys that will be used to initially split the table into several tablets (tablets are similar to HBase regions). Given two split keys, `s1` and `s2`, three tablets will be created, spanning the key ranges: `[, s1), [s1, s2), [s2, )`. Example: * Row keys := `["a", "apple", "custom", "customer_1", "customer_2",` `"other", "zz"]` * initial_split_keys := `["apple", "customer_1", "customer_2", "other"]` * Key assignment: - Tablet 1 `[, apple) => {"a"}.` - Tablet 2 `[apple, customer_1) => {"apple", "custom"}.` - Tablet 3 `[customer_1, customer_2) => {"customer_1"}.` - Tablet 4 `[customer_2, other) => {"customer_2"}.` - Tablet 5 `[other, ) => {"other", "zz"}.`
     */
    @JvmName("bkrwwvptykaxydst")
    public suspend fun initialSplits(vararg values: SplitArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.initialSplits = mapped
    }

    /**
     * @param value
     */
    @JvmName("iqbtetdrkvghmcde")
    public suspend fun instanceId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.instanceId = mapped
    }

    /**
     * @param value The unique name of the table. Values are of the form `projects/{project}/instances/{instance}/tables/_a-zA-Z0-9*`. Views: `NAME_ONLY`, `SCHEMA_VIEW`, `REPLICATION_VIEW`, `STATS_VIEW`, `FULL`
     */
    @JvmName("djaoraclxxlxgbet")
    public suspend fun name(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.name = mapped
    }

    /**
     * @param value
     */
    @JvmName("liabacblcqyxbado")
    public suspend fun project(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.project = mapped
    }

    /**
     * @param value Only available with STATS_VIEW, this includes summary statistics about the entire table contents. For statistics about a specific column family, see ColumnFamilyStats in the mapped ColumnFamily collection above.
     */
    @JvmName("adaudvhwtttbfvvh")
    public suspend fun stats(`value`: TableStatsArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.stats = mapped
    }

    /**
     * @param argument Only available with STATS_VIEW, this includes summary statistics about the entire table contents. For statistics about a specific column family, see ColumnFamilyStats in the mapped ColumnFamily collection above.
     */
    @JvmName("lnoxnppcfvjsugho")
    public suspend fun stats(argument: suspend TableStatsArgsBuilder.() -> Unit) {
        val toBeMapped = TableStatsArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.stats = mapped
    }

    /**
     * @param value The name by which the new table should be referred to within the parent instance, e.g., `foobar` rather than `{parent}/tables/foobar`. Maximum 50 characters.
     */
    @JvmName("aemxdnkkquxhbwrp")
    public suspend fun tableId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tableId = mapped
    }

    internal fun build(): TableArgs = TableArgs(
        columnFamilies = columnFamilies,
        deletionProtection = deletionProtection,
        granularity = granularity,
        initialSplits = initialSplits,
        instanceId = instanceId,
        name = name,
        project = project,
        stats = stats,
        tableId = tableId,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy