创建云主机(CreateVmInstance)
创建一个新的云主机。
API请求
URLs
POST zstack/v1/vm-instancesHeaders
Authorization: OAuth the-session-uuidBody
{
"params": {
"name": "vm1",
"instanceOfferingUuid": "ae97ced44efc3314b8f7798972b4ba1a",
"imageUuid": "da119f7906513eccabf271991c35a65e",
"l3NetworkUuids": [
"cc0e4c5e77df3af68e59668e7f9e06c5"
],
"dataDiskOfferingUuids": [
"19d22d051b063d379a2816daaf431838",
"905d94a6abb5398fa1995f6398e3f6fc"
],
"clusterUuid": "a0468dc645223f67bd0f2ab95276bbae",
"description": "this is a vm",
"strategy": "InstantStart"
},
"systemTags": [],
"userTags": []
}Note: 上述示例中systemTags、userTags字段可以省略。列出是为了表示body中可以包含这两个字段。
Curl示例
curl -H "Content-Type: application/json" \
-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"}}' \
http://localhost:8080/zstack/v1/vm-instances参数列表
| 名字 | 类型 | 位置 | 描述 | 可选值 | 起始版本 |
|---|---|---|---|---|---|
| name | String | body(包含在params结构中) | 云主机名称 | 0.6 | |
| instanceOfferingUuid | String | body(包含在params结构中) | 计算规格UUID
|
0.6 | |
| imageUuid | String | body(包含在params结构中) | 镜像UUID
|
0.6 | |
| l3NetworkUuids | List | body(包含在params结构中) | 三层网络UUID列表
|
0.6 | |
| type (可选) | String | body(包含在params结构中) | 云主机类型
|
|
0.6 |
| rootDiskOfferingUuid (可选) | String | body(包含在params结构中) | 根云盘规格UUID
|
0.6 | |
| dataDiskOfferingUuids (可选) | List | body(包含在params结构中) | 云盘规格UUID列表
|
0.6 | |
| zoneUuid (可选) | String | body(包含在params结构中) | 区域UUID
|
0.6 | |
| clusterUuid (可选) | String | body(包含在params结构中) | 集群UUID
|
0.6 | |
| hostUuid (可选) | String | body(包含在params结构中) | 物理机UUID
|
0.6 | |
| primaryStorageUuidForRootVolume (可选) | String | body(包含在params结构中) | 主存储UUID
|
1.8 | |
| description (可选) | String | body(包含在params结构中) | 云主机的详细描述 | 0.6 | |
| defaultL3NetworkUuid (可选) | String | body(包含在params结构中) | 默认三层网络UUID
|
0.6 | |
| resourceUuid (可选) | String | body(包含在params结构中) | 资源UUID
|
0.6 | |
| tagUuids (可选) | List | body(包含在params结构中) | 标签UUID列表 | 3.4.0 | |
| systemTags (可选) | List | body | 云主机系统标签 | 0.6 | |
| userTags (可选) | List | body | 云主机用户标签 | 0.6 | |
| strategy (可选) | String | body(包含在params结构中) | 云主机创建策略
|
0.6 |
Note:
- ZStack创建云主机时支持亲和组功能,SystemTags增加affinityGroup选项。
- 选项格式为:
affinityGroupUuid::UUID - 例如:
affinityGroupUuid::5fd71606d5af451d981413f35367a8d6
- 选项格式为:
- ZStack创建云主机时支持指定PCI设备,SystemTags增加PCI设备选项。
- 选项格式为:
pciDevice::UUID - 例如:
pciDevice::634b48a7bca139d9944a0f95b0c2dddf
- 选项格式为:
- ZStack创建云主机时支持CPU绑定功能,SystemTags增加vmCpuPinning选项。
- 选项格式为:
vmCpuPinning::绑定策略 - 例如:
vmCpuPinning::1:3;1-3:4-7,^6 - 仅admin支持更新、创建、删除该SystemTag。克隆云主机时,同时会克隆此SystemTag
- 选项格式为:
- ZStack创建云主机时支持userdata功能,SystemTags增加userdata选项。
- 选项格式为:
userdata::脚本的base64编码 - 例如:
userdata::I2Nsb3VkLWNvbmZpZwp1c2VyczoKIC0gbmFtZTogdGVzdAogICBzaGVsbDogL2Jpbi9iYXNoCiAgIGdyb3VwczogdXNlcnMKICAgc3VkbzogWydBTEw9KEFMTCkgTk9QQVNTV0Q6QUxMJ10KICAgc3NoLWF1dGhvcml6ZWQta2V5czoKICAgICAgIC0gc3NoLXJzYSBBQUFBQjNOemFDMUxYQ0pmanJvRDFsVCByb290QDEwLTAtMC0xOApib290Y21kOgogLSBta2RpciAvdG1wL3RlbXAgCndyaXRlX2ZpbGVzOgogLSBwYXRoOiAvdG1wL1pTdGFja19jb25maWcKICAgY29udGVudDogfAogICAgICAgSGVsbG8sd29ybGQhCiAgIHBlcm1pc3Npb25zOiAnMDc1NScKaG9zdG5hbWU6IFBlcmYtdGVzdApkaXNhYmxlX3Jvb3Q6IGZhbHNlCnNzaF9wd2F1dGg6IHllcwpjaHBhc3N3ZDoKICBsaXN0OiB8CiAgICAgIHJvb3Q6d29yZAogIGV4cGlyZTogRmFsc2UKcnVuY21kOgogLSBlY2hvIGxzIC1sIC8gPi9yb290L2xpc3Quc2g=
- 选项格式为:
- ZStack创建云主机时支持指定sshkey功能,SystemTags增加sshkey选项。
- 选项格式为:
sshkey::公钥内容 - 例如:
sshkey::ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDPAGDmLG2yW1fGQsek4PdBL6wiVMHuLrl566ITPAf8A2Oi5BaExoUwdPjA96OaUSrtlsKlrXUMGEJwN1r1TrL9JdUMg7jww3QysGuS3P+bRsBe1TSGHS8LNc9JY9HpoL4ZN/j0zTaZfju9eDzbVsbDrF91x3yDeeGH6IG6gWJn96HPfrlg7REfo04eBdflsTaaFC0lAXoBOrnGVnzRdQfwTNRGmMAyFzCV83HOhVzBJuL5VqtAT8a0lSC4QgZTNROh6zbkTUUYYQu0QS65EaJCTyAhksuidRzyjLX3p3oMileKdJNugRa5IDHhGJXExIK+58Nvaqfj/03yN8IfO7sj root@hpe-77
- 选项格式为:
- ZStack创建云主机时支持指定云主机高可用功能,SystemTags增加ha选项。
- 选项格式为:
ha::NeverStop - 例如:
ha::NeverStop
- 选项格式为:
- ZStack创建云主机时支持指定云主机控制台模式,SystemTags增加vmConsoleMode选项。
- 选项格式为:
vmConsoleMode::控制台模式 - 例如:
vmConsoleMode::spice或者vmConsoleMode::vnc
- 选项格式为:
- ZStack创建云主机时支持指定云主机USB重定向功能,SystemTags增加usbRedirect选项。
- 选项格式为:
usbRedirect::true - 例如:
usbRedirect::true
- 选项格式为:
- ZStack创建云主机时支持指定云主机控制台密码,SystemTags增加consolePassword选项。
- 选项格式为:
consolePassword::控制台密码 - 例如:
consolePassword::123456
- 选项格式为:
- ZStack创建云主机时支持指定L3的IP,SystemTags增加staticIp选项。
- 选项格式为:
staticIp::三层网络UUID::指定的IP - 例如:
staticIp::81a21a81cde84c1084c191354053a3b5::172.20.196.0
- 选项格式为:
- ZStack创建云主机时支持指定对应L3的网卡MAC地址,SystemTags增加customMac选项。
- 选项格式为:
customMac::三层网络UUID::指定的MAC地址 - 例如:
customMac::81a21a81cde84c1084c191354053a3b5::fa:00:37:ee:9f:00
- 选项格式为:
- ZStack创建云主机时支持指定云盘置备方式,SystemTags增加volumeProvisioningStrategy选项,使用
rootVolumeSystemTags参数来传递 SystemTag。
- 选项格式为:
volumeProvisioningStrategy::ThinProvisioning, volumeProvisioningStrategy::ThickProvisioning - 例如:
volumeProvisioningStrategy::ThinProvisioning, volumeProvisioningStrategy::ThickProvisioning
- 选项格式为:
- ZStack创建云主机时支持指定根云盘所在的Ceph存储池,SystemTags增加rootPoolName选项,使用
rootPoolName参数来传递 SystemTag。
- 选项格式为:
ceph::rootPoolName::xxx, 其中xxx代表池名称 - 例如:
ceph::rootPoolName::pri-v-r-26e11ca6814d4e1ba504d845f7848db3
- 选项格式为:
- ZStack创建云主机时支持指定云主机的主板类型,SystemTags增加vmMachineType选项,使用
vmMachineType参数来传递 SystemTag。
- 选项格式为:
vmMachineType::xx, 其中xx代表pc或q35 - 例如:
vmMachineType::pc
- 选项格式为:
- ZStack创建云主机时支持指定cdrom列表,SystemTags增加cdroms选项,使用
cdroms参数来传递 SystemTag。
- 选项格式为:
cdroms::${cdrom-1 config}::${cdrom-2 config}::${cdrom-3 config},cdrom config有三种可选择值: iso uuid(cdrom想要加载的iso uuid),empty(不选择任何iso),none(不配置光驱)。 - 例如:
- 创建一个空的
cdrom: cdroms::empty::none::none - 创建三个空的
cdrom: cdroms::empty::empty::empty - 创建3个挂载了iso的
cdrom:cdroms::iso_1_uuid::iso_2_uuid::iso_3_uuid
- 创建一个空的
- 选项格式为:
- ZStack创建云主机时支持不创建任何cdrom,SystemTags增加createWithoutCdRom选项,使用
createWithoutCdRom参数来传递 SystemTag。
- 选项格式为:
createWithoutCdRom::true - 例如:
createWithoutCdRom::true
- 选项格式为:
- ZStack创建云主机时支持指定MDEV设备,SystemTags增加mdevDevice选项。
- 选项格式为:
mdevDevice::MDEV_DEV_UUID - 例如:
mdevDevice::e2af8f869eff49d2a3d6f86cadc27090
- 选项格式为:
- ZStack创建云主机时支持配置是否关机自动卸载从设备规格分配的物理PCI设备,对已有云主机,也可以删除或更改其配置。SystemTags增加autoReleaseSpecReleatedPhysicalPciDevice选项。
- 选项格式为:
autoReleaseSpecReleatedPhysicalPciDevice - 例如:
autoReleaseSpecReleatedPhysicalPciDevice
- 选项格式为:
- ZStack创建云主机时支持配置是否关机自动卸载从设备规格分配的虚拟PCI设备,对已有云主机,也可以删除或更改其配置。SystemTags增加autoReleaseSpecReleatedVirtualPciDevice选项。
- 选项格式为:
autoReleaseSpecReleatedVirtualPciDevice - 例如:
autoReleaseSpecReleatedVirtualPciDevice
- 选项格式为:
- ZStack创建云主机时支持指定MDEV设备规格,同时指定从该规格中分配的设备数量。SystemTags增加mdevDeviceSpec选项。
- 选项格式为:
mdevDeviceSpec::MDEV_SPEC_UUID::MDEV_DEV_NUM - 例如:
mdevDeviceSpec::e2af8f869eff49d2a3d6f86cadc27090::4
- 选项格式为:
- ZStack创建云主机时支持指定PCI设备规格,同时指定从该规格中分配的设备数量。SystemTags增加pciDeviceSpec选项。
- 选项格式为:
pciDeviceSpec::PCI_SPEC_UUID::PCI_DEV_NUM - 例如:
pciDeviceSpec::e2af8f869eff49d2a3d6f86cadc27090::4
- 选项格式为:
- ZStack创建云主机时支持指定资源优先级,SystemTags增加vmPriority选项。
- 选项格式为:
vmPriority::PRIORITY_LEVEL,其中PRIORITY_LEVEL可以为Normal/High - 例如:
vmPriority::Normal
- 选项格式为:
- ZStack创建云主机时支持记录云主机内安装的GuestTools版本,与物理机GuestTools
ISO版本对比,决定是否需要升级,SystemTags增加GuestTools选项。
- 选项格式为:
GuestTools::TOOLS_VERSION,其中TOOLS_VERSION初值为1.0.0,未来随着工具版本的提升,这个值会随之变化。 - 例如:
GuestTools::1.0.0 - 补充说明:使用镜像创建云主机时,如果该镜像带有GuestTools标签,则从镜像拷贝GuestTools标签值到新云主机。
- 选项格式为:
API返回
返回示例
{
"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": 8.589934592E9,
"cpuNum": 1.0,
"allocatorStrategy": "LastHostPreferredAllocatorStrategy",
"createDate": "Nov 14, 2017 10:20:57 PM",
"lastOpDate": "Nov 14, 2017 10: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",
"netmask": "255.255.255.0",
"gateway": "192.168.1.1",
"deviceId": 0.0,
"createDate": "Nov 14, 2017 10:20:57 PM",
"lastOpDate": "Nov 14, 2017 10: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": 1.073741824E11,
"actualSize": 2.147483648E10,
"deviceId": 0.0,
"state": "Enabled",
"status": "Ready",
"createDate": "Nov 14, 2017 10:20:57 PM",
"lastOpDate": "Nov 14, 2017 10:20:57 PM"
}
]
}
}| 名字 | 类型 | 描述 | 起始版本 |
|---|---|---|---|
| error | ErrorCode | 错误码,若不为null,则表示操作失败, 操作成功时该字段为null。 详情参考error | 0.6 |
| inventory | VmInstanceInventory | 详情参考inventory | 0.6 |
#error
| 名字 | 类型 | 描述 | 起始版本 |
|---|---|---|---|
| code | String | 错误码号,错误的全局唯一标识,例如SYS.1000, HOST.1001 | 0.6 |
| description | String | 错误的概要描述 | 0.6 |
| details | String | 错误的详细信息 | 0.6 |
| elaboration | String | 保留字段,默认为null | 0.6 |
| opaque | LinkedHashMap | 保留字段,默认为null | 0.6 |
| cause | ErrorCode | 根错误,引发当前错误的源错误,若无原错误,该字段为null | 0.6 |
#inventory
| 名字 | 类型 | 描述 | 起始版本 |
|---|---|---|---|
| uuid | String | 资源的UUID,唯一标示该资源 | 0.6 |
| name | String | 资源名称 | 0.6 |
| description | String | 资源的详细描述 | 0.6 |
| zoneUuid | String | 区域UUID | 0.6 |
| clusterUuid | String | 集群UUID | 0.6 |
| imageUuid | String | 镜像UUID | 0.6 |
| hostUuid | String | 物理机UUID | 0.6 |
| lastHostUuid | String | 上一次运行云主机的物理机UUID | 0.6 |
| instanceOfferingUuid | String | 计算规格UUID | 0.6 |
| rootVolumeUuid | String | 根云盘UUID | 0.6 |
| platform | String | 云主机运行平台 | 0.6 |
| defaultL3NetworkUuid | String | 默认三层网络UUID | 0.6 |
| type | String | 云主机类型 | 0.6 |
| hypervisorType | String | 云主机的hypervisor类型 | 0.6 |
| memorySize | Long | 内存大小 | 0.6 |
| cpuNum | Integer | cpu数量 | 0.6 |
| cpuSpeed | Long | cpu主频 | 0.6 |
| allocatorStrategy | String | 分配策略 | 0.6 |
| createDate | Timestamp | 创建时间 | 0.6 |
| lastOpDate | Timestamp | 最后一次修改时间 | 0.6 |
| state | String | 云主机的可用状态 | 0.6 |
| vmNics | List | 详情参考vmNics | 0.6 |
| allVolumes | List | 详情参考allVolumes | 0.6 |
#vmNics
| 名字 | 类型 | 描述 | 起始版本 |
|---|---|---|---|
| uuid | String | 资源的UUID,唯一标示该资源 | 0.6 |
| vmInstanceUuid | String | 云主机UUID | 0.6 |
| l3NetworkUuid | String | 三层网络UUID | 0.6 |
| ip | String | ip地址 | 0.6 |
| mac | String | mac地址 | 0.6 |
| netmask | String | 子网掩码 | 0.6 |
| gateway | String | 网关 | 0.6 |
| metaData | String | 内部使用的保留域 | 0.6 |
| deviceId | Integer | 设备ID
|
0.6 |
| createDate | Timestamp | 创建时间 | 0.6 |
| lastOpDate | Timestamp | 最后一次修改时间 | 0.6 |
#allVolumes
| 名字 | 类型 | 描述 | 起始版本 |
|---|---|---|---|
| uuid | String | 资源的UUID,唯一标示该资源 | 0.6 |
| name | String | 资源名称 | 0.6 |
| description | String | 资源的详细描述 | 0.6 |
| primaryStorageUuid | String | 主存储UUID | 0.6 |
| vmInstanceUuid | String | 云主机UUID | 0.6 |
| diskOfferingUuid | String | 云盘规格UUID | 0.6 |
| rootImageUuid | String | 根云盘镜像UUID | 0.6 |
| installPath | String | 安装路径 | 0.6 |
| type | String | 云盘类型 | 0.6 |
| format | String | 云盘格式 | 0.6 |
| size | Long | 云盘虚拟容量 | 0.6 |
| actualSize | Long | 云盘实际容量 | 0.6 |
| deviceId | Integer | 设备ID | 0.6 |
| state | String | 云盘的可用状态 | 0.6 |
| status | String | 云盘的连接状态 | 0.6 |
| createDate | Timestamp | 创建时间 | 0.6 |
| lastOpDate | Timestamp | 最后一次修改时间 | 0.6 |
| isShareable | Boolean | 云盘是否共享 | 0.6 |
SDK示例
Java
SDK
CreateVmInstanceAction action = new CreateVmInstanceAction();
action.name = "vm1";
action.instanceOfferingUuid = "ae97ced44efc3314b8f7798972b4ba1a";
action.imageUuid = "da119f7906513eccabf271991c35a65e";
action.l3NetworkUuids = asList("cc0e4c5e77df3af68e59668e7f9e06c5");
action.dataDiskOfferingUuids = asList("19d22d051b063d379a2816daaf431838","905d94a6abb5398fa1995f6398e3f6fc");
action.clusterUuid = "a0468dc645223f67bd0f2ab95276bbae";
action.description = "this is a vm";
action.strategy = "InstantStart";
action.sessionId = "b86c9016b4f24953a9edefb53ca0678c";
CreateVmInstanceAction.Result res = action.call();Python
SDK
CreateVmInstanceAction action = CreateVmInstanceAction()
action.name = "vm1"
action.instanceOfferingUuid = "ae97ced44efc3314b8f7798972b4ba1a"
action.imageUuid = "da119f7906513eccabf271991c35a65e"
action.l3NetworkUuids = [cc0e4c5e77df3af68e59668e7f9e06c5]
action.dataDiskOfferingUuids = [19d22d051b063d379a2816daaf431838, 905d94a6abb5398fa1995f6398e3f6fc]
action.clusterUuid = "a0468dc645223f67bd0f2ab95276bbae"
action.description = "this is a vm"
action.strategy = "InstantStart"
action.sessionId = "b86c9016b4f24953a9edefb53ca0678c"
CreateVmInstanceAction.Result res = action.call()