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

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

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

package com.pulumi.azure.apimanagement.kotlin

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

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

    public var args: PolicyArgs = PolicyArgs()

    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 PolicyArgsBuilder.() -> Unit) {
        val builder = PolicyArgsBuilder()
        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(): Policy {
        val builtJavaResource = com.pulumi.azure.apimanagement.Policy(
            this.name,
            this.args.toJava(),
            this.opts.toJava(),
        )
        return Policy(builtJavaResource)
    }
}

/**
 * Manages a API Management service Policy.
 * > **NOTE:** This resource will, upon creation, **overwrite any existing policy in the API Management service**, as there is no feasible way to test whether the policy has been modified from the default. Similarly, when this resource is destroyed, the API Management service will revert to its default policy.
 * ## Example Usage
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as azure from "@pulumi/azure";
 * import * as std from "@pulumi/std";
 * 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: "pub1",
 *     publisherEmail: "[email protected]",
 *     skuName: "Developer_1",
 * });
 * const exampleNamedValue = new azure.apimanagement.NamedValue("example", {
 *     name: "example-apimg",
 *     resourceGroupName: example.name,
 *     apiManagementName: exampleService.name,
 *     displayName: "ExampleProperty",
 *     value: "Example Value",
 * });
 * const examplePolicy = new azure.apimanagement.Policy("example", {
 *     apiManagementId: exampleService.id,
 *     xmlContent: std.file({
 *         input: "example.xml",
 *     }).then(invoke => invoke.result),
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_azure as azure
 * import pulumi_std as std
 * 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="pub1",
 *     publisher_email="[email protected]",
 *     sku_name="Developer_1")
 * example_named_value = azure.apimanagement.NamedValue("example",
 *     name="example-apimg",
 *     resource_group_name=example.name,
 *     api_management_name=example_service.name,
 *     display_name="ExampleProperty",
 *     value="Example Value")
 * example_policy = azure.apimanagement.Policy("example",
 *     api_management_id=example_service.id,
 *     xml_content=std.file(input="example.xml").result)
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Azure = Pulumi.Azure;
 * using Std = Pulumi.Std;
 * 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 = "pub1",
 *         PublisherEmail = "[email protected]",
 *         SkuName = "Developer_1",
 *     });
 *     var exampleNamedValue = new Azure.ApiManagement.NamedValue("example", new()
 *     {
 *         Name = "example-apimg",
 *         ResourceGroupName = example.Name,
 *         ApiManagementName = exampleService.Name,
 *         DisplayName = "ExampleProperty",
 *         Value = "Example Value",
 *     });
 *     var examplePolicy = new Azure.ApiManagement.Policy("example", new()
 *     {
 *         ApiManagementId = exampleService.Id,
 *         XmlContent = Std.File.Invoke(new()
 *         {
 *             Input = "example.xml",
 *         }).Apply(invoke => invoke.Result),
 *     });
 * });
 * ```
 * ```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-std/sdk/go/std"
 * 	"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("pub1"),
 * 			PublisherEmail:    pulumi.String("[email protected]"),
 * 			SkuName:           pulumi.String("Developer_1"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = apimanagement.NewNamedValue(ctx, "example", &apimanagement.NamedValueArgs{
 * 			Name:              pulumi.String("example-apimg"),
 * 			ResourceGroupName: example.Name,
 * 			ApiManagementName: exampleService.Name,
 * 			DisplayName:       pulumi.String("ExampleProperty"),
 * 			Value:             pulumi.String("Example Value"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		invokeFile, err := std.File(ctx, &std.FileArgs{
 * 			Input: "example.xml",
 * 		}, nil)
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = apimanagement.NewPolicy(ctx, "example", &apimanagement.PolicyArgs{
 * 			ApiManagementId: exampleService.ID(),
 * 			XmlContent:      pulumi.String(invokeFile.Result),
 * 		})
 * 		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.NamedValue;
 * import com.pulumi.azure.apimanagement.NamedValueArgs;
 * import com.pulumi.azure.apimanagement.Policy;
 * import com.pulumi.azure.apimanagement.PolicyArgs;
 * 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("pub1")
 *             .publisherEmail("[email protected]")
 *             .skuName("Developer_1")
 *             .build());
 *         var exampleNamedValue = new NamedValue("exampleNamedValue", NamedValueArgs.builder()
 *             .name("example-apimg")
 *             .resourceGroupName(example.name())
 *             .apiManagementName(exampleService.name())
 *             .displayName("ExampleProperty")
 *             .value("Example Value")
 *             .build());
 *         var examplePolicy = new Policy("examplePolicy", PolicyArgs.builder()
 *             .apiManagementId(exampleService.id())
 *             .xmlContent(StdFunctions.file(FileArgs.builder()
 *                 .input("example.xml")
 *                 .build()).result())
 *             .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: pub1
 *       publisherEmail: [email protected]
 *       skuName: Developer_1
 *   exampleNamedValue:
 *     type: azure:apimanagement:NamedValue
 *     name: example
 *     properties:
 *       name: example-apimg
 *       resourceGroupName: ${example.name}
 *       apiManagementName: ${exampleService.name}
 *       displayName: ExampleProperty
 *       value: Example Value
 *   examplePolicy:
 *     type: azure:apimanagement:Policy
 *     name: example
 *     properties:
 *       apiManagementId: ${exampleService.id}
 *       xmlContent:
 *         fn::invoke:
 *           Function: std:file
 *           Arguments:
 *             input: example.xml
 *           Return: result
 * ```
 * 
 * ## Import
 * API Management service Policys can be imported using the `resource id`, e.g.
 * ```sh
 * $ pulumi import azure:apimanagement/policy:Policy example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.ApiManagement/service/service1
 * ```
 */
public class Policy internal constructor(
    override val javaResource: com.pulumi.azure.apimanagement.Policy,
) : KotlinCustomResource(javaResource, PolicyMapper) {
    /**
     * The ID of the API Management service. Changing this forces a new API Management service Policy to be created.
     */
    public val apiManagementId: Output
        get() = javaResource.apiManagementId().applyValue({ args0 -> args0 })

    /**
     * The XML Content for this Policy as a string.
     */
    public val xmlContent: Output
        get() = javaResource.xmlContent().applyValue({ args0 -> args0 })

    /**
     * A link to a Policy XML Document, which must be publicly available.
     */
    public val xmlLink: Output?
        get() = javaResource.xmlLink().applyValue({ args0 -> args0.map({ args0 -> args0 }).orElse(null) })
}

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

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

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

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




© 2015 - 2024 Weber Informatics LLC | Privacy Policy