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

com.pulumi.aws.imagebuilder.kotlin.ImagePipelineArgs.kt Maven / Gradle / Ivy

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

package com.pulumi.aws.imagebuilder.kotlin

import com.pulumi.aws.imagebuilder.ImagePipelineArgs.builder
import com.pulumi.aws.imagebuilder.kotlin.inputs.ImagePipelineImageScanningConfigurationArgs
import com.pulumi.aws.imagebuilder.kotlin.inputs.ImagePipelineImageScanningConfigurationArgsBuilder
import com.pulumi.aws.imagebuilder.kotlin.inputs.ImagePipelineImageTestsConfigurationArgs
import com.pulumi.aws.imagebuilder.kotlin.inputs.ImagePipelineImageTestsConfigurationArgsBuilder
import com.pulumi.aws.imagebuilder.kotlin.inputs.ImagePipelineScheduleArgs
import com.pulumi.aws.imagebuilder.kotlin.inputs.ImagePipelineScheduleArgsBuilder
import com.pulumi.aws.imagebuilder.kotlin.inputs.ImagePipelineWorkflowArgs
import com.pulumi.aws.imagebuilder.kotlin.inputs.ImagePipelineWorkflowArgsBuilder
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.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

/**
 * Manages an Image Builder Image Pipeline.
 * > **NOTE:** Starting with version `5.74.0`, lifecycle meta-argument `replace_triggered_by` must be used in order to prevent a dependency error on destroy.
 * ## Import
 * Using `pulumi import`, import `aws_imagebuilder_image_pipeline` resources using the Amazon Resource Name (ARN). For example:
 * ```sh
 * $ pulumi import aws:imagebuilder/imagePipeline:ImagePipeline example arn:aws:imagebuilder:us-east-1:123456789012:image-pipeline/example
 * ```
 * @property containerRecipeArn Amazon Resource Name (ARN) of the container recipe.
 * @property description Description of the image pipeline.
 * @property distributionConfigurationArn Amazon Resource Name (ARN) of the Image Builder Distribution Configuration.
 * @property enhancedImageMetadataEnabled Whether additional information about the image being created is collected. Defaults to `true`.
 * @property executionRole Amazon Resource Name (ARN) of the service-linked role to be used by Image Builder to [execute workflows](https://docs.aws.amazon.com/imagebuilder/latest/userguide/manage-image-workflows.html).
 * @property imageRecipeArn Amazon Resource Name (ARN) of the image recipe.
 * @property imageScanningConfiguration Configuration block with image scanning configuration. Detailed below.
 * @property imageTestsConfiguration Configuration block with image tests configuration. Detailed below.
 * @property infrastructureConfigurationArn Amazon Resource Name (ARN) of the Image Builder Infrastructure Configuration.
 * @property name Name of the image pipeline.
 * The following arguments are optional:
 * @property schedule Configuration block with schedule settings. Detailed below.
 * @property status Status of the image pipeline. Valid values are `DISABLED` and `ENABLED`. Defaults to `ENABLED`.
 * @property tags Key-value map of resource tags for the image pipeline. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
 * @property workflows Configuration block with the workflow configuration. Detailed below.
 */
public data class ImagePipelineArgs(
    public val containerRecipeArn: Output? = null,
    public val description: Output? = null,
    public val distributionConfigurationArn: Output? = null,
    public val enhancedImageMetadataEnabled: Output? = null,
    public val executionRole: Output? = null,
    public val imageRecipeArn: Output? = null,
    public val imageScanningConfiguration: Output? =
        null,
    public val imageTestsConfiguration: Output? = null,
    public val infrastructureConfigurationArn: Output? = null,
    public val name: Output? = null,
    public val schedule: Output? = null,
    public val status: Output? = null,
    public val tags: Output>? = null,
    public val workflows: Output>? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.aws.imagebuilder.ImagePipelineArgs =
        com.pulumi.aws.imagebuilder.ImagePipelineArgs.builder()
            .containerRecipeArn(containerRecipeArn?.applyValue({ args0 -> args0 }))
            .description(description?.applyValue({ args0 -> args0 }))
            .distributionConfigurationArn(distributionConfigurationArn?.applyValue({ args0 -> args0 }))
            .enhancedImageMetadataEnabled(enhancedImageMetadataEnabled?.applyValue({ args0 -> args0 }))
            .executionRole(executionRole?.applyValue({ args0 -> args0 }))
            .imageRecipeArn(imageRecipeArn?.applyValue({ args0 -> args0 }))
            .imageScanningConfiguration(
                imageScanningConfiguration?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .imageTestsConfiguration(
                imageTestsConfiguration?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .infrastructureConfigurationArn(infrastructureConfigurationArn?.applyValue({ args0 -> args0 }))
            .name(name?.applyValue({ args0 -> args0 }))
            .schedule(schedule?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .status(status?.applyValue({ args0 -> args0 }))
            .tags(tags?.applyValue({ args0 -> args0.map({ args0 -> args0.key.to(args0.value) }).toMap() }))
            .workflows(
                workflows?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            ).build()
}

/**
 * Builder for [ImagePipelineArgs].
 */
@PulumiTagMarker
public class ImagePipelineArgsBuilder internal constructor() {
    private var containerRecipeArn: Output? = null

    private var description: Output? = null

    private var distributionConfigurationArn: Output? = null

    private var enhancedImageMetadataEnabled: Output? = null

    private var executionRole: Output? = null

    private var imageRecipeArn: Output? = null

    private var imageScanningConfiguration: Output? =
        null

    private var imageTestsConfiguration: Output? = null

    private var infrastructureConfigurationArn: Output? = null

    private var name: Output? = null

    private var schedule: Output? = null

    private var status: Output? = null

    private var tags: Output>? = null

    private var workflows: Output>? = null

    /**
     * @param value Amazon Resource Name (ARN) of the container recipe.
     */
    @JvmName("dcolkhptbqqhgcll")
    public suspend fun containerRecipeArn(`value`: Output) {
        this.containerRecipeArn = value
    }

    /**
     * @param value Description of the image pipeline.
     */
    @JvmName("rromiywxeccvause")
    public suspend fun description(`value`: Output) {
        this.description = value
    }

    /**
     * @param value Amazon Resource Name (ARN) of the Image Builder Distribution Configuration.
     */
    @JvmName("qtpxfmsjgtwmfjsc")
    public suspend fun distributionConfigurationArn(`value`: Output) {
        this.distributionConfigurationArn = value
    }

    /**
     * @param value Whether additional information about the image being created is collected. Defaults to `true`.
     */
    @JvmName("axykweowkcftppjf")
    public suspend fun enhancedImageMetadataEnabled(`value`: Output) {
        this.enhancedImageMetadataEnabled = value
    }

    /**
     * @param value Amazon Resource Name (ARN) of the service-linked role to be used by Image Builder to [execute workflows](https://docs.aws.amazon.com/imagebuilder/latest/userguide/manage-image-workflows.html).
     */
    @JvmName("sdeigduspbxpthvn")
    public suspend fun executionRole(`value`: Output) {
        this.executionRole = value
    }

    /**
     * @param value Amazon Resource Name (ARN) of the image recipe.
     */
    @JvmName("ttvnelrfvsifpbwn")
    public suspend fun imageRecipeArn(`value`: Output) {
        this.imageRecipeArn = value
    }

    /**
     * @param value Configuration block with image scanning configuration. Detailed below.
     */
    @JvmName("tmtwjaeqwxxyvkle")
    public suspend fun imageScanningConfiguration(`value`: Output) {
        this.imageScanningConfiguration = value
    }

    /**
     * @param value Configuration block with image tests configuration. Detailed below.
     */
    @JvmName("kyelnkxjrvnkxfgc")
    public suspend fun imageTestsConfiguration(`value`: Output) {
        this.imageTestsConfiguration = value
    }

    /**
     * @param value Amazon Resource Name (ARN) of the Image Builder Infrastructure Configuration.
     */
    @JvmName("apltkxaflnscluqd")
    public suspend fun infrastructureConfigurationArn(`value`: Output) {
        this.infrastructureConfigurationArn = value
    }

    /**
     * @param value Name of the image pipeline.
     * The following arguments are optional:
     */
    @JvmName("ymkswuwfmwtquetx")
    public suspend fun name(`value`: Output) {
        this.name = value
    }

    /**
     * @param value Configuration block with schedule settings. Detailed below.
     */
    @JvmName("uusemddupgmqvsyq")
    public suspend fun schedule(`value`: Output) {
        this.schedule = value
    }

    /**
     * @param value Status of the image pipeline. Valid values are `DISABLED` and `ENABLED`. Defaults to `ENABLED`.
     */
    @JvmName("alxmgbumakoqyfku")
    public suspend fun status(`value`: Output) {
        this.status = value
    }

    /**
     * @param value Key-value map of resource tags for the image pipeline. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
     */
    @JvmName("bqjohdcfrfbdwpbc")
    public suspend fun tags(`value`: Output>) {
        this.tags = value
    }

    /**
     * @param value Configuration block with the workflow configuration. Detailed below.
     */
    @JvmName("uovkjwfemdfpcstf")
    public suspend fun workflows(`value`: Output>) {
        this.workflows = value
    }

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

    /**
     * @param values Configuration block with the workflow configuration. Detailed below.
     */
    @JvmName("vgrsyieimkrvawhg")
    public suspend fun workflows(values: List>) {
        this.workflows = Output.all(values)
    }

    /**
     * @param value Amazon Resource Name (ARN) of the container recipe.
     */
    @JvmName("qahuefgopiejbrvw")
    public suspend fun containerRecipeArn(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.containerRecipeArn = mapped
    }

    /**
     * @param value Description of the image pipeline.
     */
    @JvmName("vvymyhhruwrfmuen")
    public suspend fun description(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.description = mapped
    }

    /**
     * @param value Amazon Resource Name (ARN) of the Image Builder Distribution Configuration.
     */
    @JvmName("hiueueewxckapasl")
    public suspend fun distributionConfigurationArn(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.distributionConfigurationArn = mapped
    }

    /**
     * @param value Whether additional information about the image being created is collected. Defaults to `true`.
     */
    @JvmName("nefwjurxmhdjvhkn")
    public suspend fun enhancedImageMetadataEnabled(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.enhancedImageMetadataEnabled = mapped
    }

    /**
     * @param value Amazon Resource Name (ARN) of the service-linked role to be used by Image Builder to [execute workflows](https://docs.aws.amazon.com/imagebuilder/latest/userguide/manage-image-workflows.html).
     */
    @JvmName("innprnyolkhyassg")
    public suspend fun executionRole(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.executionRole = mapped
    }

    /**
     * @param value Amazon Resource Name (ARN) of the image recipe.
     */
    @JvmName("lilrocaffrtmmccs")
    public suspend fun imageRecipeArn(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.imageRecipeArn = mapped
    }

    /**
     * @param value Configuration block with image scanning configuration. Detailed below.
     */
    @JvmName("weqjwiytnmifkuxs")
    public suspend fun imageScanningConfiguration(`value`: ImagePipelineImageScanningConfigurationArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.imageScanningConfiguration = mapped
    }

    /**
     * @param argument Configuration block with image scanning configuration. Detailed below.
     */
    @JvmName("diibmjwxpflicfix")
    public suspend fun imageScanningConfiguration(argument: suspend ImagePipelineImageScanningConfigurationArgsBuilder.() -> Unit) {
        val toBeMapped = ImagePipelineImageScanningConfigurationArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.imageScanningConfiguration = mapped
    }

    /**
     * @param value Configuration block with image tests configuration. Detailed below.
     */
    @JvmName("kmiacsicytusvdkc")
    public suspend fun imageTestsConfiguration(`value`: ImagePipelineImageTestsConfigurationArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.imageTestsConfiguration = mapped
    }

    /**
     * @param argument Configuration block with image tests configuration. Detailed below.
     */
    @JvmName("fqubssxnoyejpksn")
    public suspend fun imageTestsConfiguration(argument: suspend ImagePipelineImageTestsConfigurationArgsBuilder.() -> Unit) {
        val toBeMapped = ImagePipelineImageTestsConfigurationArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.imageTestsConfiguration = mapped
    }

    /**
     * @param value Amazon Resource Name (ARN) of the Image Builder Infrastructure Configuration.
     */
    @JvmName("tuhbbbvoksplmmjb")
    public suspend fun infrastructureConfigurationArn(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.infrastructureConfigurationArn = mapped
    }

    /**
     * @param value Name of the image pipeline.
     * The following arguments are optional:
     */
    @JvmName("bpwsxqbsvcwrdsmo")
    public suspend fun name(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.name = mapped
    }

    /**
     * @param value Configuration block with schedule settings. Detailed below.
     */
    @JvmName("ncioossfsljhrdar")
    public suspend fun schedule(`value`: ImagePipelineScheduleArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.schedule = mapped
    }

    /**
     * @param argument Configuration block with schedule settings. Detailed below.
     */
    @JvmName("mgsvcuaydrsnytoi")
    public suspend fun schedule(argument: suspend ImagePipelineScheduleArgsBuilder.() -> Unit) {
        val toBeMapped = ImagePipelineScheduleArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.schedule = mapped
    }

    /**
     * @param value Status of the image pipeline. Valid values are `DISABLED` and `ENABLED`. Defaults to `ENABLED`.
     */
    @JvmName("xuvotbxbivwampvh")
    public suspend fun status(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.status = mapped
    }

    /**
     * @param value Key-value map of resource tags for the image pipeline. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
     */
    @JvmName("iljsyilrpogoyuhd")
    public suspend fun tags(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param values Key-value map of resource tags for the image pipeline. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
     */
    @JvmName("alqpetivbiqkswkf")
    public fun tags(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param value Configuration block with the workflow configuration. Detailed below.
     */
    @JvmName("ihfoibopluaonphm")
    public suspend fun workflows(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.workflows = mapped
    }

    /**
     * @param argument Configuration block with the workflow configuration. Detailed below.
     */
    @JvmName("hprahwtxyarywcbw")
    public suspend fun workflows(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            ImagePipelineWorkflowArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.workflows = mapped
    }

    /**
     * @param argument Configuration block with the workflow configuration. Detailed below.
     */
    @JvmName("syymnnmwxlmlttxi")
    public suspend fun workflows(vararg argument: suspend ImagePipelineWorkflowArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            ImagePipelineWorkflowArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.workflows = mapped
    }

    /**
     * @param argument Configuration block with the workflow configuration. Detailed below.
     */
    @JvmName("maaamrhnqhtvfdoa")
    public suspend fun workflows(argument: suspend ImagePipelineWorkflowArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(ImagePipelineWorkflowArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.workflows = mapped
    }

    /**
     * @param values Configuration block with the workflow configuration. Detailed below.
     */
    @JvmName("xdwkwhlqukrsbume")
    public suspend fun workflows(vararg values: ImagePipelineWorkflowArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.workflows = mapped
    }

    internal fun build(): ImagePipelineArgs = ImagePipelineArgs(
        containerRecipeArn = containerRecipeArn,
        description = description,
        distributionConfigurationArn = distributionConfigurationArn,
        enhancedImageMetadataEnabled = enhancedImageMetadataEnabled,
        executionRole = executionRole,
        imageRecipeArn = imageRecipeArn,
        imageScanningConfiguration = imageScanningConfiguration,
        imageTestsConfiguration = imageTestsConfiguration,
        infrastructureConfigurationArn = infrastructureConfigurationArn,
        name = name,
        schedule = schedule,
        status = status,
        tags = tags,
        workflows = workflows,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy