Document navigation

CreateVmInstance

Create Virtual Machine Instance

API Request

URLs
POST zstack/v1/vm-instances
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",
        "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.
  • UserVm
  • ApplianceVm
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
  • InstantStart
  • JustCreate
  • CreateStopped
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()
API Reference | ZStack ZSphere · ZVF | ZStack Resource Center