azure-cli
Version:
Microsoft Azure Cross Platform Command Line tool
1,153 lines (1,105 loc) • 268 kB
TypeScript
/*
* 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