lib/ohai/plugins/kernel.rb in ohai-8.5.0 vs lib/ohai/plugins/kernel.rb in ohai-8.5.1
- old
+ new
@@ -1,192 +1,192 @@
-#
-# Author:: Adam Jacob (<adam@opscode.com>)
-# Author:: Benjamin Black (<nostromo@gmail.com>)
-# Author:: Bryan McLellan (<btm@loftninjas.org>)
-# Author:: Claire McQuin (<claire@opscode.com>)
-# Author:: James Gartrell (<jgartrel@gmail.com>)
-# Copyright:: Copyright (c) 2008, 2009, 2013 Opscode, Inc.
-# Copyright:: Copyright (c) 2009 Bryan McLellan
-# License:: Apache License, Version 2.0
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-Ohai.plugin(:Kernel) do
- provides "kernel", "kernel/modules"
-
- # common initial kernel attribute values
- def init_kernel
- kernel Mash.new
- [["uname -s", :name], ["uname -r", :release],
- ["uname -v", :version], ["uname -m", :machine]].each do |cmd, property|
- so = shell_out(cmd)
- kernel[property] = so.stdout.split($/)[0]
- end
- kernel
- end
-
- # common *bsd code for collecting modules data
- def bsd_modules(path)
- modules = Mash.new
- so = shell_out("#{Ohai.abs_path(path)}")
- so.stdout.lines do |line|
- # 1 7 0xc0400000 97f830 kernel
- if line =~ /(\d+)\s+(\d+)\s+([0-9a-fx]+)\s+([0-9a-fx]+)\s+([a-zA-Z0-9\_]+)/
- modules[$5] = { :size => $4, :refcount => $2 }
- end
- end
- modules
- end
-
- # windows
- def machine_lookup(sys_type)
- return "i386" if sys_type.eql?("X86-based PC")
- return "x86_64" if sys_type.eql?("x64-based PC")
- sys_type
- end
-
- # windows
- def os_lookup(sys_type)
- return "Unknown" if sys_type.to_s.eql?("0")
- return "Other" if sys_type.to_s.eql?("1")
- return "MSDOS" if sys_type.to_s.eql?("14")
- return "WIN3x" if sys_type.to_s.eql?("15")
- return "WIN95" if sys_type.to_s.eql?("16")
- return "WIN98" if sys_type.to_s.eql?("17")
- return "WINNT" if sys_type.to_s.eql?("18")
- return "WINCE" if sys_type.to_s.eql?("19")
- return nil
- end
-
- collect_data(:default) do
- kernel init_kernel
- end
-
- collect_data(:darwin) do
- kernel init_kernel
- kernel[:os] = kernel[:name]
-
- so = shell_out("sysctl -n hw.optional.x86_64")
- if so.stdout.split($/)[0].to_i == 1
- kernel[:machine] = 'x86_64'
- end
-
- modules = Mash.new
- so = shell_out("kextstat -k -l")
- so.stdout.lines do |line|
- if line =~ /(\d+)\s+(\d+)\s+0x[0-9a-f]+\s+0x([0-9a-f]+)\s+0x[0-9a-f]+\s+([a-zA-Z0-9\.]+) \(([0-9\.]+)\)/
- modules[$4] = { :version => $5, :size => $3.hex, :index => $1, :refcount => $2 }
- end
- end
-
- kernel[:modules] = modules
- end
-
- collect_data(:freebsd) do
- kernel init_kernel
- kernel[:os] = kernel[:name]
-
- so = shell_out("uname -i")
- kernel[:ident] = so.stdout.split($/)[0]
- so = shell_out("sysctl kern.securelevel")
- kernel[:securelevel] = so.stdout.split($/).select { |e| e =~ /kern.securelevel: (.+)$/ }
-
- kernel[:modules] = bsd_modules("/sbin/kldstat")
- end
-
- collect_data(:linux) do
- kernel init_kernel
-
- so = shell_out("uname -o")
- kernel[:os] = so.stdout.split($/)[0]
-
- modules = Mash.new
- so = shell_out("env lsmod")
- so.stdout.lines do |line|
- if line =~ /([a-zA-Z0-9\_]+)\s+(\d+)\s+(\d+)/
- modules[$1] = { :size => $2, :refcount => $3 }
- end
- end
-
- kernel[:modules] = modules
- end
-
- collect_data(:netbsd, :openbsd) do
- kernel init_kernel
- kernel[:os] = kernel[:name]
-
- so = shell_out("sysctl kern.securelevel")
- kernel[:securelevel] = so.stdout.split($/).select { |e| e =~ /kern.securelevel:\ (.+)$/ }
-
- kernel[:modules] = bsd_modules("/usr/bin/modstat")
- end
-
- collect_data(:solaris2) do
- kernel init_kernel
-
- so = shell_out("uname -s")
- kernel[:os] = so.stdout.split($/)[0]
-
- modules = Mash.new
-
- so = shell_out("modinfo")
- # EXAMPLE:
- # Id Loadaddr Size Info Rev Module Name
- # 6 1180000 4623 1 1 specfs (filesystem for specfs)
- module_description = /[\s]*([\d]+)[\s]+([a-f\d]+)[\s]+([a-f\d]+)[\s]+(?:[\-\d]+)[\s]+(?:[\d]+)[\s]+([\S]+)[\s]+\((.+)\)$/
- so.stdout.lines do |line|
- if mod = module_description.match(line)
- modules[mod[4]] = { :id => mod[1].to_i, :loadaddr => mod[2], :size => mod[3].to_i(16), :description => mod[5]}
- end
- end
-
- kernel[:modules] = modules
- end
-
- collect_data(:windows) do
- require 'win32ole'
- require 'wmi-lite/wmi'
-
- WIN32OLE.codepage = WIN32OLE::CP_UTF8
-
- wmi = WmiLite::Wmi.new
-
- kernel Mash.new
-
- host = wmi.first_of('Win32_OperatingSystem')
- kernel[:os_info] = Mash.new
- host.wmi_ole_object.properties_.each do |p|
- kernel[:os_info][p.name.wmi_underscore.to_sym] = host[p.name.downcase]
- end
-
- kernel[:name] = "#{kernel[:os_info][:caption]}"
- kernel[:release] = "#{kernel[:os_info][:version]}"
- kernel[:version] = "#{kernel[:os_info][:version]} #{kernel[:os_info][:csd_version]} Build #{kernel[:os_info][:build_number]}"
- kernel[:os] = os_lookup(kernel[:os_info][:os_type]) || languages[:ruby][:host_os]
-
- host = wmi.first_of('Win32_ComputerSystem')
- kernel[:cs_info] = Mash.new
- cs_info_blacklist = [
- 'oem_logo_bitmap'
- ]
- host.wmi_ole_object.properties_.each do |p|
- if !cs_info_blacklist.include?(p.name.wmi_underscore)
- kernel[:cs_info][p.name.wmi_underscore.to_sym] = host[p.name.downcase]
- end
- end
-
- kernel[:machine] = machine_lookup("#{kernel[:cs_info][:system_type]}")
-
- end
-end
+#
+# Author:: Adam Jacob (<adam@opscode.com>)
+# Author:: Benjamin Black (<nostromo@gmail.com>)
+# Author:: Bryan McLellan (<btm@loftninjas.org>)
+# Author:: Claire McQuin (<claire@opscode.com>)
+# Author:: James Gartrell (<jgartrel@gmail.com>)
+# Copyright:: Copyright (c) 2008, 2009, 2013 Opscode, Inc.
+# Copyright:: Copyright (c) 2009 Bryan McLellan
+# License:: Apache License, Version 2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+Ohai.plugin(:Kernel) do
+ provides "kernel", "kernel/modules"
+
+ # common initial kernel attribute values
+ def init_kernel
+ kernel Mash.new
+ [["uname -s", :name], ["uname -r", :release],
+ ["uname -v", :version], ["uname -m", :machine]].each do |cmd, property|
+ so = shell_out(cmd)
+ kernel[property] = so.stdout.split($/)[0]
+ end
+ kernel
+ end
+
+ # common *bsd code for collecting modules data
+ def bsd_modules(path)
+ modules = Mash.new
+ so = shell_out("#{Ohai.abs_path(path)}")
+ so.stdout.lines do |line|
+ # 1 7 0xc0400000 97f830 kernel
+ if line =~ /(\d+)\s+(\d+)\s+([0-9a-fx]+)\s+([0-9a-fx]+)\s+([a-zA-Z0-9\_]+)/
+ modules[$5] = { :size => $4, :refcount => $2 }
+ end
+ end
+ modules
+ end
+
+ # windows
+ def machine_lookup(sys_type)
+ return "i386" if sys_type.eql?("X86-based PC")
+ return "x86_64" if sys_type.eql?("x64-based PC")
+ sys_type
+ end
+
+ # windows
+ def os_lookup(sys_type)
+ return "Unknown" if sys_type.to_s.eql?("0")
+ return "Other" if sys_type.to_s.eql?("1")
+ return "MSDOS" if sys_type.to_s.eql?("14")
+ return "WIN3x" if sys_type.to_s.eql?("15")
+ return "WIN95" if sys_type.to_s.eql?("16")
+ return "WIN98" if sys_type.to_s.eql?("17")
+ return "WINNT" if sys_type.to_s.eql?("18")
+ return "WINCE" if sys_type.to_s.eql?("19")
+ return nil
+ end
+
+ collect_data(:default) do
+ kernel init_kernel
+ end
+
+ collect_data(:darwin) do
+ kernel init_kernel
+ kernel[:os] = kernel[:name]
+
+ so = shell_out("sysctl -n hw.optional.x86_64")
+ if so.stdout.split($/)[0].to_i == 1
+ kernel[:machine] = 'x86_64'
+ end
+
+ modules = Mash.new
+ so = shell_out("kextstat -k -l")
+ so.stdout.lines do |line|
+ if line =~ /(\d+)\s+(\d+)\s+0x[0-9a-f]+\s+0x([0-9a-f]+)\s+0x[0-9a-f]+\s+([a-zA-Z0-9\.]+) \(([0-9\.]+)\)/
+ modules[$4] = { :version => $5, :size => $3.hex, :index => $1, :refcount => $2 }
+ end
+ end
+
+ kernel[:modules] = modules
+ end
+
+ collect_data(:freebsd) do
+ kernel init_kernel
+ kernel[:os] = kernel[:name]
+
+ so = shell_out("uname -i")
+ kernel[:ident] = so.stdout.split($/)[0]
+ so = shell_out("sysctl kern.securelevel")
+ kernel[:securelevel] = so.stdout.split($/).select { |e| e =~ /kern.securelevel: (.+)$/ }
+
+ kernel[:modules] = bsd_modules("/sbin/kldstat")
+ end
+
+ collect_data(:linux) do
+ kernel init_kernel
+
+ so = shell_out("uname -o")
+ kernel[:os] = so.stdout.split($/)[0]
+
+ modules = Mash.new
+ so = shell_out("env lsmod")
+ so.stdout.lines do |line|
+ if line =~ /([a-zA-Z0-9\_]+)\s+(\d+)\s+(\d+)/
+ modules[$1] = { :size => $2, :refcount => $3 }
+ end
+ end
+
+ kernel[:modules] = modules
+ end
+
+ collect_data(:netbsd, :openbsd) do
+ kernel init_kernel
+ kernel[:os] = kernel[:name]
+
+ so = shell_out("sysctl kern.securelevel")
+ kernel[:securelevel] = so.stdout.split($/).select { |e| e =~ /kern.securelevel:\ (.+)$/ }
+
+ kernel[:modules] = bsd_modules("/usr/bin/modstat")
+ end
+
+ collect_data(:solaris2) do
+ kernel init_kernel
+
+ so = shell_out("uname -s")
+ kernel[:os] = so.stdout.split($/)[0]
+
+ modules = Mash.new
+
+ so = shell_out("modinfo")
+ # EXAMPLE:
+ # Id Loadaddr Size Info Rev Module Name
+ # 6 1180000 4623 1 1 specfs (filesystem for specfs)
+ module_description = /[\s]*([\d]+)[\s]+([a-f\d]+)[\s]+([a-f\d]+)[\s]+(?:[\-\d]+)[\s]+(?:[\d]+)[\s]+([\S]+)[\s]+\((.+)\)$/
+ so.stdout.lines do |line|
+ if mod = module_description.match(line)
+ modules[mod[4]] = { :id => mod[1].to_i, :loadaddr => mod[2], :size => mod[3].to_i(16), :description => mod[5]}
+ end
+ end
+
+ kernel[:modules] = modules
+ end
+
+ collect_data(:windows) do
+ require 'win32ole'
+ require 'wmi-lite/wmi'
+
+ WIN32OLE.codepage = WIN32OLE::CP_UTF8
+
+ wmi = WmiLite::Wmi.new
+
+ kernel Mash.new
+
+ host = wmi.first_of('Win32_OperatingSystem')
+ kernel[:os_info] = Mash.new
+ host.wmi_ole_object.properties_.each do |p|
+ kernel[:os_info][p.name.wmi_underscore.to_sym] = host[p.name.downcase]
+ end
+
+ kernel[:name] = "#{kernel[:os_info][:caption]}"
+ kernel[:release] = "#{kernel[:os_info][:version]}"
+ kernel[:version] = "#{kernel[:os_info][:version]} #{kernel[:os_info][:csd_version]} Build #{kernel[:os_info][:build_number]}"
+ kernel[:os] = os_lookup(kernel[:os_info][:os_type]) || languages[:ruby][:host_os]
+
+ host = wmi.first_of('Win32_ComputerSystem')
+ kernel[:cs_info] = Mash.new
+ cs_info_blacklist = [
+ 'oem_logo_bitmap'
+ ]
+ host.wmi_ole_object.properties_.each do |p|
+ if !cs_info_blacklist.include?(p.name.wmi_underscore)
+ kernel[:cs_info][p.name.wmi_underscore.to_sym] = host[p.name.downcase]
+ end
+ end
+
+ kernel[:machine] = machine_lookup("#{kernel[:cs_info][:system_type]}")
+
+ end
+end