1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | spUUID = '5c84a9d2-be25-49a9-bcb2-2f0f5b9066c0' sdUUID = 'b9c4821e-e9c0-4dd4-8393-c59b82c9cd29' imgUUID = '87f5f391-5b83-4e7f-9072-7f50266559c3' volUUID = 'ce73fdd0-2630-40ca-b2df-a0dd90674dec' # 这里做为测试,直接写出了将使用的 UUID,实际环境中 UUID 由 Engine 或者用户给出 def vdsOK(d): print d if d['status']['code']: raise Exception(str(d)) return d # 此函数用来判断操作成功与否 def waitTask(s, taskid): while vdsOK(s.getTaskStatus(taskid))['taskStatus']['taskState'] != 'finished': time.sleep(3) vdsOK(s.clearTask(taskid)) #VDSM 的任务很多是异步的,每一个请求都是一个任务,此函数用来查询任务成功与否 def main(): s = vdscli.connect() # 连接 VDSM,默认连接本地的 VDSM vdsOK(s.connectStorageServer(LOCALFS_DOMAIN, "my favorite pet", [dict(id=1, connection=path)])) # 连接到 VDSM 的一个 StorageServer vdsOK(s.createStorageDomain(LOCALFS_DOMAIN, sdUUID, "my local domain", path, DATA_DOMAIN, 0)) # 创建 Storage Domain sdUUID vdsOK(s.createStoragePool(LOCALFS_DOMAIN, spUUID, "pool name", sdUUID, [sdUUID], masterVersion)) # 以 sdUUID 为 master domain 创建 Storage Pool vdsOK(s.connectStoragePool(spUUID, hostID, "scsikey", sdUUID, masterVersion)) # 连接到 Storage Pool 上 tid = vdsOK(s.spmStart(spUUID, -1, -1, -1, 0))['uuid'] waitTask(s, tid) # 启动这个 Storage Pool 上的 SPM,成功后会有一个 Node 充当 SPM sizeGiB = 10 sectors_per_GB = 2097152 size = sizeGiB * sectors_per_GB tid = vdsOK(s.createVolume(sdUUID, spUUID, imgUUID, size, COW_FORMAT, SPARSE_VOL, LEAF_VOL, volUUID, "volly", BLANK_UUID, BLANK_UUID))['uuid'] waitTask(s, tid) # 创建最终的 Volume,大小为 10GB,此 Volume 存在于前面创建的 Storage Domain 上。至此, #虚拟磁盘便准备好了,可以用此磁盘的 UUID 做为参数创建虚拟机了。 main() |
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |