block: add support for encryption secrets in block I/O tests
The LUKS block driver tests will require the ability to specify encryption secrets with block devices. This requires using the --object argument to qemu-img/qemu-io to create a 'secret' object. When the IMGKEYSECRET env variable is set, it provides the password to be associated with a secret called 'keysec0' The _qemu_img_wrapper function isn't modified as that needs to cope with differing syntax for subcommands, so can't be made to use the image opts syntax unconditionally. Signed-off-by: Daniel P. Berrange <berrange@redhat.com> Message-id: 1462896689-18450-3-git-send-email-berrange@redhat.com Signed-off-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
		
							parent
							
								
									076003f526
								
							
						
					
					
						commit
						b7e875b2f9
					
				@ -53,6 +53,7 @@ export QEMU_IO_OPTIONS=""
 | 
			
		||||
export CACHEMODE_IS_DEFAULT=true
 | 
			
		||||
export QEMU_OPTIONS="-nodefaults"
 | 
			
		||||
export VALGRIND_QEMU=
 | 
			
		||||
export IMGKEYSECRET=
 | 
			
		||||
export IMGOPTSSYNTAX=false
 | 
			
		||||
 | 
			
		||||
for r
 | 
			
		||||
 | 
			
		||||
@ -126,6 +126,9 @@ _qemu_io_wrapper()
 | 
			
		||||
    local QEMU_IO_ARGS="$QEMU_IO_OPTIONS"
 | 
			
		||||
    if [ "$IMGOPTSSYNTAX" = "true" ]; then
 | 
			
		||||
        QEMU_IO_ARGS="--image-opts $QEMU_IO_ARGS"
 | 
			
		||||
        if [ -n "$IMGKEYSECRET" ]; then
 | 
			
		||||
            QEMU_IO_ARGS="--object secret,id=keysec0,data=$IMGKEYSECRET $QEMU_IO_ARGS"
 | 
			
		||||
        fi
 | 
			
		||||
    fi
 | 
			
		||||
    local RETVAL
 | 
			
		||||
    (
 | 
			
		||||
@ -161,6 +164,9 @@ export QEMU_NBD=_qemu_nbd_wrapper
 | 
			
		||||
QEMU_IMG_EXTRA_ARGS=
 | 
			
		||||
if [ "$IMGOPTSSYNTAX" = "true" ]; then
 | 
			
		||||
    QEMU_IMG_EXTRA_ARGS="--image-opts $QEMU_IMG_EXTRA_ARGS"
 | 
			
		||||
    if [ -n "$IMGKEYSECRET" ]; then
 | 
			
		||||
        QEMU_IMG_EXTRA_ARGS="--object secret,id=keysec0,data=$IMGKEYSECRET $QEMU_IMG_EXTRA_ARGS"
 | 
			
		||||
    fi
 | 
			
		||||
fi
 | 
			
		||||
export QEMU_IMG_EXTRA_ARGS
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -98,7 +98,8 @@ _filter_img_create()
 | 
			
		||||
        -e "s# block_state_zero=\\(on\\|off\\)##g" \
 | 
			
		||||
        -e "s# log_size=[0-9]\\+##g" \
 | 
			
		||||
        -e "s/archipelago:a/TEST_DIR\//g" \
 | 
			
		||||
        -e "s# refcount_bits=[0-9]\\+##g"
 | 
			
		||||
        -e "s# refcount_bits=[0-9]\\+##g" \
 | 
			
		||||
        -e "s# key-secret=[a-zA-Z0-9]\\+##g"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
_filter_img_info()
 | 
			
		||||
 | 
			
		||||
@ -129,6 +129,7 @@ _make_test_img()
 | 
			
		||||
    local img_name=""
 | 
			
		||||
    local use_backing=0
 | 
			
		||||
    local backing_file=""
 | 
			
		||||
    local object_options=""
 | 
			
		||||
 | 
			
		||||
    if [ -n "$TEST_IMG_FILE" ]; then
 | 
			
		||||
        img_name=$TEST_IMG_FILE
 | 
			
		||||
@ -139,6 +140,10 @@ _make_test_img()
 | 
			
		||||
    if [ -n "$IMGOPTS" ]; then
 | 
			
		||||
        optstr=$(_optstr_add "$optstr" "$IMGOPTS")
 | 
			
		||||
    fi
 | 
			
		||||
    if [ -n "$IMGKEYSECRET" ]; then
 | 
			
		||||
        object_options="--object secret,id=keysec0,data=$IMGKEYSECRET"
 | 
			
		||||
        optstr=$(_optstr_add "$optstr" "key-secret=keysec0")
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    if [ "$1" = "-b" ]; then
 | 
			
		||||
        use_backing=1
 | 
			
		||||
@ -156,9 +161,9 @@ _make_test_img()
 | 
			
		||||
    # XXX(hch): have global image options?
 | 
			
		||||
    (
 | 
			
		||||
     if [ $use_backing = 1 ]; then
 | 
			
		||||
        $QEMU_IMG create -f $IMGFMT $extra_img_options -b "$backing_file" "$img_name" $image_size 2>&1
 | 
			
		||||
        $QEMU_IMG create $object_options -f $IMGFMT $extra_img_options -b "$backing_file" "$img_name" $image_size 2>&1
 | 
			
		||||
     else
 | 
			
		||||
        $QEMU_IMG create -f $IMGFMT $extra_img_options "$img_name" $image_size 2>&1
 | 
			
		||||
        $QEMU_IMG create $object_options -f $IMGFMT $extra_img_options "$img_name" $image_size 2>&1
 | 
			
		||||
     fi
 | 
			
		||||
    ) | _filter_img_create
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user