diff options
author | Tim Smith <tsmith@chef.io> | 2021-02-23 22:23:09 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-23 22:23:09 -0800 |
commit | 365378173c078311719de0ff79eda729809522de (patch) | |
tree | 620a839072e2bbe354b1e0246091bd888b300e93 | |
parent | 03b7d1483251b188d0bac2860c70bba4bd5f2739 (diff) | |
parent | d0fd0875db4a977c2712df14e75c6f52ed55da08 (diff) | |
download | ohai-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.rb | 6 | ||||
-rw-r--r-- | spec/unit/plugins/linux/virtualization_spec.rb | 12 |
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 |