iotests.py: Add (verify|has)_working_luks()

Similar to _require_working_luks for bash tests, these functions can be
used to check whether our luks driver can actually create images.

Signed-off-by: Max Reitz <mreitz@redhat.com>
Message-Id: <20200625125548.870061-6-mreitz@redhat.com>
Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
This commit is contained in:
Max Reitz 2020-06-25 14:55:34 +02:00
parent d849acab41
commit 6649f4bd29
1 changed files with 39 additions and 0 deletions

View File

@ -1052,6 +1052,45 @@ def verify_quorum():
if not supports_quorum():
notrun('quorum support missing')
def has_working_luks() -> Tuple[bool, str]:
"""
Check whether our LUKS driver can actually create images
(this extends to LUKS encryption for qcow2).
If not, return the reason why.
"""
img_file = f'{test_dir}/luks-test.luks'
(output, status) = \
qemu_img_pipe_and_status('create', '-f', 'luks',
'--object', luks_default_secret_object,
'-o', luks_default_key_secret_opt,
'-o', 'iter-time=10',
img_file, '1G')
try:
os.remove(img_file)
except OSError:
pass
if status != 0:
reason = output
for line in output.splitlines():
if img_file + ':' in line:
reason = line.split(img_file + ':', 1)[1].strip()
break
return (False, reason)
else:
return (True, '')
def verify_working_luks():
"""
Skip test suite if LUKS does not work
"""
(working, reason) = has_working_luks()
if not working:
notrun(reason)
def qemu_pipe(*args):
"""
Run qemu with an option to print something and exit (e.g. a help option).