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):
|
||||
"""Set the defaults for current version of QEMU."""
|
||||
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_version = basevm.get_qemu_version(qemu_path)
|
||||
if qemu_version < QEMU_AARCH64_MIN_VERSION:
|
||||
|
@ -23,7 +23,7 @@ from qemu.accel import kvm_available
|
||||
from qemu.machine import QEMUMachine
|
||||
import subprocess
|
||||
import hashlib
|
||||
import optparse
|
||||
import argparse
|
||||
import atexit
|
||||
import tempfile
|
||||
import shutil
|
||||
@ -556,54 +556,57 @@ def parse_args(vmcls):
|
||||
else:
|
||||
return 1
|
||||
|
||||
parser = optparse.OptionParser(
|
||||
description="VM test utility. Exit codes: "
|
||||
"0 = success, "
|
||||
"1 = command line error, "
|
||||
"2 = environment initialization failed, "
|
||||
"3 = test command failed")
|
||||
parser.add_option("--debug", "-D", action="store_true",
|
||||
help="enable debug output")
|
||||
parser.add_option("--image", "-i", default="%s.img" % vmcls.name,
|
||||
help="image file name")
|
||||
parser.add_option("--force", "-f", action="store_true",
|
||||
help="force build image even if image exists")
|
||||
parser.add_option("--jobs", type=int, default=get_default_jobs(),
|
||||
help="number of virtual CPUs")
|
||||
parser.add_option("--verbose", "-V", action="store_true",
|
||||
help="Pass V=1 to builds within the guest")
|
||||
parser.add_option("--build-image", "-b", action="store_true",
|
||||
help="build image")
|
||||
parser.add_option("--build-qemu",
|
||||
help="build QEMU from source in guest")
|
||||
parser.add_option("--build-target",
|
||||
help="QEMU build target", default="check")
|
||||
parser.add_option("--build-path", default=None,
|
||||
help="Path of build directory, "\
|
||||
"for using build tree QEMU binary. ")
|
||||
parser.add_option("--interactive", "-I", action="store_true",
|
||||
help="Interactively run command")
|
||||
parser.add_option("--snapshot", "-s", action="store_true",
|
||||
help="run tests with a snapshot")
|
||||
parser.add_option("--genisoimage", default="genisoimage",
|
||||
help="iso imaging tool")
|
||||
parser.add_option("--config", "-c", default=None,
|
||||
help="Provide config yaml for configuration. "\
|
||||
"See config_example.yaml for example.")
|
||||
parser.add_option("--efi-aarch64",
|
||||
default="/usr/share/qemu-efi-aarch64/QEMU_EFI.fd",
|
||||
help="Path to efi image for aarch64 VMs.")
|
||||
parser.add_option("--log-console", action="store_true",
|
||||
help="Log console to file.")
|
||||
parser.disable_interspersed_args()
|
||||
parser = argparse.ArgumentParser(
|
||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
||||
description="Utility for provisioning VMs and running builds",
|
||||
epilog="""Remaining arguments are passed to the command.
|
||||
Exit codes: 0 = success, 1 = command line error,
|
||||
2 = environment initialization failed,
|
||||
3 = test command failed""")
|
||||
parser.add_argument("--debug", "-D", action="store_true",
|
||||
help="enable debug output")
|
||||
parser.add_argument("--image", "-i", default="%s.img" % vmcls.name,
|
||||
help="image file name")
|
||||
parser.add_argument("--force", "-f", action="store_true",
|
||||
help="force build image even if image exists")
|
||||
parser.add_argument("--jobs", type=int, default=get_default_jobs(),
|
||||
help="number of virtual CPUs")
|
||||
parser.add_argument("--verbose", "-V", action="store_true",
|
||||
help="Pass V=1 to builds within the guest")
|
||||
parser.add_argument("--build-image", "-b", action="store_true",
|
||||
help="build image")
|
||||
parser.add_argument("--build-qemu",
|
||||
help="build QEMU from source in guest")
|
||||
parser.add_argument("--build-target",
|
||||
help="QEMU build target", default="check")
|
||||
parser.add_argument("--build-path", default=None,
|
||||
help="Path of build directory, "\
|
||||
"for using build tree QEMU binary. ")
|
||||
parser.add_argument("--interactive", "-I", action="store_true",
|
||||
help="Interactively run command")
|
||||
parser.add_argument("--snapshot", "-s", action="store_true",
|
||||
help="run tests with a snapshot")
|
||||
parser.add_argument("--genisoimage", default="genisoimage",
|
||||
help="iso imaging tool")
|
||||
parser.add_argument("--config", "-c", default=None,
|
||||
help="Provide config yaml for configuration. "\
|
||||
"See config_example.yaml for example.")
|
||||
parser.add_argument("--efi-aarch64",
|
||||
default="/usr/share/qemu-efi-aarch64/QEMU_EFI.fd",
|
||||
help="Path to efi image for aarch64 VMs.")
|
||||
parser.add_argument("--log-console", action="store_true",
|
||||
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()
|
||||
|
||||
def main(vmcls, config=None):
|
||||
try:
|
||||
if config == None:
|
||||
config = DEFAULT_CONFIG
|
||||
args, argv = parse_args(vmcls)
|
||||
if not argv and not args.build_qemu and not args.build_image:
|
||||
args = parse_args(vmcls)
|
||||
if not args.commands and not args.build_qemu and not args.build_image:
|
||||
print("Nothing to do?")
|
||||
return 1
|
||||
config = parse_config(config, args)
|
||||
@ -619,12 +622,12 @@ def main(vmcls, config=None):
|
||||
if args.build_qemu:
|
||||
vm.add_source_dir(args.build_qemu)
|
||||
cmd = [vm.BUILD_SCRIPT.format(
|
||||
configure_opts = " ".join(argv),
|
||||
configure_opts = " ".join(args.commands),
|
||||
jobs=int(args.jobs),
|
||||
target=args.build_target,
|
||||
verbose = "V=1" if args.verbose else "")]
|
||||
else:
|
||||
cmd = argv
|
||||
cmd = args.commands
|
||||
img = args.image
|
||||
if args.snapshot:
|
||||
img += ",snapshot=on"
|
||||
|
Loading…
Reference in New Issue
Block a user