1=== Successful image creation (defaults) === 2 3{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.vhdx", "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.vhdx", "node-name": "imgfile"}} 9{"return": {}} 10{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vhdx", "file": "imgfile", "size": 134217728}}} 11{"return": {}} 12{"execute": "job-dismiss", "arguments": {"id": "job0"}} 13{"return": {}} 14 15image: TEST_IMG 16file format: IMGFMT 17virtual size: 128M (134217728 bytes) 18cluster_size: 8388608 19 20=== Successful image creation (explicit defaults) === 21 22{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.vhdx", "size": 0}}} 23{"return": {}} 24{"execute": "job-dismiss", "arguments": {"id": "job0"}} 25{"return": {}} 26 27{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"block-size": 8388608, "block-state-zero": true, "driver": "vhdx", "file": {"driver": "file", "filename": "TEST_DIR/PID-t.vhdx"}, "log-size": 1048576, "size": 67108864, "subformat": "dynamic"}}} 28{"return": {}} 29{"execute": "job-dismiss", "arguments": {"id": "job0"}} 30{"return": {}} 31 32image: TEST_IMG 33file format: IMGFMT 34virtual size: 64M (67108864 bytes) 35cluster_size: 8388608 36 37=== Successful image creation (with non-default options) === 38 39{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.vhdx", "size": 0}}} 40{"return": {}} 41{"execute": "job-dismiss", "arguments": {"id": "job0"}} 42{"return": {}} 43 44{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"block-size": 268435456, "block-state-zero": false, "driver": "vhdx", "file": {"driver": "file", "filename": "TEST_DIR/PID-t.vhdx"}, "log-size": 8388608, "size": 33554432, "subformat": "fixed"}}} 45{"return": {}} 46{"execute": "job-dismiss", "arguments": {"id": "job0"}} 47{"return": {}} 48 49image: TEST_IMG 50file format: IMGFMT 51virtual size: 32M (33554432 bytes) 52cluster_size: 268435456 53 54=== Invalid BlockdevRef === 55 56{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vhdx", "file": "this doesn't exist", "size": 33554432}}} 57{"return": {}} 58Job failed: Cannot find device=this doesn't exist nor node_name=this doesn't exist 59{"execute": "job-dismiss", "arguments": {"id": "job0"}} 60{"return": {}} 61 62=== Zero size === 63 64{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vhdx", "file": "node0", "size": 0}}} 65{"return": {}} 66{"execute": "job-dismiss", "arguments": {"id": "job0"}} 67{"return": {}} 68 69image: TEST_IMG 70file format: IMGFMT 71virtual size: 0 (0 bytes) 72cluster_size: 8388608 73 74=== Maximum size === 75 76{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vhdx", "file": "node0", "size": 70368744177664}}} 77{"return": {}} 78{"execute": "job-dismiss", "arguments": {"id": "job0"}} 79{"return": {}} 80 81image: TEST_IMG 82file format: IMGFMT 83virtual size: 64T (70368744177664 bytes) 84cluster_size: 67108864 85 86=== Invalid sizes === 87 88{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vhdx", "file": "node0", "size": 18446744073709551104}}} 89{"return": {}} 90Job failed: Image size too large; max of 64TB 91{"execute": "job-dismiss", "arguments": {"id": "job0"}} 92{"return": {}} 93 94{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vhdx", "file": "node0", "size": 9223372036854775808}}} 95{"return": {}} 96Job failed: Image size too large; max of 64TB 97{"execute": "job-dismiss", "arguments": {"id": "job0"}} 98{"return": {}} 99 100{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vhdx", "file": "node0", "size": 9223372036854775296}}} 101{"return": {}} 102Job failed: Image size too large; max of 64TB 103{"execute": "job-dismiss", "arguments": {"id": "job0"}} 104{"return": {}} 105 106{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vhdx", "file": "node0", "size": 70368744177665}}} 107{"return": {}} 108Job failed: Image size too large; max of 64TB 109{"execute": "job-dismiss", "arguments": {"id": "job0"}} 110{"return": {}} 111 112=== Invalid block size === 113 114{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"block-size": 1234567, "driver": "vhdx", "file": "node0", "size": 67108864}}} 115{"return": {}} 116Job failed: Block size must be a multiple of 1 MB 117{"execute": "job-dismiss", "arguments": {"id": "job0"}} 118{"return": {}} 119 120{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"block-size": 128, "driver": "vhdx", "file": "node0", "size": 67108864}}} 121{"return": {}} 122Job failed: Block size must be a multiple of 1 MB 123{"execute": "job-dismiss", "arguments": {"id": "job0"}} 124{"return": {}} 125 126{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"block-size": 3145728, "driver": "vhdx", "file": "node0", "size": 67108864}}} 127{"return": {}} 128Job failed: Block size must be a power of two 129{"execute": "job-dismiss", "arguments": {"id": "job0"}} 130{"return": {}} 131 132{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"block-size": 536870912, "driver": "vhdx", "file": "node0", "size": 67108864}}} 133{"return": {}} 134Job failed: Block size must not exceed 268435456 135{"execute": "job-dismiss", "arguments": {"id": "job0"}} 136{"return": {}} 137 138{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"block-size": 0, "driver": "vhdx", "file": "node0", "size": 67108864}}} 139{"return": {}} 140Job failed: Block size must be a multiple of 1 MB 141{"execute": "job-dismiss", "arguments": {"id": "job0"}} 142{"return": {}} 143 144=== Invalid log size === 145 146{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vhdx", "file": "node0", "log-size": 1234567, "size": 67108864}}} 147{"return": {}} 148Job failed: Log size must be a multiple of 1 MB 149{"execute": "job-dismiss", "arguments": {"id": "job0"}} 150{"return": {}} 151 152{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vhdx", "file": "node0", "log-size": 128, "size": 67108864}}} 153{"return": {}} 154Job failed: Log size must be a multiple of 1 MB 155{"execute": "job-dismiss", "arguments": {"id": "job0"}} 156{"return": {}} 157 158{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vhdx", "file": "node0", "log-size": 4294967296, "size": 67108864}}} 159{"return": {}} 160Job failed: Log size must be smaller than 4 GB 161{"execute": "job-dismiss", "arguments": {"id": "job0"}} 162{"return": {}} 163 164{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vhdx", "file": "node0", "log-size": 0, "size": 67108864}}} 165{"return": {}} 166Job failed: Log size must be a multiple of 1 MB 167{"execute": "job-dismiss", "arguments": {"id": "job0"}} 168{"return": {}} 169 170