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