ohai 15.6.3 → 15.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|