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

com.pulumi.googlenative.cloudasset.v1.kotlin.FeedArgs.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.

The newest version!
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.googlenative.cloudasset.v1.kotlin

import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.googlenative.cloudasset.v1.FeedArgs.builder
import com.pulumi.googlenative.cloudasset.v1.kotlin.enums.FeedContentType
import com.pulumi.googlenative.cloudasset.v1.kotlin.inputs.ExprArgs
import com.pulumi.googlenative.cloudasset.v1.kotlin.inputs.ExprArgsBuilder
import com.pulumi.googlenative.cloudasset.v1.kotlin.inputs.FeedOutputConfigArgs
import com.pulumi.googlenative.cloudasset.v1.kotlin.inputs.FeedOutputConfigArgsBuilder
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

/**
 * Creates a feed in a parent project/folder/organization to listen to its asset updates.
 * Auto-naming is currently not supported for this resource.
 * @property assetNames A list of the full names of the assets to receive updates. You must specify either or both of asset_names and asset_types. Only asset updates matching specified asset_names or asset_types are exported to the feed. Example: `//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1`. For a list of the full names for supported asset types, see [Resource name format](/asset-inventory/docs/resource-name-format).
 * @property assetTypes A list of types of the assets to receive updates. You must specify either or both of asset_names and asset_types. Only asset updates matching specified asset_names or asset_types are exported to the feed. Example: `"compute.googleapis.com/Disk"` For a list of all supported asset types, see [Supported asset types](/asset-inventory/docs/supported-asset-types).
 * @property condition A condition which determines whether an asset update should be published. If specified, an asset will be returned only when the expression evaluates to true. When set, `expression` field in the `Expr` must be a valid [CEL expression] (https://github.com/google/cel-spec) on a TemporalAsset with name `temporal_asset`. Example: a Feed with expression ("temporal_asset.deleted == true") will only publish Asset deletions. Other fields of `Expr` are optional. See our [user guide](https://cloud.google.com/asset-inventory/docs/monitoring-asset-changes-with-condition) for detailed instructions.
 * @property contentType Asset content type. If not specified, no content but the asset name and type will be returned.
 * @property feedId This is the client-assigned asset feed identifier and it needs to be unique under a specific parent project/folder/organization.
 * @property feedOutputConfig Feed output configuration defining where the asset updates are published to.
 * @property name The format will be projects/{project_number}/feeds/{client-assigned_feed_identifier} or folders/{folder_number}/feeds/{client-assigned_feed_identifier} or organizations/{organization_number}/feeds/{client-assigned_feed_identifier} The client-assigned feed identifier must be unique within the parent project/folder/organization.
 * @property relationshipTypes A list of relationship types to output, for example: `INSTANCE_TO_INSTANCEGROUP`. This field should only be specified if content_type=RELATIONSHIP. * If specified: it outputs specified relationship updates on the [asset_names] or the [asset_types]. It returns an error if any of the [relationship_types] doesn't belong to the supported relationship types of the [asset_names] or [asset_types], or any of the [asset_names] or the [asset_types] doesn't belong to the source types of the [relationship_types]. * Otherwise: it outputs the supported relationships of the types of [asset_names] and [asset_types] or returns an error if any of the [asset_names] or the [asset_types] has no replationship support. See [Introduction to Cloud Asset Inventory](https://cloud.google.com/asset-inventory/docs/overview) for all supported asset types and relationship types.
 * @property v1Id
 * @property v1Id1
 */
public data class FeedArgs(
    public val assetNames: Output>? = null,
    public val assetTypes: Output>? = null,
    public val condition: Output? = null,
    public val contentType: Output? = null,
    public val feedId: Output? = null,
    public val feedOutputConfig: Output? = null,
    public val name: Output? = null,
    public val relationshipTypes: Output>? = null,
    public val v1Id: Output? = null,
    public val v1Id1: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.googlenative.cloudasset.v1.FeedArgs =
        com.pulumi.googlenative.cloudasset.v1.FeedArgs.builder()
            .assetNames(assetNames?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .assetTypes(assetTypes?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .condition(condition?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .contentType(contentType?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .feedId(feedId?.applyValue({ args0 -> args0 }))
            .feedOutputConfig(feedOutputConfig?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .name(name?.applyValue({ args0 -> args0 }))
            .relationshipTypes(relationshipTypes?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .v1Id(v1Id?.applyValue({ args0 -> args0 }))
            .v1Id1(v1Id1?.applyValue({ args0 -> args0 })).build()
}

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

    private var assetTypes: Output>? = null

    private var condition: Output? = null

    private var contentType: Output? = null

    private var feedId: Output? = null

    private var feedOutputConfig: Output? = null

    private var name: Output? = null

    private var relationshipTypes: Output>? = null

    private var v1Id: Output? = null

    private var v1Id1: Output? = null

    /**
     * @param value A list of the full names of the assets to receive updates. You must specify either or both of asset_names and asset_types. Only asset updates matching specified asset_names or asset_types are exported to the feed. Example: `//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1`. For a list of the full names for supported asset types, see [Resource name format](/asset-inventory/docs/resource-name-format).
     */
    @JvmName("ruvbwyarbvqlgsso")
    public suspend fun assetNames(`value`: Output>) {
        this.assetNames = value
    }

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

    /**
     * @param values A list of the full names of the assets to receive updates. You must specify either or both of asset_names and asset_types. Only asset updates matching specified asset_names or asset_types are exported to the feed. Example: `//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1`. For a list of the full names for supported asset types, see [Resource name format](/asset-inventory/docs/resource-name-format).
     */
    @JvmName("joapdrmrfrfbnwrs")
    public suspend fun assetNames(values: List>) {
        this.assetNames = Output.all(values)
    }

    /**
     * @param value A list of types of the assets to receive updates. You must specify either or both of asset_names and asset_types. Only asset updates matching specified asset_names or asset_types are exported to the feed. Example: `"compute.googleapis.com/Disk"` For a list of all supported asset types, see [Supported asset types](/asset-inventory/docs/supported-asset-types).
     */
    @JvmName("ynpybneabicnkrqv")
    public suspend fun assetTypes(`value`: Output>) {
        this.assetTypes = value
    }

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

    /**
     * @param values A list of types of the assets to receive updates. You must specify either or both of asset_names and asset_types. Only asset updates matching specified asset_names or asset_types are exported to the feed. Example: `"compute.googleapis.com/Disk"` For a list of all supported asset types, see [Supported asset types](/asset-inventory/docs/supported-asset-types).
     */
    @JvmName("hswkpilrhofopmqa")
    public suspend fun assetTypes(values: List>) {
        this.assetTypes = Output.all(values)
    }

    /**
     * @param value A condition which determines whether an asset update should be published. If specified, an asset will be returned only when the expression evaluates to true. When set, `expression` field in the `Expr` must be a valid [CEL expression] (https://github.com/google/cel-spec) on a TemporalAsset with name `temporal_asset`. Example: a Feed with expression ("temporal_asset.deleted == true") will only publish Asset deletions. Other fields of `Expr` are optional. See our [user guide](https://cloud.google.com/asset-inventory/docs/monitoring-asset-changes-with-condition) for detailed instructions.
     */
    @JvmName("bjjvhvelphcwtpkq")
    public suspend fun condition(`value`: Output) {
        this.condition = value
    }

    /**
     * @param value Asset content type. If not specified, no content but the asset name and type will be returned.
     */
    @JvmName("cuvwxmkxbuggjkku")
    public suspend fun contentType(`value`: Output) {
        this.contentType = value
    }

    /**
     * @param value This is the client-assigned asset feed identifier and it needs to be unique under a specific parent project/folder/organization.
     */
    @JvmName("kmtrdhvbkgmebvpy")
    public suspend fun feedId(`value`: Output) {
        this.feedId = value
    }

    /**
     * @param value Feed output configuration defining where the asset updates are published to.
     */
    @JvmName("obtjnftxmjbegyvc")
    public suspend fun feedOutputConfig(`value`: Output) {
        this.feedOutputConfig = value
    }

    /**
     * @param value The format will be projects/{project_number}/feeds/{client-assigned_feed_identifier} or folders/{folder_number}/feeds/{client-assigned_feed_identifier} or organizations/{organization_number}/feeds/{client-assigned_feed_identifier} The client-assigned feed identifier must be unique within the parent project/folder/organization.
     */
    @JvmName("hdodgkjtfcdfhmeb")
    public suspend fun name(`value`: Output) {
        this.name = value
    }

    /**
     * @param value A list of relationship types to output, for example: `INSTANCE_TO_INSTANCEGROUP`. This field should only be specified if content_type=RELATIONSHIP. * If specified: it outputs specified relationship updates on the [asset_names] or the [asset_types]. It returns an error if any of the [relationship_types] doesn't belong to the supported relationship types of the [asset_names] or [asset_types], or any of the [asset_names] or the [asset_types] doesn't belong to the source types of the [relationship_types]. * Otherwise: it outputs the supported relationships of the types of [asset_names] and [asset_types] or returns an error if any of the [asset_names] or the [asset_types] has no replationship support. See [Introduction to Cloud Asset Inventory](https://cloud.google.com/asset-inventory/docs/overview) for all supported asset types and relationship types.
     */
    @JvmName("cshpuksievjawbhc")
    public suspend fun relationshipTypes(`value`: Output>) {
        this.relationshipTypes = value
    }

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

    /**
     * @param values A list of relationship types to output, for example: `INSTANCE_TO_INSTANCEGROUP`. This field should only be specified if content_type=RELATIONSHIP. * If specified: it outputs specified relationship updates on the [asset_names] or the [asset_types]. It returns an error if any of the [relationship_types] doesn't belong to the supported relationship types of the [asset_names] or [asset_types], or any of the [asset_names] or the [asset_types] doesn't belong to the source types of the [relationship_types]. * Otherwise: it outputs the supported relationships of the types of [asset_names] and [asset_types] or returns an error if any of the [asset_names] or the [asset_types] has no replationship support. See [Introduction to Cloud Asset Inventory](https://cloud.google.com/asset-inventory/docs/overview) for all supported asset types and relationship types.
     */
    @JvmName("tavhkvjlpbwcyuux")
    public suspend fun relationshipTypes(values: List>) {
        this.relationshipTypes = Output.all(values)
    }

    /**
     * @param value
     */
    @JvmName("xabmteqytiewcahj")
    public suspend fun v1Id(`value`: Output) {
        this.v1Id = value
    }

    /**
     * @param value
     */
    @JvmName("ipoxvgmfiefjejwh")
    public suspend fun v1Id1(`value`: Output) {
        this.v1Id1 = value
    }

    /**
     * @param value A list of the full names of the assets to receive updates. You must specify either or both of asset_names and asset_types. Only asset updates matching specified asset_names or asset_types are exported to the feed. Example: `//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1`. For a list of the full names for supported asset types, see [Resource name format](/asset-inventory/docs/resource-name-format).
     */
    @JvmName("njuxgnskfstgeyek")
    public suspend fun assetNames(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.assetNames = mapped
    }

    /**
     * @param values A list of the full names of the assets to receive updates. You must specify either or both of asset_names and asset_types. Only asset updates matching specified asset_names or asset_types are exported to the feed. Example: `//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1`. For a list of the full names for supported asset types, see [Resource name format](/asset-inventory/docs/resource-name-format).
     */
    @JvmName("ksmshuymdfjvfolk")
    public suspend fun assetNames(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.assetNames = mapped
    }

    /**
     * @param value A list of types of the assets to receive updates. You must specify either or both of asset_names and asset_types. Only asset updates matching specified asset_names or asset_types are exported to the feed. Example: `"compute.googleapis.com/Disk"` For a list of all supported asset types, see [Supported asset types](/asset-inventory/docs/supported-asset-types).
     */
    @JvmName("ywtaqeougeddxkuh")
    public suspend fun assetTypes(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.assetTypes = mapped
    }

    /**
     * @param values A list of types of the assets to receive updates. You must specify either or both of asset_names and asset_types. Only asset updates matching specified asset_names or asset_types are exported to the feed. Example: `"compute.googleapis.com/Disk"` For a list of all supported asset types, see [Supported asset types](/asset-inventory/docs/supported-asset-types).
     */
    @JvmName("lcukcnhxdjixfyqv")
    public suspend fun assetTypes(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.assetTypes = mapped
    }

    /**
     * @param value A condition which determines whether an asset update should be published. If specified, an asset will be returned only when the expression evaluates to true. When set, `expression` field in the `Expr` must be a valid [CEL expression] (https://github.com/google/cel-spec) on a TemporalAsset with name `temporal_asset`. Example: a Feed with expression ("temporal_asset.deleted == true") will only publish Asset deletions. Other fields of `Expr` are optional. See our [user guide](https://cloud.google.com/asset-inventory/docs/monitoring-asset-changes-with-condition) for detailed instructions.
     */
    @JvmName("fawqwgdtnnnrefhr")
    public suspend fun condition(`value`: ExprArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.condition = mapped
    }

    /**
     * @param argument A condition which determines whether an asset update should be published. If specified, an asset will be returned only when the expression evaluates to true. When set, `expression` field in the `Expr` must be a valid [CEL expression] (https://github.com/google/cel-spec) on a TemporalAsset with name `temporal_asset`. Example: a Feed with expression ("temporal_asset.deleted == true") will only publish Asset deletions. Other fields of `Expr` are optional. See our [user guide](https://cloud.google.com/asset-inventory/docs/monitoring-asset-changes-with-condition) for detailed instructions.
     */
    @JvmName("sxtkosamjxobnuba")
    public suspend fun condition(argument: suspend ExprArgsBuilder.() -> Unit) {
        val toBeMapped = ExprArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.condition = mapped
    }

    /**
     * @param value Asset content type. If not specified, no content but the asset name and type will be returned.
     */
    @JvmName("hsgejywnynlblgoq")
    public suspend fun contentType(`value`: FeedContentType?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.contentType = mapped
    }

    /**
     * @param value This is the client-assigned asset feed identifier and it needs to be unique under a specific parent project/folder/organization.
     */
    @JvmName("fkjhvcgfyqprktpa")
    public suspend fun feedId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.feedId = mapped
    }

    /**
     * @param value Feed output configuration defining where the asset updates are published to.
     */
    @JvmName("fvqxidlhtfyswjlh")
    public suspend fun feedOutputConfig(`value`: FeedOutputConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.feedOutputConfig = mapped
    }

    /**
     * @param argument Feed output configuration defining where the asset updates are published to.
     */
    @JvmName("fflrbscihmnnrrxh")
    public suspend fun feedOutputConfig(argument: suspend FeedOutputConfigArgsBuilder.() -> Unit) {
        val toBeMapped = FeedOutputConfigArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.feedOutputConfig = mapped
    }

    /**
     * @param value The format will be projects/{project_number}/feeds/{client-assigned_feed_identifier} or folders/{folder_number}/feeds/{client-assigned_feed_identifier} or organizations/{organization_number}/feeds/{client-assigned_feed_identifier} The client-assigned feed identifier must be unique within the parent project/folder/organization.
     */
    @JvmName("eotyutxfuwmcpbtv")
    public suspend fun name(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.name = mapped
    }

    /**
     * @param value A list of relationship types to output, for example: `INSTANCE_TO_INSTANCEGROUP`. This field should only be specified if content_type=RELATIONSHIP. * If specified: it outputs specified relationship updates on the [asset_names] or the [asset_types]. It returns an error if any of the [relationship_types] doesn't belong to the supported relationship types of the [asset_names] or [asset_types], or any of the [asset_names] or the [asset_types] doesn't belong to the source types of the [relationship_types]. * Otherwise: it outputs the supported relationships of the types of [asset_names] and [asset_types] or returns an error if any of the [asset_names] or the [asset_types] has no replationship support. See [Introduction to Cloud Asset Inventory](https://cloud.google.com/asset-inventory/docs/overview) for all supported asset types and relationship types.
     */
    @JvmName("qfnkoudpifdwjouc")
    public suspend fun relationshipTypes(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.relationshipTypes = mapped
    }

    /**
     * @param values A list of relationship types to output, for example: `INSTANCE_TO_INSTANCEGROUP`. This field should only be specified if content_type=RELATIONSHIP. * If specified: it outputs specified relationship updates on the [asset_names] or the [asset_types]. It returns an error if any of the [relationship_types] doesn't belong to the supported relationship types of the [asset_names] or [asset_types], or any of the [asset_names] or the [asset_types] doesn't belong to the source types of the [relationship_types]. * Otherwise: it outputs the supported relationships of the types of [asset_names] and [asset_types] or returns an error if any of the [asset_names] or the [asset_types] has no replationship support. See [Introduction to Cloud Asset Inventory](https://cloud.google.com/asset-inventory/docs/overview) for all supported asset types and relationship types.
     */
    @JvmName("dcluaflacyoalheo")
    public suspend fun relationshipTypes(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.relationshipTypes = mapped
    }

    /**
     * @param value
     */
    @JvmName("hlsjgtdbjmwkujsq")
    public suspend fun v1Id(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.v1Id = mapped
    }

    /**
     * @param value
     */
    @JvmName("jbbeedxauxhdtmvx")
    public suspend fun v1Id1(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.v1Id1 = mapped
    }

    internal fun build(): FeedArgs = FeedArgs(
        assetNames = assetNames,
        assetTypes = assetTypes,
        condition = condition,
        contentType = contentType,
        feedId = feedId,
        feedOutputConfig = feedOutputConfig,
        name = name,
        relationshipTypes = relationshipTypes,
        v1Id = v1Id,
        v1Id1 = v1Id1,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy