On 7/10/20 7:06 AM, John Snow wrote: > This is done primarily to avoid the 'bare except' pattern, which > suppresses all exceptions during shutdown and can obscure errors. > > Replace this with a pattern that isolates the different kind of shutdown > paradigms (_hard_shutdown and _soft_shutdown), and a new fallback shutdown > handler (_do_shutdown) that gracefully attempts one before the other. > > This split now also ensures that no matter what happens, > _post_shutdown() is always invoked. > > shutdown() changes in behavior such that if it attempts to do a graceful > shutdown and is unable to, it will now always raise an exception to > indicate this. This can be avoided by the test writer in three ways: > > 1. If the VM is expected to have already exited or is in the process of > exiting, wait() can be used instead of shutdown() to clean up resources > instead. This helps avoid race conditions in shutdown. > > 2. If a test writer is expecting graceful shutdown to fail, shutdown > should be called in a try...except block. > > 3. If the test writer has no interest in performing a graceful shutdown > at all, kill() can be used instead. > > > Handling shutdown in this way makes it much more explicit which type of > shutdown we want and allows the library to report problems with this > process. > > Signed-off-by: John Snow <js...@redhat.com> > --- > python/qemu/machine.py | 95 +++++++++++++++++++++++++++++++++++------- > 1 file changed, 80 insertions(+), 15 deletions(-) >
:)) Reviewed-by: Philippe Mathieu-Daudé <phi...@redhat.com>