WIP:aryan/build #2

Draft
chopper wants to merge 7 commits from aryan/build into main
Showing only changes of commit 4b2ab6794c - Show all commits

View file

@ -1,24 +1,45 @@
from subprocess import Popen, PIPE
import os
from pathlib import Path
import argparse
user = os.getlogin()
image = f"/home/{user}/safe/debian.qcow2"
def vm_start(nographic=False):
home = Path.home()
user = os.getlogin()
Outdated
Review

Documentation suggests using getuser

Documentation suggests using [getuser](https://docs.python.org/3/library/getpass.html#getpass.getuser)
image_src = "var/lib/debian.qcow2"
vm_storage_location = f"/home/arvp/virtual_machines/{user}.qcow2"
image_dest = f"{home}/debian.qcow2"
initialize = [
"qemu-system-x86_64",
"-enable-kvm",
"-m", "2G", # ram allocation
Outdated
Review

Isn't this far too low? It should also be adjustable via argparse

Isn't this far too low? It should also be adjustable via argparse
"-nic", "user,hostfwd=tcp::5555-:22", #forward port 5555 in host to port 22 in vm
Outdated
Review

This port should be configurable, otherwise we can't run several vms at the same time. Best put it in argparse

This port should be configurable, otherwise we can't run several vms at the same time. Best put it in argparse
"-drive", "file=%s,media=disk,if=virtio" % image_dest,
initialize = [
"qemu-system-x86_64",
"-enable-kvm",
"-m", "2G", # ram allocation
"-nic", "user,hostfwd=tcp::5555-:22", #forward port 5555 in host to port 22 in vm
"-drive", "file=%s,media=disk,if=virtio" % image,
# "-nographic",
# "-serial", "mon:stdio",
Outdated
Review

What are these doing here?

What are these doing here?
# "-nographic",
# "-serial", "mon:stdio",
"-vga", "virtio", # i think this fixes resolution but idk yet
"-display", "sdl",
Review

Say I enable nographic. It seems like this display arg will conflict. Instead, it'd be better for these to be the else branch on the conditional below

Say I enable `nographic`. It seems like this display arg will conflict. Instead, it'd be better for these to be the else branch on the conditional below
]
"-vga", "virtio", # i think this fixes resolution but idk yet
"-display", "sdl",
]
if nographic==True:
Outdated
Review

==True O.O

if nographic:

`==True` O.O `if nographic:`
initialize.append("-nographic")
initialize.append("-serial")
initialize.append("mon:stdio")
#Popen(["cp", "/home/chopper/safe/debian.qcow2", f"/home/{user}/nnnnndebian.qcow2"]) #copy the base image to a directory with everyones virtual machines.
Popen(initialize)
#copy the base image to a directory with everyones virtual machines. -n should not overwrite any existing vms.
#subprocess.run(["cp", "-n", image_src, vm_storage_location])
Popen(initialize)
Review

You'll want some sort of error handling here. What if the vm fails to start? Check the returncode and such on a .communicate()

You'll want some sort of error handling here. What if the vm fails to start? Check the returncode and such on a `.communicate()`
if __name__ == "__main__":
parser = argparse.ArgumentParser(
description="ARVP Onboarding Virtual Machine Launcher! Don't use --nographic if you are in a tmux session. it might explode :3")
parser.add_argument(
"--nographic",
action="store_true",
help="Run QEMU in nographic mode (runs the VM embedded in your terminal instead of opening a new window)",)
Outdated
Review

Did you use black to format this? Looks a bit odd

Did you use `black` to format this? Looks a bit odd
args = parser.parse_args()
vm_start(nographic=args.nographic)