VM Related Interfaces

Create VM Instance

POST/zstack/v1/vm-instances

Create a new VM instance.

Headers

Authorization: OAuth the-session-uuid

Body

{
  "params": {
    "name": "vm1",
    "instanceOfferingUuid": "ae97ced44efc3314b8f7798972b4ba1a",
    "imageUuid": "da119f7906513eccabf271991c35a65e",
    "l3NetworkUuids": [
      "cc0e4c5e77df3af68e59668e7f9e06c5"
    ],
    "dataDiskOfferingUuids": [
      "19d22d051b063d379a2816daaf431838",
      "905d94a6abb5398fa1995f6398e3f6fc"
    ],
    "clusterUuid": "a0468dc645223f67bd0f2ab95276bbae",
    "description": "this is a vm",
    "strategy": "InstantStart",
    "rootVolumeSystemTags": [
      "volumeProvisioningStrategy::ThickProvisioning"
    ]
  },
  "systemTags": [],
  "userTags": []
}

In the above example, 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","instanceOfferingUuid":"ae97ced44efc3314b8f7798972b4ba1a","imageUuid":"da119f7906513eccabf271991c35a65e","l3NetworkUuids":["cc0e4c5e77df3af68e59668e7f9e06c5"],"dataDiskOfferingUuids":["19d22d051b063d379a2816daaf431838","905d94a6abb5398fa1995f6398e3f6fc"],"clusterUuid":"a0468dc645223f67bd0f2ab95276bbae","description":"this is a vm","strategy":"InstantStart","rootVolumeSystemTags":["volumeProvisioningStrategy::ThickProvisioning"]}}'
http://localhost:8080/zstack/v1/vm-instances

Parameter List

Name

Type

Location

Description

Allowed Values

Starting Version

name

String

body (contained in params structure)

VM name

 

0.6

instanceOfferingUuid (Optional)

String

body (contained in params structure)

Instance offering UUID- Specifies the CPU, memory and other parameters of the VM.

 

0.6

imageUuid (Optional)

String

body (contained in params structure)

Image UUID- The root volume of the VM will be created from the image specified by this field.

 

0.6

l3NetworkUuids (Optional)

List

body (contained in params structure)

L3 network UUID list- You can specify one or more L3 networks. The VM will create a NIC on each L3 network.

 

0.6

vmNicParams (Optional)

String

body (contained in params structure)

NIC information

 

4.7.0

type (Optional)

String

body (contained in params structure)

VM type- Reserved field, no need to specify.

  • UserVm
  • ApplianceVm

0.6

rootDiskOfferingUuid (Optional)

String

body (contained in params structure)

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

  • If the image type is not ISO, this field is not needed.

 

0.6

dataDiskSizes (Optional)

List

body (contained in params structure)

Custom disk size list. You can specify one or more disk sizes to create one or more data disks for the VM.

 

4.4.6

dataDiskOfferingUuids (Optional)

List

body (contained in params structure)

Disk offering UUID list- You can specify one or more disk offering UUIDs (UUIDs can be duplicated) to create one or more data disks for the VM.

 

0.6

zoneUuid (Optional)

String

body (contained in params structure)

Data Center UUID- If specified, the VM will be created in the specified Data Center.

 

0.6

clusterUuid (Optional)

String

body (contained in params structure)

Cluster UUID- If specified, the VM will be created in the specified cluster. This field has higher priority than zoneUuid.

 

0.6

hostUuid (Optional)

String

body (contained in params structure)

Host UUID- If specified, the VM will be created on the specified host. This field has higher priority than zoneUuid and clusterUuid.

 

0.6

primaryStorageUuidForRootVolume (Optional)

String

body (contained in params structure)

Primary Storage UUID- If specified, the root volume of the VM will be created on the specified primary storage.

 

1.8

description (Optional)

String

body (contained in params structure)

Detailed description of the VM

 

0.6

defaultL3NetworkUuid (Optional)

String

body (contained in params structure)

Default L3 network UUID- When l3NetworkUuids specifies multiple L3 networks, this field specifies the L3 network 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 (contained in params structure)

Resource UUID- If specified, the VM will use this field value as its UUID.

 

0.6

tagUuids (Optional)

List

body (contained in params structure)

Tag UUID list

 

3.4.0

systemTags (Optional)

List

body

VM system tags

 

0.6

userTags (Optional)

List

body

VM user tags

 

0.6

strategy (Optional)

String

body (contained in params structure)

VM creation strategy- Start immediately after creation

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

0.6

rootVolumeSystemTags (Optional)

List

body (contained in params structure)

System tags required for VM root volume

 

3.0

dataVolumeSystemTags (Optional)

List

body (contained in params structure)

System tags required for VM data volume

 

3.0

cpuNum (Optional)

Integer

body (contained in params structure)

 

 

3.4.0

memorySize (Optional)

Long

body (contained in params structure)

 

 

3.4.0

rootDiskSize (Optional)

Long

body (contained in params structure)

 

 

3.4.0

dataVolumeSystemTagsOnIndex (Optional)

Map

body (contained in params structure)

 

 

4.4.24

sshKeyPairUuids (Optional)

List

body (contained in params structure)

 

 

4.7.21

dataVolumeTemplateUuids (Optional)

List

body (contained in params structure)

 

 

4.7.0

diskAOs (Optional)

List

body (contained in params structure)

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

 

4.7.0

platform

String

body (contained in params structure)

 

 

4.7.0

guestOsType

String

body (contained in params structure)

 

 

4.7.0

architecture

String

body (contained in params structure)

 

 

4.7.21

reservedMemorySize (Optional)

Long

body (contained in params structure)

 

 

4.7.21

virtio (Optional)

Boolean

body (contained 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. This field is null when the operation succeeds. See error0.6
inventoryVmInstanceInventorySee inventory0.6

error

NameTypeDescriptionStarting Version
codeStringError code number, a 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 cause. The source error that triggered the current error. This field is null if there is no original error0.6

inventory

NameTypeDescriptionStarting Version
uuidStringResource UUID, uniquely identifies the resource0.6
nameStringResource name0.6
descriptionStringDetailed description of the resource0.6
zoneUuidStringData Center UUID0.6
clusterUuidStringCluster UUID0.6
imageUuidStringImage UUID0.6
hostUuidStringHost UUID0.6
lastHostUuidStringLast host UUID that ran the VM0.6
instanceOfferingUuidStringInstance offering UUID0.6
rootVolumeUuidStringRoot volume UUID0.6
platformStringVM platform0.6
architectureString 0.6
defaultL3NetworkUuidStringDefault L3 network UUID0.6
typeStringVM type0.6
hypervisorTypeStringVM hypervisor type0.6
memorySizeLongMemory size0.6
cpuNumIntegerCPU number0.6
cpuSpeedLongCPU speed0.6
allocatorStrategyStringAllocation strategy0.6
createDateTimestampCreation time0.6
lastOpDateTimestampLast modification time0.6
stateStringVM state0.6
guestOsTypeString 4.1.2
vmNicsListSee vmNics0.6
allVolumesListSee allVolumes0.6
vmCdRomsListSee vmCdRoms0.6

vmNics

NameTypeDescriptionStarting Version
uuidStringResource UUID, uniquely identifies the resource4.7.13
vmInstanceUuidStringVM UUID4.7.13
l3NetworkUuidStringL3 network 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 state4.7.13
createDateTimestampCreation time4.7.13
lastOpDateTimestampLast modification time4.7.13
usedIpsListSee usedIps4.7.13

usedIps

NameTypeDescriptionStarting Version
uuidStringResource UUID, uniquely identifies the resource4.7.13
ipRangeUuidStringIP range UUID4.7.13
l3NetworkUuidStringL3 network 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
vmNicUuidStringVM NIC UUID4.7.13
createDateTimestampCreation time4.7.13
lastOpDateTimestampLast modification time4.7.13

allVolumes

NameTypeDescriptionStarting Version
uuidStringResource UUID, uniquely identifies the resource4.7.13
nameStringResource name4.7.13
descriptionStringDetailed description of the resource4.7.13
primaryStorageUuidStringPrimary Storage UUID4.7.13
vmInstanceUuidStringVM 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
createDateTimestampCreation 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
vmInstanceUuidStringVM UUID4.7.13
deviceIdInteger 4.7.13
isoUuidString 4.7.13
isoInstallPathString 4.7.13
nameStringResource name4.7.13
descriptionStringDetailed description of the resource4.7.13
createDateTimestampCreation 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()