summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Smith <tsmith@chef.io>2016-05-19 09:12:37 -0700
committerTim Smith <tsmith@chef.io>2016-05-19 09:12:37 -0700
commiteb75927881b10f1c60a26add31f6afe9f773330f (patch)
treedda53489185c37b9aa14128fed303a81a269611d
parent79eb9662769be557567586dc79a408df6838a946 (diff)
parent0abbb2e46bbaecb4de0366f5e086cd0516375ff1 (diff)
downloadohai-eb75927881b10f1c60a26add31f6afe9f773330f.tar.gz
Merge pull request #816 from criteo-forks/linux_kernel_modules
Adding version for linux module when avalaible
-rw-r--r--lib/ohai/plugins/kernel.rb5
-rw-r--r--spec/unit/plugins/linux/kernel_spec.rb26
2 files changed, 31 insertions, 0 deletions
diff --git a/lib/ohai/plugins/kernel.rb b/lib/ohai/plugins/kernel.rb
index b4c73b48..d0c44842 100644
--- a/lib/ohai/plugins/kernel.rb
+++ b/lib/ohai/plugins/kernel.rb
@@ -117,6 +117,11 @@ Ohai.plugin(:Kernel) do
so.stdout.lines do |line|
if line =~ /([a-zA-Z0-9\_]+)\s+(\d+)\s+(\d+)/
modules[$1] = { :size => $2, :refcount => $3 }
+ # Making sure to get the module version that has been loaded
+ if File.exist?("/sys/module/#{$1}/version")
+ version = File.read("/sys/module/#{$1}/version").chomp.strip
+ modules[$1]["version"] = version unless version.empty?
+ end
end
end
diff --git a/spec/unit/plugins/linux/kernel_spec.rb b/spec/unit/plugins/linux/kernel_spec.rb
index 75313114..18646156 100644
--- a/spec/unit/plugins/linux/kernel_spec.rb
+++ b/spec/unit/plugins/linux/kernel_spec.rb
@@ -31,15 +31,41 @@ serio_raw 13031 0
virtio_balloon 13168 0
floppy 55441 0
ENV_LSMOD
+ @version_module = {
+ dm_crypt: "",
+ psmouse: "",
+ acpiphp: "",
+ microcode: "1.2.3",
+ serio_raw: "",
+ virtio_balloon: "",
+ floppy: "",
+ }
+
+ @expected_result = {
+ "dm_crypt" => { "size" => "22321", "refcount" => "0" },
+ "psmouse" => { "size" => "81038", "refcount" => "0" },
+ "acpiphp" => { "size" => "23314", "refcount" => "0" },
+ "microcode" => { "size" => "18286", "refcount" => "0", "version" => "1.2.3" },
+ "serio_raw" => { "size" => "13031", "refcount" => "0" },
+ "virtio_balloon" => { "size" => "13168", "refcount" => "0" },
+ "floppy" => { "size" => "55441", "refcount" => "0" },
+ }
@plugin = get_plugin("kernel")
allow(@plugin).to receive(:collect_os).and_return(:linux)
allow(@plugin).to receive(:init_kernel).and_return({})
allow(@plugin).to receive(:shell_out).with("uname -o").and_return(mock_shell_out(0, "Linux", ""))
allow(@plugin).to receive(:shell_out).with("env lsmod").and_return(mock_shell_out(0, @env_lsmod, ""))
+ @version_module.each do |mod, vers|
+ allow(File).to receive(:exist?).with("/sys/module/#{mod}/version").and_return(true)
+ allow(File).to receive(:read).with("/sys/module/#{mod}/version").and_return(vers)
+ end
expect(@plugin).to receive(:shell_out).with("env lsmod").at_least(1).times
@plugin.run
end
it_should_check_from_deep_mash("linux::kernel", "kernel", "os", "uname -o", [0, "Linux", ""])
+ it "collects linux::kernel::modules" do
+ expect(@plugin.data["kernel"]["modules"]).to eq(@expected_result)
+ end
end