虚拟机相关接口

克隆虚拟机

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

Headers

Authorization: OAuth the-session-uuid

Body

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

上述示例中systemTagsuserTags字段可以省略。列出是为了表示body中可以包含这两个字段。

Curl示例

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

参数列表

名字

类型

位置

描述

可选值

起始版本

vmInstanceUuid

String

url

虚拟机UUID

 

0.6

strategy (可选)

String

body(包含在cloneVmInstance结构中)

策略

  • CreateStopped

  • InstantStart

  • JustCreate

Note: JustCreate将仅创建虚拟机记录,不会进行任何初始化,且该虚拟机不会在UI展示。

0.6

names

List

body(包含在cloneVmInstance结构中)

虚拟机的名字清单

 

0.6

full (可选)

Boolean

body(包含在cloneVmInstance结构中

是否克隆已挂载数据盘

 

2.5.0

systemTags (可选)

List

body

系统标签

 

0.6

userTags (可选)

List

body

用户标签

 

0.6

primaryStorageUuidForRootVolume (可选)

String

body(包含在cloneVmInstance结构中)

 

 

4.6.21

primaryStorageUuidForDataVolume (可选)

String

body(包含在cloneVmInstance结构中)

 

 

4.6.21

rootVolumeSystemTags (可选)

List

body(包含在cloneVmInstance结构中)

 

 

4.6.21

dataVolumeSystemTags (可选)

List

body(包含在cloneVmInstance结构中)

 

 

4.6.21

clusterUuid (可选)

String

body(包含在cloneVmInstance结构中)

集群UUID

 

4.6.21

hostUuid (可选)

String

body(包含在cloneVmInstance结构中)

主机UUID

 

4.6.21

diskAOs (可选)

List

body(包含在cloneVmInstance结构中)

硬盘参数

 

4.10.10

description (可选)

String

body(包含在cloneVmInstance结构中)

资源的详细描述

 

4.10.10

vmNicParams (可选)

String

body(包含在cloneVmInstance结构中)

网卡参数

 

4.10.16

vmCustomSpecification (可选)

VmCustomSpecificationStruct

body(包含在cloneVmInstance结构中)

虚拟机自定义操作系统

 

4.10.18

resetTpm (可选)

Boolean

body(包含在cloneVmInstance结构中)

创建的虚拟机是否重置 TPM 状态

 

5.0.0

  • ZSvirt克隆虚拟机时支持支持亲和组功能,SystemTags增加affinityGroup选项。
    • 选项格式为:affinityGroupUuid::UUID
    • 例如:affinityGroupUuid::5fd71606d5af451d981413f35367a8d6
  • ZSvirt克隆虚拟机时支持指定硬盘置备方式,SystemTags增加volumeProvisioningStrategy选项,使用 rootVolumeSystemTags参数来传递 SystemTag。
    • 选项格式为:volumeProvisioningStrategy::ThinProvisioning, volumeProvisioningStrategy::ThickProvisioning
    • 例如:volumeProvisioningStrategy::ThinProvisioning, volumeProvisioningStrategy::ThickProvisioning

API返回

该API调用成功后,返回success为true。成功克隆的虚拟机数量由numberOfClonedVm返回。实际过程中,由于资源限制,可能存在部分成功、部分失败的情况。每台虚拟机的克隆失败原因存放在inventories里面的error字段。

返回示例

usterUuid": "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"
            }
          ]
        }
      }
    ]
  }
}
名字类型描述起始版本
successboolean 0.6
errorErrorCode错误码,若不为null,则表示操作失败, 操作成功时该字段为null。 详情参考error0.6
resultCloneVmInstanceResults详情参考result0.6

error

名字类型描述起始版本
codeString错误码号,错误的全局唯一标识,例如SYS.1000, HOST.10010.6
descriptionString错误的概要描述0.6
detailsString错误的详细信息0.6
elaborationString保留字段,默认为null0.6
opaqueLinkedHashMap保留字段,默认为null0.6
causeErrorCode根错误,引发当前错误的源错误,若无原错误,该字段为null0.6

result

名字类型描述起始版本
numberOfClonedVmint 0.6
inventoriesList详情参考inventories0.6

inventories

名字类型描述起始版本
errorErrorCode详情参考error0.6
inventoryVmInstanceInventory详情参考inventory0.6

error

名字类型描述起始版本
codeString错误码号,错误的全局唯一标识,例如SYS.1000, HOST.10010.6
descriptionString错误的概要描述0.6
detailsString错误的详细信息0.6
elaborationString保留字段,默认为null0.6
opaqueLinkedHashMap保留字段,默认为null0.6
causeErrorCode根错误,引发当前错误的源错误,若无原错误,该字段为null0.6

inventory

名字类型描述起始版本
uuidString资源的UUID,唯一标示该资源0.6
nameString资源名称0.6
descriptionString资源的详细描述0.6
zoneUuidString数据中心UUID0.6
clusterUuidString集群UUID0.6
imageUuidString镜像UUID0.6
hostUuidString主机UUID0.6
lastHostUuidString 0.6
instanceOfferingUuidString计算规格UUID0.6
rootVolumeUuidString根硬盘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
createDateTimestamp创建时间0.6
lastOpDateTimestamp最后一次修改时间0.6
stateString 0.6
guestOsTypeString 4.6.21
vmNicsList详情参考vmNics0.6
allVolumesList详情参考allVolumes0.6
vmCdRomsList详情参考vmCdRoms4.6.21

vmNics

名字类型描述起始版本
uuidString资源的UUID,唯一标示该资源0.6
vmInstanceUuidString虚拟机UUID0.6
l3NetworkUuidString分布式端口组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
stateString网卡状态4.6.21
createDateTimestamp创建时间0.6
lastOpDateTimestamp最后一次修改时间0.6
usedIpsList详情参考usedIps4.6.21

usedIps

名字类型描述起始版本
uuidString资源的UUID,唯一标示该资源4.10.0
ipRangeUuidStringIP段UUID4.10.0
l3NetworkUuidString分布式端口组UUID4.10.0
ipVersionIntegerIP协议号4.10.0
ipStringIP地址4.10.0
netmaskString子网掩码4.10.0
gatewayString网关地址4.10.0
usedForString分配原因4.10.0
ipInLonglongLong存储的IP地址,仅ipv4有效4.10.0
ipInBinarybyte[]二进制存储的IP地址(字节数组,IPv4长度4,IPv6长度16,网络序)4.10.16
vmNicUuidString虚拟机网卡UUID4.10.0
createDateTimestamp创建时间4.10.0
lastOpDateTimestamp最后一次修改时间4.10.0

allVolumes

名字类型描述起始版本
uuidString资源的UUID,唯一标示该资源0.6
nameString资源名称0.6
descriptionString资源的详细描述0.6
primaryStorageUuidString数据存储UUID0.6
vmInstanceUuidString虚拟机UUID0.6
diskOfferingUuidString硬盘规格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
createDateTimestamp创建时间0.6
lastOpDateTimestamp最后一次修改时间0.6
isShareableBoolean 0.6
volumeQosString 4.6.21
lastDetachDateTimestamp 4.6.21
lastVmInstanceUuidString 4.6.21

vmCdRoms

名字类型描述起始版本
uuidString资源的UUID,唯一标示该资源4.6.21
vmInstanceUuidString虚拟机UUID4.6.21
deviceIdInteger 4.6.21
isoUuidString 4.6.21
isoInstallPathString 4.6.21
nameString资源名称4.6.21
descriptionString资源的详细描述4.6.21
createDateTimestamp创建时间4.6.21
lastOpDateTimestamp最后一次修改时间4.6.21

SDK示例

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()