1=== Successful image creation (defaults) === 2 3{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'size': 0, 'driver': 'file', 'filename': 'TEST_DIR/PID-t.qcow2'}}} 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.qcow2'}} 9{u'return': {}} 10{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'qcow2', '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: 65536 19Format specific information: 20 compat: 1.1 21 lazy refcounts: false 22 refcount bits: 16 23 corrupt: false 24 25=== Successful image creation (inline blockdev-add, explicit defaults) === 26 27{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'nocow': False, 'preallocation': 'off', 'size': 0, 'driver': 'file', 'filename': 'TEST_DIR/PID-t.qcow2'}}} 28{u'return': {}} 29{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 30{u'return': {}} 31 32{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'cluster-size': 65536, 'refcount-bits': 16, 'version': 'v3', 'preallocation': 'off', 'file': {'driver': 'file', 'filename': 'TEST_DIR/PID-t.qcow2'}, 'lazy-refcounts': False, 'driver': 'qcow2', 'size': 67108864}}} 33{u'return': {}} 34{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 35{u'return': {}} 36 37image: TEST_IMG 38file format: IMGFMT 39virtual size: 64M (67108864 bytes) 40cluster_size: 65536 41Format specific information: 42 compat: 1.1 43 lazy refcounts: false 44 refcount bits: 16 45 corrupt: false 46 47=== Successful image creation (v3 non-default options) === 48 49{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'nocow': True, 'preallocation': 'falloc', 'size': 0, 'driver': 'file', 'filename': 'TEST_DIR/PID-t.qcow2'}}} 50{u'return': {}} 51{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 52{u'return': {}} 53 54{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'cluster-size': 2097152, 'refcount-bits': 1, 'version': 'v3', 'preallocation': 'metadata', 'file': {'driver': 'file', 'filename': 'TEST_DIR/PID-t.qcow2'}, 'lazy-refcounts': True, 'driver': 'qcow2', 'size': 33554432}}} 55{u'return': {}} 56{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 57{u'return': {}} 58 59image: TEST_IMG 60file format: IMGFMT 61virtual size: 32M (33554432 bytes) 62cluster_size: 2097152 63Format specific information: 64 compat: 1.1 65 lazy refcounts: true 66 refcount bits: 1 67 corrupt: false 68 69=== Successful image creation (v2 non-default options) === 70 71{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'size': 0, 'driver': 'file', 'filename': 'TEST_DIR/PID-t.qcow2'}}} 72{u'return': {}} 73{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 74{u'return': {}} 75 76{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'cluster-size': 512, 'backing-fmt': 'qcow2', 'driver': 'qcow2', 'version': 'v2', 'file': {'driver': 'file', 'filename': 'TEST_DIR/PID-t.qcow2'}, 'backing-file': 'TEST_DIR/PID-t.qcow2.base', 'size': 33554432}}} 77{u'return': {}} 78{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 79{u'return': {}} 80 81image: TEST_IMG 82file format: IMGFMT 83virtual size: 32M (33554432 bytes) 84cluster_size: 512 85backing file: TEST_IMG.base 86backing file format: IMGFMT 87Format specific information: 88 compat: 0.10 89 refcount bits: 16 90 91=== Successful image creation (encrypted) === 92 93{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'encrypt': {'key-secret': 'keysec0', 'iter-time': 10, 'cipher-mode': 'ctr', 'ivgen-hash-alg': 'md5', 'cipher-alg': 'twofish-128', 'format': 'luks', 'ivgen-alg': 'plain64', 'hash-alg': 'sha1'}, 'driver': 'qcow2', 'file': {'driver': 'file', 'filename': 'TEST_DIR/PID-t.qcow2'}, 'size': 33554432}}} 94{u'return': {}} 95{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 96{u'return': {}} 97 98image: TEST_IMG 99file format: IMGFMT 100virtual size: 32M (33554432 bytes) 101encrypted: yes 102cluster_size: 65536 103Format specific information: 104 compat: 1.1 105 lazy refcounts: false 106 refcount bits: 16 107 encrypt: 108 ivgen alg: plain64 109 hash alg: sha1 110 cipher alg: twofish-128 111 uuid: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX 112 format: luks 113 cipher mode: ctr 114 slots: 115 [0]: 116 active: true 117 iters: XXX 118 key offset: 4096 119 stripes: 4000 120 [1]: 121 active: false 122 key offset: 69632 123 [2]: 124 active: false 125 key offset: 135168 126 [3]: 127 active: false 128 key offset: 200704 129 [4]: 130 active: false 131 key offset: 266240 132 [5]: 133 active: false 134 key offset: 331776 135 [6]: 136 active: false 137 key offset: 397312 138 [7]: 139 active: false 140 key offset: 462848 141 payload offset: 528384 142 master key iters: XXX 143 corrupt: false 144 145=== Invalid BlockdevRef === 146 147{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'qcow2', 'file': "this doesn't exist", 'size': 33554432}}} 148{u'return': {}} 149Job failed: Cannot find device=this doesn't exist nor node_name=this doesn't exist 150{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 151{u'return': {}} 152 153=== Invalid sizes === 154{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'qcow2', 'file': 'node0', 'size': 1234}}} 155{u'return': {}} 156Job failed: Image size must be a multiple of 512 bytes 157{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 158{u'return': {}} 159 160{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'qcow2', 'file': 'node0', 'size': 18446744073709551104L}}} 161{u'return': {}} 162Job failed: Could not resize image: Image size cannot be negative 163{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 164{u'return': {}} 165 166{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'qcow2', 'file': 'node0', 'size': 9223372036854775808L}}} 167{u'return': {}} 168Job failed: Could not resize image: Image size cannot be negative 169{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 170{u'return': {}} 171 172{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'qcow2', 'file': 'node0', 'size': 9223372036854775296}}} 173{u'return': {}} 174Job failed: Could not resize image: Failed to grow the L1 table: File too large 175{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 176{u'return': {}} 177 178=== Invalid version === 179{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'version': 'v1', 'driver': 'qcow2', 'file': 'node0', 'size': 67108864}}} 180{u'error': {u'class': u'GenericError', u'desc': u"Invalid parameter 'v1'"}} 181 182{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'lazy-refcounts': True, 'version': 'v2', 'driver': 'qcow2', 'file': 'node0', 'size': 67108864}}} 183{u'return': {}} 184Job failed: Lazy refcounts only supported with compatibility level 1.1 and above (use version=v3 or greater) 185{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 186{u'return': {}} 187 188{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'refcount-bits': 8, 'version': 'v2', 'driver': 'qcow2', 'file': 'node0', 'size': 67108864}}} 189{u'return': {}} 190Job failed: Different refcount widths than 16 bits require compatibility level 1.1 or above (use version=v3 or greater) 191{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 192{u'return': {}} 193 194=== Invalid backing file options === 195{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'preallocation': 'full', 'driver': 'qcow2', 'backing-file': '/dev/null', 'file': 'node0', 'size': 67108864}}} 196{u'return': {}} 197Job failed: Backing file and preallocation cannot be used at the same time 198{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 199{u'return': {}} 200 201{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'backing-fmt': 'qcow2', 'driver': 'qcow2', 'file': 'node0', 'size': 67108864}}} 202{u'return': {}} 203Job failed: Backing format cannot be used without backing file 204{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 205{u'return': {}} 206 207=== Invalid cluster size === 208{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'cluster-size': 1234, 'driver': 'qcow2', 'file': 'node0', 'size': 67108864}}} 209{u'return': {}} 210Job failed: Cluster size must be a power of two between 512 and 2048k 211{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 212{u'return': {}} 213 214{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'cluster-size': 128, 'driver': 'qcow2', 'file': 'node0', 'size': 67108864}}} 215{u'return': {}} 216Job failed: Cluster size must be a power of two between 512 and 2048k 217{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 218{u'return': {}} 219 220{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'cluster-size': 4194304, 'driver': 'qcow2', 'file': 'node0', 'size': 67108864}}} 221{u'return': {}} 222Job failed: Cluster size must be a power of two between 512 and 2048k 223{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 224{u'return': {}} 225 226{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'cluster-size': 0, 'driver': 'qcow2', 'file': 'node0', 'size': 67108864}}} 227{u'return': {}} 228Job failed: Cluster size must be a power of two between 512 and 2048k 229{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 230{u'return': {}} 231 232{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'cluster-size': 512, 'driver': 'qcow2', 'file': 'node0', 'size': 281474976710656}}} 233{u'return': {}} 234Job failed: Could not resize image: Failed to grow the L1 table: File too large 235{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 236{u'return': {}} 237 238=== Invalid refcount width === 239{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'refcount-bits': 128, 'driver': 'qcow2', 'file': 'node0', 'size': 67108864}}} 240{u'return': {}} 241Job failed: Refcount width must be a power of two and may not exceed 64 bits 242{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 243{u'return': {}} 244 245{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'refcount-bits': 0, 'driver': 'qcow2', 'file': 'node0', 'size': 67108864}}} 246{u'return': {}} 247Job failed: Refcount width must be a power of two and may not exceed 64 bits 248{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 249{u'return': {}} 250 251{'execute': 'blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'refcount-bits': 7, 'driver': 'qcow2', 'file': 'node0', 'size': 67108864}}} 252{u'return': {}} 253Job failed: Refcount width must be a power of two and may not exceed 64 bits 254{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}} 255{u'return': {}} 256 257