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

com.pulumi.azure.appservice.kotlin.inputs.SlotSiteConfigArgs.kt Maven / Gradle / Ivy

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

package com.pulumi.azure.appservice.kotlin.inputs

import com.pulumi.azure.appservice.inputs.SlotSiteConfigArgs.builder
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.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 *
 * @property acrUseManagedIdentityCredentials Are Managed Identity Credentials used for Azure Container Registry pull
 * @property acrUserManagedIdentityClientId If using User Managed Identity, the User Managed Identity Client Id
 * > **NOTE:** When using User Managed Identity with Azure Container Registry the Identity will need to have the [ACRPull role assigned](https://docs.microsoft.com/azure/container-registry/container-registry-authentication-managed-identity#example-1-access-with-a-user-assigned-identity)
 * @property alwaysOn Should the slot be loaded at all times? Defaults to `false`.
 * > **NOTE:** when using an App Service Plan in the `Free` or `Shared` Tiers `always_on` must be set to `false`.
 * @property appCommandLine App command line to launch, e.g. `/sbin/myserver -b 0.0.0.0`.
 * @property autoSwapSlotName The name of the slot to automatically swap to during deployment
 * @property cors A `cors` block as defined below.
 * @property defaultDocuments The ordering of default documents to load, if an address isn't specified.
 * @property dotnetFrameworkVersion The version of the .NET framework's CLR used in this App Service Slot. Possible values are `v2.0` (which will use the latest version of the .NET framework for the .NET CLR v2 - currently `.net 3.5`), `v4.0` (which corresponds to the latest version of the .NET CLR v4 - which at the time of writing is `.net 4.7.1`), `v5.0` and `v6.0`. [For more information on which .NET CLR version to use based on the .NET framework you're targeting - please see this table](https://en.wikipedia.org/wiki/.NET_Framework_version_history#Overview). Defaults to `v4.0`.
 * @property ftpsState State of FTP / FTPS service for this App Service Slot. Possible values include: `AllAllowed`, `FtpsOnly` and `Disabled`.
 * @property healthCheckPath The health check path to be pinged by App Service Slot. [For more information - please see App Service health check announcement](https://azure.github.io/AppService/2020/08/24/healthcheck-on-app-service.html).
 * @property http2Enabled Is HTTP2 Enabled on this App Service? Defaults to `false`.
 * @property ipRestrictions A list of objects representing ip restrictions as defined below.
 * > **NOTE** User has to explicitly set `ip_restriction` to empty slice (`[]`) to remove it.
 * @property javaContainer The Java Container to use. If specified `java_version` and `java_container_version` must also be specified. Possible values are `JAVA`, `JETTY`, and `TOMCAT`.
 * @property javaContainerVersion The version of the Java Container to use. If specified `java_version` and `java_container` must also be specified.
 * @property javaVersion The version of Java to use. If specified `java_container` and `java_container_version` must also be specified. Possible values are `1.7`, `1.8`, and `11` and their specific versions - except for Java 11 (e.g. `1.7.0_80`, `1.8.0_181`, `11`)
 * @property linuxFxVersion Linux App Framework and version for the App Service Slot. Possible options are a Docker container (`DOCKER|`), a base-64 encoded Docker Compose file (`COMPOSE|${filebase64("compose.yml")}`) or a base-64 encoded Kubernetes Manifest (`KUBE|${filebase64("kubernetes.yml")}`).
 * > **NOTE:** To set this property the App Service Plan to which the App belongs must be configured with `kind = "Linux"`, and `reserved = true` or the API will reject any value supplied.
 * @property localMysqlEnabled Is "MySQL In App" Enabled? This runs a local MySQL instance with your app and shares resources from the App Service plan.
 * > **NOTE:** MySQL In App is not intended for production environments and will not scale beyond a single instance. Instead you may wish to use Azure Database for MySQL.
 * @property managedPipelineMode The Managed Pipeline Mode. Possible values are `Integrated` and `Classic`. Defaults to `Integrated`.
 * @property minTlsVersion The minimum supported TLS version for the app service. Possible values are `1.0`, `1.1`, and `1.2`. Defaults to `1.2` for new app services.
 * @property numberOfWorkers The scaled number of workers (for per site scaling) of this App Service Slot. Requires that `per_site_scaling` is enabled on the `azure.appservice.Plan`. [For more information - please see Microsoft documentation on high-density hosting](https://docs.microsoft.com/azure/app-service/manage-scale-per-app).
 * @property phpVersion The version of PHP to use in this App Service Slot. Possible values are `5.5`, `5.6`, `7.0`, `7.1`, `7.2`, `7.3`, and `7.4`.
 * @property pythonVersion The version of Python to use in this App Service Slot. Possible values are `2.7` and `3.4`.
 * @property remoteDebuggingEnabled Is Remote Debugging Enabled? Defaults to `false`.
 * @property remoteDebuggingVersion Which version of Visual Studio should the Remote Debugger be compatible with? Possible values are `VS2017`, `VS2019`, and `VS2022`.
 * @property scmIpRestrictions A list of `scm_ip_restriction` objects representing IP restrictions as defined below.
 * > **NOTE** User has to explicitly set `scm_ip_restriction` to empty slice (`[]`) to remove it.
 * @property scmType The type of Source Control enabled for this App Service Slot. Defaults to `None`. Possible values are: `BitbucketGit`, `BitbucketHg`, `CodePlexGit`, `CodePlexHg`, `Dropbox`, `ExternalGit`, `ExternalHg`, `GitHub`, `LocalGit`, `None`, `OneDrive`, `Tfs`, `VSO`, and `VSTSRM`
 * @property scmUseMainIpRestriction IP security restrictions for scm to use main. Defaults to `false`.
 * > **NOTE** Any `scm_ip_restriction` blocks configured are ignored by the service when `scm_use_main_ip_restriction` is set to `true`. Any scm restrictions will become active if this is subsequently set to `false` or removed.
 * @property use32BitWorkerProcess Should the App Service Slot run in 32 bit mode, rather than 64 bit mode?
 * > **NOTE:** when using an App Service Plan in the `Free` or `Shared` Tiers `use_32_bit_worker_process` must be set to `true`.
 * @property vnetRouteAllEnabled
 * @property websocketsEnabled Should WebSockets be enabled?
 * @property windowsFxVersion The Windows Docker container image (`DOCKER|`)
 * Additional examples of how to run Containers via the `azure.appservice.Slot` resource can be found in the `./examples/app-service` directory within the GitHub Repository.
 */
public data class SlotSiteConfigArgs(
    public val acrUseManagedIdentityCredentials: Output? = null,
    public val acrUserManagedIdentityClientId: Output? = null,
    public val alwaysOn: Output? = null,
    public val appCommandLine: Output? = null,
    public val autoSwapSlotName: Output? = null,
    public val cors: Output? = null,
    public val defaultDocuments: Output>? = null,
    public val dotnetFrameworkVersion: Output? = null,
    public val ftpsState: Output? = null,
    public val healthCheckPath: Output? = null,
    public val http2Enabled: Output? = null,
    public val ipRestrictions: Output>? = null,
    public val javaContainer: Output? = null,
    public val javaContainerVersion: Output? = null,
    public val javaVersion: Output? = null,
    public val linuxFxVersion: Output? = null,
    public val localMysqlEnabled: Output? = null,
    public val managedPipelineMode: Output? = null,
    public val minTlsVersion: Output? = null,
    public val numberOfWorkers: Output? = null,
    public val phpVersion: Output? = null,
    public val pythonVersion: Output? = null,
    public val remoteDebuggingEnabled: Output? = null,
    public val remoteDebuggingVersion: Output? = null,
    public val scmIpRestrictions: Output>? = null,
    public val scmType: Output? = null,
    public val scmUseMainIpRestriction: Output? = null,
    public val use32BitWorkerProcess: Output? = null,
    public val vnetRouteAllEnabled: Output? = null,
    public val websocketsEnabled: Output? = null,
    public val windowsFxVersion: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.azure.appservice.inputs.SlotSiteConfigArgs =
        com.pulumi.azure.appservice.inputs.SlotSiteConfigArgs.builder()
            .acrUseManagedIdentityCredentials(acrUseManagedIdentityCredentials?.applyValue({ args0 -> args0 }))
            .acrUserManagedIdentityClientId(acrUserManagedIdentityClientId?.applyValue({ args0 -> args0 }))
            .alwaysOn(alwaysOn?.applyValue({ args0 -> args0 }))
            .appCommandLine(appCommandLine?.applyValue({ args0 -> args0 }))
            .autoSwapSlotName(autoSwapSlotName?.applyValue({ args0 -> args0 }))
            .cors(cors?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .defaultDocuments(defaultDocuments?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .dotnetFrameworkVersion(dotnetFrameworkVersion?.applyValue({ args0 -> args0 }))
            .ftpsState(ftpsState?.applyValue({ args0 -> args0 }))
            .healthCheckPath(healthCheckPath?.applyValue({ args0 -> args0 }))
            .http2Enabled(http2Enabled?.applyValue({ args0 -> args0 }))
            .ipRestrictions(
                ipRestrictions?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .javaContainer(javaContainer?.applyValue({ args0 -> args0 }))
            .javaContainerVersion(javaContainerVersion?.applyValue({ args0 -> args0 }))
            .javaVersion(javaVersion?.applyValue({ args0 -> args0 }))
            .linuxFxVersion(linuxFxVersion?.applyValue({ args0 -> args0 }))
            .localMysqlEnabled(localMysqlEnabled?.applyValue({ args0 -> args0 }))
            .managedPipelineMode(managedPipelineMode?.applyValue({ args0 -> args0 }))
            .minTlsVersion(minTlsVersion?.applyValue({ args0 -> args0 }))
            .numberOfWorkers(numberOfWorkers?.applyValue({ args0 -> args0 }))
            .phpVersion(phpVersion?.applyValue({ args0 -> args0 }))
            .pythonVersion(pythonVersion?.applyValue({ args0 -> args0 }))
            .remoteDebuggingEnabled(remoteDebuggingEnabled?.applyValue({ args0 -> args0 }))
            .remoteDebuggingVersion(remoteDebuggingVersion?.applyValue({ args0 -> args0 }))
            .scmIpRestrictions(
                scmIpRestrictions?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .scmType(scmType?.applyValue({ args0 -> args0 }))
            .scmUseMainIpRestriction(scmUseMainIpRestriction?.applyValue({ args0 -> args0 }))
            .use32BitWorkerProcess(use32BitWorkerProcess?.applyValue({ args0 -> args0 }))
            .vnetRouteAllEnabled(vnetRouteAllEnabled?.applyValue({ args0 -> args0 }))
            .websocketsEnabled(websocketsEnabled?.applyValue({ args0 -> args0 }))
            .windowsFxVersion(windowsFxVersion?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [SlotSiteConfigArgs].
 */
@PulumiTagMarker
public class SlotSiteConfigArgsBuilder internal constructor() {
    private var acrUseManagedIdentityCredentials: Output? = null

    private var acrUserManagedIdentityClientId: Output? = null

    private var alwaysOn: Output? = null

    private var appCommandLine: Output? = null

    private var autoSwapSlotName: Output? = null

    private var cors: Output? = null

    private var defaultDocuments: Output>? = null

    private var dotnetFrameworkVersion: Output? = null

    private var ftpsState: Output? = null

    private var healthCheckPath: Output? = null

    private var http2Enabled: Output? = null

    private var ipRestrictions: Output>? = null

    private var javaContainer: Output? = null

    private var javaContainerVersion: Output? = null

    private var javaVersion: Output? = null

    private var linuxFxVersion: Output? = null

    private var localMysqlEnabled: Output? = null

    private var managedPipelineMode: Output? = null

    private var minTlsVersion: Output? = null

    private var numberOfWorkers: Output? = null

    private var phpVersion: Output? = null

    private var pythonVersion: Output? = null

    private var remoteDebuggingEnabled: Output? = null

    private var remoteDebuggingVersion: Output? = null

    private var scmIpRestrictions: Output>? = null

    private var scmType: Output? = null

    private var scmUseMainIpRestriction: Output? = null

    private var use32BitWorkerProcess: Output? = null

    private var vnetRouteAllEnabled: Output? = null

    private var websocketsEnabled: Output? = null

    private var windowsFxVersion: Output? = null

    /**
     * @param value Are Managed Identity Credentials used for Azure Container Registry pull
     */
    @JvmName("lbvtpaixdauuefrk")
    public suspend fun acrUseManagedIdentityCredentials(`value`: Output) {
        this.acrUseManagedIdentityCredentials = value
    }

    /**
     * @param value If using User Managed Identity, the User Managed Identity Client Id
     * > **NOTE:** When using User Managed Identity with Azure Container Registry the Identity will need to have the [ACRPull role assigned](https://docs.microsoft.com/azure/container-registry/container-registry-authentication-managed-identity#example-1-access-with-a-user-assigned-identity)
     */
    @JvmName("maadpsvkkpyitdbh")
    public suspend fun acrUserManagedIdentityClientId(`value`: Output) {
        this.acrUserManagedIdentityClientId = value
    }

    /**
     * @param value Should the slot be loaded at all times? Defaults to `false`.
     * > **NOTE:** when using an App Service Plan in the `Free` or `Shared` Tiers `always_on` must be set to `false`.
     */
    @JvmName("lvfpghomfimcnmvi")
    public suspend fun alwaysOn(`value`: Output) {
        this.alwaysOn = value
    }

    /**
     * @param value App command line to launch, e.g. `/sbin/myserver -b 0.0.0.0`.
     */
    @JvmName("lwiuupbhkgekwbro")
    public suspend fun appCommandLine(`value`: Output) {
        this.appCommandLine = value
    }

    /**
     * @param value The name of the slot to automatically swap to during deployment
     */
    @JvmName("lhfojlimspyjjikl")
    public suspend fun autoSwapSlotName(`value`: Output) {
        this.autoSwapSlotName = value
    }

    /**
     * @param value A `cors` block as defined below.
     */
    @JvmName("ccpxmxnsfvptulos")
    public suspend fun cors(`value`: Output) {
        this.cors = value
    }

    /**
     * @param value The ordering of default documents to load, if an address isn't specified.
     */
    @JvmName("wwwcehnqdyrbxgsn")
    public suspend fun defaultDocuments(`value`: Output>) {
        this.defaultDocuments = value
    }

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

    /**
     * @param values The ordering of default documents to load, if an address isn't specified.
     */
    @JvmName("mjgftuugmqcbpbow")
    public suspend fun defaultDocuments(values: List>) {
        this.defaultDocuments = Output.all(values)
    }

    /**
     * @param value The version of the .NET framework's CLR used in this App Service Slot. Possible values are `v2.0` (which will use the latest version of the .NET framework for the .NET CLR v2 - currently `.net 3.5`), `v4.0` (which corresponds to the latest version of the .NET CLR v4 - which at the time of writing is `.net 4.7.1`), `v5.0` and `v6.0`. [For more information on which .NET CLR version to use based on the .NET framework you're targeting - please see this table](https://en.wikipedia.org/wiki/.NET_Framework_version_history#Overview). Defaults to `v4.0`.
     */
    @JvmName("stewujyujujtnmcr")
    public suspend fun dotnetFrameworkVersion(`value`: Output) {
        this.dotnetFrameworkVersion = value
    }

    /**
     * @param value State of FTP / FTPS service for this App Service Slot. Possible values include: `AllAllowed`, `FtpsOnly` and `Disabled`.
     */
    @JvmName("wlmhixorglhbpwkl")
    public suspend fun ftpsState(`value`: Output) {
        this.ftpsState = value
    }

    /**
     * @param value The health check path to be pinged by App Service Slot. [For more information - please see App Service health check announcement](https://azure.github.io/AppService/2020/08/24/healthcheck-on-app-service.html).
     */
    @JvmName("vnlfngjgigsbgyuk")
    public suspend fun healthCheckPath(`value`: Output) {
        this.healthCheckPath = value
    }

    /**
     * @param value Is HTTP2 Enabled on this App Service? Defaults to `false`.
     */
    @JvmName("bphameflchxwpgdo")
    public suspend fun http2Enabled(`value`: Output) {
        this.http2Enabled = value
    }

    /**
     * @param value A list of objects representing ip restrictions as defined below.
     * > **NOTE** User has to explicitly set `ip_restriction` to empty slice (`[]`) to remove it.
     */
    @JvmName("shnhreioqwatgjtn")
    public suspend fun ipRestrictions(`value`: Output>) {
        this.ipRestrictions = value
    }

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

    /**
     * @param values A list of objects representing ip restrictions as defined below.
     * > **NOTE** User has to explicitly set `ip_restriction` to empty slice (`[]`) to remove it.
     */
    @JvmName("petwrvnsljhypouu")
    public suspend fun ipRestrictions(values: List>) {
        this.ipRestrictions = Output.all(values)
    }

    /**
     * @param value The Java Container to use. If specified `java_version` and `java_container_version` must also be specified. Possible values are `JAVA`, `JETTY`, and `TOMCAT`.
     */
    @JvmName("frdrqkuifgvvosae")
    public suspend fun javaContainer(`value`: Output) {
        this.javaContainer = value
    }

    /**
     * @param value The version of the Java Container to use. If specified `java_version` and `java_container` must also be specified.
     */
    @JvmName("daohoapprqkpcjmt")
    public suspend fun javaContainerVersion(`value`: Output) {
        this.javaContainerVersion = value
    }

    /**
     * @param value The version of Java to use. If specified `java_container` and `java_container_version` must also be specified. Possible values are `1.7`, `1.8`, and `11` and their specific versions - except for Java 11 (e.g. `1.7.0_80`, `1.8.0_181`, `11`)
     */
    @JvmName("ueyxjdwxvugptrdr")
    public suspend fun javaVersion(`value`: Output) {
        this.javaVersion = value
    }

    /**
     * @param value Linux App Framework and version for the App Service Slot. Possible options are a Docker container (`DOCKER|`), a base-64 encoded Docker Compose file (`COMPOSE|${filebase64("compose.yml")}`) or a base-64 encoded Kubernetes Manifest (`KUBE|${filebase64("kubernetes.yml")}`).
     * > **NOTE:** To set this property the App Service Plan to which the App belongs must be configured with `kind = "Linux"`, and `reserved = true` or the API will reject any value supplied.
     */
    @JvmName("yjfuooruqsvptrwf")
    public suspend fun linuxFxVersion(`value`: Output) {
        this.linuxFxVersion = value
    }

    /**
     * @param value Is "MySQL In App" Enabled? This runs a local MySQL instance with your app and shares resources from the App Service plan.
     * > **NOTE:** MySQL In App is not intended for production environments and will not scale beyond a single instance. Instead you may wish to use Azure Database for MySQL.
     */
    @JvmName("vpxvydbygpimshrc")
    public suspend fun localMysqlEnabled(`value`: Output) {
        this.localMysqlEnabled = value
    }

    /**
     * @param value The Managed Pipeline Mode. Possible values are `Integrated` and `Classic`. Defaults to `Integrated`.
     */
    @JvmName("okfexmdphxrpjjvj")
    public suspend fun managedPipelineMode(`value`: Output) {
        this.managedPipelineMode = value
    }

    /**
     * @param value The minimum supported TLS version for the app service. Possible values are `1.0`, `1.1`, and `1.2`. Defaults to `1.2` for new app services.
     */
    @JvmName("hytantjhqoqophbc")
    public suspend fun minTlsVersion(`value`: Output) {
        this.minTlsVersion = value
    }

    /**
     * @param value The scaled number of workers (for per site scaling) of this App Service Slot. Requires that `per_site_scaling` is enabled on the `azure.appservice.Plan`. [For more information - please see Microsoft documentation on high-density hosting](https://docs.microsoft.com/azure/app-service/manage-scale-per-app).
     */
    @JvmName("exilitfcjcupmjwu")
    public suspend fun numberOfWorkers(`value`: Output) {
        this.numberOfWorkers = value
    }

    /**
     * @param value The version of PHP to use in this App Service Slot. Possible values are `5.5`, `5.6`, `7.0`, `7.1`, `7.2`, `7.3`, and `7.4`.
     */
    @JvmName("llcosdafgdinmpgn")
    public suspend fun phpVersion(`value`: Output) {
        this.phpVersion = value
    }

    /**
     * @param value The version of Python to use in this App Service Slot. Possible values are `2.7` and `3.4`.
     */
    @JvmName("megdqcmsrdguvsam")
    public suspend fun pythonVersion(`value`: Output) {
        this.pythonVersion = value
    }

    /**
     * @param value Is Remote Debugging Enabled? Defaults to `false`.
     */
    @JvmName("ntlcubxgwjjkrogj")
    public suspend fun remoteDebuggingEnabled(`value`: Output) {
        this.remoteDebuggingEnabled = value
    }

    /**
     * @param value Which version of Visual Studio should the Remote Debugger be compatible with? Possible values are `VS2017`, `VS2019`, and `VS2022`.
     */
    @JvmName("pmuqcmkxshqfaxhh")
    public suspend fun remoteDebuggingVersion(`value`: Output) {
        this.remoteDebuggingVersion = value
    }

    /**
     * @param value A list of `scm_ip_restriction` objects representing IP restrictions as defined below.
     * > **NOTE** User has to explicitly set `scm_ip_restriction` to empty slice (`[]`) to remove it.
     */
    @JvmName("eijjsbwewghxjcle")
    public suspend fun scmIpRestrictions(`value`: Output>) {
        this.scmIpRestrictions = value
    }

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

    /**
     * @param values A list of `scm_ip_restriction` objects representing IP restrictions as defined below.
     * > **NOTE** User has to explicitly set `scm_ip_restriction` to empty slice (`[]`) to remove it.
     */
    @JvmName("urxiljoncsggnyis")
    public suspend fun scmIpRestrictions(values: List>) {
        this.scmIpRestrictions = Output.all(values)
    }

    /**
     * @param value The type of Source Control enabled for this App Service Slot. Defaults to `None`. Possible values are: `BitbucketGit`, `BitbucketHg`, `CodePlexGit`, `CodePlexHg`, `Dropbox`, `ExternalGit`, `ExternalHg`, `GitHub`, `LocalGit`, `None`, `OneDrive`, `Tfs`, `VSO`, and `VSTSRM`
     */
    @JvmName("lgshhacvowpmrceu")
    public suspend fun scmType(`value`: Output) {
        this.scmType = value
    }

    /**
     * @param value IP security restrictions for scm to use main. Defaults to `false`.
     * > **NOTE** Any `scm_ip_restriction` blocks configured are ignored by the service when `scm_use_main_ip_restriction` is set to `true`. Any scm restrictions will become active if this is subsequently set to `false` or removed.
     */
    @JvmName("tgknjhfihopmfgpn")
    public suspend fun scmUseMainIpRestriction(`value`: Output) {
        this.scmUseMainIpRestriction = value
    }

    /**
     * @param value Should the App Service Slot run in 32 bit mode, rather than 64 bit mode?
     * > **NOTE:** when using an App Service Plan in the `Free` or `Shared` Tiers `use_32_bit_worker_process` must be set to `true`.
     */
    @JvmName("igcdredtekovlfyw")
    public suspend fun use32BitWorkerProcess(`value`: Output) {
        this.use32BitWorkerProcess = value
    }

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

    /**
     * @param value Should WebSockets be enabled?
     */
    @JvmName("xivhyqovbstmfnvs")
    public suspend fun websocketsEnabled(`value`: Output) {
        this.websocketsEnabled = value
    }

    /**
     * @param value The Windows Docker container image (`DOCKER|`)
     * Additional examples of how to run Containers via the `azure.appservice.Slot` resource can be found in the `./examples/app-service` directory within the GitHub Repository.
     */
    @JvmName("iftxpykqdmigxntm")
    public suspend fun windowsFxVersion(`value`: Output) {
        this.windowsFxVersion = value
    }

    /**
     * @param value Are Managed Identity Credentials used for Azure Container Registry pull
     */
    @JvmName("ppivowkfncxyiyxs")
    public suspend fun acrUseManagedIdentityCredentials(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.acrUseManagedIdentityCredentials = mapped
    }

    /**
     * @param value If using User Managed Identity, the User Managed Identity Client Id
     * > **NOTE:** When using User Managed Identity with Azure Container Registry the Identity will need to have the [ACRPull role assigned](https://docs.microsoft.com/azure/container-registry/container-registry-authentication-managed-identity#example-1-access-with-a-user-assigned-identity)
     */
    @JvmName("bltladygkhrnqrwi")
    public suspend fun acrUserManagedIdentityClientId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.acrUserManagedIdentityClientId = mapped
    }

    /**
     * @param value Should the slot be loaded at all times? Defaults to `false`.
     * > **NOTE:** when using an App Service Plan in the `Free` or `Shared` Tiers `always_on` must be set to `false`.
     */
    @JvmName("hgwupjxbuyprobrt")
    public suspend fun alwaysOn(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.alwaysOn = mapped
    }

    /**
     * @param value App command line to launch, e.g. `/sbin/myserver -b 0.0.0.0`.
     */
    @JvmName("aooxrmshpgfsfauk")
    public suspend fun appCommandLine(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.appCommandLine = mapped
    }

    /**
     * @param value The name of the slot to automatically swap to during deployment
     */
    @JvmName("oqsfcnqkrpoqquuy")
    public suspend fun autoSwapSlotName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.autoSwapSlotName = mapped
    }

    /**
     * @param value A `cors` block as defined below.
     */
    @JvmName("svhdkunpxnohvojo")
    public suspend fun cors(`value`: SlotSiteConfigCorsArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.cors = mapped
    }

    /**
     * @param argument A `cors` block as defined below.
     */
    @JvmName("vuovxivrvjywiswj")
    public suspend fun cors(argument: suspend SlotSiteConfigCorsArgsBuilder.() -> Unit) {
        val toBeMapped = SlotSiteConfigCorsArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.cors = mapped
    }

    /**
     * @param value The ordering of default documents to load, if an address isn't specified.
     */
    @JvmName("hknhhpotevarsfrb")
    public suspend fun defaultDocuments(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.defaultDocuments = mapped
    }

    /**
     * @param values The ordering of default documents to load, if an address isn't specified.
     */
    @JvmName("phlxwusnkgxqfttg")
    public suspend fun defaultDocuments(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.defaultDocuments = mapped
    }

    /**
     * @param value The version of the .NET framework's CLR used in this App Service Slot. Possible values are `v2.0` (which will use the latest version of the .NET framework for the .NET CLR v2 - currently `.net 3.5`), `v4.0` (which corresponds to the latest version of the .NET CLR v4 - which at the time of writing is `.net 4.7.1`), `v5.0` and `v6.0`. [For more information on which .NET CLR version to use based on the .NET framework you're targeting - please see this table](https://en.wikipedia.org/wiki/.NET_Framework_version_history#Overview). Defaults to `v4.0`.
     */
    @JvmName("axphxrkdxnddrwow")
    public suspend fun dotnetFrameworkVersion(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.dotnetFrameworkVersion = mapped
    }

    /**
     * @param value State of FTP / FTPS service for this App Service Slot. Possible values include: `AllAllowed`, `FtpsOnly` and `Disabled`.
     */
    @JvmName("dectgvpfxkxkvmlk")
    public suspend fun ftpsState(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.ftpsState = mapped
    }

    /**
     * @param value The health check path to be pinged by App Service Slot. [For more information - please see App Service health check announcement](https://azure.github.io/AppService/2020/08/24/healthcheck-on-app-service.html).
     */
    @JvmName("koncifoqwnduepoq")
    public suspend fun healthCheckPath(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.healthCheckPath = mapped
    }

    /**
     * @param value Is HTTP2 Enabled on this App Service? Defaults to `false`.
     */
    @JvmName("ikwigdwmpkkonpue")
    public suspend fun http2Enabled(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.http2Enabled = mapped
    }

    /**
     * @param value A list of objects representing ip restrictions as defined below.
     * > **NOTE** User has to explicitly set `ip_restriction` to empty slice (`[]`) to remove it.
     */
    @JvmName("qifcgamdyjqmcetp")
    public suspend fun ipRestrictions(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.ipRestrictions = mapped
    }

    /**
     * @param argument A list of objects representing ip restrictions as defined below.
     * > **NOTE** User has to explicitly set `ip_restriction` to empty slice (`[]`) to remove it.
     */
    @JvmName("sohlyrenhugkxnji")
    public suspend fun ipRestrictions(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            SlotSiteConfigIpRestrictionArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.ipRestrictions = mapped
    }

    /**
     * @param argument A list of objects representing ip restrictions as defined below.
     * > **NOTE** User has to explicitly set `ip_restriction` to empty slice (`[]`) to remove it.
     */
    @JvmName("cohvvbdnrehcbbte")
    public suspend fun ipRestrictions(vararg argument: suspend SlotSiteConfigIpRestrictionArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            SlotSiteConfigIpRestrictionArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.ipRestrictions = mapped
    }

    /**
     * @param argument A list of objects representing ip restrictions as defined below.
     * > **NOTE** User has to explicitly set `ip_restriction` to empty slice (`[]`) to remove it.
     */
    @JvmName("prurrkifsafxoumt")
    public suspend fun ipRestrictions(argument: suspend SlotSiteConfigIpRestrictionArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            SlotSiteConfigIpRestrictionArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.ipRestrictions = mapped
    }

    /**
     * @param values A list of objects representing ip restrictions as defined below.
     * > **NOTE** User has to explicitly set `ip_restriction` to empty slice (`[]`) to remove it.
     */
    @JvmName("etmgqceuxaqxogfo")
    public suspend fun ipRestrictions(vararg values: SlotSiteConfigIpRestrictionArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.ipRestrictions = mapped
    }

    /**
     * @param value The Java Container to use. If specified `java_version` and `java_container_version` must also be specified. Possible values are `JAVA`, `JETTY`, and `TOMCAT`.
     */
    @JvmName("ojkbujyaqivrllyd")
    public suspend fun javaContainer(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.javaContainer = mapped
    }

    /**
     * @param value The version of the Java Container to use. If specified `java_version` and `java_container` must also be specified.
     */
    @JvmName("qnuoxjpsuucvxjbd")
    public suspend fun javaContainerVersion(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.javaContainerVersion = mapped
    }

    /**
     * @param value The version of Java to use. If specified `java_container` and `java_container_version` must also be specified. Possible values are `1.7`, `1.8`, and `11` and their specific versions - except for Java 11 (e.g. `1.7.0_80`, `1.8.0_181`, `11`)
     */
    @JvmName("uqctgebjdieurhkj")
    public suspend fun javaVersion(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.javaVersion = mapped
    }

    /**
     * @param value Linux App Framework and version for the App Service Slot. Possible options are a Docker container (`DOCKER|`), a base-64 encoded Docker Compose file (`COMPOSE|${filebase64("compose.yml")}`) or a base-64 encoded Kubernetes Manifest (`KUBE|${filebase64("kubernetes.yml")}`).
     * > **NOTE:** To set this property the App Service Plan to which the App belongs must be configured with `kind = "Linux"`, and `reserved = true` or the API will reject any value supplied.
     */
    @JvmName("yfniayaxybtjskxs")
    public suspend fun linuxFxVersion(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.linuxFxVersion = mapped
    }

    /**
     * @param value Is "MySQL In App" Enabled? This runs a local MySQL instance with your app and shares resources from the App Service plan.
     * > **NOTE:** MySQL In App is not intended for production environments and will not scale beyond a single instance. Instead you may wish to use Azure Database for MySQL.
     */
    @JvmName("bkkhxmrorohqpxuh")
    public suspend fun localMysqlEnabled(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.localMysqlEnabled = mapped
    }

    /**
     * @param value The Managed Pipeline Mode. Possible values are `Integrated` and `Classic`. Defaults to `Integrated`.
     */
    @JvmName("tukljxorsmmvjcgc")
    public suspend fun managedPipelineMode(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.managedPipelineMode = mapped
    }

    /**
     * @param value The minimum supported TLS version for the app service. Possible values are `1.0`, `1.1`, and `1.2`. Defaults to `1.2` for new app services.
     */
    @JvmName("lysjyjyampmexbwn")
    public suspend fun minTlsVersion(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.minTlsVersion = mapped
    }

    /**
     * @param value The scaled number of workers (for per site scaling) of this App Service Slot. Requires that `per_site_scaling` is enabled on the `azure.appservice.Plan`. [For more information - please see Microsoft documentation on high-density hosting](https://docs.microsoft.com/azure/app-service/manage-scale-per-app).
     */
    @JvmName("lxkgywjltdiqnoiy")
    public suspend fun numberOfWorkers(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.numberOfWorkers = mapped
    }

    /**
     * @param value The version of PHP to use in this App Service Slot. Possible values are `5.5`, `5.6`, `7.0`, `7.1`, `7.2`, `7.3`, and `7.4`.
     */
    @JvmName("vmppouomtrqiuisk")
    public suspend fun phpVersion(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.phpVersion = mapped
    }

    /**
     * @param value The version of Python to use in this App Service Slot. Possible values are `2.7` and `3.4`.
     */
    @JvmName("pgixsayjhcxhnxhf")
    public suspend fun pythonVersion(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.pythonVersion = mapped
    }

    /**
     * @param value Is Remote Debugging Enabled? Defaults to `false`.
     */
    @JvmName("ngyeoxmanigljswe")
    public suspend fun remoteDebuggingEnabled(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.remoteDebuggingEnabled = mapped
    }

    /**
     * @param value Which version of Visual Studio should the Remote Debugger be compatible with? Possible values are `VS2017`, `VS2019`, and `VS2022`.
     */
    @JvmName("tkjhnwspnbmyieiv")
    public suspend fun remoteDebuggingVersion(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.remoteDebuggingVersion = mapped
    }

    /**
     * @param value A list of `scm_ip_restriction` objects representing IP restrictions as defined below.
     * > **NOTE** User has to explicitly set `scm_ip_restriction` to empty slice (`[]`) to remove it.
     */
    @JvmName("cvxknehkuvofiwta")
    public suspend fun scmIpRestrictions(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.scmIpRestrictions = mapped
    }

    /**
     * @param argument A list of `scm_ip_restriction` objects representing IP restrictions as defined below.
     * > **NOTE** User has to explicitly set `scm_ip_restriction` to empty slice (`[]`) to remove it.
     */
    @JvmName("igdvnjysexdivbqo")
    public suspend fun scmIpRestrictions(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            SlotSiteConfigScmIpRestrictionArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.scmIpRestrictions = mapped
    }

    /**
     * @param argument A list of `scm_ip_restriction` objects representing IP restrictions as defined below.
     * > **NOTE** User has to explicitly set `scm_ip_restriction` to empty slice (`[]`) to remove it.
     */
    @JvmName("nylfibaimxwymnaa")
    public suspend fun scmIpRestrictions(vararg argument: suspend SlotSiteConfigScmIpRestrictionArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            SlotSiteConfigScmIpRestrictionArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.scmIpRestrictions = mapped
    }

    /**
     * @param argument A list of `scm_ip_restriction` objects representing IP restrictions as defined below.
     * > **NOTE** User has to explicitly set `scm_ip_restriction` to empty slice (`[]`) to remove it.
     */
    @JvmName("kfotuuhqpcjvqkeb")
    public suspend fun scmIpRestrictions(argument: suspend SlotSiteConfigScmIpRestrictionArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            SlotSiteConfigScmIpRestrictionArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.scmIpRestrictions = mapped
    }

    /**
     * @param values A list of `scm_ip_restriction` objects representing IP restrictions as defined below.
     * > **NOTE** User has to explicitly set `scm_ip_restriction` to empty slice (`[]`) to remove it.
     */
    @JvmName("dsffflliqpcniyrd")
    public suspend fun scmIpRestrictions(vararg values: SlotSiteConfigScmIpRestrictionArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.scmIpRestrictions = mapped
    }

    /**
     * @param value The type of Source Control enabled for this App Service Slot. Defaults to `None`. Possible values are: `BitbucketGit`, `BitbucketHg`, `CodePlexGit`, `CodePlexHg`, `Dropbox`, `ExternalGit`, `ExternalHg`, `GitHub`, `LocalGit`, `None`, `OneDrive`, `Tfs`, `VSO`, and `VSTSRM`
     */
    @JvmName("najrnpreglodmmpt")
    public suspend fun scmType(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.scmType = mapped
    }

    /**
     * @param value IP security restrictions for scm to use main. Defaults to `false`.
     * > **NOTE** Any `scm_ip_restriction` blocks configured are ignored by the service when `scm_use_main_ip_restriction` is set to `true`. Any scm restrictions will become active if this is subsequently set to `false` or removed.
     */
    @JvmName("phduwuimqbrermib")
    public suspend fun scmUseMainIpRestriction(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.scmUseMainIpRestriction = mapped
    }

    /**
     * @param value Should the App Service Slot run in 32 bit mode, rather than 64 bit mode?
     * > **NOTE:** when using an App Service Plan in the `Free` or `Shared` Tiers `use_32_bit_worker_process` must be set to `true`.
     */
    @JvmName("iouhdlaolcwjexam")
    public suspend fun use32BitWorkerProcess(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.use32BitWorkerProcess = mapped
    }

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

    /**
     * @param value Should WebSockets be enabled?
     */
    @JvmName("pajffwqkgdgnsuwp")
    public suspend fun websocketsEnabled(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.websocketsEnabled = mapped
    }

    /**
     * @param value The Windows Docker container image (`DOCKER|`)
     * Additional examples of how to run Containers via the `azure.appservice.Slot` resource can be found in the `./examples/app-service` directory within the GitHub Repository.
     */
    @JvmName("rawwaaahdxvspuyh")
    public suspend fun windowsFxVersion(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.windowsFxVersion = mapped
    }

    internal fun build(): SlotSiteConfigArgs = SlotSiteConfigArgs(
        acrUseManagedIdentityCredentials = acrUseManagedIdentityCredentials,
        acrUserManagedIdentityClientId = acrUserManagedIdentityClientId,
        alwaysOn = alwaysOn,
        appCommandLine = appCommandLine,
        autoSwapSlotName = autoSwapSlotName,
        cors = cors,
        defaultDocuments = defaultDocuments,
        dotnetFrameworkVersion = dotnetFrameworkVersion,
        ftpsState = ftpsState,
        healthCheckPath = healthCheckPath,
        http2Enabled = http2Enabled,
        ipRestrictions = ipRestrictions,
        javaContainer = javaContainer,
        javaContainerVersion = javaContainerVersion,
        javaVersion = javaVersion,
        linuxFxVersion = linuxFxVersion,
        localMysqlEnabled = localMysqlEnabled,
        managedPipelineMode = managedPipelineMode,
        minTlsVersion = minTlsVersion,
        numberOfWorkers = numberOfWorkers,
        phpVersion = phpVersion,
        pythonVersion = pythonVersion,
        remoteDebuggingEnabled = remoteDebuggingEnabled,
        remoteDebuggingVersion = remoteDebuggingVersion,
        scmIpRestrictions = scmIpRestrictions,
        scmType = scmType,
        scmUseMainIpRestriction = scmUseMainIpRestriction,
        use32BitWorkerProcess = use32BitWorkerProcess,
        vnetRouteAllEnabled = vnetRouteAllEnabled,
        websocketsEnabled = websocketsEnabled,
        windowsFxVersion = windowsFxVersion,
    )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy