X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fsrc%2Ftest%2Fcli-integration%2Frbd%2Fformatted-output.t;fp=src%2Fceph%2Fsrc%2Ftest%2Fcli-integration%2Frbd%2Fformatted-output.t;h=54c63733f25308ea28f0ab1c8e34491cbd8dc3d3;hb=812ff6ca9fcd3e629e49d4328905f33eee8ca3f5;hp=0000000000000000000000000000000000000000;hpb=15280273faafb77777eab341909a3f495cf248d9;p=stor4nfv.git diff --git a/src/ceph/src/test/cli-integration/rbd/formatted-output.t b/src/ceph/src/test/cli-integration/rbd/formatted-output.t new file mode 100644 index 0000000..54c6373 --- /dev/null +++ b/src/ceph/src/test/cli-integration/rbd/formatted-output.t @@ -0,0 +1,968 @@ +ls on empty pool never containing images +======================================== + $ ceph osd pool create rbd_other 8 + pool 'rbd_other' created + $ rbd pool init rbd_other + $ rados -p rbd rm rbd_directory >/dev/null 2>&1 || true + $ rbd ls + $ rbd ls --format json + [] + $ rbd ls --format xml + + +create +======= + $ rbd create -s 1024 --image-format 1 foo + rbd: image format 1 is deprecated + $ rbd create -s 512 --image-format 2 bar + $ rbd create -s 2048 --image-format 2 --image-feature layering baz + $ rbd create -s 1 --image-format 1 quux + rbd: image format 1 is deprecated + $ rbd create -s 1G --image-format 2 quuy + +snapshot +======== + $ rbd snap create bar@snap + $ rbd resize -s 1024 --no-progress bar + $ rbd resize -s 2G --no-progress quuy + $ rbd snap create bar@snap2 + $ rbd snap create foo@snap + +clone +===== + $ rbd snap protect bar@snap + $ rbd clone --image-feature layering,exclusive-lock,object-map,fast-diff bar@snap rbd_other/child + $ rbd snap create rbd_other/child@snap + $ rbd flatten rbd_other/child 2> /dev/null + $ rbd bench rbd_other/child --io-type write --io-pattern seq --io-total 1B > /dev/null 2>&1 + $ rbd clone bar@snap rbd_other/deep-flatten-child + $ rbd snap create rbd_other/deep-flatten-child@snap + $ rbd flatten rbd_other/deep-flatten-child 2> /dev/null + +lock +==== + $ rbd lock add quux id + $ rbd lock add baz id1 --shared tag + $ rbd lock add baz id2 --shared tag + $ rbd lock add baz id3 --shared tag + +test formatting +=============== + $ rbd children foo@snap + $ rbd children bar@snap + rbd_other/child + $ rbd children bar@snap2 +TODO: figure out why .* does not match the block_name_prefix line in rbd info. +For now, use a more inclusive regex. + $ rbd info foo + rbd image 'foo': + \tsize 1024 MB in 256 objects (esc) + \torder 22 (4096 kB objects) (esc) + [^^]+ (re) + \tformat: 1 (esc) + $ rbd info foo --format json | python -mjson.tool | sed 's/,$/, /' + { + "block_name_prefix": "rb.0.*", (glob) + "format": 1, + "name": "foo", + "object_size": 4194304, + "objects": 256, + "order": 22, + "size": 1073741824 + } +The version of xml_pp included in ubuntu precise always prints a 'warning' +whenever it is run. grep -v to ignore it, but still work on other distros. + $ rbd info foo --format xml | xml_pp 2>&1 | grep -v '^new version at /usr/bin/xml_pp' + + foo + 1073741824 + 256 + 22 + 4194304 + rb.0.* (glob) + 1 + + $ rbd info foo@snap + rbd image 'foo': + \tsize 1024 MB in 256 objects (esc) + \torder 22 (4096 kB objects) (esc) + [^^]+ (re) + \tformat: 1 (esc) + \tprotected: False (esc) + $ rbd info foo@snap --format json | python -mjson.tool | sed 's/,$/, /' + { + "block_name_prefix": "rb.0.*", (glob) + "format": 1, + "name": "foo", + "object_size": 4194304, + "objects": 256, + "order": 22, + "protected": "false", + "size": 1073741824 + } + $ rbd info foo@snap --format xml | xml_pp 2>&1 | grep -v '^new version at /usr/bin/xml_pp' + + foo + 1073741824 + 256 + 22 + 4194304 + rb.0* (glob) + 1 + false + + $ rbd info bar + rbd image 'bar': + \tsize 1024 MB in 256 objects (esc) + \torder 22 (4096 kB objects) (esc) + [^^]+ (re) + \tformat: 2 (esc) + \tfeatures: layering, exclusive-lock, object-map, fast-diff, deep-flatten (esc) + \tflags: (esc) + \tcreate_timestamp:* (glob) + $ rbd info bar --format json | python -mjson.tool | sed 's/,$/, /' + { + "block_name_prefix": "rbd_data.*", (glob) + "create_timestamp": "*", (glob) + "features": [ + "layering", + "exclusive-lock", + "object-map", + "fast-diff", + "deep-flatten" + ], + "flags": [], + "format": 2, + "name": "bar", + "object_size": 4194304, + "objects": 256, + "order": 22, + "size": 1073741824 + } + $ rbd info bar --format xml | xml_pp 2>&1 | grep -v '^new version at /usr/bin/xml_pp' + + bar + 1073741824 + 256 + 22 + 4194304 + rbd_data.* (glob) + 2 + + layering + exclusive-lock + object-map + fast-diff + deep-flatten + + + * (glob) + + $ rbd info bar@snap + rbd image 'bar': + \tsize 512 MB in 128 objects (esc) + \torder 22 (4096 kB objects) (esc) + [^^]+ (re) + \tformat: 2 (esc) + \tfeatures: layering, exclusive-lock, object-map, fast-diff, deep-flatten (esc) + \tflags: (esc) + \tcreate_timestamp:* (glob) + \tprotected: True (esc) + $ rbd info bar@snap --format json | python -mjson.tool | sed 's/,$/, /' + { + "block_name_prefix": "rbd_data.*", (glob) + "create_timestamp": "*", (glob) + "features": [ + "layering", + "exclusive-lock", + "object-map", + "fast-diff", + "deep-flatten" + ], + "flags": [], + "format": 2, + "name": "bar", + "object_size": 4194304, + "objects": 128, + "order": 22, + "protected": "true", + "size": 536870912 + } + $ rbd info bar@snap --format xml | xml_pp 2>&1 | grep -v '^new version at /usr/bin/xml_pp' + + bar + 536870912 + 128 + 22 + 4194304 + rbd_data.* (glob) + 2 + + layering + exclusive-lock + object-map + fast-diff + deep-flatten + + + * (glob) + true + + $ rbd info bar@snap2 + rbd image 'bar': + \tsize 1024 MB in 256 objects (esc) + \torder 22 (4096 kB objects) (esc) + [^^]+ (re) + \tformat: 2 (esc) + \tfeatures: layering, exclusive-lock, object-map, fast-diff, deep-flatten (esc) + \tflags: (esc) + \tcreate_timestamp:* (glob) + \tprotected: False (esc) + $ rbd info bar@snap2 --format json | python -mjson.tool | sed 's/,$/, /' + { + "block_name_prefix": "rbd_data.*", (glob) + "create_timestamp": "*", (glob) + "features": [ + "layering", + "exclusive-lock", + "object-map", + "fast-diff", + "deep-flatten" + ], + "flags": [], + "format": 2, + "name": "bar", + "object_size": 4194304, + "objects": 256, + "order": 22, + "protected": "false", + "size": 1073741824 + } + $ rbd info bar@snap2 --format xml | xml_pp 2>&1 | grep -v '^new version at /usr/bin/xml_pp' + + bar + 1073741824 + 256 + 22 + 4194304 + rbd_data.* (glob) + 2 + + layering + exclusive-lock + object-map + fast-diff + deep-flatten + + + * (glob) + false + + $ rbd info baz + rbd image 'baz': + \tsize 2048 MB in 512 objects (esc) + \torder 22 (4096 kB objects) (esc) + [^^]+ (re) + \tformat: 2 (esc) + \tfeatures: layering (esc) + \tflags: (esc) + \tcreate_timestamp:* (glob) + $ rbd info baz --format json | python -mjson.tool | sed 's/,$/, /' + { + "block_name_prefix": "rbd_data.*", (glob) + "create_timestamp": "*", (glob) + "features": [ + "layering" + ], + "flags": [], + "format": 2, + "name": "baz", + "object_size": 4194304, + "objects": 512, + "order": 22, + "size": 2147483648 + } + $ rbd info baz --format xml | xml_pp 2>&1 | grep -v '^new version at /usr/bin/xml_pp' + + baz + 2147483648 + 512 + 22 + 4194304 + rbd_data.* (glob) + 2 + + layering + + + * (glob) + + $ rbd info quux + rbd image 'quux': + \tsize 1024 kB in 1 objects (esc) + \torder 22 (4096 kB objects) (esc) + [^^]+ (re) + \tformat: 1 (esc) + $ rbd info quux --format json | python -mjson.tool | sed 's/,$/, /' + { + "block_name_prefix": "rb.0.*", (glob) + "format": 1, + "name": "quux", + "object_size": 4194304, + "objects": 1, + "order": 22, + "size": 1048576 + } + $ rbd info quux --format xml | xml_pp 2>&1 | grep -v '^new version at /usr/bin/xml_pp' + + quux + 1048576 + 1 + 22 + 4194304 + rb.0.* (glob) + 1 + + $ rbd info rbd_other/child + rbd image 'child': + \tsize 512 MB in 128 objects (esc) + \torder 22 (4096 kB objects) (esc) + [^^]+ (re) + \tformat: 2 (esc) + \tfeatures: layering, exclusive-lock, object-map, fast-diff (esc) + \tflags: (esc) + \tcreate_timestamp:* (glob) + $ rbd info rbd_other/child --format json | python -mjson.tool | sed 's/,$/, /' + { + "block_name_prefix": "rbd_data.*", (glob) + "create_timestamp": "*", (glob) + "features": [ + "layering", + "exclusive-lock", + "object-map", + "fast-diff" + ], + "flags": [], + "format": 2, + "name": "child", + "object_size": 4194304, + "objects": 128, + "order": 22, + "size": 536870912 + } + $ rbd info rbd_other/child --format xml | xml_pp 2>&1 | grep -v '^new version at /usr/bin/xml_pp' + + child + 536870912 + 128 + 22 + 4194304 + rbd_data.* (glob) + 2 + + layering + exclusive-lock + object-map + fast-diff + + + * (glob) + + $ rbd info rbd_other/child@snap + rbd image 'child': + \tsize 512 MB in 128 objects (esc) + \torder 22 (4096 kB objects) (esc) + [^^]+ (re) + \tformat: 2 (esc) + \tfeatures: layering, exclusive-lock, object-map, fast-diff (esc) + \tflags: (esc) + \tcreate_timestamp:* (glob) + \tprotected: False (esc) + \tparent: rbd/bar@snap (esc) + \toverlap: 512 MB (esc) + $ rbd info rbd_other/child@snap --format json | python -mjson.tool | sed 's/,$/, /' + { + "block_name_prefix": "rbd_data.*", (glob) + "create_timestamp": "*", (glob) + "features": [ + "layering", + "exclusive-lock", + "object-map", + "fast-diff" + ], + "flags": [], + "format": 2, + "name": "child", + "object_size": 4194304, + "objects": 128, + "order": 22, + "parent": { + "image": "bar", + "overlap": 536870912, + "pool": "rbd", + "snapshot": "snap" + }, + "protected": "false", + "size": 536870912 + } + $ rbd info rbd_other/child@snap --format xml | xml_pp 2>&1 | grep -v '^new version at /usr/bin/xml_pp' + + child + 536870912 + 128 + 22 + 4194304 + rbd_data.* (glob) + 2 + + layering + exclusive-lock + object-map + fast-diff + + + * (glob) + false + + rbd + bar + snap + 536870912 + + + $ rbd info rbd_other/deep-flatten-child + rbd image 'deep-flatten-child': + \tsize 512 MB in 128 objects (esc) + \torder 22 (4096 kB objects) (esc) + [^^]+ (re) + \tformat: 2 (esc) + \tfeatures: layering, exclusive-lock, object-map, fast-diff, deep-flatten (esc) + \tflags: (esc) + \tcreate_timestamp:* (glob) + $ rbd info rbd_other/deep-flatten-child --format json | python -mjson.tool | sed 's/,$/, /' + { + "block_name_prefix": "rbd_data.*", (glob) + "create_timestamp": "*", (glob) + "features": [ + "layering", + "exclusive-lock", + "object-map", + "fast-diff", + "deep-flatten" + ], + "flags": [], + "format": 2, + "name": "deep-flatten-child", + "object_size": 4194304, + "objects": 128, + "order": 22, + "size": 536870912 + } + $ rbd info rbd_other/deep-flatten-child --format xml | xml_pp 2>&1 | grep -v '^new version at /usr/bin/xml_pp' + + deep-flatten-child + 536870912 + 128 + 22 + 4194304 + rbd_data.* (glob) + 2 + + layering + exclusive-lock + object-map + fast-diff + deep-flatten + + + * (glob) + + $ rbd info rbd_other/deep-flatten-child@snap + rbd image 'deep-flatten-child': + \tsize 512 MB in 128 objects (esc) + \torder 22 (4096 kB objects) (esc) + [^^]+ (re) + \tformat: 2 (esc) + \tfeatures: layering, exclusive-lock, object-map, fast-diff, deep-flatten (esc) + \tflags: (esc) + \tcreate_timestamp:* (glob) + \tprotected: False (esc) + $ rbd info rbd_other/deep-flatten-child@snap --format json | python -mjson.tool | sed 's/,$/, /' + { + "block_name_prefix": "rbd_data.*", (glob) + "create_timestamp": "*", (glob) + "features": [ + "layering", + "exclusive-lock", + "object-map", + "fast-diff", + "deep-flatten" + ], + "flags": [], + "format": 2, + "name": "deep-flatten-child", + "object_size": 4194304, + "objects": 128, + "order": 22, + "protected": "false", + "size": 536870912 + } + $ rbd info rbd_other/deep-flatten-child@snap --format xml | xml_pp 2>&1 | grep -v '^new version at /usr/bin/xml_pp' + + deep-flatten-child + 536870912 + 128 + 22 + 4194304 + rbd_data.* (glob) + 2 + + layering + exclusive-lock + object-map + fast-diff + deep-flatten + + + * (glob) + false + + $ rbd list + foo + quux + bar + baz + quuy + $ rbd list --format json | python -mjson.tool | sed 's/,$/, /' + [ + "foo", + "quux", + "bar", + "baz", + "quuy" + ] + $ rbd list --format xml | xml_pp 2>&1 | grep -v '^new version at /usr/bin/xml_pp' + + foo + quux + bar + baz + quuy + + $ rbd list -l + NAME SIZE PARENT FMT PROT LOCK + foo 1024M 1 + foo@snap 1024M 1 + quux 1024k 1 excl + bar 1024M 2 + bar@snap 512M 2 yes + bar@snap2 1024M 2 + baz 2048M 2 shr + quuy 2048M 2 + $ rbd list -l --format json | python -mjson.tool | sed 's/,$/, /' + [ + { + "format": 1, + "image": "foo", + "size": 1073741824 + }, + { + "format": 1, + "image": "foo", + "protected": "false", + "size": 1073741824, + "snapshot": "snap" + }, + { + "format": 1, + "image": "quux", + "lock_type": "exclusive", + "size": 1048576 + }, + { + "format": 2, + "image": "bar", + "size": 1073741824 + }, + { + "format": 2, + "image": "bar", + "protected": "true", + "size": 536870912, + "snapshot": "snap" + }, + { + "format": 2, + "image": "bar", + "protected": "false", + "size": 1073741824, + "snapshot": "snap2" + }, + { + "format": 2, + "image": "baz", + "lock_type": "shared", + "size": 2147483648 + }, + { + "format": 2, + "image": "quuy", + "size": 2147483648 + } + ] + $ rbd list -l --format xml | xml_pp 2>&1 | grep -v '^new version at /usr/bin/xml_pp' + + + foo + 1073741824 + 1 + + + foo + snap + 1073741824 + 1 + false + + + quux + 1048576 + 1 + exclusive + + + bar + 1073741824 + 2 + + + bar + snap + 536870912 + 2 + true + + + bar + snap2 + 1073741824 + 2 + false + + + baz + 2147483648 + 2 + shared + + + quuy + 2147483648 + 2 + + + $ rbd list rbd_other + child + deep-flatten-child + $ rbd list rbd_other --format json | python -mjson.tool | sed 's/,$/, /' + [ + "child", + "deep-flatten-child" + ] + $ rbd list rbd_other --format xml | xml_pp 2>&1 | grep -v '^new version at /usr/bin/xml_pp' + + child + deep-flatten-child + + $ rbd list rbd_other -l + NAME SIZE PARENT FMT PROT LOCK + child 512M 2 + child@snap 512M rbd/bar@snap 2 + deep-flatten-child 512M 2 + deep-flatten-child@snap 512M 2 + $ rbd list rbd_other -l --format json | python -mjson.tool | sed 's/,$/, /' + [ + { + "format": 2, + "image": "child", + "size": 536870912 + }, + { + "format": 2, + "image": "child", + "parent": { + "image": "bar", + "pool": "rbd", + "snapshot": "snap" + }, + "protected": "false", + "size": 536870912, + "snapshot": "snap" + }, + { + "format": 2, + "image": "deep-flatten-child", + "size": 536870912 + }, + { + "format": 2, + "image": "deep-flatten-child", + "protected": "false", + "size": 536870912, + "snapshot": "snap" + } + ] + $ rbd list rbd_other -l --format xml | xml_pp 2>&1 | grep -v '^new version at /usr/bin/xml_pp' + + + child + 536870912 + 2 + + + child + snap + 536870912 + + rbd + bar + snap + + 2 + false + + + deep-flatten-child + 536870912 + 2 + + + deep-flatten-child + snap + 536870912 + 2 + false + + + $ rbd lock list foo + $ rbd lock list foo --format json | python -mjson.tool | sed 's/,$/, /' + {} + $ rbd lock list foo --format xml | xml_pp 2>&1 | grep -v '^new version at /usr/bin/xml_pp' + + $ rbd lock list quux + There is 1 exclusive lock on this image. + Locker*ID*Address* (glob) + client.* id * (glob) + $ rbd lock list quux --format json | python -mjson.tool | sed 's/,$/, /' + { + "id": { + "address": "*", (glob) + "locker": "client.*" (glob) + } + } + $ rbd lock list quux --format xml | xml_pp 2>&1 | grep -v '^new version at /usr/bin/xml_pp' + + + client.* (glob) +
*
(glob) +
+
+ $ rbd lock list baz + There are 3 shared locks on this image. + Lock tag: tag + Locker*ID*Address* (glob) + client.*id[123].* (re) + client.*id[123].* (re) + client.*id[123].* (re) + $ rbd lock list baz --format json | python -mjson.tool | sed 's/,$/, /' + { + "id1": { + "address": "*", (glob) + "locker": "client.*" (glob) + }, + "id2": { + "address": "*", (glob) + "locker": "client.*" (glob) + }, + "id3": { + "address": "*", (glob) + "locker": "client.*" (glob) + } + } + $ rbd lock list baz --format xml | xml_pp 2>&1 | grep -v '^new version at /usr/bin/xml_pp' + + (glob) + client.* (glob) +
*
(glob) +
(glob) + (glob) + client.* (glob) +
*
(glob) +
(glob) + (glob) + client.* (glob) +
*
(glob) +
(glob) +
+ $ rbd snap list foo + SNAPID NAME SIZE TIMESTAMP + *snap*1024*MB* (glob) + $ rbd snap list foo --format json | python -mjson.tool | sed 's/,$/, /' + [ + { + "id": *, (glob) + "name": "snap", + "size": 1073741824, + "timestamp": "" + } + ] + $ rbd snap list foo --format xml | xml_pp 2>&1 | grep -v '^new version at /usr/bin/xml_pp' + + + * (glob) + snap + 1073741824 + + + + $ rbd snap list bar + SNAPID NAME SIZE TIMESTAMP + *snap*512*MB* (glob) + *snap2*1024*MB* (glob) + $ rbd snap list bar --format json | python -mjson.tool | sed 's/,$/, /' + [ + { + "id": *, (glob) + "name": "snap", + "size": 536870912, + "timestamp": * (glob) + }, + { + "id": *, (glob) + "name": "snap2", + "size": 1073741824, + "timestamp": * (glob) + } + ] + $ rbd snap list bar --format xml | xml_pp 2>&1 | grep -v '^new version at /usr/bin/xml_pp' + + + * (glob) + snap + 536870912 + * (glob) + + + * (glob) + snap2 + 1073741824 + * (glob) + + + $ rbd snap list baz + $ rbd snap list baz --format json | python -mjson.tool | sed 's/,$/, /' + [] + $ rbd snap list baz --format xml | xml_pp 2>&1 | grep -v '^new version at /usr/bin/xml_pp' + + $ rbd snap list rbd_other/child + SNAPID NAME SIZE TIMESTAMP + *snap*512*MB* (glob) + $ rbd snap list rbd_other/child --format json | python -mjson.tool | sed 's/,$/, /' + [ + { + "id": *, (glob) + "name": "snap", + "size": 536870912, + "timestamp": * (glob) + } + ] + $ rbd snap list rbd_other/child --format xml | xml_pp 2>&1 | grep -v '^new version at /usr/bin/xml_pp' + + + * (glob) + snap + 536870912 + * (glob) + + + $ rbd disk-usage --pool rbd_other 2>/dev/null + NAME PROVISIONED USED + child@snap 512M 0 + child 512M 4096k + deep-flatten-child@snap 512M 0 + deep-flatten-child 512M 0 + 1024M 4096k + $ rbd disk-usage --pool rbd_other --format json | python -mjson.tool | sed 's/,$/, /' + { + "images": [ + { + "name": "child", + "provisioned_size": 536870912, + "snapshot": "snap", + "used_size": 0 + }, + { + "name": "child", + "provisioned_size": 536870912, + "used_size": 4194304 + }, + { + "name": "deep-flatten-child", + "provisioned_size": 536870912, + "snapshot": "snap", + "used_size": 0 + }, + { + "name": "deep-flatten-child", + "provisioned_size": 536870912, + "used_size": 0 + } + ], + "total_provisioned_size": 1073741824, + "total_used_size": 4194304 + } + $ rbd disk-usage --pool rbd_other --format xml | xml_pp 2>&1 | grep -v '^new version at /usr/bin/xml_pp' + + + + child + snap + 536870912 + 0 + + + child + 536870912 + 4194304 + + + deep-flatten-child + snap + 536870912 + 0 + + + deep-flatten-child + 536870912 + 0 + + + 1073741824 + 4194304 + + +# cleanup + $ rbd snap remove --no-progress rbd_other/deep-flatten-child@snap + $ rbd snap remove --no-progress rbd_other/child@snap + $ rbd snap unprotect bar@snap + $ rbd snap purge bar 2> /dev/null + $ rbd snap purge foo 2> /dev/null + $ rbd rm rbd_other/deep-flatten-child 2> /dev/null + $ rbd rm rbd_other/child 2> /dev/null + $ rbd rm foo 2> /dev/null + $ rbd rm bar 2> /dev/null + $ rbd rm quux 2> /dev/null + $ rbd rm quuy 2> /dev/null + $ rbd rm baz 2> /dev/null + $ ceph osd pool delete rbd_other rbd_other --yes-i-really-really-mean-it + pool 'rbd_other' removed