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

com.pulumi.azurenative.compute.SnapshotArgs Maven / Gradle / Ivy

There is a newer version: 2.78.0
Show newest version
// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.azurenative.compute;

import com.pulumi.azurenative.compute.enums.DataAccessAuthMode;
import com.pulumi.azurenative.compute.enums.HyperVGeneration;
import com.pulumi.azurenative.compute.enums.NetworkAccessPolicy;
import com.pulumi.azurenative.compute.enums.OperatingSystemTypes;
import com.pulumi.azurenative.compute.enums.PublicNetworkAccess;
import com.pulumi.azurenative.compute.inputs.CopyCompletionErrorArgs;
import com.pulumi.azurenative.compute.inputs.CreationDataArgs;
import com.pulumi.azurenative.compute.inputs.DiskSecurityProfileArgs;
import com.pulumi.azurenative.compute.inputs.EncryptionArgs;
import com.pulumi.azurenative.compute.inputs.EncryptionSettingsCollectionArgs;
import com.pulumi.azurenative.compute.inputs.ExtendedLocationArgs;
import com.pulumi.azurenative.compute.inputs.PurchasePlanArgs;
import com.pulumi.azurenative.compute.inputs.SnapshotSkuArgs;
import com.pulumi.azurenative.compute.inputs.SupportedCapabilitiesArgs;
import com.pulumi.core.Either;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.exceptions.MissingRequiredPropertyException;
import java.lang.Boolean;
import java.lang.Double;
import java.lang.Integer;
import java.lang.String;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


public final class SnapshotArgs extends com.pulumi.resources.ResourceArgs {

    public static final SnapshotArgs Empty = new SnapshotArgs();

    /**
     * Percentage complete for the background copy when a resource is created via the CopyStart operation.
     * 
     */
    @Import(name="completionPercent")
    private @Nullable Output completionPercent;

    /**
     * @return Percentage complete for the background copy when a resource is created via the CopyStart operation.
     * 
     */
    public Optional> completionPercent() {
        return Optional.ofNullable(this.completionPercent);
    }

    /**
     * Indicates the error details if the background copy of a resource created via the CopyStart operation fails.
     * 
     */
    @Import(name="copyCompletionError")
    private @Nullable Output copyCompletionError;

    /**
     * @return Indicates the error details if the background copy of a resource created via the CopyStart operation fails.
     * 
     */
    public Optional> copyCompletionError() {
        return Optional.ofNullable(this.copyCompletionError);
    }

    /**
     * Disk source information. CreationData information cannot be changed after the disk has been created.
     * 
     */
    @Import(name="creationData", required=true)
    private Output creationData;

    /**
     * @return Disk source information. CreationData information cannot be changed after the disk has been created.
     * 
     */
    public Output creationData() {
        return this.creationData;
    }

    /**
     * Additional authentication requirements when exporting or uploading to a disk or snapshot.
     * 
     */
    @Import(name="dataAccessAuthMode")
    private @Nullable Output> dataAccessAuthMode;

    /**
     * @return Additional authentication requirements when exporting or uploading to a disk or snapshot.
     * 
     */
    public Optional>> dataAccessAuthMode() {
        return Optional.ofNullable(this.dataAccessAuthMode);
    }

    /**
     * ARM id of the DiskAccess resource for using private endpoints on disks.
     * 
     */
    @Import(name="diskAccessId")
    private @Nullable Output diskAccessId;

    /**
     * @return ARM id of the DiskAccess resource for using private endpoints on disks.
     * 
     */
    public Optional> diskAccessId() {
        return Optional.ofNullable(this.diskAccessId);
    }

    /**
     * If creationData.createOption is Empty, this field is mandatory and it indicates the size of the disk to create. If this field is present for updates or creation with other options, it indicates a resize. Resizes are only allowed if the disk is not attached to a running VM, and can only increase the disk's size.
     * 
     */
    @Import(name="diskSizeGB")
    private @Nullable Output diskSizeGB;

    /**
     * @return If creationData.createOption is Empty, this field is mandatory and it indicates the size of the disk to create. If this field is present for updates or creation with other options, it indicates a resize. Resizes are only allowed if the disk is not attached to a running VM, and can only increase the disk's size.
     * 
     */
    public Optional> diskSizeGB() {
        return Optional.ofNullable(this.diskSizeGB);
    }

    /**
     * Encryption property can be used to encrypt data at rest with customer managed keys or platform managed keys.
     * 
     */
    @Import(name="encryption")
    private @Nullable Output encryption;

    /**
     * @return Encryption property can be used to encrypt data at rest with customer managed keys or platform managed keys.
     * 
     */
    public Optional> encryption() {
        return Optional.ofNullable(this.encryption);
    }

    /**
     * Encryption settings collection used be Azure Disk Encryption, can contain multiple encryption settings per disk or snapshot.
     * 
     */
    @Import(name="encryptionSettingsCollection")
    private @Nullable Output encryptionSettingsCollection;

    /**
     * @return Encryption settings collection used be Azure Disk Encryption, can contain multiple encryption settings per disk or snapshot.
     * 
     */
    public Optional> encryptionSettingsCollection() {
        return Optional.ofNullable(this.encryptionSettingsCollection);
    }

    /**
     * The extended location where the snapshot will be created. Extended location cannot be changed.
     * 
     */
    @Import(name="extendedLocation")
    private @Nullable Output extendedLocation;

    /**
     * @return The extended location where the snapshot will be created. Extended location cannot be changed.
     * 
     */
    public Optional> extendedLocation() {
        return Optional.ofNullable(this.extendedLocation);
    }

    /**
     * The hypervisor generation of the Virtual Machine. Applicable to OS disks only.
     * 
     */
    @Import(name="hyperVGeneration")
    private @Nullable Output> hyperVGeneration;

    /**
     * @return The hypervisor generation of the Virtual Machine. Applicable to OS disks only.
     * 
     */
    public Optional>> hyperVGeneration() {
        return Optional.ofNullable(this.hyperVGeneration);
    }

    /**
     * Whether a snapshot is incremental. Incremental snapshots on the same disk occupy less space than full snapshots and can be diffed.
     * 
     */
    @Import(name="incremental")
    private @Nullable Output incremental;

    /**
     * @return Whether a snapshot is incremental. Incremental snapshots on the same disk occupy less space than full snapshots and can be diffed.
     * 
     */
    public Optional> incremental() {
        return Optional.ofNullable(this.incremental);
    }

    /**
     * Resource location
     * 
     */
    @Import(name="location")
    private @Nullable Output location;

    /**
     * @return Resource location
     * 
     */
    public Optional> location() {
        return Optional.ofNullable(this.location);
    }

    /**
     * Policy for accessing the disk via network.
     * 
     */
    @Import(name="networkAccessPolicy")
    private @Nullable Output> networkAccessPolicy;

    /**
     * @return Policy for accessing the disk via network.
     * 
     */
    public Optional>> networkAccessPolicy() {
        return Optional.ofNullable(this.networkAccessPolicy);
    }

    /**
     * The Operating System type.
     * 
     */
    @Import(name="osType")
    private @Nullable Output osType;

    /**
     * @return The Operating System type.
     * 
     */
    public Optional> osType() {
        return Optional.ofNullable(this.osType);
    }

    /**
     * Policy for controlling export on the disk.
     * 
     */
    @Import(name="publicNetworkAccess")
    private @Nullable Output> publicNetworkAccess;

    /**
     * @return Policy for controlling export on the disk.
     * 
     */
    public Optional>> publicNetworkAccess() {
        return Optional.ofNullable(this.publicNetworkAccess);
    }

    /**
     * Purchase plan information for the image from which the source disk for the snapshot was originally created.
     * 
     */
    @Import(name="purchasePlan")
    private @Nullable Output purchasePlan;

    /**
     * @return Purchase plan information for the image from which the source disk for the snapshot was originally created.
     * 
     */
    public Optional> purchasePlan() {
        return Optional.ofNullable(this.purchasePlan);
    }

    /**
     * The name of the resource group.
     * 
     */
    @Import(name="resourceGroupName", required=true)
    private Output resourceGroupName;

    /**
     * @return The name of the resource group.
     * 
     */
    public Output resourceGroupName() {
        return this.resourceGroupName;
    }

    /**
     * Contains the security related information for the resource.
     * 
     */
    @Import(name="securityProfile")
    private @Nullable Output securityProfile;

    /**
     * @return Contains the security related information for the resource.
     * 
     */
    public Optional> securityProfile() {
        return Optional.ofNullable(this.securityProfile);
    }

    /**
     * The snapshots sku name. Can be Standard_LRS, Premium_LRS, or Standard_ZRS. This is an optional parameter for incremental snapshot and the default behavior is the SKU will be set to the same sku as the previous snapshot
     * 
     */
    @Import(name="sku")
    private @Nullable Output sku;

    /**
     * @return The snapshots sku name. Can be Standard_LRS, Premium_LRS, or Standard_ZRS. This is an optional parameter for incremental snapshot and the default behavior is the SKU will be set to the same sku as the previous snapshot
     * 
     */
    public Optional> sku() {
        return Optional.ofNullable(this.sku);
    }

    /**
     * The name of the snapshot that is being created. The name can't be changed after the snapshot is created. Supported characters for the name are a-z, A-Z, 0-9, _ and -. The max name length is 80 characters.
     * 
     */
    @Import(name="snapshotName")
    private @Nullable Output snapshotName;

    /**
     * @return The name of the snapshot that is being created. The name can't be changed after the snapshot is created. Supported characters for the name are a-z, A-Z, 0-9, _ and -. The max name length is 80 characters.
     * 
     */
    public Optional> snapshotName() {
        return Optional.ofNullable(this.snapshotName);
    }

    /**
     * List of supported capabilities for the image from which the source disk from the snapshot was originally created.
     * 
     */
    @Import(name="supportedCapabilities")
    private @Nullable Output supportedCapabilities;

    /**
     * @return List of supported capabilities for the image from which the source disk from the snapshot was originally created.
     * 
     */
    public Optional> supportedCapabilities() {
        return Optional.ofNullable(this.supportedCapabilities);
    }

    /**
     * Indicates the OS on a snapshot supports hibernation.
     * 
     */
    @Import(name="supportsHibernation")
    private @Nullable Output supportsHibernation;

    /**
     * @return Indicates the OS on a snapshot supports hibernation.
     * 
     */
    public Optional> supportsHibernation() {
        return Optional.ofNullable(this.supportsHibernation);
    }

    /**
     * Resource tags
     * 
     */
    @Import(name="tags")
    private @Nullable Output> tags;

    /**
     * @return Resource tags
     * 
     */
    public Optional>> tags() {
        return Optional.ofNullable(this.tags);
    }

    private SnapshotArgs() {}

    private SnapshotArgs(SnapshotArgs $) {
        this.completionPercent = $.completionPercent;
        this.copyCompletionError = $.copyCompletionError;
        this.creationData = $.creationData;
        this.dataAccessAuthMode = $.dataAccessAuthMode;
        this.diskAccessId = $.diskAccessId;
        this.diskSizeGB = $.diskSizeGB;
        this.encryption = $.encryption;
        this.encryptionSettingsCollection = $.encryptionSettingsCollection;
        this.extendedLocation = $.extendedLocation;
        this.hyperVGeneration = $.hyperVGeneration;
        this.incremental = $.incremental;
        this.location = $.location;
        this.networkAccessPolicy = $.networkAccessPolicy;
        this.osType = $.osType;
        this.publicNetworkAccess = $.publicNetworkAccess;
        this.purchasePlan = $.purchasePlan;
        this.resourceGroupName = $.resourceGroupName;
        this.securityProfile = $.securityProfile;
        this.sku = $.sku;
        this.snapshotName = $.snapshotName;
        this.supportedCapabilities = $.supportedCapabilities;
        this.supportsHibernation = $.supportsHibernation;
        this.tags = $.tags;
    }

    public static Builder builder() {
        return new Builder();
    }
    public static Builder builder(SnapshotArgs defaults) {
        return new Builder(defaults);
    }

    public static final class Builder {
        private SnapshotArgs $;

        public Builder() {
            $ = new SnapshotArgs();
        }

        public Builder(SnapshotArgs defaults) {
            $ = new SnapshotArgs(Objects.requireNonNull(defaults));
        }

        /**
         * @param completionPercent Percentage complete for the background copy when a resource is created via the CopyStart operation.
         * 
         * @return builder
         * 
         */
        public Builder completionPercent(@Nullable Output completionPercent) {
            $.completionPercent = completionPercent;
            return this;
        }

        /**
         * @param completionPercent Percentage complete for the background copy when a resource is created via the CopyStart operation.
         * 
         * @return builder
         * 
         */
        public Builder completionPercent(Double completionPercent) {
            return completionPercent(Output.of(completionPercent));
        }

        /**
         * @param copyCompletionError Indicates the error details if the background copy of a resource created via the CopyStart operation fails.
         * 
         * @return builder
         * 
         */
        public Builder copyCompletionError(@Nullable Output copyCompletionError) {
            $.copyCompletionError = copyCompletionError;
            return this;
        }

        /**
         * @param copyCompletionError Indicates the error details if the background copy of a resource created via the CopyStart operation fails.
         * 
         * @return builder
         * 
         */
        public Builder copyCompletionError(CopyCompletionErrorArgs copyCompletionError) {
            return copyCompletionError(Output.of(copyCompletionError));
        }

        /**
         * @param creationData Disk source information. CreationData information cannot be changed after the disk has been created.
         * 
         * @return builder
         * 
         */
        public Builder creationData(Output creationData) {
            $.creationData = creationData;
            return this;
        }

        /**
         * @param creationData Disk source information. CreationData information cannot be changed after the disk has been created.
         * 
         * @return builder
         * 
         */
        public Builder creationData(CreationDataArgs creationData) {
            return creationData(Output.of(creationData));
        }

        /**
         * @param dataAccessAuthMode Additional authentication requirements when exporting or uploading to a disk or snapshot.
         * 
         * @return builder
         * 
         */
        public Builder dataAccessAuthMode(@Nullable Output> dataAccessAuthMode) {
            $.dataAccessAuthMode = dataAccessAuthMode;
            return this;
        }

        /**
         * @param dataAccessAuthMode Additional authentication requirements when exporting or uploading to a disk or snapshot.
         * 
         * @return builder
         * 
         */
        public Builder dataAccessAuthMode(Either dataAccessAuthMode) {
            return dataAccessAuthMode(Output.of(dataAccessAuthMode));
        }

        /**
         * @param dataAccessAuthMode Additional authentication requirements when exporting or uploading to a disk or snapshot.
         * 
         * @return builder
         * 
         */
        public Builder dataAccessAuthMode(String dataAccessAuthMode) {
            return dataAccessAuthMode(Either.ofLeft(dataAccessAuthMode));
        }

        /**
         * @param dataAccessAuthMode Additional authentication requirements when exporting or uploading to a disk or snapshot.
         * 
         * @return builder
         * 
         */
        public Builder dataAccessAuthMode(DataAccessAuthMode dataAccessAuthMode) {
            return dataAccessAuthMode(Either.ofRight(dataAccessAuthMode));
        }

        /**
         * @param diskAccessId ARM id of the DiskAccess resource for using private endpoints on disks.
         * 
         * @return builder
         * 
         */
        public Builder diskAccessId(@Nullable Output diskAccessId) {
            $.diskAccessId = diskAccessId;
            return this;
        }

        /**
         * @param diskAccessId ARM id of the DiskAccess resource for using private endpoints on disks.
         * 
         * @return builder
         * 
         */
        public Builder diskAccessId(String diskAccessId) {
            return diskAccessId(Output.of(diskAccessId));
        }

        /**
         * @param diskSizeGB If creationData.createOption is Empty, this field is mandatory and it indicates the size of the disk to create. If this field is present for updates or creation with other options, it indicates a resize. Resizes are only allowed if the disk is not attached to a running VM, and can only increase the disk's size.
         * 
         * @return builder
         * 
         */
        public Builder diskSizeGB(@Nullable Output diskSizeGB) {
            $.diskSizeGB = diskSizeGB;
            return this;
        }

        /**
         * @param diskSizeGB If creationData.createOption is Empty, this field is mandatory and it indicates the size of the disk to create. If this field is present for updates or creation with other options, it indicates a resize. Resizes are only allowed if the disk is not attached to a running VM, and can only increase the disk's size.
         * 
         * @return builder
         * 
         */
        public Builder diskSizeGB(Integer diskSizeGB) {
            return diskSizeGB(Output.of(diskSizeGB));
        }

        /**
         * @param encryption Encryption property can be used to encrypt data at rest with customer managed keys or platform managed keys.
         * 
         * @return builder
         * 
         */
        public Builder encryption(@Nullable Output encryption) {
            $.encryption = encryption;
            return this;
        }

        /**
         * @param encryption Encryption property can be used to encrypt data at rest with customer managed keys or platform managed keys.
         * 
         * @return builder
         * 
         */
        public Builder encryption(EncryptionArgs encryption) {
            return encryption(Output.of(encryption));
        }

        /**
         * @param encryptionSettingsCollection Encryption settings collection used be Azure Disk Encryption, can contain multiple encryption settings per disk or snapshot.
         * 
         * @return builder
         * 
         */
        public Builder encryptionSettingsCollection(@Nullable Output encryptionSettingsCollection) {
            $.encryptionSettingsCollection = encryptionSettingsCollection;
            return this;
        }

        /**
         * @param encryptionSettingsCollection Encryption settings collection used be Azure Disk Encryption, can contain multiple encryption settings per disk or snapshot.
         * 
         * @return builder
         * 
         */
        public Builder encryptionSettingsCollection(EncryptionSettingsCollectionArgs encryptionSettingsCollection) {
            return encryptionSettingsCollection(Output.of(encryptionSettingsCollection));
        }

        /**
         * @param extendedLocation The extended location where the snapshot will be created. Extended location cannot be changed.
         * 
         * @return builder
         * 
         */
        public Builder extendedLocation(@Nullable Output extendedLocation) {
            $.extendedLocation = extendedLocation;
            return this;
        }

        /**
         * @param extendedLocation The extended location where the snapshot will be created. Extended location cannot be changed.
         * 
         * @return builder
         * 
         */
        public Builder extendedLocation(ExtendedLocationArgs extendedLocation) {
            return extendedLocation(Output.of(extendedLocation));
        }

        /**
         * @param hyperVGeneration The hypervisor generation of the Virtual Machine. Applicable to OS disks only.
         * 
         * @return builder
         * 
         */
        public Builder hyperVGeneration(@Nullable Output> hyperVGeneration) {
            $.hyperVGeneration = hyperVGeneration;
            return this;
        }

        /**
         * @param hyperVGeneration The hypervisor generation of the Virtual Machine. Applicable to OS disks only.
         * 
         * @return builder
         * 
         */
        public Builder hyperVGeneration(Either hyperVGeneration) {
            return hyperVGeneration(Output.of(hyperVGeneration));
        }

        /**
         * @param hyperVGeneration The hypervisor generation of the Virtual Machine. Applicable to OS disks only.
         * 
         * @return builder
         * 
         */
        public Builder hyperVGeneration(String hyperVGeneration) {
            return hyperVGeneration(Either.ofLeft(hyperVGeneration));
        }

        /**
         * @param hyperVGeneration The hypervisor generation of the Virtual Machine. Applicable to OS disks only.
         * 
         * @return builder
         * 
         */
        public Builder hyperVGeneration(HyperVGeneration hyperVGeneration) {
            return hyperVGeneration(Either.ofRight(hyperVGeneration));
        }

        /**
         * @param incremental Whether a snapshot is incremental. Incremental snapshots on the same disk occupy less space than full snapshots and can be diffed.
         * 
         * @return builder
         * 
         */
        public Builder incremental(@Nullable Output incremental) {
            $.incremental = incremental;
            return this;
        }

        /**
         * @param incremental Whether a snapshot is incremental. Incremental snapshots on the same disk occupy less space than full snapshots and can be diffed.
         * 
         * @return builder
         * 
         */
        public Builder incremental(Boolean incremental) {
            return incremental(Output.of(incremental));
        }

        /**
         * @param location Resource location
         * 
         * @return builder
         * 
         */
        public Builder location(@Nullable Output location) {
            $.location = location;
            return this;
        }

        /**
         * @param location Resource location
         * 
         * @return builder
         * 
         */
        public Builder location(String location) {
            return location(Output.of(location));
        }

        /**
         * @param networkAccessPolicy Policy for accessing the disk via network.
         * 
         * @return builder
         * 
         */
        public Builder networkAccessPolicy(@Nullable Output> networkAccessPolicy) {
            $.networkAccessPolicy = networkAccessPolicy;
            return this;
        }

        /**
         * @param networkAccessPolicy Policy for accessing the disk via network.
         * 
         * @return builder
         * 
         */
        public Builder networkAccessPolicy(Either networkAccessPolicy) {
            return networkAccessPolicy(Output.of(networkAccessPolicy));
        }

        /**
         * @param networkAccessPolicy Policy for accessing the disk via network.
         * 
         * @return builder
         * 
         */
        public Builder networkAccessPolicy(String networkAccessPolicy) {
            return networkAccessPolicy(Either.ofLeft(networkAccessPolicy));
        }

        /**
         * @param networkAccessPolicy Policy for accessing the disk via network.
         * 
         * @return builder
         * 
         */
        public Builder networkAccessPolicy(NetworkAccessPolicy networkAccessPolicy) {
            return networkAccessPolicy(Either.ofRight(networkAccessPolicy));
        }

        /**
         * @param osType The Operating System type.
         * 
         * @return builder
         * 
         */
        public Builder osType(@Nullable Output osType) {
            $.osType = osType;
            return this;
        }

        /**
         * @param osType The Operating System type.
         * 
         * @return builder
         * 
         */
        public Builder osType(OperatingSystemTypes osType) {
            return osType(Output.of(osType));
        }

        /**
         * @param publicNetworkAccess Policy for controlling export on the disk.
         * 
         * @return builder
         * 
         */
        public Builder publicNetworkAccess(@Nullable Output> publicNetworkAccess) {
            $.publicNetworkAccess = publicNetworkAccess;
            return this;
        }

        /**
         * @param publicNetworkAccess Policy for controlling export on the disk.
         * 
         * @return builder
         * 
         */
        public Builder publicNetworkAccess(Either publicNetworkAccess) {
            return publicNetworkAccess(Output.of(publicNetworkAccess));
        }

        /**
         * @param publicNetworkAccess Policy for controlling export on the disk.
         * 
         * @return builder
         * 
         */
        public Builder publicNetworkAccess(String publicNetworkAccess) {
            return publicNetworkAccess(Either.ofLeft(publicNetworkAccess));
        }

        /**
         * @param publicNetworkAccess Policy for controlling export on the disk.
         * 
         * @return builder
         * 
         */
        public Builder publicNetworkAccess(PublicNetworkAccess publicNetworkAccess) {
            return publicNetworkAccess(Either.ofRight(publicNetworkAccess));
        }

        /**
         * @param purchasePlan Purchase plan information for the image from which the source disk for the snapshot was originally created.
         * 
         * @return builder
         * 
         */
        public Builder purchasePlan(@Nullable Output purchasePlan) {
            $.purchasePlan = purchasePlan;
            return this;
        }

        /**
         * @param purchasePlan Purchase plan information for the image from which the source disk for the snapshot was originally created.
         * 
         * @return builder
         * 
         */
        public Builder purchasePlan(PurchasePlanArgs purchasePlan) {
            return purchasePlan(Output.of(purchasePlan));
        }

        /**
         * @param resourceGroupName The name of the resource group.
         * 
         * @return builder
         * 
         */
        public Builder resourceGroupName(Output resourceGroupName) {
            $.resourceGroupName = resourceGroupName;
            return this;
        }

        /**
         * @param resourceGroupName The name of the resource group.
         * 
         * @return builder
         * 
         */
        public Builder resourceGroupName(String resourceGroupName) {
            return resourceGroupName(Output.of(resourceGroupName));
        }

        /**
         * @param securityProfile Contains the security related information for the resource.
         * 
         * @return builder
         * 
         */
        public Builder securityProfile(@Nullable Output securityProfile) {
            $.securityProfile = securityProfile;
            return this;
        }

        /**
         * @param securityProfile Contains the security related information for the resource.
         * 
         * @return builder
         * 
         */
        public Builder securityProfile(DiskSecurityProfileArgs securityProfile) {
            return securityProfile(Output.of(securityProfile));
        }

        /**
         * @param sku The snapshots sku name. Can be Standard_LRS, Premium_LRS, or Standard_ZRS. This is an optional parameter for incremental snapshot and the default behavior is the SKU will be set to the same sku as the previous snapshot
         * 
         * @return builder
         * 
         */
        public Builder sku(@Nullable Output sku) {
            $.sku = sku;
            return this;
        }

        /**
         * @param sku The snapshots sku name. Can be Standard_LRS, Premium_LRS, or Standard_ZRS. This is an optional parameter for incremental snapshot and the default behavior is the SKU will be set to the same sku as the previous snapshot
         * 
         * @return builder
         * 
         */
        public Builder sku(SnapshotSkuArgs sku) {
            return sku(Output.of(sku));
        }

        /**
         * @param snapshotName The name of the snapshot that is being created. The name can't be changed after the snapshot is created. Supported characters for the name are a-z, A-Z, 0-9, _ and -. The max name length is 80 characters.
         * 
         * @return builder
         * 
         */
        public Builder snapshotName(@Nullable Output snapshotName) {
            $.snapshotName = snapshotName;
            return this;
        }

        /**
         * @param snapshotName The name of the snapshot that is being created. The name can't be changed after the snapshot is created. Supported characters for the name are a-z, A-Z, 0-9, _ and -. The max name length is 80 characters.
         * 
         * @return builder
         * 
         */
        public Builder snapshotName(String snapshotName) {
            return snapshotName(Output.of(snapshotName));
        }

        /**
         * @param supportedCapabilities List of supported capabilities for the image from which the source disk from the snapshot was originally created.
         * 
         * @return builder
         * 
         */
        public Builder supportedCapabilities(@Nullable Output supportedCapabilities) {
            $.supportedCapabilities = supportedCapabilities;
            return this;
        }

        /**
         * @param supportedCapabilities List of supported capabilities for the image from which the source disk from the snapshot was originally created.
         * 
         * @return builder
         * 
         */
        public Builder supportedCapabilities(SupportedCapabilitiesArgs supportedCapabilities) {
            return supportedCapabilities(Output.of(supportedCapabilities));
        }

        /**
         * @param supportsHibernation Indicates the OS on a snapshot supports hibernation.
         * 
         * @return builder
         * 
         */
        public Builder supportsHibernation(@Nullable Output supportsHibernation) {
            $.supportsHibernation = supportsHibernation;
            return this;
        }

        /**
         * @param supportsHibernation Indicates the OS on a snapshot supports hibernation.
         * 
         * @return builder
         * 
         */
        public Builder supportsHibernation(Boolean supportsHibernation) {
            return supportsHibernation(Output.of(supportsHibernation));
        }

        /**
         * @param tags Resource tags
         * 
         * @return builder
         * 
         */
        public Builder tags(@Nullable Output> tags) {
            $.tags = tags;
            return this;
        }

        /**
         * @param tags Resource tags
         * 
         * @return builder
         * 
         */
        public Builder tags(Map tags) {
            return tags(Output.of(tags));
        }

        public SnapshotArgs build() {
            if ($.creationData == null) {
                throw new MissingRequiredPropertyException("SnapshotArgs", "creationData");
            }
            if ($.resourceGroupName == null) {
                throw new MissingRequiredPropertyException("SnapshotArgs", "resourceGroupName");
            }
            return $;
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy