From a305f26d6b70c95b9b65f4cf291f7c019f19c936 Mon Sep 17 00:00:00 2001 From: Max Asnaashari Date: Wed, 12 Jul 2023 10:08:31 +0000 Subject: [PATCH] microcloud/service/service/handler: Restart LXD on MicroCloud start to refresh symlinks Signed-off-by: Max Asnaashari --- microcloud/service/service_handler.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/microcloud/service/service_handler.go b/microcloud/service/service_handler.go index ed8c35bd6..52154f389 100644 --- a/microcloud/service/service_handler.go +++ b/microcloud/service/service_handler.go @@ -10,6 +10,7 @@ import ( lxd "github.com/canonical/lxd/client" "github.com/canonical/lxd/shared" + "github.com/canonical/lxd/shared/logger" "github.com/canonical/microcluster/state" "github.com/hashicorp/mdns" @@ -87,7 +88,18 @@ func (s *Handler) Start(state *state.State) error { // Attempt to wake up LXD so it can generate certificates already. d, err := lxd.ConnectLXDUnix("/var/snap/lxd/common/lxd/unix.socket", nil) if err == nil { - _, _, _ = d.GetServer() + _, _, err = d.RawQuery("PUT", fmt.Sprint("/internal/shutdown"), nil, "") + if err != nil { + logger.Warn("Failed to send shutdown signal to LXD") + } + + // A sleep might be necessary here on slower machines? + _, _, err := d.GetServer() + if err != nil { + logger.Errorf("Failed to initialize LXD server", err) + } + } else { + logger.Warn("Failed to connect to LXD unix socket. LXD will not restart") } s.AuthSecret, err = shared.RandomCryptoString()