From 252481411f3b553424f6fcf1f0ff7a0a41f2e598 Mon Sep 17 00:00:00 2001 From: Daniel Caires Date: Fri, 28 Apr 2023 11:22:28 -0300 Subject: [PATCH] Add --headless argument in Parser.py Allow user to choose a headless start for the VMs Story: 2005051 Task: 47899 Change-Id: Iec6ab9ea2a2b0544f99cd6a4028173706a9c4896 Signed-off-by: Daniel Caires --- virtualbox/pybox/Parser.py | 8 ++++++++ virtualbox/pybox/helper/vboxmanage.py | 8 ++++++-- virtualbox/pybox/install_vbox.py | 4 ++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/virtualbox/pybox/Parser.py b/virtualbox/pybox/Parser.py index a7f3a78..adefed7 100644 --- a/virtualbox/pybox/Parser.py +++ b/virtualbox/pybox/Parser.py @@ -414,3 +414,11 @@ def parse_other(parser: ArgumentParser): Turn on host i/o caching """, action='store_true') + parser.add_argument("--headless", help= + """ + Instructs VirtualBox to start virtual machines + without a graphical user interface (GUI). + Especially useful in non-GUI systems + """, + action='store_true') + return parser diff --git a/virtualbox/pybox/helper/vboxmanage.py b/virtualbox/pybox/helper/vboxmanage.py index 3389cc8..75524be 100644 --- a/virtualbox/pybox/helper/vboxmanage.py +++ b/virtualbox/pybox/helper/vboxmanage.py @@ -792,7 +792,7 @@ def vboxmanage_createmedium(hostname=None, disk_list=None, vbox_home_dir="/home" time.sleep(5) -def vboxmanage_startvm(hostname=None, force=False): +def vboxmanage_startvm(hostname=None, headless=False, force=False): """ This allows you to power on a VM. """ @@ -805,12 +805,16 @@ def vboxmanage_startvm(hostname=None, force=False): else: running_vms = [] + interface_type = "gui" + if headless: + interface_type = "headless" + if hostname.encode("utf-8") in running_vms: LOG.info("Host %s is already started", hostname) else: LOG.info("Powering on VM %s", hostname) result = subprocess.check_output( - ["vboxmanage", "startvm", hostname], stderr=subprocess.STDOUT + ["vboxmanage", "startvm", hostname, "--type", interface_type], stderr=subprocess.STDOUT ) LOG.info(result) diff --git a/virtualbox/pybox/install_vbox.py b/virtualbox/pybox/install_vbox.py index 323a0ad..3ca5fd3 100755 --- a/virtualbox/pybox/install_vbox.py +++ b/virtualbox/pybox/install_vbox.py @@ -898,7 +898,7 @@ def stage_install_controller0(): ctrlr0 = V_BOX_OPTIONS.labname + "-controller-0" assert ctrlr0 in node_list, "controller-0 not in vm list. Stopping installation." - vboxmanage.vboxmanage_startvm(ctrlr0) + vboxmanage.vboxmanage_startvm(ctrlr0, V_BOX_OPTIONS.headless) sock = serial.connect(ctrlr0, 10000, getpass.getuser()) cont0_stream = streamexpect.wrap(sock, echo=True, close_stream=False) @@ -1261,7 +1261,7 @@ def stage_install_nodes(ssh_client): LOG.info("#### Powered off VMs: %s", powered_off) for virtual_machine in powered_off: LOG.info("#### Powering on VM: %s", virtual_machine) - vboxmanage.vboxmanage_startvm(virtual_machine, force=True) + vboxmanage.vboxmanage_startvm(virtual_machine, V_BOX_OPTIONS.headless, force=True) LOG.info("Give VM 20s to boot.") time.sleep(20)