// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.

package com.azure.resourcemanager.vmwarecloudsimple.models;

import com.azure.resourcemanager.vmwarecloudsimple.fluent.models.VirtualMachinePropertiesInner;
import java.util.List;

/** An immutable client-side representation of VirtualMachineProperties. */
public interface VirtualMachineProperties {
    /**
     * Gets the amountOfRam property: The amount of memory.
     *
     * @return the amountOfRam value.
     */
    int amountOfRam();

    /**
     * Gets the controllers property: The list of Virtual Disks' Controllers.
     *
     * @return the controllers value.
     */
    List<VirtualDiskController> controllers();

    /**
     * Gets the customization property: Virtual machine properties.
     *
     * @return the customization value.
     */
    GuestOSCustomization customization();

    /**
     * Gets the disks property: The list of Virtual Disks.
     *
     * @return the disks value.
     */
    List<VirtualDisk> disks();

    /**
     * Gets the dnsname property: The DNS name of Virtual Machine in VCenter.
     *
     * @return the dnsname value.
     */
    String dnsname();

    /**
     * Gets the exposeToGuestVM property: Expose Guest OS or not.
     *
     * @return the exposeToGuestVM value.
     */
    Boolean exposeToGuestVM();

    /**
     * Gets the folder property: The path to virtual machine folder in VCenter.
     *
     * @return the folder value.
     */
    String folder();

    /**
     * Gets the guestOS property: The name of Guest OS.
     *
     * @return the guestOS value.
     */
    String guestOS();

    /**
     * Gets the guestOSType property: The Guest OS type.
     *
     * @return the guestOSType value.
     */
    GuestOSType guestOSType();

    /**
     * Gets the nics property: The list of Virtual NICs.
     *
     * @return the nics value.
     */
    List<VirtualNic> nics();

    /**
     * Gets the numberOfCores property: The number of CPU cores.
     *
     * @return the numberOfCores value.
     */
    int numberOfCores();

    /**
     * Gets the password property: Password for login. Deprecated - use customization property.
     *
     * @return the password value.
     */
    String password();

    /**
     * Gets the privateCloudId property: Private Cloud Id.
     *
     * @return the privateCloudId value.
     */
    String privateCloudId();

    /**
     * Gets the provisioningState property: The provisioning status of the resource.
     *
     * @return the provisioningState value.
     */
    String provisioningState();

    /**
     * Gets the publicIp property: The public ip of Virtual Machine.
     *
     * @return the publicIp value.
     */
    String publicIp();

    /**
     * Gets the resourcePool property: Virtual Machines Resource Pool.
     *
     * @return the resourcePool value.
     */
    ResourcePool resourcePool();

    /**
     * Gets the status property: The status of Virtual machine.
     *
     * @return the status value.
     */
    VirtualMachineStatus status();

    /**
     * Gets the templateId property: Virtual Machine Template Id.
     *
     * @return the templateId value.
     */
    String templateId();

    /**
     * Gets the username property: Username for login. Deprecated - use customization property.
     *
     * @return the username value.
     */
    String username();

    /**
     * Gets the vSphereNetworks property: The list of Virtual VSphere Networks.
     *
     * @return the vSphereNetworks value.
     */
    List<String> vSphereNetworks();

    /**
     * Gets the vmId property: The internal id of Virtual Machine in VCenter.
     *
     * @return the vmId value.
     */
    String vmId();

    /**
     * Gets the vmwaretools property: VMware tools version.
     *
     * @return the vmwaretools value.
     */
    String vmwaretools();

    /**
     * Gets the inner com.azure.resourcemanager.vmwarecloudsimple.fluent.models.VirtualMachinePropertiesInner object.
     *
     * @return the inner object.
     */
    VirtualMachinePropertiesInner innerModel();
}
