CreateVmInstance
Create Virtual Machine Instance
API Request
URLs
POST zstack/v1/vm-instances
Headers
Authorization: OAuth the-session-uuid
Body
Note: In the preceding example, the
{
"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",
"volumeBackupTemplate": false
},
{
"boot": false,
"primaryStorageUuid": "ff0359abb8443d2f8077cc368afa7c00",
"size": 0,
"name": "data-volume",
"volumeBackupTemplate": false
}
],
"devices": {
"tpm": {
"enable": true,
"keyProviderUuid": "ff03c7091617357eb4022d11c6860e00",
"resourceKeyCreatedNew": false
}
}
},
"systemTags": [],
"userTags": []
}
Note: In the preceding example, the systemTags and userTags fields can be omitted. They are shown 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","volumeBackupTemplate":false},{"boot":false,"primaryStorageUuid":"ff0359abb8443d2f8077cc368afa7c00","size":0,"name":"data-volume","volumeBackupTemplate":false}],"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 the params structure) |
Virtual Machine name | 0.6 | |
| instanceOfferingUuid (Optional) | String | body (included in the params structure) |
Compute offering UUID Specifies the CPU, memory, and other parameters of the Virtual Machine. | 0.6 | |
| imageUuid (Optional) | String | body (included in the 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 the 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 the params structure) |
NIC information | 3.17.0 | |
| type (Optional) | String | body (included in the params structure) |
Virtual Machine type Reserved field, no need to specify. |
|
0.6 |
| rootDiskOfferingUuid (Optional) | String | body (included in the params structure) |
Root disk offering UUID. If imageUuid specifies an ISO image, this field must be specified to determine the size of the root disk to create. If the image type is not ISO, this field does not need to be specified. |
0.6 | |
| dataDiskSizes (Optional) | List | body (included in the 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. | 3.14.6 | |
| dataDiskOfferingUuids (Optional) | List | body (included in the 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 the 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 the params structure) |
Cluster UUID. If specified, the virtual machine is created in the specified cluster. This field has a higher priority than zoneUuid. |
0.6 | |
| hostUuid (Optional) | String | body (included in the params structure) |
Physical machine UUID. If specified, the virtual machine is created on the specified physical machine. This field has a higher priority than zoneUuid and clusterUuid. |
0.6 | |
| primaryStorageUuidForRootVolume (Optional) | String | body (included in the 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 the params structure) |
Virtual Machine description | 0.6 | |
| defaultL3NetworkUuid (Optional) | String | body (included in the params structure) |
Default distributed port group UUID. When multiple distributed port groups are specified in l3NetworkUuidsWhen multiple distributed port groups are specified, this field specifies the distributed port group that provides the default route. If it is not specified, l3NetworkUuids, the first network is selected as the default network. |
0.6 | |
| resourceUuid (Optional) | String | body (included in the params structure) |
Resource UUID If specified, the Virtual Machine uses this value as its UUID. | 0.6 | |
| tagUuids (Optional) | List | body (included in the params structure) |
Tag UUID list | 3.4 | |
| 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 the params structure) |
Virtual Machine creation policy Start immediately after creation Do not start after creation |
|
0.6 |
| rootVolumeSystemTags (Optional) | List | body (included in the params structure) |
System tags required for the Virtual Machine root disk | 3.0 | |
| dataVolumeSystemTags (Optional) | List | body (included in the params structure) |
System tags required for the Virtual Machine data disk | 3.0 | |
| cpuNum (Optional) | Integer | body (included in the params structure) |
Optional. The number of CPUs. | 3.4.0 | |
| memorySize (Optional) | Long | body (included in the params structure) |
Optional. The memory size. | 3.4.0 | |
| rootDiskSize (Optional) | Long | body (included in the params structure) |
Optional. The root disk size. | 3.4.0 | |
| dataVolumeSystemTagsOnIndex (Optional) | Map | body (included in the params structure) |
Optional. The data volume system tags on index. | 3.14.24 | |
| sshKeyPairUuids (Optional) | List | body (included in the params structure) |
Optional. The SSH key pair UUIDs. | 3.17.21 | |
| dataVolumeTemplateUuids (Optional) | List | body (included in the params structure) |
Optional. The data volume template UUIDs. | 3.17.0 | |
| diskAOs (Optional) | List | body (included in the 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 | 3.17.0 | |
| platform (Optional) | String | body (included in the params structure) |
Optional. The platform. | 3.17.0 | |
| guestOsType (Optional) | String | body (included in the params structure) |
Optional. The guest OS type. | 3.17.0 | |
| architecture (Optional) | String | body (included in the params structure) |
Optional. The architecture. | 3.17.21 | |
| reservedMemorySize (Optional) | Long | body (included in the params structure) |
Optional. The reserved memory size. | 3.17.21 | |
| virtio (Optional) | Boolean | body (included in the params structure) |
Optional. The virtio. | 3.17.0 | |
| allocatorStrategy (Optional) | String | body (included in the params structure) |
Virtual Machine allocation strategy | 4.10.10 | |
| vmEncryption (Optional) | Boolean | body (included in the params structure) |
Whether the virtual machine is encrypted | 5.1.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"
}
]
}
}
| Name | Type | Description | Starting Version |
|---|---|---|---|
| success | boolean | Whether the operation succeeded. | 0.6 |
| error | ErrorCode | Error code. If this field is not null, the operation failed. This field is null when the operation succeeds. For details, see error | 0.6 |
| inventory | VmInstanceInventory | For details, see inventory | 0.6 |
#error
| Name | Type | Description | Starting Version |
|---|---|---|---|
| code | String | Error code, which globally and uniquely identifies the error, for example, SYS.1000 or HOST.1001 | 0.6 |
| description | String | Summary description of the error | 0.6 |
| details | String | Details of the error | 0.6 |
| elaboration | String | Reserved field. The default value is null | 0.6 |
| opaque | LinkedHashMap | Reserved field. The default value is null | 0.6 |
| cause | ErrorCode | Root error that caused the current error. This field is null if there is no source error | 0.6 |
#inventory
| Name | Type | Description | Starting Version |
|---|---|---|---|
| uuid | String | Resource UUID, which uniquely identifies the resource | 0.6 |
| name | String | Resource name | 0.6 |
| description | String | Detailed resource description | 0.6 |
| zoneUuid | String | Data Center UUID | 0.6 |
| clusterUuid | String | Cluster UUID | 0.6 |
| imageUuid | String | Image UUID | 0.6 |
| hostUuid | String | Host UUID | 0.6 |
| lastHostUuid | String | Last Host UUID | 0.6 |
| instanceOfferingUuid | String | Instance Offering UUID | 0.6 |
| rootVolumeUuid | String | Root disk UUID | 0.6 |
| platform | String | Virtual Machine platform type, Windows / Linux / Other | 0.6 |
| architecture | String | Virtual Machine architecture, x86_64 / aarch64 / Other | 0.6 |
| defaultL3NetworkUuid | String | Default Distributed Port Group UUID | 0.6 |
| type | String | Virtual Machine type, User virtual machine or platform special purpose virtual machine | 0.6 |
| hypervisorType | String | Virtual Machine hypervisor type, typically KVM | 0.6 |
| memorySize | Long | Memory size | 0.6 |
| cpuNum | Integer | CPU number | 0.6 |
| cpuSpeed | Long | CPU speed | 0.6 |
| allocatorStrategy | String | Virtual Machine allocation strategy | 0.6 |
| createDate | Timestamp | Creation time | 0.6 |
| lastOpDate | Timestamp | Last modification time | 0.6 |
| state | String | Virtual Machine enabled state | 0.6 |
| guestOsType | String | Virtual Machine host operating system type | 3.11.2 |
| vmNics | List | For details, see vmNics | 0.6 |
| allVolumes | List | For details, see allVolumes | 0.6 |
| vmCdRoms | List | For details, see vmCdRoms | 0.6 |
#vmNics
| Name | Type | Description | Starting Version |
|---|---|---|---|
| uuid | String | Resource UUID, which uniquely identifies the resource | 3.17.13 |
| vmInstanceUuid | String | Virtual Machine UUID | 3.17.13 |
| l3NetworkUuid | String | Distributed Port Group UUID | 3.17.13 |
| ip | String | The IP address. | 3.17.13 |
| mac | String | The MAC address. | 3.17.13 |
| hypervisorType | String | The hypervisor type. | 3.17.13 |
| netmask | String | The netmask. | 3.17.13 |
| gateway | String | The gateway IP address. | 3.17.13 |
| metaData | String | The metadata. | 3.17.13 |
| ipVersion | Integer | The IP version. | 3.17.13 |
| driverType | String | The driver type. | 3.17.13 |
| internalName | String | The internal name. | 3.17.13 |
| deviceId | Integer | The device ID. | 3.17.13 |
| type | String | The resource type. | 3.17.13 |
| state | String | NIC Status | 3.17.13 |
| createDate | Timestamp | Creation time | 3.17.13 |
| lastOpDate | Timestamp | Last modification time | 3.17.13 |
| usedIps | List | For details, see usedIps | 3.17.13 |
#usedIps
| Name | Type | Description | Starting Version |
|---|---|---|---|
| uuid | String | Resource UUID, which uniquely identifies the resource | 4.10.0 |
| ipRangeUuid | String | IP Range UUID | 4.10.0 |
| l3NetworkUuid | String | Distributed Port Group UUID | 4.10.0 |
| ipVersion | Integer | IP protocol number | 4.10.0 |
| ip | String | IP address | 4.10.0 |
| netmask | String | Subnet mask | 4.10.0 |
| gateway | String | Gateway address | 4.10.0 |
| usedFor | String | Allocation reason | 4.10.0 |
| ipInLong | long | Long stored IP address, only valid for ipv4 | 4.10.0 |
| vmNicUuid | String | Virtual Machine NIC UUID | 4.10.0 |
| createDate | Timestamp | Creation time | 4.10.0 |
| lastOpDate | Timestamp | Last modification time | 4.10.0 |
#allVolumes
| Name | Type | Description | Starting Version |
|---|---|---|---|
| uuid | String | Resource UUID, which uniquely identifies the resource | 3.17.13 |
| name | String | Resource name | 3.17.13 |
| description | String | Detailed resource description | 3.17.13 |
| primaryStorageUuid | String | Data Storage UUID | 3.17.13 |
| vmInstanceUuid | String | Virtual Machine UUID | 3.17.13 |
| diskOfferingUuid | String | Disk Offering UUID | 3.17.13 |
| rootImageUuid | String | The root image UUID. | 3.17.13 |
| installPath | String | The installation path. | 3.17.13 |
| type | String | The resource type. | 3.17.13 |
| format | String | The format. | 3.17.13 |
| size | Long | The size. | 3.17.13 |
| actualSize | Long | The actual size. | 3.17.13 |
| deviceId | Integer | The device ID. | 3.17.13 |
| state | String | The resource state. | 3.17.13 |
| status | String | The resource status. | 3.17.13 |
| createDate | Timestamp | Creation time | 3.17.13 |
| lastOpDate | Timestamp | Last modification time | 3.17.13 |
| isShareable | Boolean | Whether the resource is shareable. | 3.17.13 |
| volumeQos | String | The volume QoS. | 3.17.13 |
| lastDetachDate | Timestamp | The last detach date. | 3.17.13 |
| lastVmInstanceUuid | String | The last VM instance UUID. | 3.17.13 |
| encrypted | Boolean | Whether the resource is encrypted. | 5.1.0 |
#vmCdRoms
| Name | Type | Description | Starting Version |
|---|---|---|---|
| uuid | String | Resource UUID, which uniquely identifies the resource | 3.17.13 |
| vmInstanceUuid | String | Virtual Machine UUID | 3.17.13 |
| deviceId | Integer | The device ID. | 3.17.13 |
| isoUuid | String | The ISO UUID. | 3.17.13 |
| isoInstallPath | String | The ISO install path. | 3.17.13 |
| name | String | Resource name | 3.17.13 |
| description | String | Detailed resource description | 3.17.13 |
| createDate | Timestamp | Creation time | 3.17.13 |
| lastOpDate | Timestamp | Last modification time | 3.17.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()
