diff options
author | Thom May <thom@may.lt> | 2018-02-16 09:52:25 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-16 09:52:25 +0000 |
commit | 8941b3ab8d7cc7d759e3dba264b398dd04559f31 (patch) | |
tree | 5177adc08e5eeeea9dc1af48f721dabd637336db | |
parent | 46a20cac3d505a94cdb8d8529cf243f3975d21b4 (diff) | |
parent | 54303a1260a7bdab12af4e65a8a2b4e6d3f0585a (diff) | |
download | ohai-8941b3ab8d7cc7d759e3dba264b398dd04559f31.tar.gz |
Merge pull request #1131 from NexusSW/lxd-update
account for snap based installations of LXD
-rw-r--r-- | lib/ohai/plugins/linux/virtualization.rb | 21 | ||||
-rw-r--r-- | spec/unit/plugins/linux/virtualization_spec.rb | 11 |
2 files changed, 27 insertions, 5 deletions
diff --git a/lib/ohai/plugins/linux/virtualization.rb b/lib/ohai/plugins/linux/virtualization.rb index 797ea4e5..b144ec94 100644 --- a/lib/ohai/plugins/linux/virtualization.rb +++ b/lib/ohai/plugins/linux/virtualization.rb @@ -222,10 +222,23 @@ Ohai.plugin(:Virtualization) do Ohai::Log.debug("Plugin Virtualization: /dev/lxd/sock exists. Detecting as lxd guest") virtualization[:system] = "lxd" virtualization[:role] = "guest" - elsif File.exist?("/var/lib/lxd/devlxd") - Ohai::Log.debug("Plugin Virtualization: /var/lib/lxd/devlxd exists. Detecting as lxd host") - virtualization[:system] = "lxd" - virtualization[:role] = "host" + else + # 'How' LXD is installed dictates the runtime data location + # + # Installations of LXD from a .deb (Ubuntu's main and backports repos) utilize '/var/lib/lxd/' for runtime data + # - used by stable releases 2.0.x in trusty/xenial, and 3.0.x in bionic + # - xenial-backports includes versions 2.1 through 2.21 + # + # Snap based installations utilize '/var/snap/lxd/common/lxd/' + # - includes all future releases starting with 2.21, and will be the only source of 3.1+ feature releases post-bionic + ["/var/lib/lxd/devlxd", "/var/snap/lxd/common/lxd/devlxd"].each do |devlxd| + if File.exist?(devlxd) + Ohai::Log.debug("Plugin Virtualization: #{devlxd} exists. Detecting as lxd host") + virtualization[:system] = "lxd" + virtualization[:role] = "host" + break + end + end end end end diff --git a/spec/unit/plugins/linux/virtualization_spec.rb b/spec/unit/plugins/linux/virtualization_spec.rb index 57357b58..b581b578 100644 --- a/spec/unit/plugins/linux/virtualization_spec.rb +++ b/spec/unit/plugins/linux/virtualization_spec.rb @@ -40,6 +40,7 @@ describe Ohai::System, "Linux virtualization platform" do allow(File).to receive(:exist?).with("/sys/devices/virtual/misc/kvm").and_return(false) allow(File).to receive(:exist?).with("/dev/lxd/sock").and_return(false) allow(File).to receive(:exist?).with("/var/lib/lxd/devlxd").and_return(false) + allow(File).to receive(:exist?).with("/var/snap/lxd/common/lxd/devlxd").and_return(false) allow(File).to receive(:exist?).with("/proc/1/environ").and_return(false) # default the which wrappers to nil @@ -495,13 +496,21 @@ VEERTU expect(plugin[:virtualization][:role]).to eq("guest") end - it "setx lxd host if /var/lib/lxd/devlxd exists" do + it "sets lxd host if /var/lib/lxd/devlxd exists" do expect(File).to receive(:exist?).with("/var/lib/lxd/devlxd").and_return(true) plugin.run expect(plugin[:virtualization][:system]).to eq("lxd") expect(plugin[:virtualization][:role]).to eq("host") end + + it "sets lxd host if /var/snap/lxd/common/lxd/devlxd exists" do + expect(File).to receive(:exist?).with("/var/snap/lxd/common/lxd/devlxd").and_return(true) + + plugin.run + expect(plugin[:virtualization][:system]).to eq("lxd") + expect(plugin[:virtualization][:role]).to eq("host") + end end describe "when we are checking for lxc" do |