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

com.pulumi.awsnative.iotsitewise.kotlin.AssetModel.kt Maven / Gradle / Ivy

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

package com.pulumi.awsnative.iotsitewise.kotlin

import com.pulumi.awsnative.iotsitewise.kotlin.outputs.AssetModelCompositeModel
import com.pulumi.awsnative.iotsitewise.kotlin.outputs.AssetModelHierarchy
import com.pulumi.awsnative.iotsitewise.kotlin.outputs.AssetModelProperty
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 com.pulumi.awsnative.iotsitewise.kotlin.outputs.AssetModelCompositeModel.Companion.toKotlin as assetModelCompositeModelToKotlin
import com.pulumi.awsnative.iotsitewise.kotlin.outputs.AssetModelHierarchy.Companion.toKotlin as assetModelHierarchyToKotlin
import com.pulumi.awsnative.iotsitewise.kotlin.outputs.AssetModelProperty.Companion.toKotlin as assetModelPropertyToKotlin
import com.pulumi.awsnative.kotlin.outputs.Tag.Companion.toKotlin as tagToKotlin

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

    public var args: AssetModelArgs = AssetModelArgs()

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

/**
 * Resource schema for AWS::IoTSiteWise::AssetModel
 */
public class AssetModel internal constructor(
    override val javaResource: com.pulumi.awsnative.iotsitewise.AssetModel,
) : KotlinCustomResource(javaResource, AssetModelMapper) {
    /**
     * The ARN of the asset model, which has the following format.
     */
    public val assetModelArn: Output
        get() = javaResource.assetModelArn().applyValue({ args0 -> args0 })

    /**
     * The composite asset models that are part of this asset model. Composite asset models are asset models that contain specific properties.
     */
    public val assetModelCompositeModels: Output>?
        get() = javaResource.assetModelCompositeModels().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 ->
                        assetModelCompositeModelToKotlin(args0)
                    })
                })
            }).orElse(null)
        })

    /**
     * A description for the asset model.
     */
    public val assetModelDescription: Output?
        get() = javaResource.assetModelDescription().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * The external ID of the asset model.
     */
    public val assetModelExternalId: Output?
        get() = javaResource.assetModelExternalId().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * The hierarchy definitions of the asset model. Each hierarchy specifies an asset model whose assets can be children of any other assets created from this asset model. You can specify up to 10 hierarchies per asset model.
     */
    public val assetModelHierarchies: Output>?
        get() = javaResource.assetModelHierarchies().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 ->
                        assetModelHierarchyToKotlin(args0)
                    })
                })
            }).orElse(null)
        })

    /**
     * The ID of the asset model.
     */
    public val assetModelId: Output
        get() = javaResource.assetModelId().applyValue({ args0 -> args0 })

    /**
     * A unique, friendly name for the asset model.
     */
    public val assetModelName: Output
        get() = javaResource.assetModelName().applyValue({ args0 -> args0 })

    /**
     * The property definitions of the asset model. You can specify up to 200 properties per asset model.
     */
    public val assetModelProperties: Output>?
        get() = javaResource.assetModelProperties().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 ->
                        assetModelPropertyToKotlin(args0)
                    })
                })
            }).orElse(null)
        })

    /**
     * The type of the asset model (ASSET_MODEL OR COMPONENT_MODEL)
     */
    public val assetModelType: Output?
        get() = javaResource.assetModelType().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * A list of key-value pairs that contain metadata for the asset model.
     */
    public val tags: Output>?
        get() = javaResource.tags().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 -> tagToKotlin(args0) })
                })
            }).orElse(null)
        })
}

public object AssetModelMapper : ResourceMapper {
    override fun supportsMappingOfType(javaResource: Resource): Boolean =
        com.pulumi.awsnative.iotsitewise.AssetModel::class == javaResource::class

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

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

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




© 2015 - 2025 Weber Informatics LLC | Privacy Policy