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

com.pulumi.azure.compute.kotlin.SharedImageArgs.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: 6.15.0.0
Show newest version
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.azure.compute.kotlin

import com.pulumi.azure.compute.SharedImageArgs.builder
import com.pulumi.azure.compute.kotlin.inputs.SharedImageIdentifierArgs
import com.pulumi.azure.compute.kotlin.inputs.SharedImageIdentifierArgsBuilder
import com.pulumi.azure.compute.kotlin.inputs.SharedImagePurchasePlanArgs
import com.pulumi.azure.compute.kotlin.inputs.SharedImagePurchasePlanArgsBuilder
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Boolean
import kotlin.Int
import kotlin.Pair
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.collections.Map
import kotlin.jvm.JvmName

/**
 * Manages a Shared Image within a Shared Image Gallery.
 * ## 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 exampleSharedImageGallery = new azure.compute.SharedImageGallery("example", {
 *     name: "example_image_gallery",
 *     resourceGroupName: example.name,
 *     location: example.location,
 *     description: "Shared images and things.",
 *     tags: {
 *         Hello: "There",
 *         World: "Example",
 *     },
 * });
 * const exampleSharedImage = new azure.compute.SharedImage("example", {
 *     name: "my-image",
 *     galleryName: exampleSharedImageGallery.name,
 *     resourceGroupName: example.name,
 *     location: example.location,
 *     osType: "Linux",
 *     identifier: {
 *         publisher: "PublisherName",
 *         offer: "OfferName",
 *         sku: "ExampleSku",
 *     },
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_azure as azure
 * example = azure.core.ResourceGroup("example",
 *     name="example-resources",
 *     location="West Europe")
 * example_shared_image_gallery = azure.compute.SharedImageGallery("example",
 *     name="example_image_gallery",
 *     resource_group_name=example.name,
 *     location=example.location,
 *     description="Shared images and things.",
 *     tags={
 *         "Hello": "There",
 *         "World": "Example",
 *     })
 * example_shared_image = azure.compute.SharedImage("example",
 *     name="my-image",
 *     gallery_name=example_shared_image_gallery.name,
 *     resource_group_name=example.name,
 *     location=example.location,
 *     os_type="Linux",
 *     identifier=azure.compute.SharedImageIdentifierArgs(
 *         publisher="PublisherName",
 *         offer="OfferName",
 *         sku="ExampleSku",
 *     ))
 * ```
 * ```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 exampleSharedImageGallery = new Azure.Compute.SharedImageGallery("example", new()
 *     {
 *         Name = "example_image_gallery",
 *         ResourceGroupName = example.Name,
 *         Location = example.Location,
 *         Description = "Shared images and things.",
 *         Tags =
 *         {
 *             { "Hello", "There" },
 *             { "World", "Example" },
 *         },
 *     });
 *     var exampleSharedImage = new Azure.Compute.SharedImage("example", new()
 *     {
 *         Name = "my-image",
 *         GalleryName = exampleSharedImageGallery.Name,
 *         ResourceGroupName = example.Name,
 *         Location = example.Location,
 *         OsType = "Linux",
 *         Identifier = new Azure.Compute.Inputs.SharedImageIdentifierArgs
 *         {
 *             Publisher = "PublisherName",
 *             Offer = "OfferName",
 *             Sku = "ExampleSku",
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/compute"
 * 	"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
 * 		}
 * 		exampleSharedImageGallery, err := compute.NewSharedImageGallery(ctx, "example", &compute.SharedImageGalleryArgs{
 * 			Name:              pulumi.String("example_image_gallery"),
 * 			ResourceGroupName: example.Name,
 * 			Location:          example.Location,
 * 			Description:       pulumi.String("Shared images and things."),
 * 			Tags: pulumi.StringMap{
 * 				"Hello": pulumi.String("There"),
 * 				"World": pulumi.String("Example"),
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = compute.NewSharedImage(ctx, "example", &compute.SharedImageArgs{
 * 			Name:              pulumi.String("my-image"),
 * 			GalleryName:       exampleSharedImageGallery.Name,
 * 			ResourceGroupName: example.Name,
 * 			Location:          example.Location,
 * 			OsType:            pulumi.String("Linux"),
 * 			Identifier: &compute.SharedImageIdentifierArgs{
 * 				Publisher: pulumi.String("PublisherName"),
 * 				Offer:     pulumi.String("OfferName"),
 * 				Sku:       pulumi.String("ExampleSku"),
 * 			},
 * 		})
 * 		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.compute.SharedImageGallery;
 * import com.pulumi.azure.compute.SharedImageGalleryArgs;
 * import com.pulumi.azure.compute.SharedImage;
 * import com.pulumi.azure.compute.SharedImageArgs;
 * import com.pulumi.azure.compute.inputs.SharedImageIdentifierArgs;
 * 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 exampleSharedImageGallery = new SharedImageGallery("exampleSharedImageGallery", SharedImageGalleryArgs.builder()
 *             .name("example_image_gallery")
 *             .resourceGroupName(example.name())
 *             .location(example.location())
 *             .description("Shared images and things.")
 *             .tags(Map.ofEntries(
 *                 Map.entry("Hello", "There"),
 *                 Map.entry("World", "Example")
 *             ))
 *             .build());
 *         var exampleSharedImage = new SharedImage("exampleSharedImage", SharedImageArgs.builder()
 *             .name("my-image")
 *             .galleryName(exampleSharedImageGallery.name())
 *             .resourceGroupName(example.name())
 *             .location(example.location())
 *             .osType("Linux")
 *             .identifier(SharedImageIdentifierArgs.builder()
 *                 .publisher("PublisherName")
 *                 .offer("OfferName")
 *                 .sku("ExampleSku")
 *                 .build())
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   example:
 *     type: azure:core:ResourceGroup
 *     properties:
 *       name: example-resources
 *       location: West Europe
 *   exampleSharedImageGallery:
 *     type: azure:compute:SharedImageGallery
 *     name: example
 *     properties:
 *       name: example_image_gallery
 *       resourceGroupName: ${example.name}
 *       location: ${example.location}
 *       description: Shared images and things.
 *       tags:
 *         Hello: There
 *         World: Example
 *   exampleSharedImage:
 *     type: azure:compute:SharedImage
 *     name: example
 *     properties:
 *       name: my-image
 *       galleryName: ${exampleSharedImageGallery.name}
 *       resourceGroupName: ${example.name}
 *       location: ${example.location}
 *       osType: Linux
 *       identifier:
 *         publisher: PublisherName
 *         offer: OfferName
 *         sku: ExampleSku
 * ```
 * 
 * ## Import
 * Shared Images can be imported using the `resource id`, e.g.
 * ```sh
 * $ pulumi import azure:compute/sharedImage:SharedImage image1 /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/mygroup1/providers/Microsoft.Compute/galleries/gallery1/images/image1
 * ```
 * @property acceleratedNetworkSupportEnabled Specifies if the Shared Image supports Accelerated Network. Changing this forces a new resource to be created.
 * @property architecture CPU architecture supported by an OS. Possible values are `x64` and `Arm64`. Defaults to `x64`. Changing this forces a new resource to be created.
 * @property confidentialVmEnabled Specifies if Confidential Virtual Machines enabled. It will enable all the features of trusted, with higher confidentiality features for isolate machines or encrypted data. Available for Gen2 machines. Changing this forces a new resource to be created.
 * > **Note:**: Only one of `trusted_launch_supported`, `trusted_launch_enabled`, `confidential_vm_supported` and `confidential_vm_enabled` can be specified.
 * @property confidentialVmSupported Specifies if supports creation of both Confidential virtual machines and Gen2 virtual machines with standard security from a compatible Gen2 OS disk VHD or Gen2 Managed image. Changing this forces a new resource to be created.
 * @property description A description of this Shared Image.
 * @property diskTypesNotAlloweds One or more Disk Types not allowed for the Image. Possible values include `Standard_LRS` and `Premium_LRS`.
 * @property endOfLifeDate The end of life date in RFC3339 format of the Image.
 * @property eula The End User Licence Agreement for the Shared Image. Changing this forces a new resource to be created.
 * @property galleryName Specifies the name of the Shared Image Gallery in which this Shared Image should exist. Changing this forces a new resource to be created.
 * @property hyperVGeneration The generation of HyperV that the Virtual Machine used to create the Shared Image is based on. Possible values are `V1` and `V2`. Defaults to `V1`. Changing this forces a new resource to be created.
 * @property identifier An `identifier` block as defined below.
 * @property location Specifies the supported Azure location where the Shared Image Gallery exists. Changing this forces a new resource to be created.
 * @property maxRecommendedMemoryInGb Maximum memory in GB recommended for the Image.
 * @property maxRecommendedVcpuCount Maximum count of vCPUs recommended for the Image.
 * @property minRecommendedMemoryInGb Minimum memory in GB recommended for the Image.
 * @property minRecommendedVcpuCount Minimum count of vCPUs recommended for the Image.
 * @property name Specifies the name of the Shared Image. Changing this forces a new resource to be created.
 * @property osType The type of Operating System present in this Shared Image. Possible values are `Linux` and `Windows`. Changing this forces a new resource to be created.
 * @property privacyStatementUri The URI containing the Privacy Statement associated with this Shared Image. Changing this forces a new resource to be created.
 * @property purchasePlan A `purchase_plan` block as defined below.
 * @property releaseNoteUri The URI containing the Release Notes associated with this Shared Image.
 * @property resourceGroupName The name of the resource group in which the Shared Image Gallery exists. Changing this forces a new resource to be created.
 * @property specialized Specifies that the Operating System used inside this Image has not been Generalized (for example, `sysprep` on Windows has not been run). Changing this forces a new resource to be created.
 * !> **Note:** It's recommended to Generalize images where possible - Specialized Images reuse the same UUID internally within each Virtual Machine, which can have unintended side-effects.
 * @property tags A mapping of tags to assign to the Shared Image.
 * @property trustedLaunchEnabled Specifies if Trusted Launch has to be enabled for the Virtual Machine created from the Shared Image. Changing this forces a new resource to be created.
 * @property trustedLaunchSupported Specifies if supports creation of both Trusted Launch virtual machines and Gen2 virtual machines with standard security created from the Shared Image. Changing this forces a new resource to be created.
 */
public data class SharedImageArgs(
    public val acceleratedNetworkSupportEnabled: Output? = null,
    public val architecture: Output? = null,
    public val confidentialVmEnabled: Output? = null,
    public val confidentialVmSupported: Output? = null,
    public val description: Output? = null,
    public val diskTypesNotAlloweds: Output>? = null,
    public val endOfLifeDate: Output? = null,
    public val eula: Output? = null,
    public val galleryName: Output? = null,
    public val hyperVGeneration: Output? = null,
    public val identifier: Output? = null,
    public val location: Output? = null,
    public val maxRecommendedMemoryInGb: Output? = null,
    public val maxRecommendedVcpuCount: Output? = null,
    public val minRecommendedMemoryInGb: Output? = null,
    public val minRecommendedVcpuCount: Output? = null,
    public val name: Output? = null,
    public val osType: Output? = null,
    public val privacyStatementUri: Output? = null,
    public val purchasePlan: Output? = null,
    public val releaseNoteUri: Output? = null,
    public val resourceGroupName: Output? = null,
    public val specialized: Output? = null,
    public val tags: Output>? = null,
    public val trustedLaunchEnabled: Output? = null,
    public val trustedLaunchSupported: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.azure.compute.SharedImageArgs =
        com.pulumi.azure.compute.SharedImageArgs.builder()
            .acceleratedNetworkSupportEnabled(acceleratedNetworkSupportEnabled?.applyValue({ args0 -> args0 }))
            .architecture(architecture?.applyValue({ args0 -> args0 }))
            .confidentialVmEnabled(confidentialVmEnabled?.applyValue({ args0 -> args0 }))
            .confidentialVmSupported(confidentialVmSupported?.applyValue({ args0 -> args0 }))
            .description(description?.applyValue({ args0 -> args0 }))
            .diskTypesNotAlloweds(diskTypesNotAlloweds?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .endOfLifeDate(endOfLifeDate?.applyValue({ args0 -> args0 }))
            .eula(eula?.applyValue({ args0 -> args0 }))
            .galleryName(galleryName?.applyValue({ args0 -> args0 }))
            .hyperVGeneration(hyperVGeneration?.applyValue({ args0 -> args0 }))
            .identifier(identifier?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .location(location?.applyValue({ args0 -> args0 }))
            .maxRecommendedMemoryInGb(maxRecommendedMemoryInGb?.applyValue({ args0 -> args0 }))
            .maxRecommendedVcpuCount(maxRecommendedVcpuCount?.applyValue({ args0 -> args0 }))
            .minRecommendedMemoryInGb(minRecommendedMemoryInGb?.applyValue({ args0 -> args0 }))
            .minRecommendedVcpuCount(minRecommendedVcpuCount?.applyValue({ args0 -> args0 }))
            .name(name?.applyValue({ args0 -> args0 }))
            .osType(osType?.applyValue({ args0 -> args0 }))
            .privacyStatementUri(privacyStatementUri?.applyValue({ args0 -> args0 }))
            .purchasePlan(purchasePlan?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .releaseNoteUri(releaseNoteUri?.applyValue({ args0 -> args0 }))
            .resourceGroupName(resourceGroupName?.applyValue({ args0 -> args0 }))
            .specialized(specialized?.applyValue({ args0 -> args0 }))
            .tags(tags?.applyValue({ args0 -> args0.map({ args0 -> args0.key.to(args0.value) }).toMap() }))
            .trustedLaunchEnabled(trustedLaunchEnabled?.applyValue({ args0 -> args0 }))
            .trustedLaunchSupported(trustedLaunchSupported?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [SharedImageArgs].
 */
@PulumiTagMarker
public class SharedImageArgsBuilder internal constructor() {
    private var acceleratedNetworkSupportEnabled: Output? = null

    private var architecture: Output? = null

    private var confidentialVmEnabled: Output? = null

    private var confidentialVmSupported: Output? = null

    private var description: Output? = null

    private var diskTypesNotAlloweds: Output>? = null

    private var endOfLifeDate: Output? = null

    private var eula: Output? = null

    private var galleryName: Output? = null

    private var hyperVGeneration: Output? = null

    private var identifier: Output? = null

    private var location: Output? = null

    private var maxRecommendedMemoryInGb: Output? = null

    private var maxRecommendedVcpuCount: Output? = null

    private var minRecommendedMemoryInGb: Output? = null

    private var minRecommendedVcpuCount: Output? = null

    private var name: Output? = null

    private var osType: Output? = null

    private var privacyStatementUri: Output? = null

    private var purchasePlan: Output? = null

    private var releaseNoteUri: Output? = null

    private var resourceGroupName: Output? = null

    private var specialized: Output? = null

    private var tags: Output>? = null

    private var trustedLaunchEnabled: Output? = null

    private var trustedLaunchSupported: Output? = null

    /**
     * @param value Specifies if the Shared Image supports Accelerated Network. Changing this forces a new resource to be created.
     */
    @JvmName("hktjfxntswjacmgj")
    public suspend fun acceleratedNetworkSupportEnabled(`value`: Output) {
        this.acceleratedNetworkSupportEnabled = value
    }

    /**
     * @param value CPU architecture supported by an OS. Possible values are `x64` and `Arm64`. Defaults to `x64`. Changing this forces a new resource to be created.
     */
    @JvmName("lukhjfdloqvbvnkt")
    public suspend fun architecture(`value`: Output) {
        this.architecture = value
    }

    /**
     * @param value Specifies if Confidential Virtual Machines enabled. It will enable all the features of trusted, with higher confidentiality features for isolate machines or encrypted data. Available for Gen2 machines. Changing this forces a new resource to be created.
     * > **Note:**: Only one of `trusted_launch_supported`, `trusted_launch_enabled`, `confidential_vm_supported` and `confidential_vm_enabled` can be specified.
     */
    @JvmName("gngiddquyfggdvyb")
    public suspend fun confidentialVmEnabled(`value`: Output) {
        this.confidentialVmEnabled = value
    }

    /**
     * @param value Specifies if supports creation of both Confidential virtual machines and Gen2 virtual machines with standard security from a compatible Gen2 OS disk VHD or Gen2 Managed image. Changing this forces a new resource to be created.
     */
    @JvmName("fwodigaiwuntwhjh")
    public suspend fun confidentialVmSupported(`value`: Output) {
        this.confidentialVmSupported = value
    }

    /**
     * @param value A description of this Shared Image.
     */
    @JvmName("wfdvmfaijknudoqh")
    public suspend fun description(`value`: Output) {
        this.description = value
    }

    /**
     * @param value One or more Disk Types not allowed for the Image. Possible values include `Standard_LRS` and `Premium_LRS`.
     */
    @JvmName("cusixkjsbxiqdrgi")
    public suspend fun diskTypesNotAlloweds(`value`: Output>) {
        this.diskTypesNotAlloweds = value
    }

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

    /**
     * @param values One or more Disk Types not allowed for the Image. Possible values include `Standard_LRS` and `Premium_LRS`.
     */
    @JvmName("vjujgcbupqfftoib")
    public suspend fun diskTypesNotAlloweds(values: List>) {
        this.diskTypesNotAlloweds = Output.all(values)
    }

    /**
     * @param value The end of life date in RFC3339 format of the Image.
     */
    @JvmName("mmapkxeofggywrhf")
    public suspend fun endOfLifeDate(`value`: Output) {
        this.endOfLifeDate = value
    }

    /**
     * @param value The End User Licence Agreement for the Shared Image. Changing this forces a new resource to be created.
     */
    @JvmName("owabfesiexmkibdh")
    public suspend fun eula(`value`: Output) {
        this.eula = value
    }

    /**
     * @param value Specifies the name of the Shared Image Gallery in which this Shared Image should exist. Changing this forces a new resource to be created.
     */
    @JvmName("tjfrxlfipkisghga")
    public suspend fun galleryName(`value`: Output) {
        this.galleryName = value
    }

    /**
     * @param value The generation of HyperV that the Virtual Machine used to create the Shared Image is based on. Possible values are `V1` and `V2`. Defaults to `V1`. Changing this forces a new resource to be created.
     */
    @JvmName("dofbbrsffbkfdqvc")
    public suspend fun hyperVGeneration(`value`: Output) {
        this.hyperVGeneration = value
    }

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

    /**
     * @param value Specifies the supported Azure location where the Shared Image Gallery exists. Changing this forces a new resource to be created.
     */
    @JvmName("mheyofqcfniljalm")
    public suspend fun location(`value`: Output) {
        this.location = value
    }

    /**
     * @param value Maximum memory in GB recommended for the Image.
     */
    @JvmName("ntwysnvhnkdkdldr")
    public suspend fun maxRecommendedMemoryInGb(`value`: Output) {
        this.maxRecommendedMemoryInGb = value
    }

    /**
     * @param value Maximum count of vCPUs recommended for the Image.
     */
    @JvmName("jjapdvvraoakgvlc")
    public suspend fun maxRecommendedVcpuCount(`value`: Output) {
        this.maxRecommendedVcpuCount = value
    }

    /**
     * @param value Minimum memory in GB recommended for the Image.
     */
    @JvmName("cjgctxldoopoqeot")
    public suspend fun minRecommendedMemoryInGb(`value`: Output) {
        this.minRecommendedMemoryInGb = value
    }

    /**
     * @param value Minimum count of vCPUs recommended for the Image.
     */
    @JvmName("urtwfneymridkaqh")
    public suspend fun minRecommendedVcpuCount(`value`: Output) {
        this.minRecommendedVcpuCount = value
    }

    /**
     * @param value Specifies the name of the Shared Image. Changing this forces a new resource to be created.
     */
    @JvmName("fvparssuudexysge")
    public suspend fun name(`value`: Output) {
        this.name = value
    }

    /**
     * @param value The type of Operating System present in this Shared Image. Possible values are `Linux` and `Windows`. Changing this forces a new resource to be created.
     */
    @JvmName("jkicjwkbqbjolyvc")
    public suspend fun osType(`value`: Output) {
        this.osType = value
    }

    /**
     * @param value The URI containing the Privacy Statement associated with this Shared Image. Changing this forces a new resource to be created.
     */
    @JvmName("vucexpegxvvxuqqn")
    public suspend fun privacyStatementUri(`value`: Output) {
        this.privacyStatementUri = value
    }

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

    /**
     * @param value The URI containing the Release Notes associated with this Shared Image.
     */
    @JvmName("ljpftpemgktrkdia")
    public suspend fun releaseNoteUri(`value`: Output) {
        this.releaseNoteUri = value
    }

    /**
     * @param value The name of the resource group in which the Shared Image Gallery exists. Changing this forces a new resource to be created.
     */
    @JvmName("plquylkeasfxtneg")
    public suspend fun resourceGroupName(`value`: Output) {
        this.resourceGroupName = value
    }

    /**
     * @param value Specifies that the Operating System used inside this Image has not been Generalized (for example, `sysprep` on Windows has not been run). Changing this forces a new resource to be created.
     * !> **Note:** It's recommended to Generalize images where possible - Specialized Images reuse the same UUID internally within each Virtual Machine, which can have unintended side-effects.
     */
    @JvmName("odtgsddwmamqiwci")
    public suspend fun specialized(`value`: Output) {
        this.specialized = value
    }

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

    /**
     * @param value Specifies if Trusted Launch has to be enabled for the Virtual Machine created from the Shared Image. Changing this forces a new resource to be created.
     */
    @JvmName("rqpdfnlokhnfllvy")
    public suspend fun trustedLaunchEnabled(`value`: Output) {
        this.trustedLaunchEnabled = value
    }

    /**
     * @param value Specifies if supports creation of both Trusted Launch virtual machines and Gen2 virtual machines with standard security created from the Shared Image. Changing this forces a new resource to be created.
     */
    @JvmName("csypedtjyoodmosn")
    public suspend fun trustedLaunchSupported(`value`: Output) {
        this.trustedLaunchSupported = value
    }

    /**
     * @param value Specifies if the Shared Image supports Accelerated Network. Changing this forces a new resource to be created.
     */
    @JvmName("bnddynnmmkjlufmm")
    public suspend fun acceleratedNetworkSupportEnabled(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.acceleratedNetworkSupportEnabled = mapped
    }

    /**
     * @param value CPU architecture supported by an OS. Possible values are `x64` and `Arm64`. Defaults to `x64`. Changing this forces a new resource to be created.
     */
    @JvmName("kdoxhdylumfsksjp")
    public suspend fun architecture(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.architecture = mapped
    }

    /**
     * @param value Specifies if Confidential Virtual Machines enabled. It will enable all the features of trusted, with higher confidentiality features for isolate machines or encrypted data. Available for Gen2 machines. Changing this forces a new resource to be created.
     * > **Note:**: Only one of `trusted_launch_supported`, `trusted_launch_enabled`, `confidential_vm_supported` and `confidential_vm_enabled` can be specified.
     */
    @JvmName("rytavvkntuneibyl")
    public suspend fun confidentialVmEnabled(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.confidentialVmEnabled = mapped
    }

    /**
     * @param value Specifies if supports creation of both Confidential virtual machines and Gen2 virtual machines with standard security from a compatible Gen2 OS disk VHD or Gen2 Managed image. Changing this forces a new resource to be created.
     */
    @JvmName("diiryhsvbqisuhnc")
    public suspend fun confidentialVmSupported(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.confidentialVmSupported = mapped
    }

    /**
     * @param value A description of this Shared Image.
     */
    @JvmName("polsokybyylwpglb")
    public suspend fun description(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.description = mapped
    }

    /**
     * @param value One or more Disk Types not allowed for the Image. Possible values include `Standard_LRS` and `Premium_LRS`.
     */
    @JvmName("hgyhakvqmdgcnnyi")
    public suspend fun diskTypesNotAlloweds(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.diskTypesNotAlloweds = mapped
    }

    /**
     * @param values One or more Disk Types not allowed for the Image. Possible values include `Standard_LRS` and `Premium_LRS`.
     */
    @JvmName("udffyuexnlwnppge")
    public suspend fun diskTypesNotAlloweds(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.diskTypesNotAlloweds = mapped
    }

    /**
     * @param value The end of life date in RFC3339 format of the Image.
     */
    @JvmName("xkajkkoaviofvaym")
    public suspend fun endOfLifeDate(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.endOfLifeDate = mapped
    }

    /**
     * @param value The End User Licence Agreement for the Shared Image. Changing this forces a new resource to be created.
     */
    @JvmName("irdyutcfiitfwawk")
    public suspend fun eula(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.eula = mapped
    }

    /**
     * @param value Specifies the name of the Shared Image Gallery in which this Shared Image should exist. Changing this forces a new resource to be created.
     */
    @JvmName("mxsobnijculpaewf")
    public suspend fun galleryName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.galleryName = mapped
    }

    /**
     * @param value The generation of HyperV that the Virtual Machine used to create the Shared Image is based on. Possible values are `V1` and `V2`. Defaults to `V1`. Changing this forces a new resource to be created.
     */
    @JvmName("yhcyybfknumypraj")
    public suspend fun hyperVGeneration(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.hyperVGeneration = mapped
    }

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

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

    /**
     * @param value Specifies the supported Azure location where the Shared Image Gallery exists. Changing this forces a new resource to be created.
     */
    @JvmName("qoiqrumyaeitxgdw")
    public suspend fun location(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.location = mapped
    }

    /**
     * @param value Maximum memory in GB recommended for the Image.
     */
    @JvmName("owdbjykfjhdlcewu")
    public suspend fun maxRecommendedMemoryInGb(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.maxRecommendedMemoryInGb = mapped
    }

    /**
     * @param value Maximum count of vCPUs recommended for the Image.
     */
    @JvmName("evhjjqdebhbxrphh")
    public suspend fun maxRecommendedVcpuCount(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.maxRecommendedVcpuCount = mapped
    }

    /**
     * @param value Minimum memory in GB recommended for the Image.
     */
    @JvmName("hegdomwrwyhbxqsb")
    public suspend fun minRecommendedMemoryInGb(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.minRecommendedMemoryInGb = mapped
    }

    /**
     * @param value Minimum count of vCPUs recommended for the Image.
     */
    @JvmName("endaddwvfnbgnqwl")
    public suspend fun minRecommendedVcpuCount(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.minRecommendedVcpuCount = mapped
    }

    /**
     * @param value Specifies the name of the Shared Image. Changing this forces a new resource to be created.
     */
    @JvmName("cswhdydjwupkseev")
    public suspend fun name(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.name = mapped
    }

    /**
     * @param value The type of Operating System present in this Shared Image. Possible values are `Linux` and `Windows`. Changing this forces a new resource to be created.
     */
    @JvmName("agwakmbgyemihmxh")
    public suspend fun osType(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.osType = mapped
    }

    /**
     * @param value The URI containing the Privacy Statement associated with this Shared Image. Changing this forces a new resource to be created.
     */
    @JvmName("valbohglgklhwxmk")
    public suspend fun privacyStatementUri(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.privacyStatementUri = mapped
    }

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

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

    /**
     * @param value The URI containing the Release Notes associated with this Shared Image.
     */
    @JvmName("ethsbgxohqowwijq")
    public suspend fun releaseNoteUri(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.releaseNoteUri = mapped
    }

    /**
     * @param value The name of the resource group in which the Shared Image Gallery exists. Changing this forces a new resource to be created.
     */
    @JvmName("urxwgodtodrmglwe")
    public suspend fun resourceGroupName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.resourceGroupName = mapped
    }

    /**
     * @param value Specifies that the Operating System used inside this Image has not been Generalized (for example, `sysprep` on Windows has not been run). Changing this forces a new resource to be created.
     * !> **Note:** It's recommended to Generalize images where possible - Specialized Images reuse the same UUID internally within each Virtual Machine, which can have unintended side-effects.
     */
    @JvmName("aroarxofughwgicm")
    public suspend fun specialized(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.specialized = mapped
    }

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

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

    /**
     * @param value Specifies if Trusted Launch has to be enabled for the Virtual Machine created from the Shared Image. Changing this forces a new resource to be created.
     */
    @JvmName("mqdnelguctghxiuw")
    public suspend fun trustedLaunchEnabled(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.trustedLaunchEnabled = mapped
    }

    /**
     * @param value Specifies if supports creation of both Trusted Launch virtual machines and Gen2 virtual machines with standard security created from the Shared Image. Changing this forces a new resource to be created.
     */
    @JvmName("erkgmiijosxwyhee")
    public suspend fun trustedLaunchSupported(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.trustedLaunchSupported = mapped
    }

    internal fun build(): SharedImageArgs = SharedImageArgs(
        acceleratedNetworkSupportEnabled = acceleratedNetworkSupportEnabled,
        architecture = architecture,
        confidentialVmEnabled = confidentialVmEnabled,
        confidentialVmSupported = confidentialVmSupported,
        description = description,
        diskTypesNotAlloweds = diskTypesNotAlloweds,
        endOfLifeDate = endOfLifeDate,
        eula = eula,
        galleryName = galleryName,
        hyperVGeneration = hyperVGeneration,
        identifier = identifier,
        location = location,
        maxRecommendedMemoryInGb = maxRecommendedMemoryInGb,
        maxRecommendedVcpuCount = maxRecommendedVcpuCount,
        minRecommendedMemoryInGb = minRecommendedMemoryInGb,
        minRecommendedVcpuCount = minRecommendedVcpuCount,
        name = name,
        osType = osType,
        privacyStatementUri = privacyStatementUri,
        purchasePlan = purchasePlan,
        releaseNoteUri = releaseNoteUri,
        resourceGroupName = resourceGroupName,
        specialized = specialized,
        tags = tags,
        trustedLaunchEnabled = trustedLaunchEnabled,
        trustedLaunchSupported = trustedLaunchSupported,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy