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

com.pulumi.awsnative.resourcegroups.kotlin.GroupArgs.kt Maven / Gradle / Ivy

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

package com.pulumi.awsnative.resourcegroups.kotlin

import com.pulumi.awsnative.kotlin.inputs.TagArgs
import com.pulumi.awsnative.kotlin.inputs.TagArgsBuilder
import com.pulumi.awsnative.resourcegroups.GroupArgs.builder
import com.pulumi.awsnative.resourcegroups.kotlin.inputs.GroupConfigurationItemArgs
import com.pulumi.awsnative.resourcegroups.kotlin.inputs.GroupConfigurationItemArgsBuilder
import com.pulumi.awsnative.resourcegroups.kotlin.inputs.GroupResourceQueryArgs
import com.pulumi.awsnative.resourcegroups.kotlin.inputs.GroupResourceQueryArgsBuilder
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 * Schema for ResourceGroups::Group
 * @property configuration The service configuration currently associated with the resource group and in effect for the members of the resource group. A `Configuration` consists of one or more `ConfigurationItem` entries. For information about service configurations for resource groups and how to construct them, see [Service configurations for resource groups](https://docs.aws.amazon.com//ARG/latest/APIReference/about-slg.html) in the *AWS Resource Groups User Guide* .
 * > You can include either a `Configuration` or a `ResourceQuery` , but not both.
 * @property description The description of the resource group
 * @property name The name of the resource group
 * @property resourceQuery The resource query structure that is used to dynamically determine which AWS resources are members of the associated resource group. For more information about queries and how to construct them, see [Build queries and groups in AWS Resource Groups](https://docs.aws.amazon.com//ARG/latest/userguide/gettingstarted-query.html) in the *AWS Resource Groups User Guide*
 * > - You can include either a `ResourceQuery` or a `Configuration` , but not both.
 * > - You can specify the group's membership either by using a `ResourceQuery` or by using a list of `Resources` , but not both.
 * @property resources A list of the Amazon Resource Names (ARNs) of AWS resources that you want to add to the specified group.
 * > - You can specify the group membership either by using a list of `Resources` or by using a `ResourceQuery` , but not both.
 * > - You can include a `Resources` property only if you also specify a `Configuration` property.
 * @property tags The tag key and value pairs that are attached to the resource group.
 */
public data class GroupArgs(
    public val configuration: Output>? = null,
    public val description: Output? = null,
    public val name: Output? = null,
    public val resourceQuery: Output? = null,
    public val resources: Output>? = null,
    public val tags: Output>? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.awsnative.resourcegroups.GroupArgs =
        com.pulumi.awsnative.resourcegroups.GroupArgs.builder()
            .configuration(
                configuration?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .description(description?.applyValue({ args0 -> args0 }))
            .name(name?.applyValue({ args0 -> args0 }))
            .resourceQuery(resourceQuery?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .resources(resources?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .tags(
                tags?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            ).build()
}

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

    private var description: Output? = null

    private var name: Output? = null

    private var resourceQuery: Output? = null

    private var resources: Output>? = null

    private var tags: Output>? = null

    /**
     * @param value The service configuration currently associated with the resource group and in effect for the members of the resource group. A `Configuration` consists of one or more `ConfigurationItem` entries. For information about service configurations for resource groups and how to construct them, see [Service configurations for resource groups](https://docs.aws.amazon.com//ARG/latest/APIReference/about-slg.html) in the *AWS Resource Groups User Guide* .
     * > You can include either a `Configuration` or a `ResourceQuery` , but not both.
     */
    @JvmName("twudjunylmrqajue")
    public suspend fun configuration(`value`: Output>) {
        this.configuration = value
    }

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

    /**
     * @param values The service configuration currently associated with the resource group and in effect for the members of the resource group. A `Configuration` consists of one or more `ConfigurationItem` entries. For information about service configurations for resource groups and how to construct them, see [Service configurations for resource groups](https://docs.aws.amazon.com//ARG/latest/APIReference/about-slg.html) in the *AWS Resource Groups User Guide* .
     * > You can include either a `Configuration` or a `ResourceQuery` , but not both.
     */
    @JvmName("byicbsvcetqowyok")
    public suspend fun configuration(values: List>) {
        this.configuration = Output.all(values)
    }

    /**
     * @param value The description of the resource group
     */
    @JvmName("axvxiqqtldkiyqql")
    public suspend fun description(`value`: Output) {
        this.description = value
    }

    /**
     * @param value The name of the resource group
     */
    @JvmName("ayytjssvmcgniugj")
    public suspend fun name(`value`: Output) {
        this.name = value
    }

    /**
     * @param value The resource query structure that is used to dynamically determine which AWS resources are members of the associated resource group. For more information about queries and how to construct them, see [Build queries and groups in AWS Resource Groups](https://docs.aws.amazon.com//ARG/latest/userguide/gettingstarted-query.html) in the *AWS Resource Groups User Guide*
     * > - You can include either a `ResourceQuery` or a `Configuration` , but not both.
     * > - You can specify the group's membership either by using a `ResourceQuery` or by using a list of `Resources` , but not both.
     */
    @JvmName("fujqdyddlwstpnql")
    public suspend fun resourceQuery(`value`: Output) {
        this.resourceQuery = value
    }

    /**
     * @param value A list of the Amazon Resource Names (ARNs) of AWS resources that you want to add to the specified group.
     * > - You can specify the group membership either by using a list of `Resources` or by using a `ResourceQuery` , but not both.
     * > - You can include a `Resources` property only if you also specify a `Configuration` property.
     */
    @JvmName("toxroekxdknyiluj")
    public suspend fun resources(`value`: Output>) {
        this.resources = value
    }

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

    /**
     * @param values A list of the Amazon Resource Names (ARNs) of AWS resources that you want to add to the specified group.
     * > - You can specify the group membership either by using a list of `Resources` or by using a `ResourceQuery` , but not both.
     * > - You can include a `Resources` property only if you also specify a `Configuration` property.
     */
    @JvmName("isvjnvxogufoxslf")
    public suspend fun resources(values: List>) {
        this.resources = Output.all(values)
    }

    /**
     * @param value The tag key and value pairs that are attached to the resource group.
     */
    @JvmName("qqitdrveqbagkpky")
    public suspend fun tags(`value`: Output>) {
        this.tags = value
    }

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

    /**
     * @param values The tag key and value pairs that are attached to the resource group.
     */
    @JvmName("oegbdwgrpgrxscsv")
    public suspend fun tags(values: List>) {
        this.tags = Output.all(values)
    }

    /**
     * @param value The service configuration currently associated with the resource group and in effect for the members of the resource group. A `Configuration` consists of one or more `ConfigurationItem` entries. For information about service configurations for resource groups and how to construct them, see [Service configurations for resource groups](https://docs.aws.amazon.com//ARG/latest/APIReference/about-slg.html) in the *AWS Resource Groups User Guide* .
     * > You can include either a `Configuration` or a `ResourceQuery` , but not both.
     */
    @JvmName("blxmuxwwjifnkmry")
    public suspend fun configuration(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.configuration = mapped
    }

    /**
     * @param argument The service configuration currently associated with the resource group and in effect for the members of the resource group. A `Configuration` consists of one or more `ConfigurationItem` entries. For information about service configurations for resource groups and how to construct them, see [Service configurations for resource groups](https://docs.aws.amazon.com//ARG/latest/APIReference/about-slg.html) in the *AWS Resource Groups User Guide* .
     * > You can include either a `Configuration` or a `ResourceQuery` , but not both.
     */
    @JvmName("qijykyfryworgrah")
    public suspend fun configuration(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            GroupConfigurationItemArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.configuration = mapped
    }

    /**
     * @param argument The service configuration currently associated with the resource group and in effect for the members of the resource group. A `Configuration` consists of one or more `ConfigurationItem` entries. For information about service configurations for resource groups and how to construct them, see [Service configurations for resource groups](https://docs.aws.amazon.com//ARG/latest/APIReference/about-slg.html) in the *AWS Resource Groups User Guide* .
     * > You can include either a `Configuration` or a `ResourceQuery` , but not both.
     */
    @JvmName("phgyflpduetgeugc")
    public suspend fun configuration(vararg argument: suspend GroupConfigurationItemArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            GroupConfigurationItemArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.configuration = mapped
    }

    /**
     * @param argument The service configuration currently associated with the resource group and in effect for the members of the resource group. A `Configuration` consists of one or more `ConfigurationItem` entries. For information about service configurations for resource groups and how to construct them, see [Service configurations for resource groups](https://docs.aws.amazon.com//ARG/latest/APIReference/about-slg.html) in the *AWS Resource Groups User Guide* .
     * > You can include either a `Configuration` or a `ResourceQuery` , but not both.
     */
    @JvmName("ireftoocfpkpjopb")
    public suspend fun configuration(argument: suspend GroupConfigurationItemArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(GroupConfigurationItemArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.configuration = mapped
    }

    /**
     * @param values The service configuration currently associated with the resource group and in effect for the members of the resource group. A `Configuration` consists of one or more `ConfigurationItem` entries. For information about service configurations for resource groups and how to construct them, see [Service configurations for resource groups](https://docs.aws.amazon.com//ARG/latest/APIReference/about-slg.html) in the *AWS Resource Groups User Guide* .
     * > You can include either a `Configuration` or a `ResourceQuery` , but not both.
     */
    @JvmName("wihtoofnkjfpwlid")
    public suspend fun configuration(vararg values: GroupConfigurationItemArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.configuration = mapped
    }

    /**
     * @param value The description of the resource group
     */
    @JvmName("xfusffmaedsefumh")
    public suspend fun description(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.description = mapped
    }

    /**
     * @param value The name of the resource group
     */
    @JvmName("mfwjfsseccmevoyj")
    public suspend fun name(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.name = mapped
    }

    /**
     * @param value The resource query structure that is used to dynamically determine which AWS resources are members of the associated resource group. For more information about queries and how to construct them, see [Build queries and groups in AWS Resource Groups](https://docs.aws.amazon.com//ARG/latest/userguide/gettingstarted-query.html) in the *AWS Resource Groups User Guide*
     * > - You can include either a `ResourceQuery` or a `Configuration` , but not both.
     * > - You can specify the group's membership either by using a `ResourceQuery` or by using a list of `Resources` , but not both.
     */
    @JvmName("fmhddkybvephdvmn")
    public suspend fun resourceQuery(`value`: GroupResourceQueryArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.resourceQuery = mapped
    }

    /**
     * @param argument The resource query structure that is used to dynamically determine which AWS resources are members of the associated resource group. For more information about queries and how to construct them, see [Build queries and groups in AWS Resource Groups](https://docs.aws.amazon.com//ARG/latest/userguide/gettingstarted-query.html) in the *AWS Resource Groups User Guide*
     * > - You can include either a `ResourceQuery` or a `Configuration` , but not both.
     * > - You can specify the group's membership either by using a `ResourceQuery` or by using a list of `Resources` , but not both.
     */
    @JvmName("rmjxvunqjmcppbyo")
    public suspend fun resourceQuery(argument: suspend GroupResourceQueryArgsBuilder.() -> Unit) {
        val toBeMapped = GroupResourceQueryArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.resourceQuery = mapped
    }

    /**
     * @param value A list of the Amazon Resource Names (ARNs) of AWS resources that you want to add to the specified group.
     * > - You can specify the group membership either by using a list of `Resources` or by using a `ResourceQuery` , but not both.
     * > - You can include a `Resources` property only if you also specify a `Configuration` property.
     */
    @JvmName("xdlfspwpmbtbotkj")
    public suspend fun resources(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.resources = mapped
    }

    /**
     * @param values A list of the Amazon Resource Names (ARNs) of AWS resources that you want to add to the specified group.
     * > - You can specify the group membership either by using a list of `Resources` or by using a `ResourceQuery` , but not both.
     * > - You can include a `Resources` property only if you also specify a `Configuration` property.
     */
    @JvmName("omrucatanhpcfxij")
    public suspend fun resources(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.resources = mapped
    }

    /**
     * @param value The tag key and value pairs that are attached to the resource group.
     */
    @JvmName("nqcajhukpjuhmgrh")
    public suspend fun tags(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param argument The tag key and value pairs that are attached to the resource group.
     */
    @JvmName("lqvijojtqyohgvvg")
    public suspend fun tags(argument: List Unit>) {
        val toBeMapped = argument.toList().map { TagArgsBuilder().applySuspend { it() }.build() }
        val mapped = of(toBeMapped)
        this.tags = mapped
    }

    /**
     * @param argument The tag key and value pairs that are attached to the resource group.
     */
    @JvmName("cdycvfcyodavfoxt")
    public suspend fun tags(vararg argument: suspend TagArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map { TagArgsBuilder().applySuspend { it() }.build() }
        val mapped = of(toBeMapped)
        this.tags = mapped
    }

    /**
     * @param argument The tag key and value pairs that are attached to the resource group.
     */
    @JvmName("wgmmcnicjgdwewmg")
    public suspend fun tags(argument: suspend TagArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(TagArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.tags = mapped
    }

    /**
     * @param values The tag key and value pairs that are attached to the resource group.
     */
    @JvmName("peripopxilqjjkxq")
    public suspend fun tags(vararg values: TagArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    internal fun build(): GroupArgs = GroupArgs(
        configuration = configuration,
        description = description,
        name = name,
        resourceQuery = resourceQuery,
        resources = resources,
        tags = tags,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy