VM Related Interfaces

Create VM

POST/zstack/v1/vm-instances

Create a new Virtual Machine.

Headers

Authorization: OAuth the-session-uuid

Body

{
  "params": {
    "name": "vm1",
    "l3NetworkUuids": [
      "19d22d051b063d379a2816daaf431838"
    ],
    "clusterUuid": "a0468dc645223f67bd0f2ab95276bbae",
    "description": "this is a vm",
    "strategy": "InstantStart",
    "diskAOs": [
      {
        "boot": true,
        "platform": "Linux",
        "guestOsType": "Helix 8",
        "architecture": "x86_64",
        "primaryStorageUuid": "ff0359abb8443d2f8077cc368afa7c00",
        "size": 0,
        "sourceType": "VolumeVO",
        "sourceUuid": "ff0eb5a723e9316bb1053ed7e4bb3100",
        "systemTags": [
          "volumeProvisioningStrategy::ThickProvisioning"
        ],
        "name": "root-volume"
      },
      {
        "boot": false,
        "primaryStorageUuid": "ff0359abb8443d2f8077cc368afa7c00",
        "size": 0,
        "name": "data-volume"
      }
    ],
    "devices": {
      "tpm": {
        "enable": true,
        "keyProviderUuid": "ff03c7091617357eb4022d11c6860e00",
        "resourceKeyCreatedNew": false
      }
    }
  },
  "systemTags": [],
  "userTags": []
}

In the example above, systemTags and userTags fields can be omitted. They are listed to indicate that the body can contain these two fields.

Curl Example

curl -H "Content-Type: application/json;charset=UTF-8"
-H "Authorization: OAuth b86c9016b4f24953a9edefb53ca0678c"
-X POST -d '{"params":{"name":"vm1","l3NetworkUuids":["19d22d051b063d379a2816daaf431838"],"clusterUuid":"a0468dc645223f67bd0f2ab95276bbae","description":"this is a vm","strategy":"InstantStart","diskAOs":[{"boot":true,"platform":"Linux","guestOsType":"Helix 8","architecture":"x86_64","primaryStorageUuid":"ff0359abb8443d2f8077cc368afa7c00","size":0,"sourceType":"VolumeVO","sourceUuid":"ff0eb5a723e9316bb1053ed7e4bb3100","systemTags":["volumeProvisioningStrategy::ThickProvisioning"],"name":"root-volume"},{"boot":false,"primaryStorageUuid":"ff0359abb8443d2f8077cc368afa7c00","size":0,"name":"data-volume"}],"devices":{"tpm":{"enable":true,"keyProviderUuid":"ff03c7091617357eb4022d11c6860e00","resourceKeyCreatedNew":false}}}}'
http://localhost:8080/zstack/v1/vm-instances

Parameter List

Name

Type

Location

Description

Allowed Values

Starting Version

name

String

body (included in params structure)

Virtual Machine name

 

0.6

instanceOfferingUuid (Optional)

String

body (included in params structure)

Compute offering UUID- Specifies the CPU, memory, and other parameters of the Virtual Machine.

 

0.6

imageUuid (Optional)

String

body (included in params structure)

Image UUID- The root disk of the Virtual Machine is created from the Image specified by this field.

 

0.6

l3NetworkUuids (Optional)

List

body (included in params structure)

Distributed Port Group UUID list- Specifies one or more Distributed Port Groups. The Virtual Machine creates a NIC on each Distributed Port Group.

 

0.6

vmNicParams (Optional)

String

body (included in params structure)

NIC information

 

4.7.0

type (Optional)

String

body (included in params structure)

Virtual Machine type- Reserved field, no need to specify.

  • UserVm
  • ApplianceVm

0.6

rootDiskOfferingUuid (Optional)

String

body (included in params structure)

Root disk offering UUID- If the Image type specified by the imageUuid field is ISO, this field must be specified to determine the root disk size to be created.

  • If the Image type is non-ISO, this field does not need to be specified.

 

0.6

dataDiskSizes (Optional)

List

body (included in params structure)

Custom disk size list. Specifies one or more disk sizes (can be repeated) to create one or more Data Disks for the Virtual Machine.

 

4.4.6

dataDiskOfferingUuids (Optional)

List

body (included in params structure)

Disk offering UUID list- Specifies one or more disk offering UUIDs (UUID can be repeated) to create one or more Data Disks for the Virtual Machine.

 

0.6

zoneUuid (Optional)

String

body (included in params structure)

Data Center UUID- If specified, the Virtual Machine is created in the specified Data Center.

 

0.6

clusterUuid (Optional)

String

body (included in params structure)

Cluster UUID- If specified, the Virtual Machine is created in the specified Cluster. This field has higher priority than zoneUuid.

 

0.6

hostUuid (Optional)

String

body (included in params structure)

Host UUID- If specified, the Virtual Machine is created on the specified Host. This field has higher priority than zoneUuid and clusterUuid.

 

0.6

primaryStorageUuidForRootVolume (Optional)

String

body (included in params structure)

Data Storage UUID- If specified, the root disk of the Virtual Machine is created in the specified Data Storage.

 

1.8

description (Optional)

String

body (included in params structure)

Virtual Machine description

 

0.6

defaultL3NetworkUuid (Optional)

String

body (included in params structure)

Default Distributed Port Group UUID- When l3NetworkUuids specifies multiple Distributed Port Groups, this field specifies the Distributed Port Group that provides the default route.

  • If not specified, the first network in l3NetworkUuids is selected as the default network.

 

0.6

resourceUuid (Optional)

String

body (included in params structure)

Resource UUID- If specified, the Virtual Machine uses this value as its UUID.

 

0.6

tagUuids (Optional)

List

body (included in params structure)

Tag UUID list

 

3.4.0

systemTags (Optional)

List

body

Virtual Machine system tags

 

0.6

userTags (Optional)

List

body

Virtual Machine user tags

 

0.6

strategy (Optional)

String

body (included in params structure)

Virtual Machine creation policy- Start immediately after creation

  • Do not start after creation
  • InstantStart
  • JustCreate
  • CreateStopped

0.6

rootVolumeSystemTags (Optional)

List

body (included in params structure)

System tags required for the Virtual Machine root disk

 

3.0

dataVolumeSystemTags (Optional)

List

body (included in params structure)

System tags required for the Virtual Machine data disk

 

3.0

cpuNum (Optional)

Integer

body (included in params structure)

 

 

3.4.0

memorySize (Optional)

Long

body (included in params structure)

 

 

3.4.0

rootDiskSize (Optional)

Long

body (included in params structure)

 

 

3.4.0

dataVolumeSystemTagsOnIndex (Optional)

Map

body (included in params structure)

 

 

4.4.24

sshKeyPairUuids (Optional)

List

body (included in params structure)

 

 

4.7.21

dataVolumeTemplateUuids (Optional)

List

body (included in params structure)

 

 

4.7.0

diskAOs (Optional)

List

body (included in params structure)

boot=true indicates diskAO is used to set the Virtual Machine platform, architecture, operating system and root disk bus; diskAO.boot=false indicates loaded disk

 

4.7.0

platform

String

body (included in params structure)

 

 

4.7.0

guestOsType

String

body (included in params structure)

 

 

4.7.0

architecture

String

body (included in params structure)

 

 

4.7.21

reservedMemorySize (Optional)

Long

body (included in params structure)

 

 

4.7.21

virtio (Optional)

Boolean

body (included in params structure)

 

 

4.7.0

API Response

Response Example

{
  "inventory": {
    "uuid": "6efab7159c6932429c6b0e7e0b64b660",
    "name": "Test-VM",
    "description": "web server VM",
    "zoneUuid": "d10bd7a9565138efaf6171db8e18fa7d",
    "clusterUuid": "692c71639d873bf6a356cd8e285d0d9c",
    "imageUuid": "28061e65e48037eda71b53a0732bf087",
    "hostUuid": "f877177de7bd377e811bc6313878b2b1",
    "lastHostUuid": "a3ccdc90a600334f994c69aee4270ac5",
    "instanceOfferingUuid": "9a874241f867333ca0bf0ab2134f8515",
    "rootVolumeUuid": "f52d7c94d69d3bbb97d36a270fe910c3",
    "platform": "Linux",
    "defaultL3NetworkUuid": "2ac1b70fdb0f38769a29c6ebd0262cca",
    "type": "UserVm",
    "hypervisorType": "KVM",
    "memorySize": 8589934592,
    "cpuNum": 1,
    "allocatorStrategy": "LastHostPreferredAllocatorStrategy",
    "createDate": "Nov 14, 2017 2:20:57 PM",
    "lastOpDate": "Nov 14, 2017 2:20:57 PM",
    "state": "Running",
    "vmNics": [
      {
        "uuid": "0dfbb8a297e9349ea8799c4ce48c6d10",
        "vmInstanceUuid": "6efab7159c6932429c6b0e7e0b64b660",
        "usedIpUuid": "39b57596a8ba35289bd9f40efceeae03",
        "l3NetworkUuid": "2ac1b70fdb0f38769a29c6ebd0262cca",
        "ip": "192.168.1.10",
        "mac": "00:0c:29:bd:99:fc",
        "hypervisorType": "KVM",
        "netmask": "255.255.255.0",
        "gateway": "192.168.1.1",
        "deviceId": 0,
        "createDate": "Nov 14, 2017 2:20:57 PM",
        "lastOpDate": "Nov 14, 2017 2:20:57 PM"
      }
    ],
    "allVolumes": [
      {
        "uuid": "f52d7c94d69d3bbb97d36a270fe910c3",
        "name": "Root-Volume-For-VM-6efab7159c6932429c6b0e7e0b64b660",
        "primaryStorageUuid": "4ed5bbb150a034b5917e7e6c9c4b8170",
        "vmInstanceUuid": "6efab7159c6932429c6b0e7e0b64b660",
        "diskOfferingUuid": "0521187274d73f5b936c22b145384c74",
        "rootImageUuid": "28061e65e48037eda71b53a0732bf087",
        "installPath": "/zstack_ps/rootVolumes/acct-36c27e8ff05c4780bf6d2fa65700f22e/vol-f52d7c94d69d3bbb97d36a270fe910c3/f52d7c94d69d3bbb97d36a270fe910c3.qcow2",
        "type": "Root",
        "format": "qcow2",
        "size": 107374182400,
        "actualSize": 21474836480,
        "deviceId": 0,
        "state": "Enabled",
        "status": "Ready",
        "createDate": "Nov 14, 2017 2:20:57 PM",
        "lastOpDate": "Nov 14, 2017 2:20:57 PM"
      }
    ]
  }
}
NameTypeDescriptionStarting Version
successboolean 0.6
errorErrorCodeError code. If not null, the operation failed. If null, the operation succeeded. See error0.6
inventoryVmInstanceInventorySee inventory for details.0.6

error

NameTypeDescriptionStarting Version
codeStringError code number, globally unique identifier for the error, for example SYS.1000, HOST.10010.6
descriptionStringBrief description of the error0.6
detailsStringDetailed error information0.6
elaborationStringReserved field, defaults to null0.6
opaqueLinkedHashMapReserved field, defaults to null0.6
causeErrorCodeRoot error. The error that caused this error. If there is no original error, this field is null0.6

inventory

NameTypeDescriptionStarting Version
uuidStringResource UUID. Uniquely identifies the resource0.6
nameStringResource name0.6
descriptionStringResource description0.6
zoneUuidStringData Center UUID0.6
clusterUuidStringCluster UUID0.6
imageUuidStringImage UUID0.6
hostUuidStringHost UUID0.6
lastHostUuidStringHost UUID where the Virtual Machine last ran0.6
instanceOfferingUuidStringCompute offering UUID0.6
rootVolumeUuidStringRoot disk UUID0.6
platformStringVirtual Machine running platform0.6
architectureString 0.6
defaultL3NetworkUuidStringDefault Distributed Port Group UUID0.6
typeStringVirtual Machine type0.6
hypervisorTypeStringHypervisor type of the Virtual Machine0.6
memorySizeLongMemory size0.6
cpuNumIntegerCPU number0.6
cpuSpeedLongCPU speed0.6
allocatorStrategyStringAllocation strategy0.6
createDateTimestampCreate time0.6
lastOpDateTimestampLast modification time0.6
stateStringVirtual Machine availability state0.6
guestOsTypeString 4.1.2
vmNicsListSee vmNics for details.0.6
allVolumesListSee allVolumes for details.0.6
vmCdRomsListSee vmCdRoms for details.0.6

vmNics

NameTypeDescriptionStarting Version
uuidStringResource UUID. Uniquely identifies the resource4.7.13
vmInstanceUuidStringVirtual Machine UUID4.7.13
l3NetworkUuidStringDistributed Port Group UUID4.7.13
ipString 4.7.13
macString 4.7.13
hypervisorTypeString 4.7.13
netmaskString 4.7.13
gatewayString 4.7.13
metaDataString 4.7.13
ipVersionInteger 4.7.13
driverTypeString 4.7.13
internalNameString 4.7.13
deviceIdInteger 4.7.13
typeString 4.7.13
stateStringNIC status4.7.13
createDateTimestampCreate time4.7.13
lastOpDateTimestampLast modification time4.7.13
usedIpsListSee usedIps for details.4.7.13

usedIps

NameTypeDescriptionStarting Version
uuidStringResource UUID. Uniquely identifies the resource4.7.13
ipRangeUuidStringIP range UUID4.7.13
l3NetworkUuidStringDistributed Port Group UUID4.7.13
ipVersionInteger 4.7.13
ipString 4.7.13
netmaskString 4.7.13
gatewayString 4.7.13
usedForString 4.7.13
ipInLonglong 4.7.13
vmNicUuidStringVirtual Machine NIC UUID4.7.13
createDateTimestampCreate time4.7.13
lastOpDateTimestampLast modification time4.7.13

allVolumes

NameTypeDescriptionStarting Version
uuidStringResource UUID. Uniquely identifies the resource4.7.13
nameStringResource name4.7.13
descriptionStringResource description4.7.13
primaryStorageUuidStringData Storage UUID4.7.13
vmInstanceUuidStringVirtual Machine UUID4.7.13
diskOfferingUuidStringDisk offering UUID4.7.13
rootImageUuidString 4.7.13
installPathString 4.7.13
typeString 4.7.13
formatString 4.7.13
sizeLong 4.7.13
actualSizeLong 4.7.13
deviceIdInteger 4.7.13
stateString 4.7.13
statusString 4.7.13
createDateTimestampCreate time4.7.13
lastOpDateTimestampLast modification time4.7.13
isShareableBoolean 4.7.13
volumeQosString 4.7.13
lastDetachDateTimestamp 4.7.13
lastVmInstanceUuidString 4.7.13

vmCdRoms

NameTypeDescriptionStarting Version
uuidStringResource UUID. Uniquely identifies the resource4.7.13
vmInstanceUuidStringVirtual Machine UUID4.7.13
deviceIdInteger 4.7.13
isoUuidString 4.7.13
isoInstallPathString 4.7.13
nameStringResource name4.7.13
descriptionStringResource description4.7.13
createDateTimestampCreate time4.7.13
lastOpDateTimestampLast modification time4.7.13

SDK Examples

Java SDK

CreateVmInstanceAction action = new CreateVmInstanceAction();
action.name = "vm1";
action.l3NetworkUuids = asList("19d22d051b063d379a2816daaf431838");
action.clusterUuid = "a0468dc645223f67bd0f2ab95276bbae";
action.description = "this is a vm";
action.strategy = "InstantStart";
action.diskAOs = asList([boot:true, platform:Linux, guestOsType:Helix 8, architecture:x86_64, primaryStorageUuid:ff0359abb8443d2f8077cc368afa7c00, size:0, sourceType:VolumeVO, sourceUuid:ff0eb5a723e9316bb1053ed7e4bb3100, systemTags:[volumeProvisioningStrategy::ThickProvisioning], name:root-volume],[boot:false, primaryStorageUuid:ff0359abb8443d2f8077cc368afa7c00, size:0, name:data-volume]);
action.sessionId = "b86c9016b4f24953a9edefb53ca0678c";
CreateVmInstanceAction.Result res = action.call();

Python SDK

action = CreateVmInstanceAction()
action.name = "vm1"
action.l3NetworkUuids = [19d22d051b063d379a2816daaf431838]
action.clusterUuid = "a0468dc645223f67bd0f2ab95276bbae"
action.description = "this is a vm"
action.strategy = "InstantStart"
action.diskAOs = [[boot:true, platform:Linux, guestOsType:Helix 8, architecture:x86_64, primaryStorageUuid:ff0359abb8443d2f8077cc368afa7c00, size:0, sourceType:VolumeVO, sourceUuid:ff0eb5a723e9316bb1053ed7e4bb3100, systemTags:[volumeProvisioningStrategy::ThickProvisioning], name:root-volume], [boot:false, primaryStorageUuid:ff0359abb8443d2f8077cc368afa7c00, size:0, name:data-volume]]
action.sessionId = "b86c9016b4f24953a9edefb53ca0678c"
res = action.call()