From 536223c672c0e117ae4d7433b1b4f0676057664d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Wed, 3 Jan 2024 18:51:17 -0500 Subject: [PATCH] lxd: Make VM shutdown/reboot exit cleanly MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes https://github.com/lxc/incus/issues/256 Signed-off-by: Stéphane Graber Signed-off-by: hamistao License: Apache-2.0 --- lxd/instance_exec.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/lxd/instance_exec.go b/lxd/instance_exec.go index ccf4badbfff4..7607ca1d57ef 100644 --- a/lxd/instance_exec.go +++ b/lxd/instance_exec.go @@ -23,6 +23,7 @@ import ( "github.com/canonical/lxd/lxd/cluster" "github.com/canonical/lxd/lxd/db/operationtype" "github.com/canonical/lxd/lxd/instance" + "github.com/canonical/lxd/lxd/instance/drivers" "github.com/canonical/lxd/lxd/instance/instancetype" "github.com/canonical/lxd/lxd/operations" "github.com/canonical/lxd/lxd/request" @@ -35,6 +36,26 @@ import ( "github.com/canonical/lxd/shared/tcp" "github.com/canonical/lxd/shared/version" "github.com/canonical/lxd/shared/ws" + // internalInstance "github.com/lxc/incus/internal/instance" + // "github.com/lxc/incus/internal/jmap" + // "github.com/lxc/incus/internal/linux" + // "github.com/lxc/incus/internal/server/cluster" + // "github.com/lxc/incus/internal/server/db/operationtype" + // "github.com/lxc/incus/internal/server/instance" + // "github.com/lxc/incus/internal/server/instance/drivers" + // "github.com/lxc/incus/internal/server/instance/instancetype" + // "github.com/lxc/incus/internal/server/operations" + // "github.com/lxc/incus/internal/server/request" + // "github.com/lxc/incus/internal/server/response" + // "github.com/lxc/incus/internal/server/state" + // internalUtil "github.com/lxc/incus/internal/util" + // "github.com/lxc/incus/internal/version" + // "github.com/lxc/incus/shared/api" + // "github.com/lxc/incus/shared/cancel" + // "github.com/lxc/incus/shared/logger" + // "github.com/lxc/incus/shared/tcp" + // "github.com/lxc/incus/shared/util" + // "github.com/lxc/incus/shared/ws" ) const execWSControl = -1 @@ -289,7 +310,14 @@ func (s *execWs) Do(op *operations.Operation) error { _ = pty.Close() } + // Make VM disconnections (shutdown/reboot) match containers. + if cmdErr == drivers.ErrExecDisconnected { + cmdResult = 129 + cmdErr = nil + } + metadata := shared.Jmap{"return": cmdResult} + err = op.ExtendMetadata(metadata) if err != nil { return err