VM Related Interfaces

Clone VM Instance

PUT/zstack/v1/vm-instances/{vmInstanceUuid}/actions

Headers

Authorization: OAuth the-session-uuid

Body

{
  "cloneVmInstance": {
    "strategy": "InstantStart",
    "names": [
      "vm1",
      "vm2"
    ],
    "full": false
  },
  "systemTags": [],
  "userTags": []
}

In the example above, the systemTags and userTags fields are optional. 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 PUT -d '{"cloneVmInstance":{"strategy":"InstantStart","names":["vm1","vm2"],"full":false}}' \
http://localhost:8080/zstack/v1/vm-instances/c4d628c203433f64b062ad07c8edf10d/actions

Parameter List

Name

Type

Location

Description

Allowed Values

Starting Version

vmInstanceUuid

String

url

VM instance UUID

 

0.6

strategy (Optional)

String

body(contained in thecloneVmInstancestructure)

Strategy

  • CreateStopped

  • InstantStart

  • JustCreate

Note: JustCreate will only create a VM record without performing any initialization, and the VM will not be displayed in the UI.

0.6

names

List

body(contained in thecloneVmInstancestructure)

List of VM instance names

 

0.6

full (Optional)

Boolean

body(contained in thecloneVmInstancestructure

Whether to clone mounted data volumes

 

2.5.0

systemTags (Optional)

List

body

System tags

 

0.6

userTags (Optional)

List

body

User tags

 

0.6

primaryStorageUuidForRootVolume (Optional)

String

body(contained in thecloneVmInstancestructure)

 

 

4.6.21

primaryStorageUuidForDataVolume (Optional)

String

body(contained in thecloneVmInstancestructure)

 

 

4.6.21

rootVolumeSystemTags (Optional)

List

body(contained in thecloneVmInstancestructure)

 

 

4.6.21

dataVolumeSystemTags (Optional)

List

body(contained in thecloneVmInstancestructure)

 

 

4.6.21

clusterUuid (Optional)

String

body(contained in thecloneVmInstancestructure)

Cluster UUID

 

4.6.21

hostUuid (Optional)

String

body(contained in thecloneVmInstancestructure)

Host UUID

 

4.6.21

diskAOs (Optional)

List

body(contained in thecloneVmInstancestructure)

Disk parameters

 

4.10.10

description (Optional)

String

body(contained in thecloneVmInstancestructure)

Detailed description of the resource

 

4.10.10

vmNicParams (Optional)

String

body(contained in thecloneVmInstancestructure)

NIC parameters

 

4.10.16

vmCustomSpecification (Optional)

VmCustomSpecificationStruct

body(contained in thecloneVmInstancestructure)

VM customization operating system

 

4.10.18

resetTpm (Optional)

Boolean

body(contained in thecloneVmInstancestructure)

Whether to reset the TPM state of the created VM

 

5.0.0

  • ZSvirt Cloning VMs supports affinity group functionality. SystemTagsaddsaffinityGroupoption.
    • Option format: affinityGroupUuid::UUID
    • Example: affinityGroupUuid::5fd71606d5af451d981413f35367a8d6
  • ZSvirt Cloning VMs supports specifying disk provisioning methods. SystemTagsaddsvolumeProvisioningStrategyoption, using rootVolumeSystemTagsparameter to pass the SystemTag.
    • Option format: volumeProvisioningStrategy::ThinProvisioning, volumeProvisioningStrategy::ThickProvisioning
    • Example: volumeProvisioningStrategy::ThinProvisioning, volumeProvisioningStrategy::ThickProvisioning

API Response

When this API call succeeds, it returns success astrue. The number of successfully cloned VMs is returned bynumberOfClonedVm. In actual practice, due to resource constraints, some may succeed and others may fail. The clone failure reason for each VM is stored in theerrorfield insideinventories.

Response Example

{
  "result": {
    "numberOfClonedVm": 1,
    "inventories": [
      {
        "inventory": {
          "uuid": "327b60d6b8cd31489ade6f4830bcec16",
          "name": "new vm name",
          "description": "web server VM",
          "zoneUuid": "d886a09330e13282b7a320a98d0a53ec",
          "clusterUuid": "f6f07dff7ede3b8cac7c8595a1698832",
          "imageUuid": "3b7ff22eb60d38318835817ba6a2b6a2",
          "hostUuid": "70c0f5223d083dfea2f1a02f69906306",
          "lastHostUuid": "123f7f85f82f3e99940836d97ae18e04",
          "instanceOfferingUuid": "001537d10c433857a7a98ae0a362c910",
          "rootVolumeUuid": "c8be7ec6a8573d98a580b457a7245141",
          "platform": "Linux",
          "defaultL3NetworkUuid": "2ac50b85591b3e87b2686c529cf062f9",
          "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",
          "allVolumes": [
            {
              "uuid": "c8be7ec6a8573d98a580b457a7245141",
              "name": "Root-Volume-For-VM-327b60d6b8cd31489ade6f4830bcec16",
              "primaryStorageUuid": "c2a27c5268493a5cba84b94e37b86b4d",
              "vmInstanceUuid": "327b60d6b8cd31489ade6f4830bcec16",
              "diskOfferingUuid": "358e00e7245a39b9aa1c1849d6ba9701",
              "rootImageUuid": "3b7ff22eb60d38318835817ba6a2b6a2",
              "installPath": "/zstack_ps/rootVolumes/acct-36c27e8ff05c4780bf6d2fa65700f22e/vol-c8be7ec6a8573d98a580b457a7245141/c8be7ec6a8573d98a580b457a7245141.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. For details, seeerror0.6
resultCloneVmInstanceResultsFor details, seeresult0.6

error

NameTypeDescriptionStarting Version
codeStringError code number. A globally unique identifier for the error, e.g., SYS.1000, HOST.1001.0.6
descriptionStringBrief description of the error0.6
detailsStringDetailed error information0.6
elaborationStringReserved field. Defaults to null.0.6
opaqueLinkedHashMapReserved field. Defaults to null.0.6
causeErrorCodeRoot error. The source error that caused the current error. This field is null if there is no root cause.0.6

result

NameTypeDescriptionStarting Version
numberOfClonedVmint 0.6
inventoriesListFor details, seeinventories0.6

inventories

NameTypeDescriptionStarting Version
errorErrorCodeFor details, seeerror0.6
inventoryVmInstanceInventoryFor details, seeinventory0.6

error

NameTypeDescriptionStarting Version
codeStringError code number. A globally unique identifier for the error, e.g., SYS.1000, HOST.1001.0.6
descriptionStringBrief description of the error0.6
detailsStringDetailed error information0.6
elaborationStringReserved field. Defaults to null.0.6
opaqueLinkedHashMapReserved field. Defaults to null.0.6
causeErrorCodeRoot error. The source error that caused the current error. This field is null if there is no root cause.0.6

inventory

NameTypeDescriptionStarting Version
uuidStringUUID of the resource. Uniquely identifies the resource.0.6
nameStringResource name0.6
descriptionStringDetailed description of the resource0.6
zoneUuidStringData Center UUID0.6
clusterUuidStringCluster UUID0.6
imageUuidStringImage UUID0.6
hostUuidStringHost UUID0.6
lastHostUuidString 0.6
instanceOfferingUuidStringInstance offering UUID0.6
rootVolumeUuidStringRoot disk UUID0.6
platformString 0.6
architectureString 4.6.21
defaultL3NetworkUuidString 0.6
typeString 0.6
hypervisorTypeString 0.6
memorySizeLong 0.6
cpuNumInteger 0.6
cpuSpeedLong 0.6
allocatorStrategyString 0.6
createDateTimestampCreation time0.6
lastOpDateTimestampLast modification time0.6
stateString 0.6
guestOsTypeString 4.6.21
vmNicsListFor details, seevmNics0.6
allVolumesListFor details, seeallVolumes0.6
vmCdRomsListFor details, seevmCdRoms4.6.21

vmNics

NameTypeDescriptionStarting Version
uuidStringUUID of the resource. Uniquely identifies the resource.0.6
vmInstanceUuidStringVM instance UUID0.6
l3NetworkUuidStringDistributed Port Group UUID0.6
ipString 0.6
macString 0.6
hypervisorTypeString 4.6.21
netmaskString 0.6
gatewayString 0.6
metaDataString 0.6
ipVersionInteger 4.6.21
driverTypeString 4.6.21
internalNameString 4.6.21
deviceIdInteger 0.6
typeString 4.6.21
stateStringNIC Status4.6.21
createDateTimestampCreation time0.6
lastOpDateTimestampLast modification time0.6
usedIpsListFor details, seeusedIps4.6.21

usedIps

NameTypeDescriptionStarting Version
uuidStringUUID of the resource. Uniquely identifies the resource.4.10.0
ipRangeUuidStringIP Range UUID4.10.0
l3NetworkUuidStringDistributed Port Group UUID4.10.0
ipVersionIntegerIP version4.10.0
ipStringIP address4.10.0
netmaskStringNetmask4.10.0
gatewayStringGateway4.10.0
usedForStringAllocation reason4.10.0
ipInLonglongIP address stored in Long format, valid only for IPv44.10.0
ipInBinarybyte[]IP address stored in binary format (byte array, IPv4 length 4, IPv6 length 16, network byte order)4.10.16
vmNicUuidStringVirtual Machine NIC UUID4.10.0
createDateTimestampCreation time4.10.0
lastOpDateTimestampLast modification time4.10.0

allVolumes

NameTypeDescriptionStarting Version
uuidStringUUID of the resource. Uniquely identifies the resource.0.6
nameStringResource name0.6
descriptionStringDetailed description of the resource0.6
primaryStorageUuidStringData Storage UUID0.6
vmInstanceUuidStringVM instance UUID0.6
diskOfferingUuidStringDisk offering UUID0.6
rootImageUuidString 0.6
installPathString 0.6
typeString 0.6
formatString 0.6
sizeLong 0.6
actualSizeLong 0.6
deviceIdInteger 0.6
stateString 0.6
statusString 0.6
createDateTimestampCreation time0.6
lastOpDateTimestampLast modification time0.6
isShareableBoolean 0.6
volumeQosString 4.6.21
lastDetachDateTimestamp 4.6.21
lastVmInstanceUuidString 4.6.21

vmCdRoms

NameTypeDescriptionStarting Version
uuidStringUUID of the resource. Uniquely identifies the resource.4.6.21
vmInstanceUuidStringVM instance UUID4.6.21
deviceIdInteger 4.6.21
isoUuidString 4.6.21
isoInstallPathString 4.6.21
nameStringResource name4.6.21
descriptionStringDetailed description of the resource4.6.21
createDateTimestampCreation time4.6.21
lastOpDateTimestampLast modification time4.6.21

SDK Examples

Java SDK

CloneVmInstanceAction action = new CloneVmInstanceAction();
action.vmInstanceUuid = "c4d628c203433f64b062ad07c8edf10d";
action.strategy = "InstantStart";
action.names = asList("vm1","vm2");
action.full = false;
action.sessionId = "b86c9016b4f24953a9edefb53ca0678c";
CloneVmInstanceAction.Result res = action.call();

Python SDK

action = CloneVmInstanceAction()
action.vmInstanceUuid = "c4d628c203433f64b062ad07c8edf10d"
action.strategy = "InstantStart"
action.names = [vm1, vm2]
action.full = false
action.sessionId = "b86c9016b4f24953a9edefb53ca0678c"
res = action.call()