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 132Formatting 'TEST_DIR/PID-t.vmdk.1', fmt=vmdk size=0 compat6=off hwversion=undefined 133 134Formatting 'TEST_DIR/PID-t.vmdk.2', fmt=vmdk size=0 compat6=off hwversion=undefined 135 136Formatting 'TEST_DIR/PID-t.vmdk.3', fmt=vmdk size=0 compat6=off hwversion=undefined 137 138== Missing extent == 139 140{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "file": "node0", "size": 33554432, "subformat": "monolithicFlat"}}} 141{"return": {}} 142Job failed: Extent [0] not specified 143{"execute": "job-dismiss", "arguments": {"id": "job0"}} 144{"return": {}} 145 146== Correct extent == 147 148{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "extents": ["ext1"], "file": "node0", "size": 33554432, "subformat": "monolithicFlat"}}} 149{"return": {}} 150{"execute": "job-dismiss", "arguments": {"id": "job0"}} 151{"return": {}} 152 153== Extra extent == 154 155{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "extents": ["ext1", "ext2", "ext3"], "file": "node0", "size": 512, "subformat": "monolithicFlat"}}} 156{"return": {}} 157Job failed: List of extents contains unused extents 158{"execute": "job-dismiss", "arguments": {"id": "job0"}} 159{"return": {}} 160 161== Split formats == 162 163= twoGbMaxExtentFlat 512 = 164 165{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "extents": ["ext1"], "file": "node0", "size": 512, "subformat": "twoGbMaxExtentFlat"}}} 166{"return": {}} 167{"execute": "job-dismiss", "arguments": {"id": "job0"}} 168{"return": {}} 169 170image: TEST_IMG 171file format: IMGFMT 172virtual size: 512 B (512 bytes) 173Format specific information: 174 cid: XXXXXXXXXX 175 parent cid: XXXXXXXXXX 176 create type: twoGbMaxExtentFlat 177 extents: 178 [0]: 179 virtual size: 512 180 filename: TEST_IMG.1 181 format: FLAT 182 183= twoGbMaxExtentSparse 512 = 184 185{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "extents": ["ext1"], "file": "node0", "size": 512, "subformat": "twoGbMaxExtentSparse"}}} 186{"return": {}} 187{"execute": "job-dismiss", "arguments": {"id": "job0"}} 188{"return": {}} 189 190image: TEST_IMG 191file format: IMGFMT 192virtual size: 512 B (512 bytes) 193cluster_size: 65536 194Format specific information: 195 cid: XXXXXXXXXX 196 parent cid: XXXXXXXXXX 197 create type: twoGbMaxExtentSparse 198 extents: 199 [0]: 200 virtual size: 512 201 filename: TEST_IMG.1 202 cluster size: 65536 203 format: SPARSE 204 205= twoGbMaxExtentFlat 1073741824 = 206 207{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "extents": ["ext1"], "file": "node0", "size": 1073741824, "subformat": "twoGbMaxExtentFlat"}}} 208{"return": {}} 209{"execute": "job-dismiss", "arguments": {"id": "job0"}} 210{"return": {}} 211 212image: TEST_IMG 213file format: IMGFMT 214virtual size: 1 GiB (1073741824 bytes) 215Format specific information: 216 cid: XXXXXXXXXX 217 parent cid: XXXXXXXXXX 218 create type: twoGbMaxExtentFlat 219 extents: 220 [0]: 221 virtual size: 1073741824 222 filename: TEST_IMG.1 223 format: FLAT 224 225= twoGbMaxExtentSparse 1073741824 = 226 227{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "extents": ["ext1"], "file": "node0", "size": 1073741824, "subformat": "twoGbMaxExtentSparse"}}} 228{"return": {}} 229{"execute": "job-dismiss", "arguments": {"id": "job0"}} 230{"return": {}} 231 232image: TEST_IMG 233file format: IMGFMT 234virtual size: 1 GiB (1073741824 bytes) 235cluster_size: 65536 236Format specific information: 237 cid: XXXXXXXXXX 238 parent cid: XXXXXXXXXX 239 create type: twoGbMaxExtentSparse 240 extents: 241 [0]: 242 virtual size: 1073741824 243 filename: TEST_IMG.1 244 cluster size: 65536 245 format: SPARSE 246 247= twoGbMaxExtentFlat 2147483648 = 248 249{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "extents": ["ext1"], "file": "node0", "size": 2147483648, "subformat": "twoGbMaxExtentFlat"}}} 250{"return": {}} 251{"execute": "job-dismiss", "arguments": {"id": "job0"}} 252{"return": {}} 253 254image: TEST_IMG 255file format: IMGFMT 256virtual size: 2 GiB (2147483648 bytes) 257Format specific information: 258 cid: XXXXXXXXXX 259 parent cid: XXXXXXXXXX 260 create type: twoGbMaxExtentFlat 261 extents: 262 [0]: 263 virtual size: 2147483648 264 filename: TEST_IMG.1 265 format: FLAT 266 267= twoGbMaxExtentSparse 2147483648 = 268 269{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "extents": ["ext1"], "file": "node0", "size": 2147483648, "subformat": "twoGbMaxExtentSparse"}}} 270{"return": {}} 271{"execute": "job-dismiss", "arguments": {"id": "job0"}} 272{"return": {}} 273 274image: TEST_IMG 275file format: IMGFMT 276virtual size: 2 GiB (2147483648 bytes) 277cluster_size: 65536 278Format specific information: 279 cid: XXXXXXXXXX 280 parent cid: XXXXXXXXXX 281 create type: twoGbMaxExtentSparse 282 extents: 283 [0]: 284 virtual size: 2147483648 285 filename: TEST_IMG.1 286 cluster size: 65536 287 format: SPARSE 288 289= twoGbMaxExtentFlat 5368709120 = 290 291{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "extents": ["ext1", "ext2", "ext3"], "file": "node0", "size": 5368709120, "subformat": "twoGbMaxExtentFlat"}}} 292{"return": {}} 293{"execute": "job-dismiss", "arguments": {"id": "job0"}} 294{"return": {}} 295 296image: TEST_IMG 297file format: IMGFMT 298virtual size: 5 GiB (5368709120 bytes) 299Format specific information: 300 cid: XXXXXXXXXX 301 parent cid: XXXXXXXXXX 302 create type: twoGbMaxExtentFlat 303 extents: 304 [0]: 305 virtual size: 2147483648 306 filename: TEST_IMG.1 307 format: FLAT 308 [1]: 309 virtual size: 2147483648 310 filename: TEST_IMG.2 311 format: FLAT 312 [2]: 313 virtual size: 1073741824 314 filename: TEST_IMG.3 315 format: FLAT 316 317= twoGbMaxExtentSparse 5368709120 = 318 319{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "extents": ["ext1", "ext2", "ext3"], "file": "node0", "size": 5368709120, "subformat": "twoGbMaxExtentSparse"}}} 320{"return": {}} 321{"execute": "job-dismiss", "arguments": {"id": "job0"}} 322{"return": {}} 323 324image: TEST_IMG 325file format: IMGFMT 326virtual size: 5 GiB (5368709120 bytes) 327cluster_size: 65536 328Format specific information: 329 cid: XXXXXXXXXX 330 parent cid: XXXXXXXXXX 331 create type: twoGbMaxExtentSparse 332 extents: 333 [0]: 334 virtual size: 2147483648 335 filename: TEST_IMG.1 336 cluster size: 65536 337 format: SPARSE 338 [1]: 339 virtual size: 2147483648 340 filename: TEST_IMG.2 341 cluster size: 65536 342 format: SPARSE 343 [2]: 344 virtual size: 1073741824 345 filename: TEST_IMG.3 346 cluster size: 65536 347 format: SPARSE 348 349