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

com.pulumi.azure.apimanagement.kotlin.Backend.kt Maven / Gradle / Ivy

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

package com.pulumi.azure.apimanagement.kotlin

import com.pulumi.azure.apimanagement.kotlin.outputs.BackendCredentials
import com.pulumi.azure.apimanagement.kotlin.outputs.BackendProxy
import com.pulumi.azure.apimanagement.kotlin.outputs.BackendServiceFabricCluster
import com.pulumi.azure.apimanagement.kotlin.outputs.BackendTls
import com.pulumi.core.Output
import com.pulumi.kotlin.KotlinCustomResource
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.ResourceMapper
import com.pulumi.kotlin.options.CustomResourceOptions
import com.pulumi.kotlin.options.CustomResourceOptionsBuilder
import com.pulumi.resources.Resource
import kotlin.Boolean
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import com.pulumi.azure.apimanagement.kotlin.outputs.BackendCredentials.Companion.toKotlin as backendCredentialsToKotlin
import com.pulumi.azure.apimanagement.kotlin.outputs.BackendProxy.Companion.toKotlin as backendProxyToKotlin
import com.pulumi.azure.apimanagement.kotlin.outputs.BackendServiceFabricCluster.Companion.toKotlin as backendServiceFabricClusterToKotlin
import com.pulumi.azure.apimanagement.kotlin.outputs.BackendTls.Companion.toKotlin as backendTlsToKotlin

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

    public var args: BackendArgs = BackendArgs()

    public var opts: CustomResourceOptions = CustomResourceOptions()

    /**
     * @param name The _unique_ name of the resulting resource.
     */
    public fun name(`value`: String) {
        this.name = value
    }

    /**
     * @param block The arguments to use to populate this resource's properties.
     */
    public suspend fun args(block: suspend BackendArgsBuilder.() -> Unit) {
        val builder = BackendArgsBuilder()
        block(builder)
        this.args = builder.build()
    }

    /**
     * @param block A bag of options that control this resource's behavior.
     */
    public suspend fun opts(block: suspend CustomResourceOptionsBuilder.() -> Unit) {
        this.opts = com.pulumi.kotlin.options.CustomResourceOptions.opts(block)
    }

    internal fun build(): Backend {
        val builtJavaResource = com.pulumi.azure.apimanagement.Backend(
            this.name,
            this.args.toJava(),
            this.opts.toJava(),
        )
        return Backend(builtJavaResource)
    }
}

/**
 * Manages a backend within an API Management Service.
 * ## Example Usage
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as azure from "@pulumi/azure";
 * const example = new azure.core.ResourceGroup("example", {
 *     name: "example-resources",
 *     location: "West Europe",
 * });
 * const exampleService = new azure.apimanagement.Service("example", {
 *     name: "example-apim",
 *     location: example.location,
 *     resourceGroupName: example.name,
 *     publisherName: "My Company",
 *     publisherEmail: "[email protected]",
 *     skuName: "Developer_1",
 * });
 * const exampleBackend = new azure.apimanagement.Backend("example", {
 *     name: "example-backend",
 *     resourceGroupName: example.name,
 *     apiManagementName: exampleService.name,
 *     protocol: "http",
 *     url: "https://backend",
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_azure as azure
 * example = azure.core.ResourceGroup("example",
 *     name="example-resources",
 *     location="West Europe")
 * example_service = azure.apimanagement.Service("example",
 *     name="example-apim",
 *     location=example.location,
 *     resource_group_name=example.name,
 *     publisher_name="My Company",
 *     publisher_email="[email protected]",
 *     sku_name="Developer_1")
 * example_backend = azure.apimanagement.Backend("example",
 *     name="example-backend",
 *     resource_group_name=example.name,
 *     api_management_name=example_service.name,
 *     protocol="http",
 *     url="https://backend")
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Azure = Pulumi.Azure;
 * return await Deployment.RunAsync(() =>
 * {
 *     var example = new Azure.Core.ResourceGroup("example", new()
 *     {
 *         Name = "example-resources",
 *         Location = "West Europe",
 *     });
 *     var exampleService = new Azure.ApiManagement.Service("example", new()
 *     {
 *         Name = "example-apim",
 *         Location = example.Location,
 *         ResourceGroupName = example.Name,
 *         PublisherName = "My Company",
 *         PublisherEmail = "[email protected]",
 *         SkuName = "Developer_1",
 *     });
 *     var exampleBackend = new Azure.ApiManagement.Backend("example", new()
 *     {
 *         Name = "example-backend",
 *         ResourceGroupName = example.Name,
 *         ApiManagementName = exampleService.Name,
 *         Protocol = "http",
 *         Url = "https://backend",
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/apimanagement"
 * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/core"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		example, err := core.NewResourceGroup(ctx, "example", &core.ResourceGroupArgs{
 * 			Name:     pulumi.String("example-resources"),
 * 			Location: pulumi.String("West Europe"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		exampleService, err := apimanagement.NewService(ctx, "example", &apimanagement.ServiceArgs{
 * 			Name:              pulumi.String("example-apim"),
 * 			Location:          example.Location,
 * 			ResourceGroupName: example.Name,
 * 			PublisherName:     pulumi.String("My Company"),
 * 			PublisherEmail:    pulumi.String("[email protected]"),
 * 			SkuName:           pulumi.String("Developer_1"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = apimanagement.NewBackend(ctx, "example", &apimanagement.BackendArgs{
 * 			Name:              pulumi.String("example-backend"),
 * 			ResourceGroupName: example.Name,
 * 			ApiManagementName: exampleService.Name,
 * 			Protocol:          pulumi.String("http"),
 * 			Url:               pulumi.String("https://backend"),
 * 		})
 * 		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.azure.core.ResourceGroup;
 * import com.pulumi.azure.core.ResourceGroupArgs;
 * import com.pulumi.azure.apimanagement.Service;
 * import com.pulumi.azure.apimanagement.ServiceArgs;
 * import com.pulumi.azure.apimanagement.Backend;
 * import com.pulumi.azure.apimanagement.BackendArgs;
 * 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 ResourceGroup("example", ResourceGroupArgs.builder()
 *             .name("example-resources")
 *             .location("West Europe")
 *             .build());
 *         var exampleService = new Service("exampleService", ServiceArgs.builder()
 *             .name("example-apim")
 *             .location(example.location())
 *             .resourceGroupName(example.name())
 *             .publisherName("My Company")
 *             .publisherEmail("[email protected]")
 *             .skuName("Developer_1")
 *             .build());
 *         var exampleBackend = new Backend("exampleBackend", BackendArgs.builder()
 *             .name("example-backend")
 *             .resourceGroupName(example.name())
 *             .apiManagementName(exampleService.name())
 *             .protocol("http")
 *             .url("https://backend")
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   example:
 *     type: azure:core:ResourceGroup
 *     properties:
 *       name: example-resources
 *       location: West Europe
 *   exampleService:
 *     type: azure:apimanagement:Service
 *     name: example
 *     properties:
 *       name: example-apim
 *       location: ${example.location}
 *       resourceGroupName: ${example.name}
 *       publisherName: My Company
 *       publisherEmail: [email protected]
 *       skuName: Developer_1
 *   exampleBackend:
 *     type: azure:apimanagement:Backend
 *     name: example
 *     properties:
 *       name: example-backend
 *       resourceGroupName: ${example.name}
 *       apiManagementName: ${exampleService.name}
 *       protocol: http
 *       url: https://backend
 * ```
 * 
 * ## Import
 * API Management backends can be imported using the `resource id`, e.g.
 * ```sh
 * $ pulumi import azure:apimanagement/backend:Backend example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/mygroup1/providers/Microsoft.ApiManagement/service/instance1/backends/backend1
 * ```
 */
public class Backend internal constructor(
    override val javaResource: com.pulumi.azure.apimanagement.Backend,
) : KotlinCustomResource(javaResource, BackendMapper) {
    /**
     * The Name of the API Management Service where this backend should be created. Changing this forces a new resource to be created.
     */
    public val apiManagementName: Output
        get() = javaResource.apiManagementName().applyValue({ args0 -> args0 })

    /**
     * A `credentials` block as documented below.
     */
    public val credentials: Output?
        get() = javaResource.credentials().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 ->
                    backendCredentialsToKotlin(args0)
                })
            }).orElse(null)
        })

    /**
     * The description of the backend.
     */
    public val description: Output?
        get() = javaResource.description().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * The name of the API Management backend. Changing this forces a new resource to be created.
     */
    public val name: Output
        get() = javaResource.name().applyValue({ args0 -> args0 })

    /**
     * The protocol used by the backend host. Possible values are `http` or `soap`.
     */
    public val protocol: Output
        get() = javaResource.protocol().applyValue({ args0 -> args0 })

    /**
     * A `proxy` block as documented below.
     */
    public val proxy: Output?
        get() = javaResource.proxy().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 ->
                    backendProxyToKotlin(args0)
                })
            }).orElse(null)
        })

    /**
     * The Name of the Resource Group where the API Management Service exists. Changing this forces a new resource to be created.
     */
    public val resourceGroupName: Output
        get() = javaResource.resourceGroupName().applyValue({ args0 -> args0 })

    /**
     * The management URI of the backend host in an external system. This URI can be the ARM Resource ID of Logic Apps, Function Apps or API Apps, or the management endpoint of a Service Fabric cluster.
     */
    public val resourceId: Output?
        get() = javaResource.resourceId().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * A `service_fabric_cluster` block as documented below.
     */
    public val serviceFabricCluster: Output?
        get() = javaResource.serviceFabricCluster().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 -> backendServiceFabricClusterToKotlin(args0) })
            }).orElse(null)
        })

    /**
     * The title of the backend.
     */
    public val title: Output?
        get() = javaResource.title().applyValue({ args0 -> args0.map({ args0 -> args0 }).orElse(null) })

    /**
     * A `tls` block as documented below.
     */
    public val tls: Output?
        get() = javaResource.tls().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 ->
                    backendTlsToKotlin(args0)
                })
            }).orElse(null)
        })

    /**
     * The URL of the backend host.
     */
    public val url: Output
        get() = javaResource.url().applyValue({ args0 -> args0 })
}

public object BackendMapper : ResourceMapper {
    override fun supportsMappingOfType(javaResource: Resource): Boolean =
        com.pulumi.azure.apimanagement.Backend::class == javaResource::class

    override fun map(javaResource: Resource): Backend = Backend(
        javaResource as
            com.pulumi.azure.apimanagement.Backend,
    )
}

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

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




© 2015 - 2024 Weber Informatics LLC | Privacy Policy