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

com.pulumi.alicloud.ros.kotlin.StackArgs.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: 3.62.0.0
Show newest version
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.alicloud.ros.kotlin

import com.pulumi.alicloud.ros.StackArgs.builder
import com.pulumi.alicloud.ros.kotlin.inputs.StackParameterArgs
import com.pulumi.alicloud.ros.kotlin.inputs.StackParameterArgsBuilder
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.Int
import kotlin.Pair
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.collections.Map
import kotlin.jvm.JvmName

/**
 * Provides a ROS Stack resource.
 * For information about ROS Stack and how to use it, see [What is Stack](https://www.alibabacloud.com/help/en/doc-detail/132086.htm).
 * > **NOTE:** Available in v1.106.0+.
 * ## Example Usage
 * Basic Usage
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as alicloud from "@pulumi/alicloud";
 * const example = new alicloud.ros.Stack("example", {
 *     stackName: "tf-testaccstack",
 *     templateBody: `    {
 *     \x09"ROSTemplateFormatVersion": "2015-09-01"
 *     }
 * `,
 *     stackPolicyBody: `    {
 *     \x09"Statement": [{
 *     \x09\x09"Action": "Update:Delete",
 *     \x09\x09"Resource": "*",
 *     \x09\x09"Effect": "Allow",
 *     \x09\x09"Principal": "*"
 *     \x09}]
 *     }
 * `,
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_alicloud as alicloud
 * example = alicloud.ros.Stack("example",
 *     stack_name="tf-testaccstack",
 *     template_body="""    {
 *     \x09"ROSTemplateFormatVersion": "2015-09-01"
 *     }
 * """,
 *     stack_policy_body="""    {
 *     \x09"Statement": [{
 *     \x09\x09"Action": "Update:Delete",
 *     \x09\x09"Resource": "*",
 *     \x09\x09"Effect": "Allow",
 *     \x09\x09"Principal": "*"
 *     \x09}]
 *     }
 * """)
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using AliCloud = Pulumi.AliCloud;
 * return await Deployment.RunAsync(() =>
 * {
 *     var example = new AliCloud.Ros.Stack("example", new()
 *     {
 *         StackName = "tf-testaccstack",
 *         TemplateBody = @"    {
 *     	""ROSTemplateFormatVersion"": ""2015-09-01""
 *     }
 * ",
 *         StackPolicyBody = @"    {
 *     	""Statement"": [{
 *     		""Action"": ""Update:Delete"",
 *     		""Resource"": ""*"",
 *     		""Effect"": ""Allow"",
 *     		""Principal"": ""*""
 *     	}]
 *     }
 * ",
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/ros"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := ros.NewStack(ctx, "example", &ros.StackArgs{
 * 			StackName:    pulumi.String("tf-testaccstack"),
 * 			TemplateBody: pulumi.String("    {\n    	\"ROSTemplateFormatVersion\": \"2015-09-01\"\n    }\n"),
 * 			StackPolicyBody: pulumi.String(`    {
 *     	"Statement": [{
 *     		"Action": "Update:Delete",
 *     		"Resource": "*",
 *     		"Effect": "Allow",
 *     		"Principal": "*"
 *     	}]
 *     }
 * `),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.alicloud.ros.Stack;
 * import com.pulumi.alicloud.ros.StackArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var example = new Stack("example", StackArgs.builder()
 *             .stackName("tf-testaccstack")
 *             .templateBody("""
 *     {
 *     	"ROSTemplateFormatVersion": "2015-09-01"
 *     }
 *             """)
 *             .stackPolicyBody("""
 *     {
 *     	"Statement": [{
 *     		"Action": "Update:Delete",
 *     		"Resource": "*",
 *     		"Effect": "Allow",
 *     		"Principal": "*"
 *     	}]
 *     }
 *             """)
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   example:
 *     type: alicloud:ros:Stack
 *     properties:
 *       stackName: tf-testaccstack
 *       templateBody: |2
 *             {
 *             	"ROSTemplateFormatVersion": "2015-09-01"
 *             }
 *       stackPolicyBody: |2
 *             {
 *             	"Statement": [{
 *             		"Action": "Update:Delete",
 *             		"Resource": "*",
 *             		"Effect": "Allow",
 *             		"Principal": "*"
 *             	}]
 *             }
 * ```
 * 
 * ## Import
 * ROS Stack can be imported using the id, e.g.
 * ```sh
 * $ pulumi import alicloud:ros/stack:Stack example 
 * ```
 * @property createOption Specifies whether to delete the stack after it is created.
 * @property deletionProtection Specifies whether to enable deletion protection on the stack. Valid values: `Disabled`, `Enabled`. Default to: `Disabled`
 * @property disableRollback Specifies whether to disable rollback on stack creation failure. Default to: `false`.
 * @property notificationUrls The callback URL for receiving stack event N. Only HTTP POST is supported. Maximum value of N: 5.
 * @property parameters The parameters. If the parameter name and value are not specified, ROS will use the default value specified in the template.
 * @property ramRoleName The name of the RAM role. ROS assumes the specified RAM role to create the stack and call API operations by using the credentials of the role.
 * @property replacementOption Specifies whether to enable replacement update after a resource attribute that does not support modification update is changed. Modification update keeps the physical ID of the resource unchanged. However, the resource is deleted and then recreated, and its physical ID is changed if replacement update is enabled.
 * @property retainAllResources The retain all resources.
 * @property retainResources Specifies whether to retain the resources in the stack.
 * @property stackName The name can be up to 255 characters in length and can contain digits, letters, hyphens (-), and underscores (_). It must start with a digit or letter.
 * @property stackPolicyBody The structure that contains the stack policy body. The stack policy body must be 1 to 16,384 bytes in length.
 * @property stackPolicyDuringUpdateBody The structure that contains the body of the temporary overriding stack policy. The stack policy body must be 1 to 16,384 bytes in length.
 * @property stackPolicyDuringUpdateUrl The URL of the file that contains the temporary overriding stack policy. The URL must point to a policy located in an HTTP or HTTPS web server or an Alibaba Cloud OSS bucket. Examples: oss://ros/stack-policy/demo and oss://ros/stack-policy/demo?RegionId=cn-hangzhou. The policy can be up to 16,384 bytes in length and the URL can be up to 1,350 bytes in length. If the region of the OSS bucket is not specified, the RegionId value is used by default.
 * @property stackPolicyUrl The URL of the file that contains the stack policy. The URL must point to a policy located in an HTTP or HTTPS web server or an Alibaba Cloud OSS bucket. Examples: oss://ros/stack-policy/demo and oss://ros/stack-policy/demo?RegionId=cn-hangzhou. The policy can be up to 16,384 bytes in length and the URL can be up to 1,350 bytes in length. If the region of the OSS bucket is not specified, the RegionId value is used by default.
 * @property tags A mapping of tags to assign to the resource.
 * @property templateBody The structure that contains the template body. The template body must be 1 to 524,288 bytes in length. If the length of the template body is longer than required, we recommend that you add parameters to the HTTP POST request body to avoid request failures due to excessive length of URLs.
 * @property templateUrl The URL of the file that contains the template body. The URL must point to a template located in an HTTP or HTTPS web server or an Alibaba Cloud OSS bucket. Examples: oss://ros/template/demo and oss://ros/template/demo?RegionId=cn-hangzhou. The template must be 1 to 524,288 bytes in length. If the region of the OSS bucket is not specified, the RegionId value is used by default.
 * @property templateVersion The version of the template.
 * @property timeoutInMinutes The timeout period that is specified for the stack creation request. Default to: `60`.
 * @property usePreviousParameters Specifies whether to use the values that were passed last time for the parameters that you do not specify in the current request.
 */
public data class StackArgs(
    public val createOption: Output? = null,
    public val deletionProtection: Output? = null,
    public val disableRollback: Output? = null,
    public val notificationUrls: Output>? = null,
    public val parameters: Output>? = null,
    public val ramRoleName: Output? = null,
    public val replacementOption: Output? = null,
    public val retainAllResources: Output? = null,
    public val retainResources: Output>? = null,
    public val stackName: Output? = null,
    public val stackPolicyBody: Output? = null,
    public val stackPolicyDuringUpdateBody: Output? = null,
    public val stackPolicyDuringUpdateUrl: Output? = null,
    public val stackPolicyUrl: Output? = null,
    public val tags: Output>? = null,
    public val templateBody: Output? = null,
    public val templateUrl: Output? = null,
    public val templateVersion: Output? = null,
    public val timeoutInMinutes: Output? = null,
    public val usePreviousParameters: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.alicloud.ros.StackArgs =
        com.pulumi.alicloud.ros.StackArgs.builder()
            .createOption(createOption?.applyValue({ args0 -> args0 }))
            .deletionProtection(deletionProtection?.applyValue({ args0 -> args0 }))
            .disableRollback(disableRollback?.applyValue({ args0 -> args0 }))
            .notificationUrls(notificationUrls?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .parameters(
                parameters?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .ramRoleName(ramRoleName?.applyValue({ args0 -> args0 }))
            .replacementOption(replacementOption?.applyValue({ args0 -> args0 }))
            .retainAllResources(retainAllResources?.applyValue({ args0 -> args0 }))
            .retainResources(retainResources?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .stackName(stackName?.applyValue({ args0 -> args0 }))
            .stackPolicyBody(stackPolicyBody?.applyValue({ args0 -> args0 }))
            .stackPolicyDuringUpdateBody(stackPolicyDuringUpdateBody?.applyValue({ args0 -> args0 }))
            .stackPolicyDuringUpdateUrl(stackPolicyDuringUpdateUrl?.applyValue({ args0 -> args0 }))
            .stackPolicyUrl(stackPolicyUrl?.applyValue({ args0 -> args0 }))
            .tags(tags?.applyValue({ args0 -> args0.map({ args0 -> args0.key.to(args0.value) }).toMap() }))
            .templateBody(templateBody?.applyValue({ args0 -> args0 }))
            .templateUrl(templateUrl?.applyValue({ args0 -> args0 }))
            .templateVersion(templateVersion?.applyValue({ args0 -> args0 }))
            .timeoutInMinutes(timeoutInMinutes?.applyValue({ args0 -> args0 }))
            .usePreviousParameters(usePreviousParameters?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [StackArgs].
 */
@PulumiTagMarker
public class StackArgsBuilder internal constructor() {
    private var createOption: Output? = null

    private var deletionProtection: Output? = null

    private var disableRollback: Output? = null

    private var notificationUrls: Output>? = null

    private var parameters: Output>? = null

    private var ramRoleName: Output? = null

    private var replacementOption: Output? = null

    private var retainAllResources: Output? = null

    private var retainResources: Output>? = null

    private var stackName: Output? = null

    private var stackPolicyBody: Output? = null

    private var stackPolicyDuringUpdateBody: Output? = null

    private var stackPolicyDuringUpdateUrl: Output? = null

    private var stackPolicyUrl: Output? = null

    private var tags: Output>? = null

    private var templateBody: Output? = null

    private var templateUrl: Output? = null

    private var templateVersion: Output? = null

    private var timeoutInMinutes: Output? = null

    private var usePreviousParameters: Output? = null

    /**
     * @param value Specifies whether to delete the stack after it is created.
     */
    @JvmName("ebxflfirwkwtyhxm")
    public suspend fun createOption(`value`: Output) {
        this.createOption = value
    }

    /**
     * @param value Specifies whether to enable deletion protection on the stack. Valid values: `Disabled`, `Enabled`. Default to: `Disabled`
     */
    @JvmName("xlpvdnhpvxraiyvk")
    public suspend fun deletionProtection(`value`: Output) {
        this.deletionProtection = value
    }

    /**
     * @param value Specifies whether to disable rollback on stack creation failure. Default to: `false`.
     */
    @JvmName("hpcqobeumcuwnlre")
    public suspend fun disableRollback(`value`: Output) {
        this.disableRollback = value
    }

    /**
     * @param value The callback URL for receiving stack event N. Only HTTP POST is supported. Maximum value of N: 5.
     */
    @JvmName("svvrptbctbmrlcyh")
    public suspend fun notificationUrls(`value`: Output>) {
        this.notificationUrls = value
    }

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

    /**
     * @param values The callback URL for receiving stack event N. Only HTTP POST is supported. Maximum value of N: 5.
     */
    @JvmName("mlebamjlxsxenhiq")
    public suspend fun notificationUrls(values: List>) {
        this.notificationUrls = Output.all(values)
    }

    /**
     * @param value The parameters. If the parameter name and value are not specified, ROS will use the default value specified in the template.
     */
    @JvmName("heuinjtsqcqlvffx")
    public suspend fun parameters(`value`: Output>) {
        this.parameters = value
    }

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

    /**
     * @param values The parameters. If the parameter name and value are not specified, ROS will use the default value specified in the template.
     */
    @JvmName("smbvcbqkcxejgtpn")
    public suspend fun parameters(values: List>) {
        this.parameters = Output.all(values)
    }

    /**
     * @param value The name of the RAM role. ROS assumes the specified RAM role to create the stack and call API operations by using the credentials of the role.
     */
    @JvmName("imnijdfmqcexlauo")
    public suspend fun ramRoleName(`value`: Output) {
        this.ramRoleName = value
    }

    /**
     * @param value Specifies whether to enable replacement update after a resource attribute that does not support modification update is changed. Modification update keeps the physical ID of the resource unchanged. However, the resource is deleted and then recreated, and its physical ID is changed if replacement update is enabled.
     */
    @JvmName("vagnbcnylpcpdtnj")
    public suspend fun replacementOption(`value`: Output) {
        this.replacementOption = value
    }

    /**
     * @param value The retain all resources.
     */
    @JvmName("qydjaibdrlonkuyw")
    public suspend fun retainAllResources(`value`: Output) {
        this.retainAllResources = value
    }

    /**
     * @param value Specifies whether to retain the resources in the stack.
     */
    @JvmName("sxcrtcgaduycesja")
    public suspend fun retainResources(`value`: Output>) {
        this.retainResources = value
    }

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

    /**
     * @param values Specifies whether to retain the resources in the stack.
     */
    @JvmName("ebrlfkfgchplwgtr")
    public suspend fun retainResources(values: List>) {
        this.retainResources = Output.all(values)
    }

    /**
     * @param value The name can be up to 255 characters in length and can contain digits, letters, hyphens (-), and underscores (_). It must start with a digit or letter.
     */
    @JvmName("rwqrfgphlufvjhne")
    public suspend fun stackName(`value`: Output) {
        this.stackName = value
    }

    /**
     * @param value The structure that contains the stack policy body. The stack policy body must be 1 to 16,384 bytes in length.
     */
    @JvmName("qinbvwcshyxavokn")
    public suspend fun stackPolicyBody(`value`: Output) {
        this.stackPolicyBody = value
    }

    /**
     * @param value The structure that contains the body of the temporary overriding stack policy. The stack policy body must be 1 to 16,384 bytes in length.
     */
    @JvmName("vgrnsakhfqadxkjm")
    public suspend fun stackPolicyDuringUpdateBody(`value`: Output) {
        this.stackPolicyDuringUpdateBody = value
    }

    /**
     * @param value The URL of the file that contains the temporary overriding stack policy. The URL must point to a policy located in an HTTP or HTTPS web server or an Alibaba Cloud OSS bucket. Examples: oss://ros/stack-policy/demo and oss://ros/stack-policy/demo?RegionId=cn-hangzhou. The policy can be up to 16,384 bytes in length and the URL can be up to 1,350 bytes in length. If the region of the OSS bucket is not specified, the RegionId value is used by default.
     */
    @JvmName("dwupkhgbkwyuorux")
    public suspend fun stackPolicyDuringUpdateUrl(`value`: Output) {
        this.stackPolicyDuringUpdateUrl = value
    }

    /**
     * @param value The URL of the file that contains the stack policy. The URL must point to a policy located in an HTTP or HTTPS web server or an Alibaba Cloud OSS bucket. Examples: oss://ros/stack-policy/demo and oss://ros/stack-policy/demo?RegionId=cn-hangzhou. The policy can be up to 16,384 bytes in length and the URL can be up to 1,350 bytes in length. If the region of the OSS bucket is not specified, the RegionId value is used by default.
     */
    @JvmName("dqqlgjygugdmfsgi")
    public suspend fun stackPolicyUrl(`value`: Output) {
        this.stackPolicyUrl = value
    }

    /**
     * @param value A mapping of tags to assign to the resource.
     */
    @JvmName("xqwmsiasydiwaabo")
    public suspend fun tags(`value`: Output>) {
        this.tags = value
    }

    /**
     * @param value The structure that contains the template body. The template body must be 1 to 524,288 bytes in length. If the length of the template body is longer than required, we recommend that you add parameters to the HTTP POST request body to avoid request failures due to excessive length of URLs.
     */
    @JvmName("bgxxgwlmdrcabpjy")
    public suspend fun templateBody(`value`: Output) {
        this.templateBody = value
    }

    /**
     * @param value The URL of the file that contains the template body. The URL must point to a template located in an HTTP or HTTPS web server or an Alibaba Cloud OSS bucket. Examples: oss://ros/template/demo and oss://ros/template/demo?RegionId=cn-hangzhou. The template must be 1 to 524,288 bytes in length. If the region of the OSS bucket is not specified, the RegionId value is used by default.
     */
    @JvmName("djufureukdisvwjp")
    public suspend fun templateUrl(`value`: Output) {
        this.templateUrl = value
    }

    /**
     * @param value The version of the template.
     */
    @JvmName("ydiscjuqjaqxkjoo")
    public suspend fun templateVersion(`value`: Output) {
        this.templateVersion = value
    }

    /**
     * @param value The timeout period that is specified for the stack creation request. Default to: `60`.
     */
    @JvmName("xxfgjnrkhdnsgguj")
    public suspend fun timeoutInMinutes(`value`: Output) {
        this.timeoutInMinutes = value
    }

    /**
     * @param value Specifies whether to use the values that were passed last time for the parameters that you do not specify in the current request.
     */
    @JvmName("svugehngbqcmcfof")
    public suspend fun usePreviousParameters(`value`: Output) {
        this.usePreviousParameters = value
    }

    /**
     * @param value Specifies whether to delete the stack after it is created.
     */
    @JvmName("wnjybjlmvqwputvp")
    public suspend fun createOption(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.createOption = mapped
    }

    /**
     * @param value Specifies whether to enable deletion protection on the stack. Valid values: `Disabled`, `Enabled`. Default to: `Disabled`
     */
    @JvmName("pqjgwfwncdrthgmc")
    public suspend fun deletionProtection(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.deletionProtection = mapped
    }

    /**
     * @param value Specifies whether to disable rollback on stack creation failure. Default to: `false`.
     */
    @JvmName("qgfcgeepkolashxp")
    public suspend fun disableRollback(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.disableRollback = mapped
    }

    /**
     * @param value The callback URL for receiving stack event N. Only HTTP POST is supported. Maximum value of N: 5.
     */
    @JvmName("cnaiiglapemrgoie")
    public suspend fun notificationUrls(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.notificationUrls = mapped
    }

    /**
     * @param values The callback URL for receiving stack event N. Only HTTP POST is supported. Maximum value of N: 5.
     */
    @JvmName("fqxjnmwkwnpneceu")
    public suspend fun notificationUrls(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.notificationUrls = mapped
    }

    /**
     * @param value The parameters. If the parameter name and value are not specified, ROS will use the default value specified in the template.
     */
    @JvmName("lmjshgkuctsavoeh")
    public suspend fun parameters(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.parameters = mapped
    }

    /**
     * @param argument The parameters. If the parameter name and value are not specified, ROS will use the default value specified in the template.
     */
    @JvmName("itrekolkppyhdycc")
    public suspend fun parameters(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            StackParameterArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.parameters = mapped
    }

    /**
     * @param argument The parameters. If the parameter name and value are not specified, ROS will use the default value specified in the template.
     */
    @JvmName("wegshwharjrrcors")
    public suspend fun parameters(vararg argument: suspend StackParameterArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            StackParameterArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.parameters = mapped
    }

    /**
     * @param argument The parameters. If the parameter name and value are not specified, ROS will use the default value specified in the template.
     */
    @JvmName("bkwpxncmdggywwav")
    public suspend fun parameters(argument: suspend StackParameterArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(StackParameterArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.parameters = mapped
    }

    /**
     * @param values The parameters. If the parameter name and value are not specified, ROS will use the default value specified in the template.
     */
    @JvmName("deirkjkwmwdqdsly")
    public suspend fun parameters(vararg values: StackParameterArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.parameters = mapped
    }

    /**
     * @param value The name of the RAM role. ROS assumes the specified RAM role to create the stack and call API operations by using the credentials of the role.
     */
    @JvmName("usctqtoxrcmqsgfp")
    public suspend fun ramRoleName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.ramRoleName = mapped
    }

    /**
     * @param value Specifies whether to enable replacement update after a resource attribute that does not support modification update is changed. Modification update keeps the physical ID of the resource unchanged. However, the resource is deleted and then recreated, and its physical ID is changed if replacement update is enabled.
     */
    @JvmName("kcmkwbusyxvygcmy")
    public suspend fun replacementOption(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.replacementOption = mapped
    }

    /**
     * @param value The retain all resources.
     */
    @JvmName("hilypumjbjddgcrh")
    public suspend fun retainAllResources(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.retainAllResources = mapped
    }

    /**
     * @param value Specifies whether to retain the resources in the stack.
     */
    @JvmName("nwstidrxjbruvebk")
    public suspend fun retainResources(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.retainResources = mapped
    }

    /**
     * @param values Specifies whether to retain the resources in the stack.
     */
    @JvmName("lkuutbmgokjroqoq")
    public suspend fun retainResources(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.retainResources = mapped
    }

    /**
     * @param value The name can be up to 255 characters in length and can contain digits, letters, hyphens (-), and underscores (_). It must start with a digit or letter.
     */
    @JvmName("kqqulggksnckxjjf")
    public suspend fun stackName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.stackName = mapped
    }

    /**
     * @param value The structure that contains the stack policy body. The stack policy body must be 1 to 16,384 bytes in length.
     */
    @JvmName("tpgrbhagcaxqgqnq")
    public suspend fun stackPolicyBody(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.stackPolicyBody = mapped
    }

    /**
     * @param value The structure that contains the body of the temporary overriding stack policy. The stack policy body must be 1 to 16,384 bytes in length.
     */
    @JvmName("ejvgbtjvogmpxoxt")
    public suspend fun stackPolicyDuringUpdateBody(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.stackPolicyDuringUpdateBody = mapped
    }

    /**
     * @param value The URL of the file that contains the temporary overriding stack policy. The URL must point to a policy located in an HTTP or HTTPS web server or an Alibaba Cloud OSS bucket. Examples: oss://ros/stack-policy/demo and oss://ros/stack-policy/demo?RegionId=cn-hangzhou. The policy can be up to 16,384 bytes in length and the URL can be up to 1,350 bytes in length. If the region of the OSS bucket is not specified, the RegionId value is used by default.
     */
    @JvmName("qtruywpyqsnnwguy")
    public suspend fun stackPolicyDuringUpdateUrl(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.stackPolicyDuringUpdateUrl = mapped
    }

    /**
     * @param value The URL of the file that contains the stack policy. The URL must point to a policy located in an HTTP or HTTPS web server or an Alibaba Cloud OSS bucket. Examples: oss://ros/stack-policy/demo and oss://ros/stack-policy/demo?RegionId=cn-hangzhou. The policy can be up to 16,384 bytes in length and the URL can be up to 1,350 bytes in length. If the region of the OSS bucket is not specified, the RegionId value is used by default.
     */
    @JvmName("gsgikwjgtgjkknnj")
    public suspend fun stackPolicyUrl(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.stackPolicyUrl = mapped
    }

    /**
     * @param value A mapping of tags to assign to the resource.
     */
    @JvmName("kgqjudgxexbyerho")
    public suspend fun tags(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param values A mapping of tags to assign to the resource.
     */
    @JvmName("aptoqpntgyclawps")
    public fun tags(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param value The structure that contains the template body. The template body must be 1 to 524,288 bytes in length. If the length of the template body is longer than required, we recommend that you add parameters to the HTTP POST request body to avoid request failures due to excessive length of URLs.
     */
    @JvmName("xkkcwdqfxlawsdce")
    public suspend fun templateBody(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.templateBody = mapped
    }

    /**
     * @param value The URL of the file that contains the template body. The URL must point to a template located in an HTTP or HTTPS web server or an Alibaba Cloud OSS bucket. Examples: oss://ros/template/demo and oss://ros/template/demo?RegionId=cn-hangzhou. The template must be 1 to 524,288 bytes in length. If the region of the OSS bucket is not specified, the RegionId value is used by default.
     */
    @JvmName("wisnwtuomtjoemvu")
    public suspend fun templateUrl(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.templateUrl = mapped
    }

    /**
     * @param value The version of the template.
     */
    @JvmName("eqkheoolicnheqfg")
    public suspend fun templateVersion(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.templateVersion = mapped
    }

    /**
     * @param value The timeout period that is specified for the stack creation request. Default to: `60`.
     */
    @JvmName("blgkbdocalltpaen")
    public suspend fun timeoutInMinutes(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.timeoutInMinutes = mapped
    }

    /**
     * @param value Specifies whether to use the values that were passed last time for the parameters that you do not specify in the current request.
     */
    @JvmName("pssgomdnsiwwauxg")
    public suspend fun usePreviousParameters(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.usePreviousParameters = mapped
    }

    internal fun build(): StackArgs = StackArgs(
        createOption = createOption,
        deletionProtection = deletionProtection,
        disableRollback = disableRollback,
        notificationUrls = notificationUrls,
        parameters = parameters,
        ramRoleName = ramRoleName,
        replacementOption = replacementOption,
        retainAllResources = retainAllResources,
        retainResources = retainResources,
        stackName = stackName,
        stackPolicyBody = stackPolicyBody,
        stackPolicyDuringUpdateBody = stackPolicyDuringUpdateBody,
        stackPolicyDuringUpdateUrl = stackPolicyDuringUpdateUrl,
        stackPolicyUrl = stackPolicyUrl,
        tags = tags,
        templateBody = templateBody,
        templateUrl = templateUrl,
        templateVersion = templateVersion,
        timeoutInMinutes = timeoutInMinutes,
        usePreviousParameters = usePreviousParameters,
    )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy