qemu-img: allow qemu-img measure --object without a filename

In most qemu-img sub-commands the --object option only makes sense when
there is a filename.  qemu-img measure is an exception because objects
may be referenced from the image creation options instead of an existing
image file.  Allow --object without a filename.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
Message-Id: <20200221112522.1497712-4-stefanha@redhat.com>
Signed-off-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
Stefan Hajnoczi 2020-02-21 11:25:21 +00:00 committed by Max Reitz
parent a9da6e49d8
commit c3673dcf08
4 changed files with 11 additions and 13 deletions

View File

@ -4932,10 +4932,8 @@ static int img_measure(int argc, char **argv)
filename = argv[optind]; filename = argv[optind];
} }
if (!filename && if (!filename && (image_opts || fmt || snapshot_name || sn_opts)) {
(object_opts || image_opts || fmt || snapshot_name || sn_opts)) { error_report("--image-opts, -f, and -l require a filename argument.");
error_report("--object, --image-opts, -f, and -l "
"require a filename argument.");
goto out; goto out;
} }
if (filename && img_size != UINT64_MAX) { if (filename && img_size != UINT64_MAX) {

View File

@ -50,7 +50,7 @@ _make_test_img 1G
$QEMU_IMG measure # missing arguments $QEMU_IMG measure # missing arguments
$QEMU_IMG measure --size 2G "$TEST_IMG" # only one allowed $QEMU_IMG measure --size 2G "$TEST_IMG" # only one allowed
$QEMU_IMG measure "$TEST_IMG" a # only one filename allowed $QEMU_IMG measure "$TEST_IMG" a # only one filename allowed
$QEMU_IMG measure --object secret,id=sec0,data=MTIzNDU2,format=base64 # missing filename $QEMU_IMG measure --object secret,id=sec0,data=MTIzNDU2,format=base64 # size or filename needed
$QEMU_IMG measure --image-opts # missing filename $QEMU_IMG measure --image-opts # missing filename
$QEMU_IMG measure -f qcow2 # missing filename $QEMU_IMG measure -f qcow2 # missing filename
$QEMU_IMG measure -l snap1 # missing filename $QEMU_IMG measure -l snap1 # missing filename

View File

@ -5,10 +5,10 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1073741824
qemu-img: Either --size N or one filename must be specified. qemu-img: Either --size N or one filename must be specified.
qemu-img: --size N cannot be used together with a filename. qemu-img: --size N cannot be used together with a filename.
qemu-img: At most one filename argument is allowed. qemu-img: At most one filename argument is allowed.
qemu-img: --object, --image-opts, -f, and -l require a filename argument. qemu-img: Either --size N or one filename must be specified.
qemu-img: --object, --image-opts, -f, and -l require a filename argument. qemu-img: --image-opts, -f, and -l require a filename argument.
qemu-img: --object, --image-opts, -f, and -l require a filename argument. qemu-img: --image-opts, -f, and -l require a filename argument.
qemu-img: --object, --image-opts, -f, and -l require a filename argument. qemu-img: --image-opts, -f, and -l require a filename argument.
qemu-img: Invalid option list: , qemu-img: Invalid option list: ,
qemu-img: Invalid parameter 'snapshot.foo' qemu-img: Invalid parameter 'snapshot.foo'
qemu-img: Failed in parsing snapshot param 'snapshot.foo' qemu-img: Failed in parsing snapshot param 'snapshot.foo'

View File

@ -5,10 +5,10 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1073741824
qemu-img: Either --size N or one filename must be specified. qemu-img: Either --size N or one filename must be specified.
qemu-img: --size N cannot be used together with a filename. qemu-img: --size N cannot be used together with a filename.
qemu-img: At most one filename argument is allowed. qemu-img: At most one filename argument is allowed.
qemu-img: --object, --image-opts, -f, and -l require a filename argument. qemu-img: Either --size N or one filename must be specified.
qemu-img: --object, --image-opts, -f, and -l require a filename argument. qemu-img: --image-opts, -f, and -l require a filename argument.
qemu-img: --object, --image-opts, -f, and -l require a filename argument. qemu-img: --image-opts, -f, and -l require a filename argument.
qemu-img: --object, --image-opts, -f, and -l require a filename argument. qemu-img: --image-opts, -f, and -l require a filename argument.
qemu-img: Invalid option list: , qemu-img: Invalid option list: ,
qemu-img: Invalid parameter 'snapshot.foo' qemu-img: Invalid parameter 'snapshot.foo'
qemu-img: Failed in parsing snapshot param 'snapshot.foo' qemu-img: Failed in parsing snapshot param 'snapshot.foo'