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

com.pulumi.gcp.accesscontextmanager.kotlin.inputs.ServicePerimetersServicePerimeterArgs.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: 8.12.0.0
Show newest version
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.gcp.accesscontextmanager.kotlin.inputs

import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimetersServicePerimeterArgs.builder
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiNullFieldException
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Boolean
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.jvm.JvmName

/**
 *
 * @property createTime (Output)
 * Time the AccessPolicy was created in UTC.
 * @property description Description of the ServicePerimeter and its use. Does not affect
 * behavior.
 * @property name Resource name for the ServicePerimeter. The short_name component must
 * begin with a letter and only include alphanumeric and '_'.
 * Format: accessPolicies/{policy_id}/servicePerimeters/{short_name}
 * @property perimeterType Specifies the type of the Perimeter. There are two types: regular and
 * bridge. Regular Service Perimeter contains resources, access levels,
 * and restricted services. Every resource can be in at most
 * ONE regular Service Perimeter.
 * In addition to being in a regular service perimeter, a resource can also
 * be in zero or more perimeter bridges. A perimeter bridge only contains
 * resources. Cross project operations are permitted if all effected
 * resources share some perimeter (whether bridge or regular). Perimeter
 * Bridge does not contain access levels or services: those are governed
 * entirely by the regular perimeter that resource is in.
 * Perimeter Bridges are typically useful when building more complex
 * topologies with many independent perimeters that need to share some data
 * with a common perimeter, but should not be able to share data among
 * themselves.
 * Default value is `PERIMETER_TYPE_REGULAR`.
 * Possible values are: `PERIMETER_TYPE_REGULAR`, `PERIMETER_TYPE_BRIDGE`.
 * @property spec Proposed (or dry run) ServicePerimeter configuration.
 * This configuration allows to specify and test ServicePerimeter configuration
 * without enforcing actual access restrictions. Only allowed to be set when
 * the `useExplicitDryRunSpec` flag is set.
 * Structure is documented below.
 * @property status ServicePerimeter configuration. Specifies sets of resources,
 * restricted services and access levels that determine
 * perimeter content and boundaries.
 * Structure is documented below.
 * @property title Human readable title. Must be unique within the Policy.
 * @property updateTime (Output)
 * Time the AccessPolicy was updated in UTC.
 * @property useExplicitDryRunSpec Use explicit dry run spec flag. Ordinarily, a dry-run spec implicitly exists
 * for all Service Perimeters, and that spec is identical to the status for those
 * Service Perimeters. When this flag is set, it inhibits the generation of the
 * implicit spec, thereby allowing the user to explicitly provide a
 * configuration ("spec") to use in a dry-run version of the Service Perimeter.
 * This allows the user to test changes to the enforced config ("status") without
 * actually enforcing them. This testing is done through analyzing the differences
 * between currently enforced and suggested restrictions. useExplicitDryRunSpec must
 * bet set to True if any of the fields in the spec are set to non-default values.
 */
public data class ServicePerimetersServicePerimeterArgs(
    public val createTime: Output? = null,
    public val description: Output? = null,
    public val name: Output,
    public val perimeterType: Output? = null,
    public val spec: Output? = null,
    public val status: Output? = null,
    public val title: Output,
    public val updateTime: Output? = null,
    public val useExplicitDryRunSpec: Output? = null,
) :
    ConvertibleToJava {
    override fun toJava(): com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimetersServicePerimeterArgs =
        com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimetersServicePerimeterArgs.builder()
            .createTime(createTime?.applyValue({ args0 -> args0 }))
            .description(description?.applyValue({ args0 -> args0 }))
            .name(name.applyValue({ args0 -> args0 }))
            .perimeterType(perimeterType?.applyValue({ args0 -> args0 }))
            .spec(spec?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .status(status?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .title(title.applyValue({ args0 -> args0 }))
            .updateTime(updateTime?.applyValue({ args0 -> args0 }))
            .useExplicitDryRunSpec(useExplicitDryRunSpec?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [ServicePerimetersServicePerimeterArgs].
 */
@PulumiTagMarker
public class ServicePerimetersServicePerimeterArgsBuilder internal constructor() {
    private var createTime: Output? = null

    private var description: Output? = null

    private var name: Output? = null

    private var perimeterType: Output? = null

    private var spec: Output? = null

    private var status: Output? = null

    private var title: Output? = null

    private var updateTime: Output? = null

    private var useExplicitDryRunSpec: Output? = null

    /**
     * @param value (Output)
     * Time the AccessPolicy was created in UTC.
     */
    @JvmName("amwukshofmylpktl")
    public suspend fun createTime(`value`: Output) {
        this.createTime = value
    }

    /**
     * @param value Description of the ServicePerimeter and its use. Does not affect
     * behavior.
     */
    @JvmName("voeixpwvxcxogpil")
    public suspend fun description(`value`: Output) {
        this.description = value
    }

    /**
     * @param value Resource name for the ServicePerimeter. The short_name component must
     * begin with a letter and only include alphanumeric and '_'.
     * Format: accessPolicies/{policy_id}/servicePerimeters/{short_name}
     */
    @JvmName("smgorpjrhdgbsxsd")
    public suspend fun name(`value`: Output) {
        this.name = value
    }

    /**
     * @param value Specifies the type of the Perimeter. There are two types: regular and
     * bridge. Regular Service Perimeter contains resources, access levels,
     * and restricted services. Every resource can be in at most
     * ONE regular Service Perimeter.
     * In addition to being in a regular service perimeter, a resource can also
     * be in zero or more perimeter bridges. A perimeter bridge only contains
     * resources. Cross project operations are permitted if all effected
     * resources share some perimeter (whether bridge or regular). Perimeter
     * Bridge does not contain access levels or services: those are governed
     * entirely by the regular perimeter that resource is in.
     * Perimeter Bridges are typically useful when building more complex
     * topologies with many independent perimeters that need to share some data
     * with a common perimeter, but should not be able to share data among
     * themselves.
     * Default value is `PERIMETER_TYPE_REGULAR`.
     * Possible values are: `PERIMETER_TYPE_REGULAR`, `PERIMETER_TYPE_BRIDGE`.
     */
    @JvmName("ajswnegelbawsjty")
    public suspend fun perimeterType(`value`: Output) {
        this.perimeterType = value
    }

    /**
     * @param value Proposed (or dry run) ServicePerimeter configuration.
     * This configuration allows to specify and test ServicePerimeter configuration
     * without enforcing actual access restrictions. Only allowed to be set when
     * the `useExplicitDryRunSpec` flag is set.
     * Structure is documented below.
     */
    @JvmName("spuwhlpxdftuhbeo")
    public suspend fun spec(`value`: Output) {
        this.spec = value
    }

    /**
     * @param value ServicePerimeter configuration. Specifies sets of resources,
     * restricted services and access levels that determine
     * perimeter content and boundaries.
     * Structure is documented below.
     */
    @JvmName("vyfrycggqekxlbwb")
    public suspend fun status(`value`: Output) {
        this.status = value
    }

    /**
     * @param value Human readable title. Must be unique within the Policy.
     */
    @JvmName("fjcmtigeqkgemxgr")
    public suspend fun title(`value`: Output) {
        this.title = value
    }

    /**
     * @param value (Output)
     * Time the AccessPolicy was updated in UTC.
     */
    @JvmName("iyndtikxsludushx")
    public suspend fun updateTime(`value`: Output) {
        this.updateTime = value
    }

    /**
     * @param value Use explicit dry run spec flag. Ordinarily, a dry-run spec implicitly exists
     * for all Service Perimeters, and that spec is identical to the status for those
     * Service Perimeters. When this flag is set, it inhibits the generation of the
     * implicit spec, thereby allowing the user to explicitly provide a
     * configuration ("spec") to use in a dry-run version of the Service Perimeter.
     * This allows the user to test changes to the enforced config ("status") without
     * actually enforcing them. This testing is done through analyzing the differences
     * between currently enforced and suggested restrictions. useExplicitDryRunSpec must
     * bet set to True if any of the fields in the spec are set to non-default values.
     */
    @JvmName("qodacggnrdanbkkk")
    public suspend fun useExplicitDryRunSpec(`value`: Output) {
        this.useExplicitDryRunSpec = value
    }

    /**
     * @param value (Output)
     * Time the AccessPolicy was created in UTC.
     */
    @JvmName("hcufudaonqdumagt")
    public suspend fun createTime(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.createTime = mapped
    }

    /**
     * @param value Description of the ServicePerimeter and its use. Does not affect
     * behavior.
     */
    @JvmName("tgshsbshugkftrle")
    public suspend fun description(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.description = mapped
    }

    /**
     * @param value Resource name for the ServicePerimeter. The short_name component must
     * begin with a letter and only include alphanumeric and '_'.
     * Format: accessPolicies/{policy_id}/servicePerimeters/{short_name}
     */
    @JvmName("lqpwunxrmkcqihvg")
    public suspend fun name(`value`: String) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.name = mapped
    }

    /**
     * @param value Specifies the type of the Perimeter. There are two types: regular and
     * bridge. Regular Service Perimeter contains resources, access levels,
     * and restricted services. Every resource can be in at most
     * ONE regular Service Perimeter.
     * In addition to being in a regular service perimeter, a resource can also
     * be in zero or more perimeter bridges. A perimeter bridge only contains
     * resources. Cross project operations are permitted if all effected
     * resources share some perimeter (whether bridge or regular). Perimeter
     * Bridge does not contain access levels or services: those are governed
     * entirely by the regular perimeter that resource is in.
     * Perimeter Bridges are typically useful when building more complex
     * topologies with many independent perimeters that need to share some data
     * with a common perimeter, but should not be able to share data among
     * themselves.
     * Default value is `PERIMETER_TYPE_REGULAR`.
     * Possible values are: `PERIMETER_TYPE_REGULAR`, `PERIMETER_TYPE_BRIDGE`.
     */
    @JvmName("tietmuviqgwyxdkl")
    public suspend fun perimeterType(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.perimeterType = mapped
    }

    /**
     * @param value Proposed (or dry run) ServicePerimeter configuration.
     * This configuration allows to specify and test ServicePerimeter configuration
     * without enforcing actual access restrictions. Only allowed to be set when
     * the `useExplicitDryRunSpec` flag is set.
     * Structure is documented below.
     */
    @JvmName("oexgubbhgpyqorvg")
    public suspend fun spec(`value`: ServicePerimetersServicePerimeterSpecArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.spec = mapped
    }

    /**
     * @param argument Proposed (or dry run) ServicePerimeter configuration.
     * This configuration allows to specify and test ServicePerimeter configuration
     * without enforcing actual access restrictions. Only allowed to be set when
     * the `useExplicitDryRunSpec` flag is set.
     * Structure is documented below.
     */
    @JvmName("pajrygxnjmrojnau")
    public suspend fun spec(argument: suspend ServicePerimetersServicePerimeterSpecArgsBuilder.() -> Unit) {
        val toBeMapped = ServicePerimetersServicePerimeterSpecArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.spec = mapped
    }

    /**
     * @param value ServicePerimeter configuration. Specifies sets of resources,
     * restricted services and access levels that determine
     * perimeter content and boundaries.
     * Structure is documented below.
     */
    @JvmName("odahsqgwubhnjmnm")
    public suspend fun status(`value`: ServicePerimetersServicePerimeterStatusArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.status = mapped
    }

    /**
     * @param argument ServicePerimeter configuration. Specifies sets of resources,
     * restricted services and access levels that determine
     * perimeter content and boundaries.
     * Structure is documented below.
     */
    @JvmName("cuhhjwppdheksfoo")
    public suspend fun status(argument: suspend ServicePerimetersServicePerimeterStatusArgsBuilder.() -> Unit) {
        val toBeMapped = ServicePerimetersServicePerimeterStatusArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.status = mapped
    }

    /**
     * @param value Human readable title. Must be unique within the Policy.
     */
    @JvmName("otdlfboqfcwgcvyk")
    public suspend fun title(`value`: String) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.title = mapped
    }

    /**
     * @param value (Output)
     * Time the AccessPolicy was updated in UTC.
     */
    @JvmName("xbdnkhhvcnhixoip")
    public suspend fun updateTime(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.updateTime = mapped
    }

    /**
     * @param value Use explicit dry run spec flag. Ordinarily, a dry-run spec implicitly exists
     * for all Service Perimeters, and that spec is identical to the status for those
     * Service Perimeters. When this flag is set, it inhibits the generation of the
     * implicit spec, thereby allowing the user to explicitly provide a
     * configuration ("spec") to use in a dry-run version of the Service Perimeter.
     * This allows the user to test changes to the enforced config ("status") without
     * actually enforcing them. This testing is done through analyzing the differences
     * between currently enforced and suggested restrictions. useExplicitDryRunSpec must
     * bet set to True if any of the fields in the spec are set to non-default values.
     */
    @JvmName("lbqkviwfcxjlrwyc")
    public suspend fun useExplicitDryRunSpec(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.useExplicitDryRunSpec = mapped
    }

    internal fun build(): ServicePerimetersServicePerimeterArgs =
        ServicePerimetersServicePerimeterArgs(
            createTime = createTime,
            description = description,
            name = name ?: throw PulumiNullFieldException("name"),
            perimeterType = perimeterType,
            spec = spec,
            status = status,
            title = title ?: throw PulumiNullFieldException("title"),
            updateTime = updateTime,
            useExplicitDryRunSpec = useExplicitDryRunSpec,
        )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy