I use the Go LXD Api, and so I’ve looked into how the “lxc” command creates an lxc.InstanceServer, in order to do the same.
In github.com/lxc/lxd, client/connection.go uses /var/lib/lxd/unix.socket as the default location for the unix socket, but when LXD is installed via the recommended snap, there is no such socket. The snap LXD socket is /var/snap/lxd/common/lxd/unix.socket.
Similarly with the user lxd config directory:
lxc/main.go uses path.Join(os.Getenv(“HOME”), “.config”, “lxc”)
But I find that the snap lxc command uses $HOME/snap/lxd/common/config/
I understand that the non-snap paths were used by the “lxc” command before LXD was a snap.
But why does the Go code still use the pre-snap paths?
pylxd uses both paths. I would expect the Go code to do the same.
Does the snap runtime environment map /var/lib/lxd/ to /var/snap/lxd/common/lxd/
and $HOME/.config/lxc/ to $HOME/snap/lxd/common/config/?