1=== Successful image creation (defaults) === 2 3{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'size': 0, 'driver': 'file', 'filename': 'TEST_DIR/PID-t.vhdx'}}} 4{u'return': {}} 5{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 6{u'return': {}} 7 8{'execute': 'blockdev-add', 'arguments': {'node_name': 'imgfile', 'driver': 'file', 'filename': 'TEST_DIR/PID-t.vhdx'}} 9{u'return': {}} 10{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vhdx', 'file': 'imgfile', 'size': 134217728}}} 11{u'return': {}} 12{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 13{u'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': {'size': 0, 'driver': 'file', 'filename': 'TEST_DIR/PID-t.vhdx'}}} 23{u'return': {}} 24{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 25{u'return': {}} 26 27{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'block-size': 8388608, 'driver': 'vhdx', 'subformat': 'dynamic', 'log-size': 1048576, 'file': {'driver': 'file', 'filename': 'TEST_DIR/PID-t.vhdx'}, 'block-state-zero': True, 'size': 67108864}}} 28{u'return': {}} 29{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 30{u'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': {'size': 0, 'driver': 'file', 'filename': 'TEST_DIR/PID-t.vhdx'}}} 40{u'return': {}} 41{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 42{u'return': {}} 43 44{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'block-size': 268435456, 'driver': 'vhdx', 'subformat': 'fixed', 'log-size': 8388608, 'file': {'driver': 'file', 'filename': 'TEST_DIR/PID-t.vhdx'}, 'block-state-zero': False, 'size': 33554432}}} 45{u'return': {}} 46{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 47{u'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{u'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{u'return': {}} 61 62=== Zero size === 63 64{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vhdx', 'file': 'node0', 'size': 0}}} 65{u'return': {}} 66{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 67{u'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{u'return': {}} 78{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 79{u'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': 18446744073709551104L}}} 89{u'return': {}} 90Job failed: Image size too large; max of 64TB 91{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 92{u'return': {}} 93 94{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vhdx', 'file': 'node0', 'size': 9223372036854775808L}}} 95{u'return': {}} 96Job failed: Image size too large; max of 64TB 97{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 98{u'return': {}} 99 100{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vhdx', 'file': 'node0', 'size': 9223372036854775296}}} 101{u'return': {}} 102Job failed: Image size too large; max of 64TB 103{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 104{u'return': {}} 105 106{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vhdx', 'file': 'node0', 'size': 70368744177665}}} 107{u'return': {}} 108Job failed: Image size too large; max of 64TB 109{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 110{u'return': {}} 111 112=== Invalid block size === 113 114{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vhdx', 'block-size': 1234567, 'file': 'node0', 'size': 67108864}}} 115{u'return': {}} 116Job failed: Block size must be a multiple of 1 MB 117{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 118{u'return': {}} 119 120{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vhdx', 'block-size': 128, 'file': 'node0', 'size': 67108864}}} 121{u'return': {}} 122Job failed: Block size must be a multiple of 1 MB 123{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 124{u'return': {}} 125 126{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vhdx', 'block-size': 3145728, 'file': 'node0', 'size': 67108864}}} 127{u'return': {}} 128Job failed: Block size must be a power of two 129{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 130{u'return': {}} 131 132{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vhdx', 'block-size': 536870912, 'file': 'node0', 'size': 67108864}}} 133{u'return': {}} 134Job failed: Block size must not exceed 268435456 135{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 136{u'return': {}} 137 138{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vhdx', 'block-size': 0, 'file': 'node0', 'size': 67108864}}} 139{u'return': {}} 140Job failed: Block size must be a multiple of 1 MB 141{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 142{u'return': {}} 143 144=== Invalid log size === 145 146{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'log-size': 1234567, 'driver': 'vhdx', 'file': 'node0', 'size': 67108864}}} 147{u'return': {}} 148Job failed: Log size must be a multiple of 1 MB 149{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 150{u'return': {}} 151 152{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'log-size': 128, 'driver': 'vhdx', 'file': 'node0', 'size': 67108864}}} 153{u'return': {}} 154Job failed: Log size must be a multiple of 1 MB 155{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 156{u'return': {}} 157 158{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'log-size': 4294967296, 'driver': 'vhdx', 'file': 'node0', 'size': 67108864}}} 159{u'return': {}} 160Job failed: Log size must be smaller than 4 GB 161{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 162{u'return': {}} 163 164{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'log-size': 0, 'driver': 'vhdx', 'file': 'node0', 'size': 67108864}}} 165{u'return': {}} 166Job failed: Log size must be a multiple of 1 MB 167{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 168{u'return': {}} 169 170