From 5b1f7c134a04cd50020c34361d218f2fcaf401bb Mon Sep 17 00:00:00 2001 From: Jeremy MAURO Date: Wed, 4 May 2016 20:48:31 +0200 Subject: [PATCH 1/2] Adding kernel module version for linux --- lib/ohai/plugins/kernel.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/ohai/plugins/kernel.rb b/lib/ohai/plugins/kernel.rb index b4c73b48b..d0c448426 100644 --- a/lib/ohai/plugins/kernel.rb +++ b/lib/ohai/plugins/kernel.rb @@ -117,6 +117,11 @@ def os_lookup(sys_type) 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 From 0abbb2e46bbaecb4de0366f5e086cd0516375ff1 Mon Sep 17 00:00:00 2001 From: Jeremy MAURO Date: Wed, 4 May 2016 20:44:06 +0200 Subject: [PATCH 2/2] Adding spec test for OHAI linux::kernel::modules --- spec/unit/plugins/linux/kernel_spec.rb | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/spec/unit/plugins/linux/kernel_spec.rb b/spec/unit/plugins/linux/kernel_spec.rb index 75313114b..18646156f 100644 --- a/spec/unit/plugins/linux/kernel_spec.rb +++ b/spec/unit/plugins/linux/kernel_spec.rb @@ -31,15 +31,41 @@ 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