1=== Successful image creation (defaults) === 2 3{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.vmdk", "size": 0}}} 4{"return": {}} 5{"execute": "job-dismiss", "arguments": {"id": "job0"}} 6{"return": {}} 7 8{"execute": "blockdev-add", "arguments": {"driver": "file", "filename": "TEST_DIR/PID-t.vmdk", "node-name": "imgfile"}} 9{"return": {}} 10{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "file": "imgfile", "size": 5368709120}}} 11{"return": {}} 12{"execute": "job-dismiss", "arguments": {"id": "job0"}} 13{"return": {}} 14 15image: TEST_IMG 16file format: IMGFMT 17virtual size: 5 GiB (5368709120 bytes) 18cluster_size: 65536 19Format specific information: 20 cid: XXXXXXXXXX 21 parent cid: XXXXXXXXXX 22 create type: monolithicSparse 23 extents: 24 [0]: 25 virtual size: 5368709120 26 filename: TEST_IMG 27 cluster size: 65536 28 format: 29 30=== Successful image creation (inline blockdev-add, explicit defaults) === 31 32{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.vmdk", "size": 0}}} 33{"return": {}} 34{"execute": "job-dismiss", "arguments": {"id": "job0"}} 35{"return": {}} 36 37{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"adapter-type": "ide", "driver": "vmdk", "extents": [], "file": {"driver": "file", "filename": "TEST_DIR/PID-t.vmdk"}, "hwversion": "4", "size": 67108864, "subformat": "monolithicSparse", "zeroed-grain": false}}} 38{"return": {}} 39{"execute": "job-dismiss", "arguments": {"id": "job0"}} 40{"return": {}} 41 42image: TEST_IMG 43file format: IMGFMT 44virtual size: 64 MiB (67108864 bytes) 45cluster_size: 65536 46Format specific information: 47 cid: XXXXXXXXXX 48 parent cid: XXXXXXXXXX 49 create type: monolithicSparse 50 extents: 51 [0]: 52 virtual size: 67108864 53 filename: TEST_IMG 54 cluster size: 65536 55 format: 56 57=== Successful image creation (with non-default options) === 58 59{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.vmdk", "size": 0}}} 60{"return": {}} 61{"execute": "job-dismiss", "arguments": {"id": "job0"}} 62{"return": {}} 63 64{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"adapter-type": "buslogic", "driver": "vmdk", "extents": [], "file": {"driver": "file", "filename": "TEST_DIR/PID-t.vmdk"}, "size": 33554432, "subformat": "monolithicSparse", "zeroed-grain": true}}} 65{"return": {}} 66{"execute": "job-dismiss", "arguments": {"id": "job0"}} 67{"return": {}} 68 69image: TEST_IMG 70file format: IMGFMT 71virtual size: 32 MiB (33554432 bytes) 72cluster_size: 65536 73Format specific information: 74 cid: XXXXXXXXXX 75 parent cid: XXXXXXXXXX 76 create type: monolithicSparse 77 extents: 78 [0]: 79 virtual size: 33554432 80 filename: TEST_IMG 81 cluster size: 65536 82 format: 83 84=== Invalid BlockdevRef === 85 86{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "file": "this doesn't exist", "size": 33554432}}} 87{"return": {}} 88Job failed: Cannot find device='this doesn't exist' nor node-name='this doesn't exist' 89{"execute": "job-dismiss", "arguments": {"id": "job0"}} 90{"return": {}} 91 92=== Adapter types === 93 94== Valid adapter types == 95 96{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"adapter-type": "ide", "driver": "vmdk", "file": "node0", "size": 33554432}}} 97{"return": {}} 98{"execute": "job-dismiss", "arguments": {"id": "job0"}} 99{"return": {}} 100 101{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"adapter-type": "buslogic", "driver": "vmdk", "file": "node0", "size": 33554432}}} 102{"return": {}} 103{"execute": "job-dismiss", "arguments": {"id": "job0"}} 104{"return": {}} 105 106{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"adapter-type": "lsilogic", "driver": "vmdk", "file": "node0", "size": 33554432}}} 107{"return": {}} 108{"execute": "job-dismiss", "arguments": {"id": "job0"}} 109{"return": {}} 110 111{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"adapter-type": "legacyESX", "driver": "vmdk", "file": "node0", "size": 33554432}}} 112{"return": {}} 113{"execute": "job-dismiss", "arguments": {"id": "job0"}} 114{"return": {}} 115 116== Invalid adapter types == 117 118{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"adapter-type": "foo", "driver": "vmdk", "file": "node0", "size": 33554432}}} 119{"error": {"class": "GenericError", "desc": "Parameter 'adapter-type' does not accept value 'foo'"}} 120 121{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"adapter-type": "IDE", "driver": "vmdk", "file": "node0", "size": 33554432}}} 122{"error": {"class": "GenericError", "desc": "Parameter 'adapter-type' does not accept value 'IDE'"}} 123 124{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"adapter-type": "legacyesx", "driver": "vmdk", "file": "node0", "size": 33554432}}} 125{"error": {"class": "GenericError", "desc": "Parameter 'adapter-type' does not accept value 'legacyesx'"}} 126 127{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"adapter-type": 1, "driver": "vmdk", "file": "node0", "size": 33554432}}} 128{"error": {"class": "GenericError", "desc": "Invalid parameter type for 'options.adapter-type', expected: string"}} 129 130=== Other subformats === 131 132== Missing extent == 133 134{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "file": "node0", "size": 33554432, "subformat": "monolithicFlat"}}} 135{"return": {}} 136Job failed: Extent [0] not specified 137{"execute": "job-dismiss", "arguments": {"id": "job0"}} 138{"return": {}} 139 140== Correct extent == 141 142{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "extents": ["ext1"], "file": "node0", "size": 33554432, "subformat": "monolithicFlat"}}} 143{"return": {}} 144{"execute": "job-dismiss", "arguments": {"id": "job0"}} 145{"return": {}} 146 147== Extra extent == 148 149{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "extents": ["ext1", "ext2", "ext3"], "file": "node0", "size": 512, "subformat": "monolithicFlat"}}} 150{"return": {}} 151Job failed: List of extents contains unused extents 152{"execute": "job-dismiss", "arguments": {"id": "job0"}} 153{"return": {}} 154 155== Split formats == 156 157= twoGbMaxExtentFlat 512 = 158 159{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "extents": ["ext1"], "file": "node0", "size": 512, "subformat": "twoGbMaxExtentFlat"}}} 160{"return": {}} 161{"execute": "job-dismiss", "arguments": {"id": "job0"}} 162{"return": {}} 163 164image: TEST_IMG 165file format: IMGFMT 166virtual size: 512 B (512 bytes) 167Format specific information: 168 cid: XXXXXXXXXX 169 parent cid: XXXXXXXXXX 170 create type: twoGbMaxExtentFlat 171 extents: 172 [0]: 173 virtual size: 512 174 filename: TEST_IMG.1 175 format: FLAT 176 177= twoGbMaxExtentSparse 512 = 178 179{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "extents": ["ext1"], "file": "node0", "size": 512, "subformat": "twoGbMaxExtentSparse"}}} 180{"return": {}} 181{"execute": "job-dismiss", "arguments": {"id": "job0"}} 182{"return": {}} 183 184image: TEST_IMG 185file format: IMGFMT 186virtual size: 512 B (512 bytes) 187cluster_size: 65536 188Format specific information: 189 cid: XXXXXXXXXX 190 parent cid: XXXXXXXXXX 191 create type: twoGbMaxExtentSparse 192 extents: 193 [0]: 194 virtual size: 512 195 filename: TEST_IMG.1 196 cluster size: 65536 197 format: SPARSE 198 199= twoGbMaxExtentFlat 1073741824 = 200 201{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "extents": ["ext1"], "file": "node0", "size": 1073741824, "subformat": "twoGbMaxExtentFlat"}}} 202{"return": {}} 203{"execute": "job-dismiss", "arguments": {"id": "job0"}} 204{"return": {}} 205 206image: TEST_IMG 207file format: IMGFMT 208virtual size: 1 GiB (1073741824 bytes) 209Format specific information: 210 cid: XXXXXXXXXX 211 parent cid: XXXXXXXXXX 212 create type: twoGbMaxExtentFlat 213 extents: 214 [0]: 215 virtual size: 1073741824 216 filename: TEST_IMG.1 217 format: FLAT 218 219= twoGbMaxExtentSparse 1073741824 = 220 221{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "extents": ["ext1"], "file": "node0", "size": 1073741824, "subformat": "twoGbMaxExtentSparse"}}} 222{"return": {}} 223{"execute": "job-dismiss", "arguments": {"id": "job0"}} 224{"return": {}} 225 226image: TEST_IMG 227file format: IMGFMT 228virtual size: 1 GiB (1073741824 bytes) 229cluster_size: 65536 230Format specific information: 231 cid: XXXXXXXXXX 232 parent cid: XXXXXXXXXX 233 create type: twoGbMaxExtentSparse 234 extents: 235 [0]: 236 virtual size: 1073741824 237 filename: TEST_IMG.1 238 cluster size: 65536 239 format: SPARSE 240 241= twoGbMaxExtentFlat 2147483648 = 242 243{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "extents": ["ext1"], "file": "node0", "size": 2147483648, "subformat": "twoGbMaxExtentFlat"}}} 244{"return": {}} 245{"execute": "job-dismiss", "arguments": {"id": "job0"}} 246{"return": {}} 247 248image: TEST_IMG 249file format: IMGFMT 250virtual size: 2 GiB (2147483648 bytes) 251Format specific information: 252 cid: XXXXXXXXXX 253 parent cid: XXXXXXXXXX 254 create type: twoGbMaxExtentFlat 255 extents: 256 [0]: 257 virtual size: 2147483648 258 filename: TEST_IMG.1 259 format: FLAT 260 261= twoGbMaxExtentSparse 2147483648 = 262 263{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "extents": ["ext1"], "file": "node0", "size": 2147483648, "subformat": "twoGbMaxExtentSparse"}}} 264{"return": {}} 265{"execute": "job-dismiss", "arguments": {"id": "job0"}} 266{"return": {}} 267 268image: TEST_IMG 269file format: IMGFMT 270virtual size: 2 GiB (2147483648 bytes) 271cluster_size: 65536 272Format specific information: 273 cid: XXXXXXXXXX 274 parent cid: XXXXXXXXXX 275 create type: twoGbMaxExtentSparse 276 extents: 277 [0]: 278 virtual size: 2147483648 279 filename: TEST_IMG.1 280 cluster size: 65536 281 format: SPARSE 282 283= twoGbMaxExtentFlat 5368709120 = 284 285{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "extents": ["ext1", "ext2", "ext3"], "file": "node0", "size": 5368709120, "subformat": "twoGbMaxExtentFlat"}}} 286{"return": {}} 287{"execute": "job-dismiss", "arguments": {"id": "job0"}} 288{"return": {}} 289 290image: TEST_IMG 291file format: IMGFMT 292virtual size: 5 GiB (5368709120 bytes) 293Format specific information: 294 cid: XXXXXXXXXX 295 parent cid: XXXXXXXXXX 296 create type: twoGbMaxExtentFlat 297 extents: 298 [0]: 299 virtual size: 2147483648 300 filename: TEST_IMG.1 301 format: FLAT 302 [1]: 303 virtual size: 2147483648 304 filename: TEST_IMG.2 305 format: FLAT 306 [2]: 307 virtual size: 1073741824 308 filename: TEST_IMG.3 309 format: FLAT 310 311= twoGbMaxExtentSparse 5368709120 = 312 313{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "extents": ["ext1", "ext2", "ext3"], "file": "node0", "size": 5368709120, "subformat": "twoGbMaxExtentSparse"}}} 314{"return": {}} 315{"execute": "job-dismiss", "arguments": {"id": "job0"}} 316{"return": {}} 317 318image: TEST_IMG 319file format: IMGFMT 320virtual size: 5 GiB (5368709120 bytes) 321cluster_size: 65536 322Format specific information: 323 cid: XXXXXXXXXX 324 parent cid: XXXXXXXXXX 325 create type: twoGbMaxExtentSparse 326 extents: 327 [0]: 328 virtual size: 2147483648 329 filename: TEST_IMG.1 330 cluster size: 65536 331 format: SPARSE 332 [1]: 333 virtual size: 2147483648 334 filename: TEST_IMG.2 335 cluster size: 65536 336 format: SPARSE 337 [2]: 338 virtual size: 1073741824 339 filename: TEST_IMG.3 340 cluster size: 65536 341 format: SPARSE 342 343