Message ID | 20191028073441.6448-2-philmd@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | tests/acceptance: Queue for 4.2 | expand |
On Mon, Oct 28, 2019 at 08:34:16AM +0100, Philippe Mathieu-Daudé wrote: > From: Philippe Mathieu-Daudé <f4bug@amsat.org> > > Currently the QEMU Python module limits the QEMUMachine class to > use the first serial console. > > Some machines/guest might use another console than the first one as > the 'boot console'. For example the Raspberry Pi uses the second > (AUX) console. > > To be able to use the Nth console as default, we simply need to > connect all the N - 1 consoles to the null chardev. > > Add an index argument, so we can use a specific serial console as > default. > > Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> > --- > v2: > - renamed 'console_index', added docstring (Cleber) > - reworded description (pm215) > --- > python/qemu/machine.py | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/python/qemu/machine.py b/python/qemu/machine.py > index 128a3d1dc2..6fa68fa35a 100644 > --- a/python/qemu/machine.py > +++ b/python/qemu/machine.py > @@ -235,6 +235,8 @@ class QEMUMachine(object): > '-display', 'none', '-vga', 'none'] > if self._machine is not None: > args.extend(['-machine', self._machine]) > + for i in range(self._console_index): > + args.extend(['-serial', 'null']) This will get executed even when set_console() is never called, so it will result in an AttributeError because 'self._console_index' does not exist. It's also a good practice to define all attributes on __init__(), so I'd suggest that as a fix. - Cleber.
diff --git a/python/qemu/machine.py b/python/qemu/machine.py index 128a3d1dc2..6fa68fa35a 100644 --- a/python/qemu/machine.py +++ b/python/qemu/machine.py @@ -235,6 +235,8 @@ class QEMUMachine(object): '-display', 'none', '-vga', 'none'] if self._machine is not None: args.extend(['-machine', self._machine]) + for i in range(self._console_index): + args.extend(['-serial', 'null']) if self._console_set: self._console_address = os.path.join(self._temp_dir, self._name + "-console.sock") @@ -495,7 +497,7 @@ class QEMUMachine(object): """ self._machine = machine_type - def set_console(self, device_type=None): + def set_console(self, device_type=None, console_index=0): """ Sets the device type for a console device @@ -516,9 +518,14 @@ class QEMUMachine(object): chardev:console" command line argument will be used instead, resorting to the machine's default device type. + @param console_index: the index of the console device to use. + If not zero, the command line will create + 'index - 1' consoles and connect them to + the 'null' backing character device. """ self._console_set = True self._console_device_type = device_type + self._console_index = console_index @property def console_socket(self):