summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Smith <tsmith@chef.io>2021-02-23 22:23:09 -0800
committerGitHub <noreply@github.com>2021-02-23 22:23:09 -0800
commit365378173c078311719de0ff79eda729809522de (patch)
tree620a839072e2bbe354b1e0246091bd888b300e93
parent03b7d1483251b188d0bac2860c70bba4bd5f2739 (diff)
parentd0fd0875db4a977c2712df14e75c6f52ed55da08 (diff)
downloadohai-365378173c078311719de0ff79eda729809522de.tar.gz
Merge pull request #1627 from jaymzh/virtualization
Signed-off-by: Tim Smith <tsmith@chef.io>
-rw-r--r--lib/ohai/plugins/linux/virtualization.rb6
-rw-r--r--spec/unit/plugins/linux/virtualization_spec.rb12
2 files changed, 17 insertions, 1 deletions
diff --git a/lib/ohai/plugins/linux/virtualization.rb b/lib/ohai/plugins/linux/virtualization.rb
index 4d4d36b2..ada5b15b 100644
--- a/lib/ohai/plugins/linux/virtualization.rb
+++ b/lib/ohai/plugins/linux/virtualization.rb
@@ -250,7 +250,11 @@ Ohai.plugin(:Virtualization) do
# If so, we may need to look further for a differentiator (OHAI-573)
virtualization[:systems][:lxc] = "host"
end
- elsif file_exist?("/.dockerenv") || file_exist?("/.dockerinit")
+ end
+
+ # regardless of what we found above, if we're a docker container inside
+ # of the above, lets report as a docker container
+ if file_exist?("/.dockerenv") || file_exist?("/.dockerinit")
logger.trace("Plugin Virtualization: .dockerenv or .dockerinit exist. Detecting as docker guest")
virtualization[:system] = "docker"
virtualization[:role] = "guest"
diff --git a/spec/unit/plugins/linux/virtualization_spec.rb b/spec/unit/plugins/linux/virtualization_spec.rb
index 3e29533c..2466dbf2 100644
--- a/spec/unit/plugins/linux/virtualization_spec.rb
+++ b/spec/unit/plugins/linux/virtualization_spec.rb
@@ -674,6 +674,18 @@ describe Ohai::System, "Linux virtualization platform" do
expect(plugin[:virtualization][:systems][:docker]).to eq("guest")
end
+ it "sets virtualization if /.dockerenv exists even if /proc/self/cgroup exists" do
+ allow(plugin).to receive(:file_exist?).with("/proc/self/cgroup").and_return(true)
+ allow(plugin).to receive(:file_read).with("/proc/self/cgroup").and_return("")
+ allow(plugin).to receive(:file_read).with("/proc/1/environ").and_return("")
+ allow(plugin).to receive(:file_exist?).with("/.dockerenv").and_return(true)
+ plugin.run
+ expect(plugin[:virtualization][:system]).to eq("docker")
+ expect(plugin[:virtualization][:role]).to eq("guest")
+ expect(plugin[:virtualization][:systems][:docker]).to eq("guest")
+ end
+
+
it "sets virtualization if /.dockerinit exists" do
allow(plugin).to receive(:file_exist?).with("/.dockerinit").and_return(true)
plugin.run