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

com.azure.resourcemanager.compute.models.VirtualMachineCustomImage Maven / Gradle / Ivy

Go to download

This package contains Microsoft Azure Compute Management SDK. For documentation on how to use this package, please see https://aka.ms/azsdk/java/mgmt

There is a newer version: 2.44.0
Show newest version
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

package com.azure.resourcemanager.compute.models;

import com.azure.core.annotation.Fluent;
import com.azure.resourcemanager.compute.ComputeManager;
import com.azure.resourcemanager.compute.fluent.models.ImageInner;
import com.azure.resourcemanager.resources.fluentcore.arm.models.ChildResource;
import com.azure.resourcemanager.resources.fluentcore.arm.models.GroupableResource;
import com.azure.resourcemanager.resources.fluentcore.arm.models.Resource;
import com.azure.resourcemanager.resources.fluentcore.model.Attachable;
import com.azure.resourcemanager.resources.fluentcore.model.Creatable;
import com.azure.resourcemanager.resources.fluentcore.model.HasInnerModel;
import com.azure.resourcemanager.resources.fluentcore.model.Refreshable;
import java.util.Map;

/** An immutable client-side representation of an Azure virtual machine custom image. */
@Fluent
public interface VirtualMachineCustomImage
    extends GroupableResource, Refreshable {
    /** @return true if this image was created by capturing a virtual machine */
    boolean isCreatedFromVirtualMachine();

    /** @return the hyper v Generation */
    HyperVGenerationTypes hyperVGeneration();

    /** @return ID of the virtual machine if this image was created by capturing that virtual machine */
    String sourceVirtualMachineId();

    /** @return operating system disk image in this image */
    ImageOSDisk osDiskImage();

    /** @return data disk images in this image, indexed by the disk LUN */
    Map dataDiskImages();

    /** The entirety of the image definition. */
    interface Definition
        extends DefinitionStages.Blank,
            DefinitionStages.WithGroup,
            DefinitionStages.WithHyperVGeneration,
            DefinitionStages.WithOSDiskImageSourceAltVirtualMachineSource,
            DefinitionStages.WithOSDiskImageSource,
            DefinitionStages.WithSourceVirtualMachine,
            DefinitionStages.WithCreateAndDataDiskImageOSDiskSettings {
    }

    /** Grouping of image definition stages. */
    interface DefinitionStages {
        /** The first stage of a image definition. */
        interface Blank extends GroupableResource.DefinitionWithRegion {
        }

        /** The stage of the image definition allowing to specify the resource group. */
        interface WithGroup extends GroupableResource.DefinitionStages.WithGroup {
        }

        /**
         * The stage of the image definition that allows choosing between using a virtual machine as the source for OS
         * and the data disk images or beginning an OS disk image definition.
         */
        interface WithOSDiskImageSourceAltVirtualMachineSource extends WithOSDiskImageSource, WithSourceVirtualMachine {
        }

        /**
         * The stage of the image definition that allows us to choose a hyper V generation. Default, if this stage is
         * not added will be hyperV gen 1.
         */
        interface WithHyperVGeneration extends WithOSDiskImageSourceAltVirtualMachineSource {
            /**
             * Specifies the Hyper-V generation.
             *
             * @param hyperVGeneration the Hyper-V generation
             * @return the next stage of the definition
             */
            WithOSDiskImageSourceAltVirtualMachineSource withHyperVGeneration(HyperVGenerationTypes hyperVGeneration);
        }

        /** The stage of the image definition allowing to choose an OS source and an OS state for the OS image. */
        interface WithOSDiskImageSource {
            /**
             * Specifies the Windows source native VHD for the OS disk image.
             *
             * @param sourceVhdUrl source Windows virtual hard disk URL
             * @param osState operating system state
             * @return the next stage of the definition
             */
            WithCreateAndDataDiskImageOSDiskSettings withWindowsFromVhd(
                String sourceVhdUrl, OperatingSystemStateTypes osState);

            /**
             * Specifies the Linux source native VHD for the OS disk image.
             *
             * @param sourceVhdUrl source Linux virtual hard disk URL
             * @param osState operating system state
             * @return the next stage of the definition
             */
            WithCreateAndDataDiskImageOSDiskSettings withLinuxFromVhd(
                String sourceVhdUrl, OperatingSystemStateTypes osState);

            /**
             * Specifies the Windows source snapshot for the OS disk image.
             *
             * @param sourceSnapshot source snapshot resource
             * @param osState operating system state
             * @return the next stage of the definition
             */
            WithCreateAndDataDiskImageOSDiskSettings withWindowsFromSnapshot(
                Snapshot sourceSnapshot, OperatingSystemStateTypes osState);

            /**
             * Specifies the Linux source snapshot for the OS disk image.
             *
             * @param sourceSnapshot source snapshot resource
             * @param osState operating system state
             * @return the next stage of the definition
             */
            WithCreateAndDataDiskImageOSDiskSettings withLinuxFromSnapshot(
                Snapshot sourceSnapshot, OperatingSystemStateTypes osState);

            /**
             * Specifies the Windows source snapshot for the OS disk image.
             *
             * @param sourceSnapshotId source snapshot resource ID
             * @param osState operating system state
             * @return the next stage of the definition
             */
            WithCreateAndDataDiskImageOSDiskSettings withWindowsFromSnapshot(
                String sourceSnapshotId, OperatingSystemStateTypes osState);

            /**
             * Specifies the Linux source snapshot for the OS disk image.
             *
             * @param sourceSnapshotId source snapshot resource ID
             * @param osState operating system state
             * @return the next stage of the definition
             */
            WithCreateAndDataDiskImageOSDiskSettings withLinuxFromSnapshot(
                String sourceSnapshotId, OperatingSystemStateTypes osState);

            /**
             * Specifies the Windows source managed disk for the OS disk image.
             *
             * @param sourceManagedDiskId source managed disk resource ID
             * @param osState operating system state
             * @return the next stage of the definition
             */
            WithCreateAndDataDiskImageOSDiskSettings withWindowsFromDisk(
                String sourceManagedDiskId, OperatingSystemStateTypes osState);

            /**
             * Specifies the Linux source managed disk for the OS disk image.
             *
             * @param sourceManagedDiskId source managed disk resource ID
             * @param osState operating system state
             * @return the next stage of the definition
             */
            WithCreateAndDataDiskImageOSDiskSettings withLinuxFromDisk(
                String sourceManagedDiskId, OperatingSystemStateTypes osState);

            /**
             * Specifies the Windows source managed disk for the OS disk image.
             *
             * @param sourceManagedDisk source managed disk
             * @param osState operating system state
             * @return the next stage of the definition
             */
            WithCreateAndDataDiskImageOSDiskSettings withWindowsFromDisk(
                Disk sourceManagedDisk, OperatingSystemStateTypes osState);

            /**
             * Specifies the Linux source managed disk for the OS disk image.
             *
             * @param sourceManagedDisk source managed disk
             * @param osState operating system state
             * @return the next stage of the definition
             */
            WithCreateAndDataDiskImageOSDiskSettings withLinuxFromDisk(
                Disk sourceManagedDisk, OperatingSystemStateTypes osState);
        }

        /** The stage of the image definition allowing to choose source virtual machine. */
        interface WithSourceVirtualMachine {
            /**
             * Uses the virtual machine's OS disk and data disks as the source for OS disk image and data disk images of
             * this image.
             *
             * @param virtualMachineId source virtual machine resource ID
             * @return the next stage of the definition
             */
            WithCreate fromVirtualMachine(String virtualMachineId);

            /**
             * Uses the virtual machine's OS and data disks as the sources for OS disk image and data disk images of
             * this image.
             *
             * @param virtualMachine source virtual machine
             * @return the next stage of the definition
             */
            WithCreate fromVirtualMachine(VirtualMachine virtualMachine);
        }

        /**
         * The stage of an image definition allowing to create the image or add optional data disk images and configure
         * OS disk settings.
         */
        interface WithCreateAndDataDiskImageOSDiskSettings extends WithCreate, WithOSDiskSettings, WithDataDiskImage {
        }

        /**
         * The stage of an image definition allowing to specify configurations for the OS disk when it is created from
         * the image's OS disk image.
         */
        interface WithOSDiskSettings {
            /**
             * Specifies the size in GB for OS disk.
             *
             * @param diskSizeGB the disk size in GB
             * @return the next stage of the definition
             */
            WithCreateAndDataDiskImageOSDiskSettings withOSDiskSizeInGB(int diskSizeGB);

            /**
             * Specifies the caching type for OS disk.
             *
             * @param cachingType the disk caching type
             * @return the next stage of the definition
             */
            WithCreateAndDataDiskImageOSDiskSettings withOSDiskCaching(CachingTypes cachingType);
        }

        /** The stage of an image definition allowing to add a data disk image. */
        interface WithDataDiskImage {
            /**
             * Adds a data disk image with a virtual hard disk as the source.
             *
             * @param sourceVhdUrl source virtual hard disk URL
             * @return the next stage of the definition
             */
            WithCreateAndDataDiskImageOSDiskSettings withDataDiskImageFromVhd(String sourceVhdUrl);

            /**
             * Adds a data disk image with an existing snapshot as the source.
             *
             * @param sourceSnapshotId source snapshot resource ID
             * @return the next stage of the definition
             */
            WithCreateAndDataDiskImageOSDiskSettings withDataDiskImageFromSnapshot(String sourceSnapshotId);

            /**
             * Adds a data disk image with an existing managed disk as the source.
             *
             * @param sourceManagedDiskId source managed disk resource ID
             * @return the next stage of the definition
             */
            WithCreateAndDataDiskImageOSDiskSettings withDataDiskImageFromManagedDisk(String sourceManagedDiskId);

            /**
             * Begins the definition of a new data disk image to add to the image.
             *
             * @return the first stage of the new data disk image definition
             */
            CustomImageDataDisk.DefinitionStages.Blank defineDataDiskImage();
        }

        /** The stage of an image definition allowing to enable zone resiliency. */
        interface WithZoneResilient {
            /**
             * Specifies that zone resiliency should be enabled for the image.
             *
             * @return the next stage of the definition
             */
            WithCreate withZoneResilient();
        }

        /**
         * The stage of an image definition containing all the required inputs for the resource to be created, but also
         * allowing for any other optional settings to be specified.
         */
        interface WithCreate
            extends DefinitionStages.WithZoneResilient,
                Creatable,
                Resource.DefinitionWithTags {
        }
    }

    /** An immutable client-side representation of a data disk image in an image resource. */
    @Fluent
    interface CustomImageDataDisk extends HasInnerModel, ChildResource {
        /** Grouping of data disk image definition stages. */
        interface DefinitionStages {
            /**
             * The first stage of the data disk image definition.
             *
             * @param  the stage of the parent definition to return to after attaching this definition
             */
            interface Blank extends WithDiskLun {
            }

            /**
             * The stage of the image definition allowing to specify the LUN for the disk image.
             *
             * @param  the stage of the parent definition to return to after attaching this definition
             */
            interface WithDiskLun {
                /**
                 * Specifies the LUN for the data disk to be created from the disk image.
                 *
                 * @param lun the unique LUN for the data disk
                 * @return the next stage of the definition
                 */
                WithImageSource withLun(int lun);
            }

            /**
             * The stage of the image definition allowing to choose the source of the data disk image.
             *
             * @param  the stage of the parent definition to return to after attaching this definition
             */
            interface WithImageSource {
                /**
                 * Specifies the source VHD for the data disk image.
                 *
                 * @param sourceVhdUrl source virtual hard disk URL
                 * @return the next stage of the definition
                 */
                WithAttach fromVhd(String sourceVhdUrl);

                /**
                 * Specifies the source snapshot for the data disk image.
                 *
                 * @param sourceSnapshotId source snapshot resource ID
                 * @return the next stage of the definition
                 */
                WithAttach fromSnapshot(String sourceSnapshotId);

                /**
                 * Specifies the source managed disk for the data disk image.
                 *
                 * @param sourceManagedDiskId source managed disk resource ID
                 * @return the next stage of the definition
                 */
                WithAttach fromManagedDisk(String sourceManagedDiskId);

                /**
                 * Specifies the source managed disk for the data disk image.
                 *
                 * @param sourceManagedDisk source managed disk
                 * @return the next stage of the definition
                 */
                WithAttach fromManagedDisk(Disk sourceManagedDisk);
            }

            /**
             * The stage of data disk image definition allowing to specify configurations for the data disk when it is
             * created from the same data disk image.
             *
             * @param  the stage of the parent definition to return to after attaching this definition
             */
            interface WithDiskSettings {
                /**
                 * Specifies the size in GB for data disk.
                 *
                 * @param diskSizeGB the disk size in GB
                 * @return the next stage of the definition
                 */
                WithAttach withDiskSizeInGB(int diskSizeGB);

                /**
                 * Specifies the caching type for data disk.
                 *
                 * @param cachingType the disk caching type
                 * @return the next stage of the definition
                 */
                WithAttach withDiskCaching(CachingTypes cachingType);
            }

            /**
             * The final stage of the data disk image definition.
             *
             * 

At this stage, any remaining optional settings can be specified, or the data disk definition can be * attached to the parent image definition. * * @param the stage of the parent definition to return to after attaching this definition */ interface WithAttach extends Attachable.InDefinition, WithDiskSettings { } } /** * The entirety of a data disk image definition. * * @param the stage of the parent definition to return to after attaching this definition */ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithDiskLun, DefinitionStages.WithImageSource, DefinitionStages.WithDiskSettings, DefinitionStages.WithAttach { } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy