summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThom May <thom@may.lt>2018-02-16 09:52:25 +0000
committerGitHub <noreply@github.com>2018-02-16 09:52:25 +0000
commit8941b3ab8d7cc7d759e3dba264b398dd04559f31 (patch)
tree5177adc08e5eeeea9dc1af48f721dabd637336db
parent46a20cac3d505a94cdb8d8529cf243f3975d21b4 (diff)
parent54303a1260a7bdab12af4e65a8a2b4e6d3f0585a (diff)
downloadohai-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.rb21
-rw-r--r--spec/unit/plugins/linux/virtualization_spec.rb11
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