tests/vm: switch from optsparse to argparse
optparse has been deprecated since version 3.2 and argparse is the blessed replacement. Take the opportunity to enhance our help output showing defaults when called. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Reviewed-by: Robert Foley <robert.foley@linaro.org> Message-Id: <20200701135652.1366-15-alex.bennee@linaro.org>
This commit is contained in:
parent
ff14ab0c13
commit
2fea3a125d
@ -46,7 +46,7 @@ def get_config_defaults(vmcls, default_config):
|
|||||||
def aarch_get_config_defaults(vmcls):
|
def aarch_get_config_defaults(vmcls):
|
||||||
"""Set the defaults for current version of QEMU."""
|
"""Set the defaults for current version of QEMU."""
|
||||||
config = CURRENT_CONFIG
|
config = CURRENT_CONFIG
|
||||||
args, argv = basevm.parse_args(vmcls)
|
args = basevm.parse_args(vmcls)
|
||||||
qemu_path = basevm.get_qemu_path(vmcls.arch, args.build_path)
|
qemu_path = basevm.get_qemu_path(vmcls.arch, args.build_path)
|
||||||
qemu_version = basevm.get_qemu_version(qemu_path)
|
qemu_version = basevm.get_qemu_version(qemu_path)
|
||||||
if qemu_version < QEMU_AARCH64_MIN_VERSION:
|
if qemu_version < QEMU_AARCH64_MIN_VERSION:
|
||||||
|
@ -23,7 +23,7 @@ from qemu.accel import kvm_available
|
|||||||
from qemu.machine import QEMUMachine
|
from qemu.machine import QEMUMachine
|
||||||
import subprocess
|
import subprocess
|
||||||
import hashlib
|
import hashlib
|
||||||
import optparse
|
import argparse
|
||||||
import atexit
|
import atexit
|
||||||
import tempfile
|
import tempfile
|
||||||
import shutil
|
import shutil
|
||||||
@ -556,54 +556,57 @@ def parse_args(vmcls):
|
|||||||
else:
|
else:
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
parser = optparse.OptionParser(
|
parser = argparse.ArgumentParser(
|
||||||
description="VM test utility. Exit codes: "
|
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
||||||
"0 = success, "
|
description="Utility for provisioning VMs and running builds",
|
||||||
"1 = command line error, "
|
epilog="""Remaining arguments are passed to the command.
|
||||||
"2 = environment initialization failed, "
|
Exit codes: 0 = success, 1 = command line error,
|
||||||
"3 = test command failed")
|
2 = environment initialization failed,
|
||||||
parser.add_option("--debug", "-D", action="store_true",
|
3 = test command failed""")
|
||||||
help="enable debug output")
|
parser.add_argument("--debug", "-D", action="store_true",
|
||||||
parser.add_option("--image", "-i", default="%s.img" % vmcls.name,
|
help="enable debug output")
|
||||||
help="image file name")
|
parser.add_argument("--image", "-i", default="%s.img" % vmcls.name,
|
||||||
parser.add_option("--force", "-f", action="store_true",
|
help="image file name")
|
||||||
help="force build image even if image exists")
|
parser.add_argument("--force", "-f", action="store_true",
|
||||||
parser.add_option("--jobs", type=int, default=get_default_jobs(),
|
help="force build image even if image exists")
|
||||||
help="number of virtual CPUs")
|
parser.add_argument("--jobs", type=int, default=get_default_jobs(),
|
||||||
parser.add_option("--verbose", "-V", action="store_true",
|
help="number of virtual CPUs")
|
||||||
help="Pass V=1 to builds within the guest")
|
parser.add_argument("--verbose", "-V", action="store_true",
|
||||||
parser.add_option("--build-image", "-b", action="store_true",
|
help="Pass V=1 to builds within the guest")
|
||||||
help="build image")
|
parser.add_argument("--build-image", "-b", action="store_true",
|
||||||
parser.add_option("--build-qemu",
|
help="build image")
|
||||||
help="build QEMU from source in guest")
|
parser.add_argument("--build-qemu",
|
||||||
parser.add_option("--build-target",
|
help="build QEMU from source in guest")
|
||||||
help="QEMU build target", default="check")
|
parser.add_argument("--build-target",
|
||||||
parser.add_option("--build-path", default=None,
|
help="QEMU build target", default="check")
|
||||||
help="Path of build directory, "\
|
parser.add_argument("--build-path", default=None,
|
||||||
"for using build tree QEMU binary. ")
|
help="Path of build directory, "\
|
||||||
parser.add_option("--interactive", "-I", action="store_true",
|
"for using build tree QEMU binary. ")
|
||||||
help="Interactively run command")
|
parser.add_argument("--interactive", "-I", action="store_true",
|
||||||
parser.add_option("--snapshot", "-s", action="store_true",
|
help="Interactively run command")
|
||||||
help="run tests with a snapshot")
|
parser.add_argument("--snapshot", "-s", action="store_true",
|
||||||
parser.add_option("--genisoimage", default="genisoimage",
|
help="run tests with a snapshot")
|
||||||
help="iso imaging tool")
|
parser.add_argument("--genisoimage", default="genisoimage",
|
||||||
parser.add_option("--config", "-c", default=None,
|
help="iso imaging tool")
|
||||||
help="Provide config yaml for configuration. "\
|
parser.add_argument("--config", "-c", default=None,
|
||||||
"See config_example.yaml for example.")
|
help="Provide config yaml for configuration. "\
|
||||||
parser.add_option("--efi-aarch64",
|
"See config_example.yaml for example.")
|
||||||
default="/usr/share/qemu-efi-aarch64/QEMU_EFI.fd",
|
parser.add_argument("--efi-aarch64",
|
||||||
help="Path to efi image for aarch64 VMs.")
|
default="/usr/share/qemu-efi-aarch64/QEMU_EFI.fd",
|
||||||
parser.add_option("--log-console", action="store_true",
|
help="Path to efi image for aarch64 VMs.")
|
||||||
help="Log console to file.")
|
parser.add_argument("--log-console", action="store_true",
|
||||||
parser.disable_interspersed_args()
|
help="Log console to file.")
|
||||||
|
parser.add_argument("commands", nargs="*", help="""Remaining
|
||||||
|
commands after -- are passed to command inside the VM""")
|
||||||
|
|
||||||
return parser.parse_args()
|
return parser.parse_args()
|
||||||
|
|
||||||
def main(vmcls, config=None):
|
def main(vmcls, config=None):
|
||||||
try:
|
try:
|
||||||
if config == None:
|
if config == None:
|
||||||
config = DEFAULT_CONFIG
|
config = DEFAULT_CONFIG
|
||||||
args, argv = parse_args(vmcls)
|
args = parse_args(vmcls)
|
||||||
if not argv and not args.build_qemu and not args.build_image:
|
if not args.commands and not args.build_qemu and not args.build_image:
|
||||||
print("Nothing to do?")
|
print("Nothing to do?")
|
||||||
return 1
|
return 1
|
||||||
config = parse_config(config, args)
|
config = parse_config(config, args)
|
||||||
@ -619,12 +622,12 @@ def main(vmcls, config=None):
|
|||||||
if args.build_qemu:
|
if args.build_qemu:
|
||||||
vm.add_source_dir(args.build_qemu)
|
vm.add_source_dir(args.build_qemu)
|
||||||
cmd = [vm.BUILD_SCRIPT.format(
|
cmd = [vm.BUILD_SCRIPT.format(
|
||||||
configure_opts = " ".join(argv),
|
configure_opts = " ".join(args.commands),
|
||||||
jobs=int(args.jobs),
|
jobs=int(args.jobs),
|
||||||
target=args.build_target,
|
target=args.build_target,
|
||||||
verbose = "V=1" if args.verbose else "")]
|
verbose = "V=1" if args.verbose else "")]
|
||||||
else:
|
else:
|
||||||
cmd = argv
|
cmd = args.commands
|
||||||
img = args.image
|
img = args.image
|
||||||
if args.snapshot:
|
if args.snapshot:
|
||||||
img += ",snapshot=on"
|
img += ",snapshot=on"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user