ohai 15.7.4 → 16.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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)}' product: '#{get_attribute(:dmi, :system, :product)}' version: '#{get_attribute(:dmi, :system, :version)}'")
122
- guest = guest_from_dmi_data(get_attribute(:dmi, :system, :manufacturer), get_attribute(:dmi, :system, :product), get_attribute(:dmi, :system, :version))
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.getpwnam("dhc-user")
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
@@ -191,7 +191,7 @@ Ohai.plugin(:Packages) do
191
191
  chunked_lines = so.stdout.lines.map(&:strip).chunk do |line|
192
192
  !line.empty? || nil
193
193
  end
194
- chunked_lines.each do |_, lines| # rubocop: disable Performance/HashEachMethods
194
+ chunked_lines.each do |_, lines| # rubocop: disable Style/HashEachMethods
195
195
  package = {}
196
196
  lines.each do |line|
197
197
  key, value = line.split(":", 2)
@@ -54,7 +54,7 @@ Ohai.plugin(:Rackspace) do
54
54
  wmi = WmiLite::Wmi.new
55
55
  if wmi.first_of("Win32_ComputerSystem")["PrimaryOwnerName"] == "Rackspace"
56
56
  logger.trace("Plugin Rackspace: has_rackspace_manufacturer? == true")
57
- return true
57
+ true
58
58
  end
59
59
  end
60
60
 
@@ -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
- unless dmi[section][thing].strip.empty?
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
@@ -93,8 +93,8 @@ Ohai.plugin(:Virtualbox) do
93
93
  so_cmd = "VBoxManage list --sorted #{query_type}"
94
94
  logger.trace(so_cmd)
95
95
  so = shell_out(so_cmd)
96
- # raise an exception if the command fails
97
- # so.error!
96
+ # raise an exception if the command fails
97
+ # so.error!
98
98
 
99
99
  if so.exitstatus == 0
100
100
  # break the result into paragraph blocks, on successive newlines
@@ -0,0 +1,94 @@
1
+ #
2
+ # Author:: Pete Higgins (pete@peterhiggins.org)
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ Ohai.plugin(:DMI) do
20
+ provides "dmi"
21
+
22
+ # Map the linux component types to their rough Windows API equivalents
23
+ DMI_TO_WIN32OLE ||= {
24
+ chassis: "SystemEnclosure",
25
+ processor: "Processor",
26
+ bios: "Bios",
27
+ system: "ComputerSystemProduct",
28
+ base_board: "BaseBoard",
29
+ }.freeze
30
+
31
+ # This regex is in 3 parts for the different supported patterns in camel
32
+ # case names coming from the Windows API:
33
+ # * Typical camelcase, eg Depth, PartNumber, NumberOfPowerCords
34
+ # * Acronyms preceding camelcase, eg SMBIOSAssetTag
35
+ # * Acronyms that occur at the end of the name, eg SKU, DeviceID
36
+ #
37
+ # This cannot handle some property names, eg SMBIOSBIOSVersion.
38
+ # https://rubular.com/r/FBNtXod4wkZGAG
39
+ SPLIT_REGEX ||= /[A-Z][a-z0-9]+|[A-Z]{2,}(?=[A-Z][a-z0-9])|[A-Z]{2,}/.freeze
40
+
41
+ WINDOWS_TO_UNIX_KEYS ||= [
42
+ %w{vendor manufacturer},
43
+ %w{identifying_number serial_number},
44
+ %w{name family},
45
+ ].freeze
46
+
47
+ collect_data(:windows) do
48
+ require "ohai/common/dmi"
49
+ require "wmi-lite/wmi"
50
+ wmi = WmiLite::Wmi.new
51
+
52
+ dmi Mash.new
53
+
54
+ # The Windows API returns property names in camel case, eg "SerialNumber",
55
+ # while `dmi` returns them as space separated strings, eg "Serial Number".
56
+ # `Ohai::Common::DMI.convenience_keys` expects property names in `dmi`'s
57
+ # format, so build two parallel hashes with the keys as they come from the
58
+ # Windows API and in a faked-out `dmi` version. After the call to
59
+ # `Ohai::Common::DMI.convenience_keys` replace the faked-out `dmi`
60
+ # collection with the one with the original property names.
61
+ DMI_TO_WIN32OLE.each do |dmi_key, ole_key|
62
+ wmi_objects = wmi.instances_of("Win32_#{ole_key}").map(&:wmi_ole_object)
63
+
64
+ split_name_properties = []
65
+ properties = []
66
+
67
+ wmi_objects.each do |wmi_object|
68
+ split_name_properties << Mash.new
69
+ properties << Mash.new
70
+
71
+ wmi_object.properties_.each do |property|
72
+ property_name = property.name
73
+ value = wmi_object.invoke(property_name)
74
+
75
+ split_name = property_name.scan(SPLIT_REGEX).join(" ")
76
+ split_name_properties.last[split_name] = value
77
+ properties.last[property_name] = value
78
+ end
79
+ end
80
+
81
+ dmi[dmi_key] = Mash.new(all_records: split_name_properties, _all_records: properties)
82
+ end
83
+
84
+ Ohai::Common::DMI.convenience_keys(dmi)
85
+
86
+ dmi.each_value do |records|
87
+ records[:all_records] = records.delete(:_all_records)
88
+
89
+ WINDOWS_TO_UNIX_KEYS.each do |windows_key, unix_key|
90
+ records[unix_key] = records.delete(windows_key) if records.key?(windows_key)
91
+ end
92
+ end
93
+ end
94
+ end
@@ -18,13 +18,11 @@
18
18
 
19
19
  Ohai.plugin :SystemEnclosure do
20
20
  provides "system_enclosure"
21
+ depends "dmi"
21
22
 
22
23
  collect_data(:windows) do
23
- require "wmi-lite/wmi"
24
24
  system_enclosure Mash.new
25
- wmi = WmiLite::Wmi.new
26
- wmi_object = wmi.first_of("Win32_SystemEnclosure").wmi_ole_object
27
- system_enclosure[:manufacturer] = wmi_object.invoke("manufacturer")
28
- system_enclosure[:serialnumber] = wmi_object.invoke("serialnumber")
25
+ system_enclosure[:manufacturer] = get_attribute(:dmi, :chassis, :manufacturer)
26
+ system_enclosure[:serialnumber] = get_attribute(:dmi, :chassis, :serial_number)
29
27
  end
30
28
  end
@@ -18,5 +18,5 @@
18
18
 
19
19
  module Ohai
20
20
  OHAI_ROOT = File.expand_path(File.dirname(__FILE__))
21
- VERSION = "15.7.4".freeze
21
+ VERSION = "16.2.0".freeze
22
22
  end
@@ -24,7 +24,8 @@ Gem::Specification.new do |s|
24
24
  s.add_dependency "ipaddress"
25
25
  s.add_dependency "wmi-lite", "~> 1.0"
26
26
  s.add_dependency "ffi", "~> 1.9"
27
- s.add_dependency "chef-config", ">= 12.8", "< 16"
27
+ s.add_dependency "chef-config", ">= 12.8", "< 17"
28
+ s.add_dependency "chef-utils", ">= 16.0", "< 17"
28
29
  # Note for ohai developers: If chef-config causes you grief, try:
29
30
  # bundle install --with development
30
31
  # this should work as long as chef is a development dependency in Gemfile.
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.7.4
4
+ version: 16.2.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: 2020-01-21 00:00:00.000000000 Z
11
+ date: 2020-06-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: systemu
@@ -177,7 +177,7 @@ dependencies:
177
177
  version: '12.8'
178
178
  - - "<"
179
179
  - !ruby/object:Gem::Version
180
- version: '16'
180
+ version: '17'
181
181
  type: :runtime
182
182
  prerelease: false
183
183
  version_requirements: !ruby/object:Gem::Requirement
@@ -187,7 +187,27 @@ dependencies:
187
187
  version: '12.8'
188
188
  - - "<"
189
189
  - !ruby/object:Gem::Version
190
- version: '16'
190
+ version: '17'
191
+ - !ruby/object:Gem::Dependency
192
+ name: chef-utils
193
+ requirement: !ruby/object:Gem::Requirement
194
+ requirements:
195
+ - - ">="
196
+ - !ruby/object:Gem::Version
197
+ version: '16.0'
198
+ - - "<"
199
+ - !ruby/object:Gem::Version
200
+ version: '17'
201
+ type: :runtime
202
+ prerelease: false
203
+ version_requirements: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - ">="
206
+ - !ruby/object:Gem::Version
207
+ version: '16.0'
208
+ - - "<"
209
+ - !ruby/object:Gem::Version
210
+ version: '17'
191
211
  description: Ohai profiles your system and emits JSON
192
212
  email: adam@chef.io
193
213
  executables:
@@ -254,6 +274,7 @@ files:
254
274
  - lib/ohai/plugins/erlang.rb
255
275
  - lib/ohai/plugins/eucalyptus.rb
256
276
  - lib/ohai/plugins/filesystem.rb
277
+ - lib/ohai/plugins/fips.rb
257
278
  - lib/ohai/plugins/freebsd/memory.rb
258
279
  - lib/ohai/plugins/freebsd/network.rb
259
280
  - lib/ohai/plugins/freebsd/platform.rb
@@ -271,8 +292,9 @@ files:
271
292
  - lib/ohai/plugins/libvirt.rb
272
293
  - lib/ohai/plugins/linode.rb
273
294
  - lib/ohai/plugins/linux/block_device.rb
274
- - lib/ohai/plugins/linux/fips.rb
275
295
  - lib/ohai/plugins/linux/hostnamectl.rb
296
+ - lib/ohai/plugins/linux/interrupts.rb
297
+ - lib/ohai/plugins/linux/ipc.rb
276
298
  - lib/ohai/plugins/linux/lsb.rb
277
299
  - lib/ohai/plugins/linux/lspci.rb
278
300
  - lib/ohai/plugins/linux/machineid.rb
@@ -280,6 +302,7 @@ files:
280
302
  - lib/ohai/plugins/linux/memory.rb
281
303
  - lib/ohai/plugins/linux/network.rb
282
304
  - lib/ohai/plugins/linux/platform.rb
305
+ - lib/ohai/plugins/linux/selinux.rb
283
306
  - lib/ohai/plugins/linux/sessions.rb
284
307
  - lib/ohai/plugins/linux/sysctl.rb
285
308
  - lib/ohai/plugins/linux/systemd_paths.rb
@@ -327,8 +350,8 @@ files:
327
350
  - lib/ohai/plugins/uptime.rb
328
351
  - lib/ohai/plugins/virtualbox.rb
329
352
  - lib/ohai/plugins/vmware.rb
353
+ - lib/ohai/plugins/windows/dmi.rb
330
354
  - lib/ohai/plugins/windows/drivers.rb
331
- - lib/ohai/plugins/windows/fips.rb
332
355
  - lib/ohai/plugins/windows/memory.rb
333
356
  - lib/ohai/plugins/windows/network.rb
334
357
  - lib/ohai/plugins/windows/platform.rb
@@ -1,38 +0,0 @@
1
- #
2
- # Author:: Matt Wrock (<matt@mattwrock.com>)
3
- # Copyright:: Copyright (c) 2016-2018 Chef Software, Inc.
4
- # License:: Apache License, Version 2.0
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
-
19
- # After long discussion in IRC the "powers that be" have come to a concensus
20
- # that there is no other Windows platforms exist that were not based on the
21
- # Windows_NT kernel, so we herby decree that "windows" will refer to all
22
- # platforms built upon the Windows_NT kernel and have access to win32 or win64
23
- # subsystems.
24
-
25
- Ohai.plugin(:Fips) do
26
- provides "fips"
27
-
28
- collect_data(:windows) do
29
- fips Mash.new
30
-
31
- require "openssl" unless defined?(OpenSSL)
32
- if defined?(OpenSSL.fips_mode) && OpenSSL.fips_mode && !$FIPS_TEST_MODE
33
- fips["kernel"] = { "enabled" => true }
34
- else
35
- fips["kernel"] = { "enabled" => false }
36
- end
37
- end
38
- end