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

com.pulumi.awsnative.organizations.kotlin.OrganizationalUnit.kt Maven / Gradle / Ivy

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

package com.pulumi.awsnative.organizations.kotlin

import com.pulumi.awsnative.kotlin.outputs.Tag
import com.pulumi.awsnative.kotlin.outputs.Tag.Companion.toKotlin
import com.pulumi.core.Output
import com.pulumi.kotlin.KotlinCustomResource
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.ResourceMapper
import com.pulumi.kotlin.options.CustomResourceOptions
import com.pulumi.kotlin.options.CustomResourceOptionsBuilder
import com.pulumi.resources.Resource
import kotlin.Boolean
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List

/**
 * Builder for [OrganizationalUnit].
 */
@PulumiTagMarker
public class OrganizationalUnitResourceBuilder internal constructor() {
    public var name: String? = null

    public var args: OrganizationalUnitArgs = OrganizationalUnitArgs()

    public var opts: CustomResourceOptions = CustomResourceOptions()

    /**
     * @param name The _unique_ name of the resulting resource.
     */
    public fun name(`value`: String) {
        this.name = value
    }

    /**
     * @param block The arguments to use to populate this resource's properties.
     */
    public suspend fun args(block: suspend OrganizationalUnitArgsBuilder.() -> Unit) {
        val builder = OrganizationalUnitArgsBuilder()
        block(builder)
        this.args = builder.build()
    }

    /**
     * @param block A bag of options that control this resource's behavior.
     */
    public suspend fun opts(block: suspend CustomResourceOptionsBuilder.() -> Unit) {
        this.opts = com.pulumi.kotlin.options.CustomResourceOptions.opts(block)
    }

    internal fun build(): OrganizationalUnit {
        val builtJavaResource =
            com.pulumi.awsnative.organizations.OrganizationalUnit(
                this.name,
                this.args.toJava(),
                this.opts.toJava(),
            )
        return OrganizationalUnit(builtJavaResource)
    }
}

/**
 * You can use organizational units (OUs) to group accounts together to administer as a single unit. This greatly simplifies the management of your accounts. For example, you can attach a policy-based control to an OU, and all accounts within the OU automatically inherit the policy. You can create multiple OUs within a single organization, and you can create OUs within other OUs. Each OU can contain multiple accounts, and you can move accounts from one OU to another. However, OU names must be unique within a parent OU or root.
 * ## Example Usage
 * ### Example
 * No Java example available.
 * ### Example
 * No Java example available.
 * ### Example
 * No Java example available.
 * ### Example
 * No Java example available.
 */
public class OrganizationalUnit internal constructor(
    override val javaResource: com.pulumi.awsnative.organizations.OrganizationalUnit,
) : KotlinCustomResource(javaResource, OrganizationalUnitMapper) {
    /**
     * The Amazon Resource Name (ARN) of this OU.
     */
    public val arn: Output
        get() = javaResource.arn().applyValue({ args0 -> args0 })

    /**
     * The unique identifier (ID) associated with this OU.
     */
    public val awsId: Output
        get() = javaResource.awsId().applyValue({ args0 -> args0 })

    /**
     * The friendly name of this OU.
     */
    public val name: Output
        get() = javaResource.name().applyValue({ args0 -> args0 })

    /**
     * The unique identifier (ID) of the parent root or OU that you want to create the new OU in.
     */
    public val parentId: Output
        get() = javaResource.parentId().applyValue({ args0 -> args0 })

    /**
     * A list of tags that you want to attach to the newly created OU.
     */
    public val tags: Output>?
        get() = javaResource.tags().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 -> toKotlin(args0) })
                })
            }).orElse(null)
        })
}

public object OrganizationalUnitMapper : ResourceMapper {
    override fun supportsMappingOfType(javaResource: Resource): Boolean =
        com.pulumi.awsnative.organizations.OrganizationalUnit::class == javaResource::class

    override fun map(javaResource: Resource): OrganizationalUnit = OrganizationalUnit(
        javaResource as
            com.pulumi.awsnative.organizations.OrganizationalUnit,
    )
}

/**
 * @see [OrganizationalUnit].
 * @param name The _unique_ name of the resulting resource.
 * @param block Builder for [OrganizationalUnit].
 */
public suspend fun organizationalUnit(
    name: String,
    block: suspend OrganizationalUnitResourceBuilder.() -> Unit,
): OrganizationalUnit {
    val builder = OrganizationalUnitResourceBuilder()
    builder.name(name)
    block(builder)
    return builder.build()
}

/**
 * @see [OrganizationalUnit].
 * @param name The _unique_ name of the resulting resource.
 */
public fun organizationalUnit(name: String): OrganizationalUnit {
    val builder = OrganizationalUnitResourceBuilder()
    builder.name(name)
    return builder.build()
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy