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

com.pulumi.azurenative.containerinstance.kotlin.ContainerGroup.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: 2.82.0.0
Show newest version
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.azurenative.containerinstance.kotlin

import com.pulumi.azurenative.containerinstance.kotlin.outputs.ConfidentialComputePropertiesResponse
import com.pulumi.azurenative.containerinstance.kotlin.outputs.ContainerGroupDiagnosticsResponse
import com.pulumi.azurenative.containerinstance.kotlin.outputs.ContainerGroupIdentityResponse
import com.pulumi.azurenative.containerinstance.kotlin.outputs.ContainerGroupPropertiesResponseInstanceView
import com.pulumi.azurenative.containerinstance.kotlin.outputs.ContainerGroupSubnetIdResponse
import com.pulumi.azurenative.containerinstance.kotlin.outputs.ContainerResponse
import com.pulumi.azurenative.containerinstance.kotlin.outputs.DeploymentExtensionSpecResponse
import com.pulumi.azurenative.containerinstance.kotlin.outputs.DnsConfigurationResponse
import com.pulumi.azurenative.containerinstance.kotlin.outputs.EncryptionPropertiesResponse
import com.pulumi.azurenative.containerinstance.kotlin.outputs.ImageRegistryCredentialResponse
import com.pulumi.azurenative.containerinstance.kotlin.outputs.InitContainerDefinitionResponse
import com.pulumi.azurenative.containerinstance.kotlin.outputs.IpAddressResponse
import com.pulumi.azurenative.containerinstance.kotlin.outputs.VolumeResponse
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 kotlin.collections.List
import kotlin.collections.Map
import com.pulumi.azurenative.containerinstance.kotlin.outputs.ConfidentialComputePropertiesResponse.Companion.toKotlin as confidentialComputePropertiesResponseToKotlin
import com.pulumi.azurenative.containerinstance.kotlin.outputs.ContainerGroupDiagnosticsResponse.Companion.toKotlin as containerGroupDiagnosticsResponseToKotlin
import com.pulumi.azurenative.containerinstance.kotlin.outputs.ContainerGroupIdentityResponse.Companion.toKotlin as containerGroupIdentityResponseToKotlin
import com.pulumi.azurenative.containerinstance.kotlin.outputs.ContainerGroupPropertiesResponseInstanceView.Companion.toKotlin as containerGroupPropertiesResponseInstanceViewToKotlin
import com.pulumi.azurenative.containerinstance.kotlin.outputs.ContainerGroupSubnetIdResponse.Companion.toKotlin as containerGroupSubnetIdResponseToKotlin
import com.pulumi.azurenative.containerinstance.kotlin.outputs.ContainerResponse.Companion.toKotlin as containerResponseToKotlin
import com.pulumi.azurenative.containerinstance.kotlin.outputs.DeploymentExtensionSpecResponse.Companion.toKotlin as deploymentExtensionSpecResponseToKotlin
import com.pulumi.azurenative.containerinstance.kotlin.outputs.DnsConfigurationResponse.Companion.toKotlin as dnsConfigurationResponseToKotlin
import com.pulumi.azurenative.containerinstance.kotlin.outputs.EncryptionPropertiesResponse.Companion.toKotlin as encryptionPropertiesResponseToKotlin
import com.pulumi.azurenative.containerinstance.kotlin.outputs.ImageRegistryCredentialResponse.Companion.toKotlin as imageRegistryCredentialResponseToKotlin
import com.pulumi.azurenative.containerinstance.kotlin.outputs.InitContainerDefinitionResponse.Companion.toKotlin as initContainerDefinitionResponseToKotlin
import com.pulumi.azurenative.containerinstance.kotlin.outputs.IpAddressResponse.Companion.toKotlin as ipAddressResponseToKotlin
import com.pulumi.azurenative.containerinstance.kotlin.outputs.VolumeResponse.Companion.toKotlin as volumeResponseToKotlin

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

    public var args: ContainerGroupArgs = ContainerGroupArgs()

    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 ContainerGroupArgsBuilder.() -> Unit) {
        val builder = ContainerGroupArgsBuilder()
        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(): ContainerGroup {
        val builtJavaResource =
            com.pulumi.azurenative.containerinstance.ContainerGroup(
                this.name,
                this.args.toJava(),
                this.opts.toJava(),
            )
        return ContainerGroup(builtJavaResource)
    }
}

/**
 * A container group.
 * Azure REST API version: 2023-05-01. Prior API version in Azure Native 1.x: 2021-03-01.
 * Other available API versions: 2017-08-01-preview, 2017-12-01-preview, 2021-03-01, 2021-07-01, 2023-02-01-preview, 2024-05-01-preview.
 * ## Example Usage
 * ### ConfidentialContainerGroup
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using AzureNative = Pulumi.AzureNative;
 * return await Deployment.RunAsync(() =>
 * {
 *     var containerGroup = new AzureNative.ContainerInstance.ContainerGroup("containerGroup", new()
 *     {
 *         ConfidentialComputeProperties = new AzureNative.ContainerInstance.Inputs.ConfidentialComputePropertiesArgs
 *         {
 *             CcePolicy = "eyJhbGxvd19hbGwiOiB0cnVlLCAiY29udGFpbmVycyI6IHsibGVuZ3RoIjogMCwgImVsZW1lbnRzIjogbnVsbH19",
 *         },
 *         ContainerGroupName = "demo1",
 *         Containers = new[]
 *         {
 *             new AzureNative.ContainerInstance.Inputs.ContainerArgs
 *             {
 *                 Command = new() { },
 *                 EnvironmentVariables = new() { },
 *                 Image = "confiimage",
 *                 Name = "accdemo",
 *                 Ports = new[]
 *                 {
 *                     new AzureNative.ContainerInstance.Inputs.ContainerPortArgs
 *                     {
 *                         Port = 8000,
 *                     },
 *                 },
 *                 Resources = new AzureNative.ContainerInstance.Inputs.ResourceRequirementsArgs
 *                 {
 *                     Requests = new AzureNative.ContainerInstance.Inputs.ResourceRequestsArgs
 *                     {
 *                         Cpu = 1,
 *                         MemoryInGB = 1.5,
 *                     },
 *                 },
 *                 SecurityContext = new AzureNative.ContainerInstance.Inputs.SecurityContextDefinitionArgs
 *                 {
 *                     Capabilities = new AzureNative.ContainerInstance.Inputs.SecurityContextCapabilitiesDefinitionArgs
 *                     {
 *                         Add = new[]
 *                         {
 *                             "CAP_NET_ADMIN",
 *                         },
 *                     },
 *                     Privileged = false,
 *                 },
 *             },
 *         },
 *         ImageRegistryCredentials = new[] {},
 *         IpAddress = new AzureNative.ContainerInstance.Inputs.IpAddressArgs
 *         {
 *             Ports = new[]
 *             {
 *                 new AzureNative.ContainerInstance.Inputs.PortArgs
 *                 {
 *                     Port = 8000,
 *                     Protocol = AzureNative.ContainerInstance.ContainerGroupNetworkProtocol.TCP,
 *                 },
 *             },
 *             Type = AzureNative.ContainerInstance.ContainerGroupIpAddressType.Public,
 *         },
 *         Location = "westeurope",
 *         OsType = AzureNative.ContainerInstance.OperatingSystemTypes.Linux,
 *         ResourceGroupName = "demo",
 *         Sku = AzureNative.ContainerInstance.ContainerGroupSku.Confidential,
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	containerinstance "github.com/pulumi/pulumi-azure-native-sdk/containerinstance/v2"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := containerinstance.NewContainerGroup(ctx, "containerGroup", &containerinstance.ContainerGroupArgs{
 * 			ConfidentialComputeProperties: &containerinstance.ConfidentialComputePropertiesArgs{
 * 				CcePolicy: pulumi.String("eyJhbGxvd19hbGwiOiB0cnVlLCAiY29udGFpbmVycyI6IHsibGVuZ3RoIjogMCwgImVsZW1lbnRzIjogbnVsbH19"),
 * 			},
 * 			ContainerGroupName: pulumi.String("demo1"),
 * 			Containers: containerinstance.ContainerArray{
 * 				&containerinstance.ContainerArgs{
 * 					Command:              pulumi.StringArray{},
 * 					EnvironmentVariables: containerinstance.EnvironmentVariableArray{},
 * 					Image:                pulumi.String("confiimage"),
 * 					Name:                 pulumi.String("accdemo"),
 * 					Ports: containerinstance.ContainerPortArray{
 * 						&containerinstance.ContainerPortArgs{
 * 							Port: pulumi.Int(8000),
 * 						},
 * 					},
 * 					Resources: &containerinstance.ResourceRequirementsArgs{
 * 						Requests: &containerinstance.ResourceRequestsArgs{
 * 							Cpu:        pulumi.Float64(1),
 * 							MemoryInGB: pulumi.Float64(1.5),
 * 						},
 * 					},
 * 					SecurityContext: &containerinstance.SecurityContextDefinitionArgs{
 * 						Capabilities: &containerinstance.SecurityContextCapabilitiesDefinitionArgs{
 * 							Add: pulumi.StringArray{
 * 								pulumi.String("CAP_NET_ADMIN"),
 * 							},
 * 						},
 * 						Privileged: pulumi.Bool(false),
 * 					},
 * 				},
 * 			},
 * 			ImageRegistryCredentials: containerinstance.ImageRegistryCredentialArray{},
 * 			IpAddress: &containerinstance.IpAddressArgs{
 * 				Ports: containerinstance.PortArray{
 * 					&containerinstance.PortArgs{
 * 						Port:     pulumi.Int(8000),
 * 						Protocol: pulumi.String(containerinstance.ContainerGroupNetworkProtocolTCP),
 * 					},
 * 				},
 * 				Type: pulumi.String(containerinstance.ContainerGroupIpAddressTypePublic),
 * 			},
 * 			Location:          pulumi.String("westeurope"),
 * 			OsType:            pulumi.String(containerinstance.OperatingSystemTypesLinux),
 * 			ResourceGroupName: pulumi.String("demo"),
 * 			Sku:               pulumi.String(containerinstance.ContainerGroupSkuConfidential),
 * 		})
 * 		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.azurenative.containerinstance.ContainerGroup;
 * import com.pulumi.azurenative.containerinstance.ContainerGroupArgs;
 * import com.pulumi.azurenative.containerinstance.inputs.ConfidentialComputePropertiesArgs;
 * import com.pulumi.azurenative.containerinstance.inputs.ContainerArgs;
 * import com.pulumi.azurenative.containerinstance.inputs.ResourceRequirementsArgs;
 * import com.pulumi.azurenative.containerinstance.inputs.ResourceRequestsArgs;
 * import com.pulumi.azurenative.containerinstance.inputs.SecurityContextDefinitionArgs;
 * import com.pulumi.azurenative.containerinstance.inputs.SecurityContextCapabilitiesDefinitionArgs;
 * import com.pulumi.azurenative.containerinstance.inputs.IpAddressArgs;
 * 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 containerGroup = new ContainerGroup("containerGroup", ContainerGroupArgs.builder()
 *             .confidentialComputeProperties(ConfidentialComputePropertiesArgs.builder()
 *                 .ccePolicy("eyJhbGxvd19hbGwiOiB0cnVlLCAiY29udGFpbmVycyI6IHsibGVuZ3RoIjogMCwgImVsZW1lbnRzIjogbnVsbH19")
 *                 .build())
 *             .containerGroupName("demo1")
 *             .containers(ContainerArgs.builder()
 *                 .command()
 *                 .environmentVariables()
 *                 .image("confiimage")
 *                 .name("accdemo")
 *                 .ports(ContainerPortArgs.builder()
 *                     .port(8000)
 *                     .build())
 *                 .resources(ResourceRequirementsArgs.builder()
 *                     .requests(ResourceRequestsArgs.builder()
 *                         .cpu(1)
 *                         .memoryInGB(1.5)
 *                         .build())
 *                     .build())
 *                 .securityContext(SecurityContextDefinitionArgs.builder()
 *                     .capabilities(SecurityContextCapabilitiesDefinitionArgs.builder()
 *                         .add("CAP_NET_ADMIN")
 *                         .build())
 *                     .privileged(false)
 *                     .build())
 *                 .build())
 *             .imageRegistryCredentials()
 *             .ipAddress(IpAddressArgs.builder()
 *                 .ports(PortArgs.builder()
 *                     .port(8000)
 *                     .protocol("TCP")
 *                     .build())
 *                 .type("Public")
 *                 .build())
 *             .location("westeurope")
 *             .osType("Linux")
 *             .resourceGroupName("demo")
 *             .sku("Confidential")
 *             .build());
 *     }
 * }
 * ```
 * ### ContainerGroupCreateWithExtensions
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using AzureNative = Pulumi.AzureNative;
 * return await Deployment.RunAsync(() =>
 * {
 *     var containerGroup = new AzureNative.ContainerInstance.ContainerGroup("containerGroup", new()
 *     {
 *         ContainerGroupName = "demo1",
 *         Containers = new[]
 *         {
 *             new AzureNative.ContainerInstance.Inputs.ContainerArgs
 *             {
 *                 Command = new() { },
 *                 EnvironmentVariables = new() { },
 *                 Image = "nginx",
 *                 Name = "demo1",
 *                 Ports = new[]
 *                 {
 *                     new AzureNative.ContainerInstance.Inputs.ContainerPortArgs
 *                     {
 *                         Port = 80,
 *                     },
 *                 },
 *                 Resources = new AzureNative.ContainerInstance.Inputs.ResourceRequirementsArgs
 *                 {
 *                     Requests = new AzureNative.ContainerInstance.Inputs.ResourceRequestsArgs
 *                     {
 *                         Cpu = 1,
 *                         MemoryInGB = 1.5,
 *                     },
 *                 },
 *             },
 *         },
 *         Extensions = new[]
 *         {
 *             new AzureNative.ContainerInstance.Inputs.DeploymentExtensionSpecArgs
 *             {
 *                 ExtensionType = "kube-proxy",
 *                 Name = "kube-proxy",
 *                 ProtectedSettings = new Dictionary
 *                 {
 *                     ["kubeConfig"] = "",
 *                 },
 *                 Settings = new Dictionary
 *                 {
 *                     ["clusterCidr"] = "10.240.0.0/16",
 *                     ["kubeVersion"] = "v1.9.10",
 *                 },
 *                 Version = "1.0",
 *             },
 *             new AzureNative.ContainerInstance.Inputs.DeploymentExtensionSpecArgs
 *             {
 *                 ExtensionType = "realtime-metrics",
 *                 Name = "vk-realtime-metrics",
 *                 Version = "1.0",
 *             },
 *         },
 *         ImageRegistryCredentials = new[] {},
 *         IpAddress = new AzureNative.ContainerInstance.Inputs.IpAddressArgs
 *         {
 *             Ports = new[]
 *             {
 *                 new AzureNative.ContainerInstance.Inputs.PortArgs
 *                 {
 *                     Port = 80,
 *                     Protocol = AzureNative.ContainerInstance.ContainerGroupNetworkProtocol.TCP,
 *                 },
 *             },
 *             Type = AzureNative.ContainerInstance.ContainerGroupIpAddressType.Private,
 *         },
 *         Location = "eastus2",
 *         OsType = AzureNative.ContainerInstance.OperatingSystemTypes.Linux,
 *         ResourceGroupName = "demo",
 *         SubnetIds = new[]
 *         {
 *             new AzureNative.ContainerInstance.Inputs.ContainerGroupSubnetIdArgs
 *             {
 *                 Id = "/subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/test-rg/providers/Microsoft.Network/virtualNetworks/test-rg-vnet/subnets/test-subnet",
 *             },
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	containerinstance "github.com/pulumi/pulumi-azure-native-sdk/containerinstance/v2"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := containerinstance.NewContainerGroup(ctx, "containerGroup", &containerinstance.ContainerGroupArgs{
 * 			ContainerGroupName: pulumi.String("demo1"),
 * 			Containers: containerinstance.ContainerArray{
 * 				&containerinstance.ContainerArgs{
 * 					Command:              pulumi.StringArray{},
 * 					EnvironmentVariables: containerinstance.EnvironmentVariableArray{},
 * 					Image:                pulumi.String("nginx"),
 * 					Name:                 pulumi.String("demo1"),
 * 					Ports: containerinstance.ContainerPortArray{
 * 						&containerinstance.ContainerPortArgs{
 * 							Port: pulumi.Int(80),
 * 						},
 * 					},
 * 					Resources: &containerinstance.ResourceRequirementsArgs{
 * 						Requests: &containerinstance.ResourceRequestsArgs{
 * 							Cpu:        pulumi.Float64(1),
 * 							MemoryInGB: pulumi.Float64(1.5),
 * 						},
 * 					},
 * 				},
 * 			},
 * 			Extensions: containerinstance.DeploymentExtensionSpecArray{
 * 				&containerinstance.DeploymentExtensionSpecArgs{
 * 					ExtensionType: pulumi.String("kube-proxy"),
 * 					Name:          pulumi.String("kube-proxy"),
 * 					ProtectedSettings: pulumi.Any(map[string]interface{}{
 * 						"kubeConfig": "",
 * 					}),
 * 					Settings: pulumi.Any(map[string]interface{}{
 * 						"clusterCidr": "10.240.0.0/16",
 * 						"kubeVersion": "v1.9.10",
 * 					}),
 * 					Version: pulumi.String("1.0"),
 * 				},
 * 				&containerinstance.DeploymentExtensionSpecArgs{
 * 					ExtensionType: pulumi.String("realtime-metrics"),
 * 					Name:          pulumi.String("vk-realtime-metrics"),
 * 					Version:       pulumi.String("1.0"),
 * 				},
 * 			},
 * 			ImageRegistryCredentials: containerinstance.ImageRegistryCredentialArray{},
 * 			IpAddress: &containerinstance.IpAddressArgs{
 * 				Ports: containerinstance.PortArray{
 * 					&containerinstance.PortArgs{
 * 						Port:     pulumi.Int(80),
 * 						Protocol: pulumi.String(containerinstance.ContainerGroupNetworkProtocolTCP),
 * 					},
 * 				},
 * 				Type: pulumi.String(containerinstance.ContainerGroupIpAddressTypePrivate),
 * 			},
 * 			Location:          pulumi.String("eastus2"),
 * 			OsType:            pulumi.String(containerinstance.OperatingSystemTypesLinux),
 * 			ResourceGroupName: pulumi.String("demo"),
 * 			SubnetIds: containerinstance.ContainerGroupSubnetIdArray{
 * 				&containerinstance.ContainerGroupSubnetIdArgs{
 * 					Id: pulumi.String("/subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/test-rg/providers/Microsoft.Network/virtualNetworks/test-rg-vnet/subnets/test-subnet"),
 * 				},
 * 			},
 * 		})
 * 		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.azurenative.containerinstance.ContainerGroup;
 * import com.pulumi.azurenative.containerinstance.ContainerGroupArgs;
 * import com.pulumi.azurenative.containerinstance.inputs.ContainerArgs;
 * import com.pulumi.azurenative.containerinstance.inputs.ResourceRequirementsArgs;
 * import com.pulumi.azurenative.containerinstance.inputs.ResourceRequestsArgs;
 * import com.pulumi.azurenative.containerinstance.inputs.DeploymentExtensionSpecArgs;
 * import com.pulumi.azurenative.containerinstance.inputs.IpAddressArgs;
 * import com.pulumi.azurenative.containerinstance.inputs.ContainerGroupSubnetIdArgs;
 * 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 containerGroup = new ContainerGroup("containerGroup", ContainerGroupArgs.builder()
 *             .containerGroupName("demo1")
 *             .containers(ContainerArgs.builder()
 *                 .command()
 *                 .environmentVariables()
 *                 .image("nginx")
 *                 .name("demo1")
 *                 .ports(ContainerPortArgs.builder()
 *                     .port(80)
 *                     .build())
 *                 .resources(ResourceRequirementsArgs.builder()
 *                     .requests(ResourceRequestsArgs.builder()
 *                         .cpu(1)
 *                         .memoryInGB(1.5)
 *                         .build())
 *                     .build())
 *                 .build())
 *             .extensions(
 *                 DeploymentExtensionSpecArgs.builder()
 *                     .extensionType("kube-proxy")
 *                     .name("kube-proxy")
 *                     .protectedSettings(Map.of("kubeConfig", ""))
 *                     .settings(Map.ofEntries(
 *                         Map.entry("clusterCidr", "10.240.0.0/16"),
 *                         Map.entry("kubeVersion", "v1.9.10")
 *                     ))
 *                     .version("1.0")
 *                     .build(),
 *                 DeploymentExtensionSpecArgs.builder()
 *                     .extensionType("realtime-metrics")
 *                     .name("vk-realtime-metrics")
 *                     .version("1.0")
 *                     .build())
 *             .imageRegistryCredentials()
 *             .ipAddress(IpAddressArgs.builder()
 *                 .ports(PortArgs.builder()
 *                     .port(80)
 *                     .protocol("TCP")
 *                     .build())
 *                 .type("Private")
 *                 .build())
 *             .location("eastus2")
 *             .osType("Linux")
 *             .resourceGroupName("demo")
 *             .subnetIds(ContainerGroupSubnetIdArgs.builder()
 *                 .id("/subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/test-rg/providers/Microsoft.Network/virtualNetworks/test-rg-vnet/subnets/test-subnet")
 *                 .build())
 *             .build());
 *     }
 * }
 * ```
 * ### ContainerGroupsCreateWithPriority
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using AzureNative = Pulumi.AzureNative;
 * return await Deployment.RunAsync(() =>
 * {
 *     var containerGroup = new AzureNative.ContainerInstance.ContainerGroup("containerGroup", new()
 *     {
 *         ContainerGroupName = "demo1",
 *         Containers = new[]
 *         {
 *             new AzureNative.ContainerInstance.Inputs.ContainerArgs
 *             {
 *                 Command = new[]
 *                 {
 *                     "/bin/sh",
 *                     "-c",
 *                     "sleep 10",
 *                 },
 *                 Image = "alpine:latest",
 *                 Name = "test-container-001",
 *                 Resources = new AzureNative.ContainerInstance.Inputs.ResourceRequirementsArgs
 *                 {
 *                     Requests = new AzureNative.ContainerInstance.Inputs.ResourceRequestsArgs
 *                     {
 *                         Cpu = 1,
 *                         MemoryInGB = 1,
 *                     },
 *                 },
 *             },
 *         },
 *         Location = "eastus",
 *         OsType = AzureNative.ContainerInstance.OperatingSystemTypes.Linux,
 *         Priority = AzureNative.ContainerInstance.ContainerGroupPriority.Spot,
 *         ResourceGroupName = "demo",
 *         RestartPolicy = AzureNative.ContainerInstance.ContainerGroupRestartPolicy.Never,
 *         Sku = AzureNative.ContainerInstance.ContainerGroupSku.Standard,
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	containerinstance "github.com/pulumi/pulumi-azure-native-sdk/containerinstance/v2"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := containerinstance.NewContainerGroup(ctx, "containerGroup", &containerinstance.ContainerGroupArgs{
 * 			ContainerGroupName: pulumi.String("demo1"),
 * 			Containers: containerinstance.ContainerArray{
 * 				&containerinstance.ContainerArgs{
 * 					Command: pulumi.StringArray{
 * 						pulumi.String("/bin/sh"),
 * 						pulumi.String("-c"),
 * 						pulumi.String("sleep 10"),
 * 					},
 * 					Image: pulumi.String("alpine:latest"),
 * 					Name:  pulumi.String("test-container-001"),
 * 					Resources: &containerinstance.ResourceRequirementsArgs{
 * 						Requests: &containerinstance.ResourceRequestsArgs{
 * 							Cpu:        pulumi.Float64(1),
 * 							MemoryInGB: pulumi.Float64(1),
 * 						},
 * 					},
 * 				},
 * 			},
 * 			Location:          pulumi.String("eastus"),
 * 			OsType:            pulumi.String(containerinstance.OperatingSystemTypesLinux),
 * 			Priority:          pulumi.String(containerinstance.ContainerGroupPrioritySpot),
 * 			ResourceGroupName: pulumi.String("demo"),
 * 			RestartPolicy:     pulumi.String(containerinstance.ContainerGroupRestartPolicyNever),
 * 			Sku:               pulumi.String(containerinstance.ContainerGroupSkuStandard),
 * 		})
 * 		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.azurenative.containerinstance.ContainerGroup;
 * import com.pulumi.azurenative.containerinstance.ContainerGroupArgs;
 * import com.pulumi.azurenative.containerinstance.inputs.ContainerArgs;
 * import com.pulumi.azurenative.containerinstance.inputs.ResourceRequirementsArgs;
 * import com.pulumi.azurenative.containerinstance.inputs.ResourceRequestsArgs;
 * 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 containerGroup = new ContainerGroup("containerGroup", ContainerGroupArgs.builder()
 *             .containerGroupName("demo1")
 *             .containers(ContainerArgs.builder()
 *                 .command(
 *                     "/bin/sh",
 *                     "-c",
 *                     "sleep 10")
 *                 .image("alpine:latest")
 *                 .name("test-container-001")
 *                 .resources(ResourceRequirementsArgs.builder()
 *                     .requests(ResourceRequestsArgs.builder()
 *                         .cpu(1)
 *                         .memoryInGB(1)
 *                         .build())
 *                     .build())
 *                 .build())
 *             .location("eastus")
 *             .osType("Linux")
 *             .priority("Spot")
 *             .resourceGroupName("demo")
 *             .restartPolicy("Never")
 *             .sku("Standard")
 *             .build());
 *     }
 * }
 * ```
 * ## Import
 * An existing resource can be imported using its type token, name, and identifier, e.g.
 * ```sh
 * $ pulumi import azure-native:containerinstance:ContainerGroup demo1 /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerInstance/containerGroups/{containerGroupName}
 * ```
 */
public class ContainerGroup internal constructor(
    override val javaResource: com.pulumi.azurenative.containerinstance.ContainerGroup,
) : KotlinCustomResource(javaResource, ContainerGroupMapper) {
    /**
     * The properties for confidential container group
     */
    public val confidentialComputeProperties: Output?
        get() = javaResource.confidentialComputeProperties().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 -> confidentialComputePropertiesResponseToKotlin(args0) })
            }).orElse(null)
        })

    /**
     * The containers within the container group.
     */
    public val containers: Output>
        get() = javaResource.containers().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 ->
                    containerResponseToKotlin(args0)
                })
            })
        })

    /**
     * The diagnostic information for a container group.
     */
    public val diagnostics: Output?
        get() = javaResource.diagnostics().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 ->
                    containerGroupDiagnosticsResponseToKotlin(args0)
                })
            }).orElse(null)
        })

    /**
     * The DNS config information for a container group.
     */
    public val dnsConfig: Output?
        get() = javaResource.dnsConfig().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 ->
                    dnsConfigurationResponseToKotlin(args0)
                })
            }).orElse(null)
        })

    /**
     * The encryption properties for a container group.
     */
    public val encryptionProperties: Output?
        get() = javaResource.encryptionProperties().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 -> encryptionPropertiesResponseToKotlin(args0) })
            }).orElse(null)
        })

    /**
     * extensions used by virtual kubelet
     */
    public val extensions: Output>?
        get() = javaResource.extensions().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 -> deploymentExtensionSpecResponseToKotlin(args0) })
                })
            }).orElse(null)
        })

    /**
     * The identity of the container group, if configured.
     */
    public val identity: Output?
        get() = javaResource.identity().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 ->
                    containerGroupIdentityResponseToKotlin(args0)
                })
            }).orElse(null)
        })

    /**
     * The image registry credentials by which the container group is created from.
     */
    public val imageRegistryCredentials: Output>?
        get() = javaResource.imageRegistryCredentials().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 ->
                        imageRegistryCredentialResponseToKotlin(args0)
                    })
                })
            }).orElse(null)
        })

    /**
     * The init containers for a container group.
     */
    public val initContainers: Output>?
        get() = javaResource.initContainers().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 ->
                        initContainerDefinitionResponseToKotlin(args0)
                    })
                })
            }).orElse(null)
        })

    /**
     * The instance view of the container group. Only valid in response.
     */
    public val instanceView: Output
        get() = javaResource.instanceView().applyValue({ args0 ->
            args0.let({ args0 ->
                containerGroupPropertiesResponseInstanceViewToKotlin(args0)
            })
        })

    /**
     * The IP address type of the container group.
     */
    public val ipAddress: Output?
        get() = javaResource.ipAddress().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 ->
                    ipAddressResponseToKotlin(args0)
                })
            }).orElse(null)
        })

    /**
     * The resource location.
     */
    public val location: Output?
        get() = javaResource.location().applyValue({ args0 -> args0.map({ args0 -> args0 }).orElse(null) })

    /**
     * The resource name.
     */
    public val name: Output
        get() = javaResource.name().applyValue({ args0 -> args0 })

    /**
     * The operating system type required by the containers in the container group.
     */
    public val osType: Output
        get() = javaResource.osType().applyValue({ args0 -> args0 })

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

    /**
     * The provisioning state of the container group. This only appears in the response.
     */
    public val provisioningState: Output
        get() = javaResource.provisioningState().applyValue({ args0 -> args0 })

    /**
     * Restart policy for all containers within the container group.
     * - `Always` Always restart
     * - `OnFailure` Restart on failure
     * - `Never` Never restart
     */
    public val restartPolicy: Output?
        get() = javaResource.restartPolicy().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * The SKU for a container group.
     */
    public val sku: Output?
        get() = javaResource.sku().applyValue({ args0 -> args0.map({ args0 -> args0 }).orElse(null) })

    /**
     * The subnet resource IDs for a container group.
     */
    public val subnetIds: Output>?
        get() = javaResource.subnetIds().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 -> containerGroupSubnetIdResponseToKotlin(args0) })
                })
            }).orElse(null)
        })

    /**
     * The resource tags.
     */
    public val tags: Output>?
        get() = javaResource.tags().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.key.to(args0.value)
                }).toMap()
            }).orElse(null)
        })

    /**
     * The resource type.
     */
    public val type: Output
        get() = javaResource.type().applyValue({ args0 -> args0 })

    /**
     * The list of volumes that can be mounted by containers in this container group.
     */
    public val volumes: Output>?
        get() = javaResource.volumes().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 -> volumeResponseToKotlin(args0) })
                })
            }).orElse(null)
        })

    /**
     * The zones for the container group.
     */
    public val zones: Output>?
        get() = javaResource.zones().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0
                })
            }).orElse(null)
        })
}

public object ContainerGroupMapper : ResourceMapper {
    override fun supportsMappingOfType(javaResource: Resource): Boolean =
        com.pulumi.azurenative.containerinstance.ContainerGroup::class == javaResource::class

    override fun map(javaResource: Resource): ContainerGroup = ContainerGroup(
        javaResource as
            com.pulumi.azurenative.containerinstance.ContainerGroup,
    )
}

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

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




© 2015 - 2025 Weber Informatics LLC | Privacy Policy