UNPKG

azure-cli

Version:

Microsoft Azure Cross Platform Command Line tool

1,153 lines (1,105 loc) 268 kB
/* * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for * license information. * * Code generated by Microsoft (R) AutoRest Code Generator. * Changes may cause incorrect behavior and will be lost if the code is * regenerated. */ import { BaseResource } from 'ms-rest-azure'; import { CloudError } from 'ms-rest-azure'; import * as moment from 'moment'; export { BaseResource } from 'ms-rest-azure'; export { CloudError } from 'ms-rest-azure'; /** * @class * Initializes a new instance of the InstanceViewStatus class. * @constructor * Instance view status. * * @member {string} [code] The status code. * @member {string} [level] The level code. Possible values include: 'Info', * 'Warning', 'Error' * @member {string} [displayStatus] The short localizable label for the status. * @member {string} [message] The detailed status message, including for alerts * and error messages. * @member {date} [time] The time of the status. */ export interface InstanceViewStatus { code?: string; level?: string; displayStatus?: string; message?: string; time?: Date; } /** * @class * Initializes a new instance of the SubResource class. * @constructor * @member {string} [id] Resource Id */ export interface SubResource extends BaseResource { id?: string; } /** * @class * Initializes a new instance of the Sku class. * @constructor * Describes a virtual machine scale set sku. * * @member {string} [name] The sku name. * @member {string} [tier] Specifies the tier of virtual machines in a scale * set.<br /><br /> Possible Values:<br /><br /> **Standard**<br /><br /> * **Basic** * @member {number} [capacity] Specifies the number of virtual machines in the * scale set. */ export interface Sku { name?: string; tier?: string; capacity?: number; } /** * @class * Initializes a new instance of the Resource class. * @constructor * The Resource model definition. * * @member {string} [id] Resource Id * @member {string} [name] Resource name * @member {string} [type] Resource type * @member {string} location Resource location * @member {object} [tags] Resource tags */ export interface Resource extends BaseResource { readonly id?: string; readonly name?: string; readonly type?: string; location: string; tags?: { [propertyName: string]: string }; } /** * @class * Initializes a new instance of the AvailabilitySet class. * @constructor * Specifies information about the availability set that the virtual machine * should be assigned to. Virtual machines specified in the same availability * set are allocated to different nodes to maximize availability. For more * information about availability sets, see [Manage the availability of virtual * machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-manage-availability?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). * <br><br> For more information on Azure planned maintainance, see [Planned * maintenance for virtual machines in * Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-planned-maintenance?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) * <br><br> Currently, a VM can only be added to availability set at creation * time. An existing VM cannot be added to an availability set. * * @member {number} [platformUpdateDomainCount] Update Domain count. * @member {number} [platformFaultDomainCount] Fault Domain count. * @member {array} [virtualMachines] A list of references to all virtual * machines in the availability set. * @member {array} [statuses] The resource status information. * @member {object} [sku] Sku of the availability set * @member {string} [sku.name] The sku name. * @member {string} [sku.tier] Specifies the tier of virtual machines in a * scale set.<br /><br /> Possible Values:<br /><br /> **Standard**<br /><br /> * **Basic** * @member {number} [sku.capacity] Specifies the number of virtual machines in * the scale set. */ export interface AvailabilitySet extends Resource { platformUpdateDomainCount?: number; platformFaultDomainCount?: number; virtualMachines?: SubResource[]; readonly statuses?: InstanceViewStatus[]; sku?: Sku; } /** * @class * Initializes a new instance of the AvailabilitySetListResult class. * @constructor * The List Availability Set operation response. * * @member {array} [value] The list of availability sets */ export interface AvailabilitySetListResult { value?: AvailabilitySet[]; } /** * @class * Initializes a new instance of the VirtualMachineSize class. * @constructor * Describes the properties of a VM size. * * @member {string} [name] The name of the virtual machine size. * @member {number} [numberOfCores] The number of cores supported by the * virtual machine size. * @member {number} [osDiskSizeInMB] The OS disk size, in MB, allowed by the * virtual machine size. * @member {number} [resourceDiskSizeInMB] The resource disk size, in MB, * allowed by the virtual machine size. * @member {number} [memoryInMB] The amount of memory, in MB, supported by the * virtual machine size. * @member {number} [maxDataDiskCount] The maximum number of data disks that * can be attached to the virtual machine size. */ export interface VirtualMachineSize { name?: string; numberOfCores?: number; osDiskSizeInMB?: number; resourceDiskSizeInMB?: number; memoryInMB?: number; maxDataDiskCount?: number; } /** * @class * Initializes a new instance of the VirtualMachineSizeListResult class. * @constructor * The List Virtual Machine operation response. * * @member {array} [value] The list of virtual machine sizes. */ export interface VirtualMachineSizeListResult { value?: VirtualMachineSize[]; } /** * @class * Initializes a new instance of the VirtualMachineExtensionImage class. * @constructor * Describes a Virtual Machine Extension Image. * * @member {string} operatingSystem The operating system this extension * supports. * @member {string} computeRole The type of role (IaaS or PaaS) this extension * supports. * @member {string} handlerSchema The schema defined by publisher, where * extension consumers should provide settings in a matching schema. * @member {boolean} [vmScaleSetEnabled] Whether the extension can be used on * xRP VMScaleSets. By default existing extensions are usable on scalesets, but * there might be cases where a publisher wants to explicitly indicate the * extension is only enabled for CRP VMs but not VMSS. * @member {boolean} [supportsMultipleExtensions] Whether the handler can * support multiple extensions. */ export interface VirtualMachineExtensionImage extends Resource { operatingSystem: string; computeRole: string; handlerSchema: string; vmScaleSetEnabled?: boolean; supportsMultipleExtensions?: boolean; } /** * @class * Initializes a new instance of the VirtualMachineImageResource class. * @constructor * Virtual machine image resource information. * * @member {string} name The name of the resource. * @member {string} location The supported Azure location of the resource. * @member {object} [tags] Specifies the tags that are assigned to the virtual * machine. For more information about using tags, see [Using tags to organize * your Azure * resources](https://docs.microsoft.com/azure/azure-resource-manager/resource-group-using-tags.md). */ export interface VirtualMachineImageResource extends SubResource { name: string; location: string; tags?: { [propertyName: string]: string }; } /** * @class * Initializes a new instance of the VirtualMachineExtensionInstanceView class. * @constructor * The instance view of a virtual machine extension. * * @member {string} [name] The virtual machine extension name. * @member {string} [type] Specifies the type of the extension; an example is * "CustomScriptExtension". * @member {string} [typeHandlerVersion] Specifies the version of the script * handler. * @member {array} [substatuses] The resource status information. * @member {array} [statuses] The resource status information. */ export interface VirtualMachineExtensionInstanceView { name?: string; type?: string; typeHandlerVersion?: string; substatuses?: InstanceViewStatus[]; statuses?: InstanceViewStatus[]; } /** * @class * Initializes a new instance of the VirtualMachineExtension class. * @constructor * Describes a Virtual Machine Extension. * * @member {string} [forceUpdateTag] How the extension handler should be forced * to update even if the extension configuration has not changed. * @member {string} [publisher] The name of the extension handler publisher. * @member {string} [virtualMachineExtensionType] Specifies the type of the * extension; an example is "CustomScriptExtension". * @member {string} [typeHandlerVersion] Specifies the version of the script * handler. * @member {boolean} [autoUpgradeMinorVersion] Indicates whether the extension * should use a newer minor version if one is available at deployment time. * Once deployed, however, the extension will not upgrade minor versions unless * redeployed, even with this property set to true. * @member {object} [settings] Json formatted public settings for the * extension. * @member {object} [protectedSettings] The extension can contain either * protectedSettings or protectedSettingsFromKeyVault or no protected settings * at all. * @member {string} [provisioningState] The provisioning state, which only * appears in the response. * @member {object} [instanceView] The virtual machine extension instance view. * @member {string} [instanceView.name] The virtual machine extension name. * @member {string} [instanceView.type] Specifies the type of the extension; an * example is "CustomScriptExtension". * @member {string} [instanceView.typeHandlerVersion] Specifies the version of * the script handler. * @member {array} [instanceView.substatuses] The resource status information. * @member {array} [instanceView.statuses] The resource status information. */ export interface VirtualMachineExtension extends Resource { forceUpdateTag?: string; publisher?: string; virtualMachineExtensionType?: string; typeHandlerVersion?: string; autoUpgradeMinorVersion?: boolean; settings?: any; protectedSettings?: any; readonly provisioningState?: string; instanceView?: VirtualMachineExtensionInstanceView; } /** * @class * Initializes a new instance of the PurchasePlan class. * @constructor * Used for establishing the purchase context of any 3rd Party artifact through * MarketPlace. * * @member {string} publisher The publisher ID. * @member {string} name The plan ID. * @member {string} product Specifies the product of the image from the * marketplace. This is the same value as Offer under the imageReference * element. */ export interface PurchasePlan { publisher: string; name: string; product: string; } /** * @class * Initializes a new instance of the OSDiskImage class. * @constructor * Contains the os disk image information. * * @member {string} operatingSystem The operating system of the osDiskImage. * Possible values include: 'Windows', 'Linux' */ export interface OSDiskImage { operatingSystem: string; } /** * @class * Initializes a new instance of the DataDiskImage class. * @constructor * Contains the data disk images information. * * @member {number} [lun] Specifies the logical unit number of the data disk. * This value is used to identify data disks within the VM and therefore must * be unique for each data disk attached to a VM. */ export interface DataDiskImage { readonly lun?: number; } /** * @class * Initializes a new instance of the VirtualMachineImage class. * @constructor * Describes a Virtual Machine Image. * * @member {object} [plan] * @member {string} [plan.publisher] The publisher ID. * @member {string} [plan.name] The plan ID. * @member {string} [plan.product] Specifies the product of the image from the * marketplace. This is the same value as Offer under the imageReference * element. * @member {object} [osDiskImage] * @member {string} [osDiskImage.operatingSystem] The operating system of the * osDiskImage. Possible values include: 'Windows', 'Linux' * @member {array} [dataDiskImages] */ export interface VirtualMachineImage extends VirtualMachineImageResource { plan?: PurchasePlan; osDiskImage?: OSDiskImage; dataDiskImages?: DataDiskImage[]; } /** * @class * Initializes a new instance of the UsageName class. * @constructor * The Usage Names. * * @member {string} [value] The name of the resource. * @member {string} [localizedValue] The localized name of the resource. */ export interface UsageName { value?: string; localizedValue?: string; } /** * @class * Initializes a new instance of the Usage class. * @constructor * Describes Compute Resource Usage. * * @member {number} currentValue The current usage of the resource. * @member {number} limit The maximum permitted usage of the resource. * @member {object} name The name of the type of usage. * @member {string} [name.value] The name of the resource. * @member {string} [name.localizedValue] The localized name of the resource. */ export interface Usage { currentValue: number; limit: number; name: UsageName; } /** * @class * Initializes a new instance of the ListUsagesResult class. * @constructor * The List Usages operation response. * * @member {array} value The list of compute resource usages. * @member {string} [nextLink] The URI to fetch the next page of compute * resource usage information. Call ListNext() with this to fetch the next page * of compute resource usage information. */ export interface ListUsagesResult { value: Usage[]; nextLink?: string; } /** * @class * Initializes a new instance of the VirtualMachineCaptureParameters class. * @constructor * Capture Virtual Machine parameters. * * @member {string} vhdPrefix The captured virtual hard disk's name prefix. * @member {string} destinationContainerName The destination container name. * @member {boolean} overwriteVhds Specifies whether to overwrite the * destination virtual hard disk, in case of conflict. */ export interface VirtualMachineCaptureParameters { vhdPrefix: string; destinationContainerName: string; overwriteVhds: boolean; } /** * @class * Initializes a new instance of the VirtualMachineCaptureResult class. * @constructor * Resource Id. * * @member {object} [output] Operation output data (raw JSON) */ export interface VirtualMachineCaptureResult extends SubResource { output?: any; } /** * @class * Initializes a new instance of the Plan class. * @constructor * Specifies information about the marketplace image used to create the virtual * machine. This element is only used for marketplace images. Before you can * use a marketplace image from an API, you must enable the image for * programmatic use. In the Azure portal, find the marketplace image that you * want to use and then click **Want to deploy programmatically, Get Started * ->**. Enter any required information and then click **Save**. * * @member {string} [name] The plan ID. * @member {string} [publisher] The publisher ID. * @member {string} [product] Specifies the product of the image from the * marketplace. This is the same value as Offer under the imageReference * element. * @member {string} [promotionCode] The promotion code. */ export interface Plan { name?: string; publisher?: string; product?: string; promotionCode?: string; } /** * @class * Initializes a new instance of the HardwareProfile class. * @constructor * Specifies the hardware settings for the virtual machine. * * @member {string} [vmSize] Specifies the size of the virtual machine. For * more information about virtual machine sizes, see [Sizes for virtual * machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-sizes?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). * <br><br> The available VM sizes depend on region and availability set. For a * list of available sizes use these APIs: <br><br> [List all available * virtual machine sizes in an availability * set](virtualmachines-list-sizes-availability-set.md) <br><br> [List all * available virtual machine sizes in a * region](virtualmachines-list-sizes-region.md) <br><br> [List all available * virtual machine sizes for * resizing](virtualmachines-list-sizes-for-resizing.md). Possible values * include: 'Basic_A0', 'Basic_A1', 'Basic_A2', 'Basic_A3', 'Basic_A4', * 'Standard_A0', 'Standard_A1', 'Standard_A2', 'Standard_A3', 'Standard_A4', * 'Standard_A5', 'Standard_A6', 'Standard_A7', 'Standard_A8', 'Standard_A9', * 'Standard_A10', 'Standard_A11', 'Standard_A1_v2', 'Standard_A2_v2', * 'Standard_A4_v2', 'Standard_A8_v2', 'Standard_A2m_v2', 'Standard_A4m_v2', * 'Standard_A8m_v2', 'Standard_D1', 'Standard_D2', 'Standard_D3', * 'Standard_D4', 'Standard_D11', 'Standard_D12', 'Standard_D13', * 'Standard_D14', 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', * 'Standard_D4_v2', 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', * 'Standard_D13_v2', 'Standard_D14_v2', 'Standard_D15_v2', 'Standard_DS1', * 'Standard_DS2', 'Standard_DS3', 'Standard_DS4', 'Standard_DS11', * 'Standard_DS12', 'Standard_DS13', 'Standard_DS14', 'Standard_DS1_v2', * 'Standard_DS2_v2', 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2', * 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2', * 'Standard_DS14_v2', 'Standard_DS15_v2', 'Standard_F1', 'Standard_F2', * 'Standard_F4', 'Standard_F8', 'Standard_F16', 'Standard_F1s', * 'Standard_F2s', 'Standard_F4s', 'Standard_F8s', 'Standard_F16s', * 'Standard_G1', 'Standard_G2', 'Standard_G3', 'Standard_G4', 'Standard_G5', * 'Standard_GS1', 'Standard_GS2', 'Standard_GS3', 'Standard_GS4', * 'Standard_GS5', 'Standard_H8', 'Standard_H16', 'Standard_H8m', * 'Standard_H16m', 'Standard_H16r', 'Standard_H16mr', 'Standard_L4s', * 'Standard_L8s', 'Standard_L16s', 'Standard_L32s', 'Standard_NC6', * 'Standard_NC12', 'Standard_NC24', 'Standard_NC24r', 'Standard_NV6', * 'Standard_NV12', 'Standard_NV24' */ export interface HardwareProfile { vmSize?: string; } /** * @class * Initializes a new instance of the ImageReference class. * @constructor * Specifies information about the image to use. You can specify information * about platform images, marketplace images, or virtual machine images. This * element is required when you want to use a platform image, marketplace * image, or virtual machine image, but is not used in other creation * operations. * * @member {string} [publisher] The image publisher. * @member {string} [offer] Specifies the offer of the platform image or * marketplace image used to create the virtual machine. * @member {string} [sku] The image SKU. * @member {string} [version] Specifies the version of the platform image or * marketplace image used to create the virtual machine. The allowed formats * are Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal * numbers. Specify 'latest' to use the latest version of an image available at * deploy time. Even if you use 'latest', the VM image will not automatically * update after deploy time even if a new version becomes available. */ export interface ImageReference extends SubResource { publisher?: string; offer?: string; sku?: string; version?: string; } /** * @class * Initializes a new instance of the KeyVaultSecretReference class. * @constructor * Describes a reference to Key Vault Secret * * @member {string} secretUrl The URL referencing a secret in a Key Vault. * @member {object} sourceVault The relative URL of the Key Vault containing * the secret. * @member {string} [sourceVault.id] Resource Id */ export interface KeyVaultSecretReference { secretUrl: string; sourceVault: SubResource; } /** * @class * Initializes a new instance of the KeyVaultKeyReference class. * @constructor * Describes a reference to Key Vault Key * * @member {string} keyUrl The URL referencing a key encryption key in Key * Vault. * @member {object} sourceVault The relative URL of the Key Vault containing * the key. * @member {string} [sourceVault.id] Resource Id */ export interface KeyVaultKeyReference { keyUrl: string; sourceVault: SubResource; } /** * @class * Initializes a new instance of the DiskEncryptionSettings class. * @constructor * Describes a Encryption Settings for a Disk * * @member {object} [diskEncryptionKey] Specifies the location of the disk * encryption key, which is a Key Vault Secret. * @member {string} [diskEncryptionKey.secretUrl] The URL referencing a secret * in a Key Vault. * @member {object} [diskEncryptionKey.sourceVault] The relative URL of the Key * Vault containing the secret. * @member {string} [diskEncryptionKey.sourceVault.id] Resource Id * @member {object} [keyEncryptionKey] Specifies the location of the key * encryption key in Key Vault. * @member {string} [keyEncryptionKey.keyUrl] The URL referencing a key * encryption key in Key Vault. * @member {object} [keyEncryptionKey.sourceVault] The relative URL of the Key * Vault containing the key. * @member {string} [keyEncryptionKey.sourceVault.id] Resource Id * @member {boolean} [enabled] Specifies whether disk encryption should be * enabled on the virtual machine. */ export interface DiskEncryptionSettings { diskEncryptionKey?: KeyVaultSecretReference; keyEncryptionKey?: KeyVaultKeyReference; enabled?: boolean; } /** * @class * Initializes a new instance of the VirtualHardDisk class. * @constructor * Describes the uri of a disk. * * @member {string} [uri] Specifies the virtual hard disk's uri. */ export interface VirtualHardDisk { uri?: string; } /** * @class * Initializes a new instance of the ManagedDiskParameters class. * @constructor * The parameters of a managed disk. * * @member {string} [storageAccountType] Specifies the storage account type for * the managed disk. Possible values are: Standard_LRS or Premium_LRS. Possible * values include: 'Standard_LRS', 'Premium_LRS' */ export interface ManagedDiskParameters extends SubResource { storageAccountType?: string; } /** * @class * Initializes a new instance of the OSDisk class. * @constructor * Specifies information about the operating system disk used by the virtual * machine. <br><br> For more information about disks, see [About disks and * VHDs for Azure virtual * machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-about-disks-vhds?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). * * @member {string} [osType] This property allows you to specify the type of * the OS that is included in the disk if creating a VM from user-image or a * specialized VHD. <br><br> Possible values are: <br><br> **Windows** <br><br> * **Linux**. Possible values include: 'Windows', 'Linux' * @member {object} [encryptionSettings] Specifies the encryption settings for * the OS Disk. <br><br> Minimum api-version: 2015-06-15 * @member {object} [encryptionSettings.diskEncryptionKey] Specifies the * location of the disk encryption key, which is a Key Vault Secret. * @member {string} [encryptionSettings.diskEncryptionKey.secretUrl] The URL * referencing a secret in a Key Vault. * @member {object} [encryptionSettings.diskEncryptionKey.sourceVault] The * relative URL of the Key Vault containing the secret. * @member {string} [encryptionSettings.diskEncryptionKey.sourceVault.id] * Resource Id * @member {object} [encryptionSettings.keyEncryptionKey] Specifies the * location of the key encryption key in Key Vault. * @member {string} [encryptionSettings.keyEncryptionKey.keyUrl] The URL * referencing a key encryption key in Key Vault. * @member {object} [encryptionSettings.keyEncryptionKey.sourceVault] The * relative URL of the Key Vault containing the key. * @member {string} [encryptionSettings.keyEncryptionKey.sourceVault.id] * Resource Id * @member {boolean} [encryptionSettings.enabled] Specifies whether disk * encryption should be enabled on the virtual machine. * @member {string} [name] The disk name. * @member {object} [vhd] The virtual hard disk. * @member {string} [vhd.uri] Specifies the virtual hard disk's uri. * @member {object} [image] The source user image virtual hard disk. The * virtual hard disk will be copied before being attached to the virtual * machine. If SourceImage is provided, the destination virtual hard drive must * not exist. * @member {string} [image.uri] Specifies the virtual hard disk's uri. * @member {string} [caching] Specifies the caching requirements. <br><br> * Possible values are: <br><br> **None** <br><br> **ReadOnly** <br><br> * **ReadWrite** <br><br> Default: **None for Standard storage. ReadOnly for * Premium storage**. Possible values include: 'None', 'ReadOnly', 'ReadWrite' * @member {string} createOption Specifies how the virtual machine should be * created.<br><br> Possible values are:<br><br> **Attach** \u2013 This value * is used when you are using a specialized disk to create the virtual * machine.<br><br> **FromImage** \u2013 This value is used when you are using * an image to create the virtual machine. If you are using a platform image, * you also use the imageReference element described above. If you are using a * marketplace image, you also use the plan element previously described. * Possible values include: 'fromImage', 'empty', 'attach' * @member {number} [diskSizeGB] Specifies the size of an empty data disk in * gigabytes. This element can be used to overwrite the name of the disk in a * virtual machine image. <br><br> This value cannot be larger than 1023 GB * @member {object} [managedDisk] The managed disk parameters. * @member {string} [managedDisk.storageAccountType] Specifies the storage * account type for the managed disk. Possible values are: Standard_LRS or * Premium_LRS. Possible values include: 'Standard_LRS', 'Premium_LRS' */ export interface OSDisk { osType?: string; encryptionSettings?: DiskEncryptionSettings; name?: string; vhd?: VirtualHardDisk; image?: VirtualHardDisk; caching?: string; createOption: string; diskSizeGB?: number; managedDisk?: ManagedDiskParameters; } /** * @class * Initializes a new instance of the DataDisk class. * @constructor * Describes a data disk. * * @member {number} lun Specifies the logical unit number of the data disk. * This value is used to identify data disks within the VM and therefore must * be unique for each data disk attached to a VM. * @member {string} [name] The disk name. * @member {object} [vhd] The virtual hard disk. * @member {string} [vhd.uri] Specifies the virtual hard disk's uri. * @member {object} [image] The source user image virtual hard disk. The * virtual hard disk will be copied before being attached to the virtual * machine. If SourceImage is provided, the destination virtual hard drive must * not exist. * @member {string} [image.uri] Specifies the virtual hard disk's uri. * @member {string} [caching] Specifies the caching requirements. <br><br> * Possible values are: <br><br> **None** <br><br> **ReadOnly** <br><br> * **ReadWrite** <br><br> Default: **None for Standard storage. ReadOnly for * Premium storage**. Possible values include: 'None', 'ReadOnly', 'ReadWrite' * @member {string} createOption Specifies how the virtual machine should be * created.<br><br> Possible values are:<br><br> **Attach** \u2013 This value * is used when you are using a specialized disk to create the virtual * machine.<br><br> **FromImage** \u2013 This value is used when you are using * an image to create the virtual machine. If you are using a platform image, * you also use the imageReference element described above. If you are using a * marketplace image, you also use the plan element previously described. * Possible values include: 'fromImage', 'empty', 'attach' * @member {number} [diskSizeGB] Specifies the size of an empty data disk in * gigabytes. This element can be used to overwrite the name of the disk in a * virtual machine image. <br><br> This value cannot be larger than 1023 GB * @member {object} [managedDisk] The managed disk parameters. * @member {string} [managedDisk.storageAccountType] Specifies the storage * account type for the managed disk. Possible values are: Standard_LRS or * Premium_LRS. Possible values include: 'Standard_LRS', 'Premium_LRS' */ export interface DataDisk { lun: number; name?: string; vhd?: VirtualHardDisk; image?: VirtualHardDisk; caching?: string; createOption: string; diskSizeGB?: number; managedDisk?: ManagedDiskParameters; } /** * @class * Initializes a new instance of the StorageProfile class. * @constructor * Specifies the storage settings for the virtual machine disks. * * @member {object} [imageReference] Specifies information about the image to * use. You can specify information about platform images, marketplace images, * or virtual machine images. This element is required when you want to use a * platform image, marketplace image, or virtual machine image, but is not used * in other creation operations. * @member {string} [imageReference.publisher] The image publisher. * @member {string} [imageReference.offer] Specifies the offer of the platform * image or marketplace image used to create the virtual machine. * @member {string} [imageReference.sku] The image SKU. * @member {string} [imageReference.version] Specifies the version of the * platform image or marketplace image used to create the virtual machine. The * allowed formats are Major.Minor.Build or 'latest'. Major, Minor, and Build * are decimal numbers. Specify 'latest' to use the latest version of an image * available at deploy time. Even if you use 'latest', the VM image will not * automatically update after deploy time even if a new version becomes * available. * @member {object} [osDisk] Specifies information about the operating system * disk used by the virtual machine. <br><br> For more information about disks, * see [About disks and VHDs for Azure virtual * machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-about-disks-vhds?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). * @member {string} [osDisk.osType] This property allows you to specify the * type of the OS that is included in the disk if creating a VM from user-image * or a specialized VHD. <br><br> Possible values are: <br><br> **Windows** * <br><br> **Linux**. Possible values include: 'Windows', 'Linux' * @member {object} [osDisk.encryptionSettings] Specifies the encryption * settings for the OS Disk. <br><br> Minimum api-version: 2015-06-15 * @member {object} [osDisk.encryptionSettings.diskEncryptionKey] Specifies the * location of the disk encryption key, which is a Key Vault Secret. * @member {string} [osDisk.encryptionSettings.diskEncryptionKey.secretUrl] The * URL referencing a secret in a Key Vault. * @member {object} [osDisk.encryptionSettings.diskEncryptionKey.sourceVault] * The relative URL of the Key Vault containing the secret. * @member {string} * [osDisk.encryptionSettings.diskEncryptionKey.sourceVault.id] Resource Id * @member {object} [osDisk.encryptionSettings.keyEncryptionKey] Specifies the * location of the key encryption key in Key Vault. * @member {string} [osDisk.encryptionSettings.keyEncryptionKey.keyUrl] The URL * referencing a key encryption key in Key Vault. * @member {object} [osDisk.encryptionSettings.keyEncryptionKey.sourceVault] * The relative URL of the Key Vault containing the key. * @member {string} [osDisk.encryptionSettings.keyEncryptionKey.sourceVault.id] * Resource Id * @member {boolean} [osDisk.encryptionSettings.enabled] Specifies whether disk * encryption should be enabled on the virtual machine. * @member {string} [osDisk.name] The disk name. * @member {object} [osDisk.vhd] The virtual hard disk. * @member {string} [osDisk.vhd.uri] Specifies the virtual hard disk's uri. * @member {object} [osDisk.image] The source user image virtual hard disk. The * virtual hard disk will be copied before being attached to the virtual * machine. If SourceImage is provided, the destination virtual hard drive must * not exist. * @member {string} [osDisk.image.uri] Specifies the virtual hard disk's uri. * @member {string} [osDisk.caching] Specifies the caching requirements. * <br><br> Possible values are: <br><br> **None** <br><br> **ReadOnly** * <br><br> **ReadWrite** <br><br> Default: **None for Standard storage. * ReadOnly for Premium storage**. Possible values include: 'None', 'ReadOnly', * 'ReadWrite' * @member {string} [osDisk.createOption] Specifies how the virtual machine * should be created.<br><br> Possible values are:<br><br> **Attach** \u2013 * This value is used when you are using a specialized disk to create the * virtual machine.<br><br> **FromImage** \u2013 This value is used when you * are using an image to create the virtual machine. If you are using a * platform image, you also use the imageReference element described above. If * you are using a marketplace image, you also use the plan element previously * described. Possible values include: 'fromImage', 'empty', 'attach' * @member {number} [osDisk.diskSizeGB] Specifies the size of an empty data * disk in gigabytes. This element can be used to overwrite the name of the * disk in a virtual machine image. <br><br> This value cannot be larger than * 1023 GB * @member {object} [osDisk.managedDisk] The managed disk parameters. * @member {string} [osDisk.managedDisk.storageAccountType] Specifies the * storage account type for the managed disk. Possible values are: Standard_LRS * or Premium_LRS. Possible values include: 'Standard_LRS', 'Premium_LRS' * @member {array} [dataDisks] Specifies the parameters that are used to add a * data disk to a virtual machine. <br><br> For more information about disks, * see [About disks and VHDs for Azure virtual * machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-about-disks-vhds?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). */ export interface StorageProfile { imageReference?: ImageReference; osDisk?: OSDisk; dataDisks?: DataDisk[]; } /** * @class * Initializes a new instance of the AdditionalUnattendContent class. * @constructor * Specifies additional XML formatted information that can be included in the * Unattend.xml file, which is used by Windows Setup. Contents are defined by * setting name, component name, and the pass in which the content is applied. * * @member {string} [passName] The pass name. Currently, the only allowable * value is oobeSystem. Possible values include: 'oobeSystem' * @member {string} [componentName] The component name. Currently, the only * allowable value is Microsoft-Windows-Shell-Setup. Possible values include: * 'Microsoft-Windows-Shell-Setup' * @member {string} [settingName] Specifies the name of the setting to which * the content applies. Possible values are: FirstLogonCommands and AutoLogon. * Possible values include: 'AutoLogon', 'FirstLogonCommands' * @member {string} [content] Specifies the XML formatted content that is added * to the unattend.xml file for the specified path and component. The XML must * be less than 4KB and must include the root element for the setting or * feature that is being inserted. */ export interface AdditionalUnattendContent { passName?: string; componentName?: string; settingName?: string; content?: string; } /** * @class * Initializes a new instance of the WinRMListener class. * @constructor * Describes Protocol and thumbprint of Windows Remote Management listener * * @member {string} [protocol] Specifies the protocol of listener. <br><br> * Possible values are: <br>**http** <br><br> **https**. Possible values * include: 'Http', 'Https' * @member {string} [certificateUrl] This is the URL of a certificate that has * been uploaded to Key Vault as a secret. For adding a secret to the Key * Vault, see [Add a key or secret to the key * vault](https://docs.microsoft.com/azure/key-vault/key-vault-get-started/#add). * In this case, your certificate needs to be It is the Base64 encoding of the * following JSON Object which is encoded in UTF-8: <br><br> {<br> * "data":"<Base64-encoded-certificate>",<br> "dataType":"pfx",<br> * "password":"<pfx-file-password>"<br>} */ export interface WinRMListener { protocol?: string; certificateUrl?: string; } /** * @class * Initializes a new instance of the WinRMConfiguration class. * @constructor * Describes Windows Remote Management configuration of the VM * * @member {array} [listeners] The list of Windows Remote Management listeners */ export interface WinRMConfiguration { listeners?: WinRMListener[]; } /** * @class * Initializes a new instance of the WindowsConfiguration class. * @constructor * Specifies Windows operating system settings on the virtual machine. * * @member {boolean} [provisionVMAgent] Indicates whether virtual machine agent * should be provisioned on the virtual machine. <br><br> When this property is * not specified in the request body, default behavior is to set it to true. * This will ensure that VM Agent is installed on the VM so that extensions can * be added to the VM later. * @member {boolean} [enableAutomaticUpdates] Indicates whether virtual machine * is enabled for automatic updates. * @member {string} [timeZone] Specifies the time zone of the virtual machine. * e.g. "Pacific Standard Time" * @member {array} [additionalUnattendContent] Specifies additional base-64 * encoded XML formatted information that can be included in the Unattend.xml * file, which is used by Windows Setup. * @member {object} [winRM] Specifies the Windows Remote Management listeners. * This enables remote Windows PowerShell. * @member {array} [winRM.listeners] The list of Windows Remote Management * listeners */ export interface WindowsConfiguration { provisionVMAgent?: boolean; enableAutomaticUpdates?: boolean; timeZone?: string; additionalUnattendContent?: AdditionalUnattendContent[]; winRM?: WinRMConfiguration; } /** * @class * Initializes a new instance of the SshPublicKey class. * @constructor * Contains information about SSH certificate public key and the path on the * Linux VM where the public key is placed. * * @member {string} [path] Specifies the full path on the created VM where ssh * public key is stored. If the file already exists, the specified key is * appended to the file. Example: /home/user/.ssh/authorized_keys * @member {string} [keyData] SSH public key certificate used to authenticate * with the VM through ssh. The key needs to be at least 2048-bit and in * ssh-rsa format. <br><br> For creating ssh keys, see [Create SSH keys on * Linux and Mac for Linux VMs in * Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-mac-create-ssh-keys?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json). */ export interface SshPublicKey { path?: string; keyData?: string; } /** * @class * Initializes a new instance of the SshConfiguration class. * @constructor * SSH configuration for Linux based VMs running on Azure * * @member {array} [publicKeys] The list of SSH public keys used to * authenticate with linux based VMs. */ export interface SshConfiguration { publicKeys?: SshPublicKey[]; } /** * @class * Initializes a new instance of the LinuxConfiguration class. * @constructor * Specifies the Linux operating system settings on the virtual machine. * <br><br>For a list of supported Linux distributions, see [Linux on * Azure-Endorsed * Distributions](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-endorsed-distros?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json) * <br><br> For running non-endorsed distributions, see [Information for * Non-Endorsed * Distributions](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-create-upload-generic?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json). * * @member {boolean} [disablePasswordAuthentication] Specifies whether password * authentication should be disabled. * @member {object} [ssh] Specifies the ssh key configuration for a Linux OS. * @member {array} [ssh.publicKeys] The list of SSH public keys used to * authenticate with linux based VMs. */ export interface LinuxConfiguration { disablePasswordAuthentication?: boolean; ssh?: SshConfiguration; } /** * @class * Initializes a new instance of the VaultCertificate class. * @constructor * Describes a single certificate reference in a Key Vault, and where the * certificate should reside on the VM. * * @member {string} [certificateUrl] This is the URL of a certificate that has * been uploaded to Key Vault as a secret. For adding a secret to the Key * Vault, see [Add a key or secret to the key * vault](https://docs.microsoft.com/azure/key-vault/key-vault-get-started/#add). * In this case, your certificate needs to be It is the Base64 encoding of the * following JSON Object which is encoded in UTF-8: <br><br> {<br> * "data":"<Base64-encoded-certificate>",<br> "dataType":"pfx",<br> * "password":"<pfx-file-password>"<br>} * @member {string} [certificateStore] For Windows VMs, specifies the * certificate store on the Virtual Machine to which the certificate should be * added. The specified certificate store is implicitly in the LocalMachine * account. <br><br>For Linux VMs, the certificate file is placed under the * /var/lib/waagent directory, with the file name <UppercaseThumbprint>.crt for * the X509 certificate file and <UppercaseThumbpring>.prv for private key. * Both of these files are .pem formatted. */ export interface VaultCertificate { certificateUrl?: string; certificateStore?: string; } /** * @class * Initializes a new instance of the VaultSecretGroup class. * @constructor * Describes a set of certificates which are all in the same Key Vault. * * @member {object} [sourceVault] The relative URL of the Key Vault containing * all of the certificates in VaultCertificates. * @member {string} [sourceVault.id] Resource Id * @member {array} [vaultCertificates] The list of key vault references in * SourceVault which contain certificates. */ export interface VaultSecretGroup { sourceVault?: SubResource; vaultCertificates?: VaultCertificate[]; } /** * @class * Initializes a new instance of the OSProfile class. * @constructor * Specifies the operating system settings for the virtual machine. * * @member {string} [computerName] Specifies the host OS name of the virtual * machine. <br><br> **Max-length (Windows):** 15 characters <br><br> * **Max-length (Linux):** 64 characters. <br><br> For naming conventions and * restrictions see [Azure infrastructure services implementation * guidelines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-infrastructure-subscription-accounts-guidelines?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json#1-naming-conventions). * @member {string} [adminUsername] Specifies the name of the administrator * account. <br><br> **Windows-only restriction:** Cannot end in "." <br><br> * **Disallowed values:** "administrator", "admin", "user", "user1", "test", * "user2", "test1", "user3", "admin1", "1", "123", "a", "actuser", "adm", * "admin2", "aspnet", "backup", "console", "david", "guest", "john", "owner", * "root", "server", "sql", "support", "support_388945a0", "sys", "test2", * "test3", "user4", "user5". <br><br> **Minimum-length (Linux):** 1 character * <br><br> **Max-length (Linux):** 64 characters <br><br> **Max-length * (Windows):** 20 characters <br><br><li> For root access to the Linux VM, * see [Using root privileges on Linux virtual machines in * Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-use-root-privileges?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json)<br><li> * For a list of built-in system users on Linux that should not be used in this * field, see [Selecting User Names for Linux on * Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-usernames?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json) * @member {string} [adminPassword] Specifies the password of the administrator * account. <br><br> **Minimum-length (Windows):** 8 characters <br><br> * **Minimum-length (Linux):** 6 characters <br><br> **Max-length (Windows):** * 123 characters <br><br> **Max-length (Linux):** 72 characters <br><br> * **Complexity requirements:** 3 out of 4 conditions below need to be * fulfilled <br> Has lower characters <br>Has upper characters <br> Has a * digit <br> Has a special character (Regex match [\W_]) <br><br> **Disallowed * values:** "abc@123", "P@$$w0rd", "P@ssw0rd", "P@ssword123", "Pa$$word", * "pass@word1", "Password!", "Password1", "Password22", "iloveyou!" <br><br> * For resetting the password, see [How to reset the Remote Desktop service or * its login password in a Windows * VM](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-reset-rdp?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) * <br><br> For resetting root password, see [Manage users, SSH, and check or * repair disks on Azure Linux VMs using the VMAccess * Extension](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-using-vmaccess-extension?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json#reset-root-password) * @member {string} [customData] Specifies a base-64 encoded string of custom * data. The base-64 encoded string is decoded to a binary array that is saved * as a file on the Virtual Machine. The maximum length of the binary array is * 65535 bytes. <br><br> For using cloud-init for your VM, see [Using * cloud-init to customize a Linux VM during * creation](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-using-cloud-init?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json) * @member {object} [windowsConfiguration] Specifies Windows operating system * settings on the virtual machine. * @member {boolean} [windowsConfiguration.provisionVMAgent] Indicates whether * virtual machine agent should be provisioned on the virtual machine. <br><br> * When this property is not specified in the request body, default behavior is * to set it to true. This will ensure that VM Agent is installed on the VM so * that extensions can be added to the VM later. * @member {boolean} [windowsConfiguration.enableAutomaticUpdates] Indicates * whether virtual machine is enabled for automatic updates. * @member {string} [windowsConfiguration.timeZone] Specifies the time zone of * the virtual machine. e.g. "Pacific Standard Time" * @member {array} [windowsConfiguration.additionalUnattendContent] Specifies * additional base-64 encoded XML formatted information that can be included in * the Unattend.xml file, which is used by Windows Setup. * @member {object} [windowsConfiguration.winRM] Specifies the Windows Remote * Management listeners. This enables remote Windows PowerShell. * @member {array} [windowsConfiguration.winRM.listeners] The list of Windows * Remote Management listeners * @member {object} [linuxConfiguration] Specifies the Linux operating system * settings on the virtual machine. <br><br>For a list of supported Linux * distributions, see [Linux on Azure-Endorsed * Distributions](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-endorsed-distros?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json) * <br><br> For running non-endorsed distributions, see [Information for * Non-Endorsed * Distributions](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-create-upload-generic?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json). * @member {boolean} [linuxConfiguration.disablePasswordAuthentication] * Specifies whether password authentication should be disabled. * @member {object} [linuxConfiguration.ssh] Specifies the ssh key * configuration for a Linux OS. * @member {array} [linuxConfiguration.ssh.publicKeys] The list of SSH public * keys used to authenticate with linux based VMs. * @member {array} [secrets] Specifies set of certificates that should be * installed onto the virtual machine. */ export interface OSProfile { computerName?: string; adminUsername?: string; adminPassword?: string; customData?: string; windowsConfiguration?: WindowsConfiguration; linuxConfiguration?: LinuxConfiguration; secrets?: VaultSecretGroup[]; } /** * @class * Initializes a new instance of the NetworkInterfaceReference class. * @constructor * Describes a network interface reference. * * @member {boolean} [primary] Specifies the primary network interface in case * the virtual machine has more than 1 network interface. */ export interface NetworkInterfaceReference extends SubResource { primary?: boolean; } /** * @class * Initializes a new instance of the NetworkProfile class. * @constructor * Specifies the network interfaces of the virtual machine. * * @member {array} [networkInterfaces] Specifies the list of resource Ids for * the network interfaces associated with the virtual machine. */ export interface NetworkProfile { networkInterfaces?: NetworkInterfaceReference[]; } /** * @class * Initializes a new instance of the BootDiagnostics class. * @constructor * Boot Diagnostics is a debugging feature which allows you to view Console * Output and Screenshot to diagnose VM status. <br><br> For Linux Virtual * Machines, you can easily view the output of your console log. <br><br> For * bot