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

com.pulumi.awsnative.emrserverless.kotlin.Application.kt Maven / Gradle / Ivy

Go to download

Build cloud applications and infrastructure by combining the safety and reliability of infrastructure as code with the power of the Kotlin programming language.

There is a newer version: 1.24.0.0
Show newest version
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.awsnative.emrserverless.kotlin

import com.pulumi.awsnative.emrserverless.kotlin.enums.ApplicationArchitecture
import com.pulumi.awsnative.emrserverless.kotlin.outputs.ApplicationAutoStartConfiguration
import com.pulumi.awsnative.emrserverless.kotlin.outputs.ApplicationAutoStopConfiguration
import com.pulumi.awsnative.emrserverless.kotlin.outputs.ApplicationConfigurationObject
import com.pulumi.awsnative.emrserverless.kotlin.outputs.ApplicationImageConfigurationInput
import com.pulumi.awsnative.emrserverless.kotlin.outputs.ApplicationInitialCapacityConfigKeyValuePair
import com.pulumi.awsnative.emrserverless.kotlin.outputs.ApplicationMaximumAllowedResources
import com.pulumi.awsnative.emrserverless.kotlin.outputs.ApplicationMonitoringConfiguration
import com.pulumi.awsnative.emrserverless.kotlin.outputs.ApplicationNetworkConfiguration
import com.pulumi.awsnative.emrserverless.kotlin.outputs.ApplicationWorkerTypeSpecificationInput
import com.pulumi.awsnative.kotlin.outputs.Tag
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
import kotlin.collections.Map
import com.pulumi.awsnative.emrserverless.kotlin.enums.ApplicationArchitecture.Companion.toKotlin as applicationArchitectureToKotlin
import com.pulumi.awsnative.emrserverless.kotlin.outputs.ApplicationAutoStartConfiguration.Companion.toKotlin as applicationAutoStartConfigurationToKotlin
import com.pulumi.awsnative.emrserverless.kotlin.outputs.ApplicationAutoStopConfiguration.Companion.toKotlin as applicationAutoStopConfigurationToKotlin
import com.pulumi.awsnative.emrserverless.kotlin.outputs.ApplicationConfigurationObject.Companion.toKotlin as applicationConfigurationObjectToKotlin
import com.pulumi.awsnative.emrserverless.kotlin.outputs.ApplicationImageConfigurationInput.Companion.toKotlin as applicationImageConfigurationInputToKotlin
import com.pulumi.awsnative.emrserverless.kotlin.outputs.ApplicationInitialCapacityConfigKeyValuePair.Companion.toKotlin as applicationInitialCapacityConfigKeyValuePairToKotlin
import com.pulumi.awsnative.emrserverless.kotlin.outputs.ApplicationMaximumAllowedResources.Companion.toKotlin as applicationMaximumAllowedResourcesToKotlin
import com.pulumi.awsnative.emrserverless.kotlin.outputs.ApplicationMonitoringConfiguration.Companion.toKotlin as applicationMonitoringConfigurationToKotlin
import com.pulumi.awsnative.emrserverless.kotlin.outputs.ApplicationNetworkConfiguration.Companion.toKotlin as applicationNetworkConfigurationToKotlin
import com.pulumi.awsnative.emrserverless.kotlin.outputs.ApplicationWorkerTypeSpecificationInput.Companion.toKotlin as applicationWorkerTypeSpecificationInputToKotlin
import com.pulumi.awsnative.kotlin.outputs.Tag.Companion.toKotlin as tagToKotlin

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

    public var args: ApplicationArgs = ApplicationArgs()

    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 ApplicationArgsBuilder.() -> Unit) {
        val builder = ApplicationArgsBuilder()
        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(): Application {
        val builtJavaResource = com.pulumi.awsnative.emrserverless.Application(
            this.name,
            this.args.toJava(),
            this.opts.toJava(),
        )
        return Application(builtJavaResource)
    }
}

/**
 * Resource schema for AWS::EMRServerless::Application Type
 */
public class Application internal constructor(
    override val javaResource: com.pulumi.awsnative.emrserverless.Application,
) : KotlinCustomResource(javaResource, ApplicationMapper) {
    /**
     * The ID of the EMR Serverless Application.
     */
    public val applicationId: Output
        get() = javaResource.applicationId().applyValue({ args0 -> args0 })

    /**
     * The CPU architecture of an application.
     */
    public val architecture: Output?
        get() = javaResource.architecture().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 ->
                    applicationArchitectureToKotlin(args0)
                })
            }).orElse(null)
        })

    /**
     * The Amazon Resource Name (ARN) of the EMR Serverless Application.
     */
    public val arn: Output
        get() = javaResource.arn().applyValue({ args0 -> args0 })

    /**
     * Configuration for Auto Start of Application.
     */
    public val autoStartConfiguration: Output?
        get() = javaResource.autoStartConfiguration().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 -> applicationAutoStartConfigurationToKotlin(args0) })
            }).orElse(null)
        })

    /**
     * Configuration for Auto Stop of Application.
     */
    public val autoStopConfiguration: Output?
        get() = javaResource.autoStopConfiguration().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 -> applicationAutoStopConfigurationToKotlin(args0) })
            }).orElse(null)
        })

    /**
     * The image configuration applied to all worker types.
     */
    public val imageConfiguration: Output?
        get() = javaResource.imageConfiguration().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 -> applicationImageConfigurationInputToKotlin(args0) })
            }).orElse(null)
        })

    /**
     * Initial capacity initialized when an Application is started.
     */
    public val initialCapacity: Output>?
        get() = javaResource.initialCapacity().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 ->
                        applicationInitialCapacityConfigKeyValuePairToKotlin(args0)
                    })
                })
            }).orElse(null)
        })

    /**
     * Maximum allowed cumulative resources for an Application. No new resources will be created once the limit is hit.
     */
    public val maximumCapacity: Output?
        get() = javaResource.maximumCapacity().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 -> applicationMaximumAllowedResourcesToKotlin(args0) })
            }).orElse(null)
        })

    /**
     * A configuration specification to be used when provisioning an application. A configuration consists of a classification, properties, and optional nested configurations. A classification refers to an application-specific configuration file. Properties are the settings you want to change in that file.
     */
    public val monitoringConfiguration: Output?
        get() = javaResource.monitoringConfiguration().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 -> applicationMonitoringConfigurationToKotlin(args0) })
            }).orElse(null)
        })

    /**
     * User friendly Application name.
     */
    public val name: Output?
        get() = javaResource.name().applyValue({ args0 -> args0.map({ args0 -> args0 }).orElse(null) })

    /**
     * Network Configuration for customer VPC connectivity.
     */
    public val networkConfiguration: Output?
        get() = javaResource.networkConfiguration().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 -> applicationNetworkConfigurationToKotlin(args0) })
            }).orElse(null)
        })

    /**
     * EMR release label.
     */
    public val releaseLabel: Output
        get() = javaResource.releaseLabel().applyValue({ args0 -> args0 })

    /**
     * The [Configuration](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_Configuration.html) specifications of an application. Each configuration consists of a classification and properties. You use this parameter when creating or updating an application. To see the runtimeConfiguration object of an application, run the [GetApplication](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_GetApplication.html) API operation.
     */
    public val runtimeConfiguration: Output>?
        get() = javaResource.runtimeConfiguration().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 ->
                        applicationConfigurationObjectToKotlin(args0)
                    })
                })
            }).orElse(null)
        })

    /**
     * Tag map with key and value
     */
    public val tags: Output>?
        get() = javaResource.tags().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 -> tagToKotlin(args0) })
                })
            }).orElse(null)
        })

    /**
     * The type of the application
     */
    public val type: Output
        get() = javaResource.type().applyValue({ args0 -> args0 })

    /**
     * The key-value pairs that specify worker type to WorkerTypeSpecificationInput. This parameter must contain all valid worker types for a Spark or Hive application. Valid worker types include Driver and Executor for Spark applications and HiveDriver and TezTask for Hive applications. You can either set image details in this parameter for each worker type, or in imageConfiguration for all worker types.
     */
    public val workerTypeSpecifications: Output>?
        get() = javaResource.workerTypeSpecifications().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.key.to(
                        args0.value.let({ args0 ->
                            applicationWorkerTypeSpecificationInputToKotlin(args0)
                        }),
                    )
                }).toMap()
            }).orElse(null)
        })
}

public object ApplicationMapper : ResourceMapper {
    override fun supportsMappingOfType(javaResource: Resource): Boolean =
        com.pulumi.awsnative.emrserverless.Application::class == javaResource::class

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

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

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




© 2015 - 2025 Weber Informatics LLC | Privacy Policy