ohai 15.6.3 → 15.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +2 -3
- data/lib/ohai/common/dmi.rb +2 -2
- data/lib/ohai/config.rb +1 -1
- data/lib/ohai/plugins/darwin/hardware.rb +2 -2
- data/lib/ohai/plugins/darwin/platform.rb +3 -6
- data/lib/ohai/plugins/filesystem.rb +12 -6
- data/lib/ohai/plugins/kernel.rb +8 -7
- data/lib/ohai/plugins/linux/virtualization.rb +2 -2
- data/lib/ohai/plugins/openstack.rb +3 -3
- data/lib/ohai/plugins/shard.rb +11 -1
- data/lib/ohai/plugins/solaris2/dmi.rb +2 -2
- data/lib/ohai/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3cc502163cd1c79f43b4b934c425a00b2b00c2626cefb82882659fa4756dd82f
|
4
|
+
data.tar.gz: 2eadca5148f5f1c0706157f3b2c7c2cfe6606c304f249815c418aba69ca87c53
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d3e0b6ae3e18c740ca5e30db4d4db8200c1cae7b742bd5cdda9541c05cc30e8d0570250b86b51dc5397cd8cc383d63d82240ffb5bb069ce9457b536a6c87dfed
|
7
|
+
data.tar.gz: 3925101539b829009b8215eddaccb20d6b88c791ee69224cddd7d4c824bc5939dab97352e97184183d8f1561b3a14108187370e37ac006869cbc8cceae7ce4f2
|
data/Gemfile
CHANGED
@@ -2,9 +2,8 @@ source "https://rubygems.org"
|
|
2
2
|
|
3
3
|
gemspec
|
4
4
|
|
5
|
-
# NOTE: do not submit PRs to add pry as a dep, add to your Gemfile.local
|
6
5
|
group :development do
|
7
|
-
gem "chefstyle",
|
6
|
+
gem "chefstyle", "~> 1.0"
|
8
7
|
gem "rake", ">= 10.1.0"
|
9
8
|
gem "rspec-core", "~> 3.0"
|
10
9
|
gem "rspec-expectations", "~> 3.0"
|
@@ -26,6 +25,6 @@ end
|
|
26
25
|
group :debug do
|
27
26
|
gem "pry"
|
28
27
|
gem "pry-byebug"
|
29
|
-
gem "pry-stack_explorer"
|
28
|
+
gem "pry-stack_explorer", "~> 0.4.0" # pin until we drop ruby < 2.6
|
30
29
|
gem "rb-readline"
|
31
30
|
end
|
data/lib/ohai/common/dmi.rb
CHANGED
@@ -117,12 +117,12 @@ module Ohai
|
|
117
117
|
def convenience_keys(dmi)
|
118
118
|
dmi.each do |type, records|
|
119
119
|
in_common = Mash.new
|
120
|
-
next unless records.
|
120
|
+
next unless records.is_a?(Mash)
|
121
121
|
next unless records.key?("all_records")
|
122
122
|
|
123
123
|
records[:all_records].each do |record|
|
124
124
|
record.each do |field, value|
|
125
|
-
next if value.
|
125
|
+
next if value.is_a?(Mash)
|
126
126
|
next if field.to_s == "application_identifier"
|
127
127
|
next if field.to_s == "size"
|
128
128
|
next if field.to_s == "record_id"
|
data/lib/ohai/config.rb
CHANGED
@@ -39,7 +39,7 @@ module Ohai
|
|
39
39
|
# causes all optional plugins to be run.
|
40
40
|
default :run_all_plugins, false
|
41
41
|
# optional plugins are the set of plugins that are marked optional but you wish to run.
|
42
|
-
default
|
42
|
+
default(:optional_plugins, []).writes_value { |arr| arr.map(&:to_sym) }
|
43
43
|
default :shellout_timeout, 30
|
44
44
|
end
|
45
45
|
end
|
@@ -41,8 +41,8 @@ Ohai.plugin(:Hardware) do
|
|
41
41
|
hardware.merge!(hw_hash[0]["_items"][0])
|
42
42
|
|
43
43
|
# ProductName: Mac OS X
|
44
|
-
# ProductVersion: 10.
|
45
|
-
# BuildVersion:
|
44
|
+
# ProductVersion: 10.15.6
|
45
|
+
# BuildVersion: 19G46c
|
46
46
|
shell_out("sw_vers").stdout.lines.each do |line|
|
47
47
|
case line
|
48
48
|
when /^ProductName:\s*(.*)$/
|
@@ -1,6 +1,6 @@
|
|
1
1
|
#
|
2
2
|
# Author:: Adam Jacob (<adam@chef.io>)
|
3
|
-
# Copyright:: Copyright (c)
|
3
|
+
# Copyright:: Copyright (c) Chef Software, Inc.
|
4
4
|
# License:: Apache License, Version 2.0
|
5
5
|
#
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -23,11 +23,6 @@ Ohai.plugin(:Platform) do
|
|
23
23
|
so = shell_out((Ohai.abs_path( "/usr/bin/sw_vers" )).to_s)
|
24
24
|
so.stdout.lines do |line|
|
25
25
|
case line
|
26
|
-
when /^ProductName:\s+(.+)$/
|
27
|
-
macname = $1
|
28
|
-
macname.downcase!
|
29
|
-
macname.tr!(" ", "_")
|
30
|
-
platform macname
|
31
26
|
when /^ProductVersion:\s+(.+)$/
|
32
27
|
platform_version $1
|
33
28
|
when /^BuildVersion:\s+(.+)$/
|
@@ -35,6 +30,8 @@ Ohai.plugin(:Platform) do
|
|
35
30
|
end
|
36
31
|
end
|
37
32
|
|
33
|
+
# if we're on darwin assume we're on mac_os_x
|
34
|
+
platform "mac_os_x"
|
38
35
|
platform_family "mac_os_x"
|
39
36
|
end
|
40
37
|
end
|
@@ -162,6 +162,9 @@ Ohai.plugin(:Filesystem) do
|
|
162
162
|
end
|
163
163
|
|
164
164
|
### Windows specific methods BEGINS
|
165
|
+
# Drive types
|
166
|
+
DRIVE_TYPE ||= %w{unknown no_root_dir removable local network cd ram}.freeze
|
167
|
+
|
165
168
|
# Volume encryption or decryption status
|
166
169
|
#
|
167
170
|
# @see https://docs.microsoft.com/en-us/windows/desktop/SecProv/getconversionstatus-win32-encryptablevolume#parameters
|
@@ -173,7 +176,7 @@ Ohai.plugin(:Filesystem) do
|
|
173
176
|
|
174
177
|
# Returns a Mash loaded with logical details
|
175
178
|
#
|
176
|
-
# Uses Win32_LogicalDisk and logical_properties to return
|
179
|
+
# Uses Win32_LogicalDisk and logical_properties to return general details of volumes.
|
177
180
|
#
|
178
181
|
# Returns an empty Mash in case of any WMI exception.
|
179
182
|
#
|
@@ -184,7 +187,7 @@ Ohai.plugin(:Filesystem) do
|
|
184
187
|
def logical_info
|
185
188
|
wmi = WmiLite::Wmi.new("Root\\CIMV2")
|
186
189
|
|
187
|
-
#
|
190
|
+
# TODO: We should really be parsing Win32_Volume and Win32_MountPoint.
|
188
191
|
disks = wmi.instances_of("Win32_LogicalDisk")
|
189
192
|
logical_properties(disks)
|
190
193
|
rescue WmiLite::WmiException
|
@@ -234,9 +237,9 @@ Ohai.plugin(:Filesystem) do
|
|
234
237
|
properties = Mash.new
|
235
238
|
disks.each do |disk|
|
236
239
|
property = Mash.new
|
237
|
-
# In windows the
|
240
|
+
# In windows the closest thing we have to a device is the volume name
|
238
241
|
# and the "mountpoint" is the drive letter...
|
239
|
-
device = disk["
|
242
|
+
device = disk["volumename"].to_s.downcase
|
240
243
|
mount = disk["deviceid"]
|
241
244
|
property[:kb_size] = disk["size"] ? disk["size"].to_i / 1000 : 0
|
242
245
|
property[:kb_available] = disk["freespace"].to_i / 1000
|
@@ -244,7 +247,10 @@ Ohai.plugin(:Filesystem) do
|
|
244
247
|
property[:percent_used] = (property[:kb_size] == 0 ? 0 : (property[:kb_used] * 100 / property[:kb_size]))
|
245
248
|
property[:mount] = mount
|
246
249
|
property[:fs_type] = disk["filesystem"].to_s.downcase
|
247
|
-
property[:
|
250
|
+
property[:drive_type] = disk["drivetype"].to_i
|
251
|
+
property[:drive_type_string] = DRIVE_TYPE[disk["drivetype"].to_i]
|
252
|
+
property[:drive_type_human] = disk["description"].to_s
|
253
|
+
property[:volume_name] = disk["volumename"].to_s
|
248
254
|
property[:device] = device
|
249
255
|
|
250
256
|
key = "#{device},#{mount}"
|
@@ -747,7 +753,7 @@ Ohai.plugin(:Filesystem) do
|
|
747
753
|
|
748
754
|
collect_data(:windows) do
|
749
755
|
require "wmi-lite/wmi"
|
750
|
-
|
756
|
+
require_relative "../mash"
|
751
757
|
|
752
758
|
fs = merge_info(logical_info, encryptable_info)
|
753
759
|
|
data/lib/ohai/plugins/kernel.rb
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
# Author:: Bryan McLellan (<btm@loftninjas.org>)
|
5
5
|
# Author:: Claire McQuin (<claire@chef.io>)
|
6
6
|
# Author:: James Gartrell (<jgartrel@gmail.com>)
|
7
|
-
# Copyright:: Copyright (c)
|
7
|
+
# Copyright:: Copyright (c) Chef Software, Inc.
|
8
8
|
# Copyright:: Copyright (c) 2009 Bryan McLellan
|
9
9
|
# License:: Apache License, Version 2.0
|
10
10
|
#
|
@@ -137,11 +137,12 @@ Ohai.plugin(:Kernel) do
|
|
137
137
|
end
|
138
138
|
end
|
139
139
|
|
140
|
-
# see if a WMI name is
|
141
|
-
# useless data to ohai
|
140
|
+
# see if a WMI name is in the blocked list so we can avoid writing
|
141
|
+
# out useless data to ohai
|
142
|
+
#
|
142
143
|
# @param [String] name the wmi name to check
|
143
|
-
# @return [Boolean] is the wmi name
|
144
|
-
def
|
144
|
+
# @return [Boolean] is the wmi name in the blocked list
|
145
|
+
def blocked_wmi_name?(name)
|
145
146
|
[
|
146
147
|
"creation_class_name", # this is just the wmi name
|
147
148
|
"cs_creation_class_name", # this is just the wmi name
|
@@ -262,7 +263,7 @@ Ohai.plugin(:Kernel) do
|
|
262
263
|
host = wmi.first_of("Win32_OperatingSystem")
|
263
264
|
kernel[:os_info] = Mash.new
|
264
265
|
host.wmi_ole_object.properties_.each do |p|
|
265
|
-
next if
|
266
|
+
next if blocked_wmi_name?(p.name.wmi_underscore)
|
266
267
|
|
267
268
|
kernel[:os_info][p.name.wmi_underscore.to_sym] = host[p.name.downcase]
|
268
269
|
end
|
@@ -277,7 +278,7 @@ Ohai.plugin(:Kernel) do
|
|
277
278
|
kernel[:cs_info] = Mash.new
|
278
279
|
host = wmi.first_of("Win32_ComputerSystem")
|
279
280
|
host.wmi_ole_object.properties_.each do |p|
|
280
|
-
next if
|
281
|
+
next if blocked_wmi_name?(p.name.wmi_underscore)
|
281
282
|
|
282
283
|
kernel[:cs_info][p.name.wmi_underscore.to_sym] = host[p.name.downcase]
|
283
284
|
end
|
@@ -118,8 +118,8 @@ Ohai.plugin(:Virtualization) do
|
|
118
118
|
|
119
119
|
# parse dmi to discover various virtualization guests
|
120
120
|
# we do this *after* the kvm detection so that OpenStack isn't detected as KVM
|
121
|
-
logger.trace("Looking up DMI data manufacturer: '#{get_attribute(:dmi, :system, :manufacturer)}'
|
122
|
-
guest = guest_from_dmi_data(get_attribute(:dmi, :system, :manufacturer), get_attribute(:dmi, :system, :
|
121
|
+
logger.trace("Looking up DMI data manufacturer: '#{get_attribute(:dmi, :system, :manufacturer)}' product_name: '#{get_attribute(:dmi, :system, :product_name)}' version: '#{get_attribute(:dmi, :system, :version)}'")
|
122
|
+
guest = guest_from_dmi_data(get_attribute(:dmi, :system, :manufacturer), get_attribute(:dmi, :system, :product_name), get_attribute(:dmi, :system, :version))
|
123
123
|
if guest
|
124
124
|
logger.trace("Plugin Virtualization: DMI data indicates #{guest} guest")
|
125
125
|
virtualization[:system] = guest
|
@@ -51,11 +51,11 @@ Ohai.plugin(:Openstack) do
|
|
51
51
|
# dream host doesn't support windows so bail early if we're on windows
|
52
52
|
return "openstack" if RUBY_PLATFORM =~ /mswin|mingw32|windows/
|
53
53
|
|
54
|
-
if Etc.
|
54
|
+
if Etc::Passwd.entries.map(&:name).include?("dhc-user")
|
55
55
|
"dreamhost"
|
56
|
+
else
|
57
|
+
"openstack"
|
56
58
|
end
|
57
|
-
rescue ArgumentError # getpwnam raises ArgumentError if the user is not found
|
58
|
-
"openstack"
|
59
59
|
end
|
60
60
|
|
61
61
|
collect_data do
|
data/lib/ohai/plugins/shard.rb
CHANGED
@@ -22,10 +22,12 @@ Ohai.plugin(:ShardSeed) do
|
|
22
22
|
|
23
23
|
def get_dmi_property(dmi, thing)
|
24
24
|
%w{system base_board chassis}.each do |section|
|
25
|
-
|
25
|
+
if dmi[section] && dmi[section][thing] && !dmi[section][thing].strip.empty?
|
26
26
|
return dmi[section][thing]
|
27
27
|
end
|
28
28
|
end
|
29
|
+
Ohai::Log.error("shard_seed: Failed to get dmi property #{thing}: is dmidecode installed?")
|
30
|
+
raise "Failed to generate shard_seed"
|
29
31
|
end
|
30
32
|
|
31
33
|
def default_sources
|
@@ -77,11 +79,16 @@ Ohai.plugin(:ShardSeed) do
|
|
77
79
|
yield(src)
|
78
80
|
end
|
79
81
|
end
|
82
|
+
if data.empty?
|
83
|
+
Ohai::Log.error("shard_seed: Unable to generate seed! Either ensure 'dmidecode' is installed, or use 'Ohai.config[:plugin][:shard_seed][:sources]' to set different sources.")
|
84
|
+
raise "Failed to generate shard_seed"
|
85
|
+
end
|
80
86
|
shard_seed digest_algorithm.hexdigest(data)[0...7].to_i(16)
|
81
87
|
end
|
82
88
|
|
83
89
|
collect_data do
|
84
90
|
create_seed do |src|
|
91
|
+
Ohai::Log.error("shard_seed: No such source #{src}")
|
85
92
|
raise "No such shard_seed source: #{src}"
|
86
93
|
end
|
87
94
|
end
|
@@ -99,6 +106,7 @@ Ohai.plugin(:ShardSeed) do
|
|
99
106
|
when :uuid
|
100
107
|
wmi.first_of("Win32_ComputerSystemProduct")["UUID"]
|
101
108
|
else
|
109
|
+
Ohai::Log.error("shard_seed: No such source #{src}")
|
102
110
|
raise "No such shard_seed source: #{src}"
|
103
111
|
end
|
104
112
|
end
|
@@ -112,6 +120,7 @@ Ohai.plugin(:ShardSeed) do
|
|
112
120
|
when :uuid
|
113
121
|
hardware["platform_UUID"]
|
114
122
|
else
|
123
|
+
Ohai::Log.error("shard_seed: No such source #{src}")
|
115
124
|
raise "No such shard_seed source: #{src}"
|
116
125
|
end
|
117
126
|
end
|
@@ -125,6 +134,7 @@ Ohai.plugin(:ShardSeed) do
|
|
125
134
|
when :uuid
|
126
135
|
get_dmi_property(dmi, :uuid)
|
127
136
|
else
|
137
|
+
Ohai::Log.error("shard_seed: No such source #{src}")
|
128
138
|
raise "No such shard_seed source: #{src}"
|
129
139
|
end
|
130
140
|
end
|
@@ -24,7 +24,7 @@ Ohai.plugin(:DMI) do
|
|
24
24
|
|
25
25
|
# if we already have a "dmi" with keys (presumably from dmidecode), don't try smbios
|
26
26
|
# note that a single key just means dmidecode exited with its version
|
27
|
-
if
|
27
|
+
if dmi.is_a?(Mash) && dmi.keys.length > 1
|
28
28
|
logger.trace("Plugin DMI: skipping smbios output, since DMI information has already been provided")
|
29
29
|
return
|
30
30
|
end
|
@@ -177,7 +177,7 @@ Ohai.plugin(:DMI) do
|
|
177
177
|
next
|
178
178
|
end
|
179
179
|
# overwrite "raw" value with a new Mash
|
180
|
-
dmi[dmi_record[:type]][:all_records][dmi_record[:position]][field] = Mash.new unless dmi[dmi_record[:type]][:all_records][dmi_record[:position]][field].
|
180
|
+
dmi[dmi_record[:type]][:all_records][dmi_record[:position]][field] = Mash.new unless dmi[dmi_record[:type]][:all_records][dmi_record[:position]][field].is_a?(Mash)
|
181
181
|
dmi[dmi_record[:type]][:all_records][dmi_record[:position]][field][extended_data[1]] = extended_data[2]
|
182
182
|
|
183
183
|
else
|
data/lib/ohai/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ohai
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 15.
|
4
|
+
version: 15.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Jacob
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-06-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: systemu
|