lib/ohai/plugins/shard.rb in ohai-18.0.14 vs lib/ohai/plugins/shard.rb in ohai-18.0.26
- old
+ new
@@ -1,142 +1,142 @@
-#
-# Author:: Phil Dibowitz <phil@ipom.com>
-# Copyright:: Copyright (c) 2016 Facebook, Inc.
-# 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(:ShardSeed) do
- depends "hostname", "dmi", "machine_id", "machinename", "fips", "hardware", "kernel"
- provides "shard_seed".freeze
-
- def get_dmi_property(dmi, thing)
- %w{system base_board chassis}.each do |section|
- if dmi[section] && dmi[section][thing] && !dmi[section][thing].strip.empty?
- return dmi[section][thing]
- end
- end
- Ohai::Log.error("shard_seed: Failed to get dmi property #{thing}: is dmidecode installed?")
- raise "Failed to generate shard_seed"
- end
-
- def default_sources
- case collect_os
- when "linux", "darwin", "windows"
- %i{machinename serial uuid}
- else
- [:machinename]
- end
- end
-
- def default_digest_algorithm
- if fips && fips["kernel"]["enabled"]
- # Even though it is being used safely, FIPS-mode will still blow up on
- # any use of MD5 so default to SHA2 instead.
- "sha256"
- else
- "md5"
- end
- end
-
- def digest_algorithm
- case Ohai.config[:plugin][:shard_seed][:digest_algorithm] || default_digest_algorithm
- when "md5"
- require "digest/md5" unless defined?(Digest::MD5)
- Digest::MD5
- when "sha256"
- require "openssl/digest"
- OpenSSL::Digest::SHA256
- end
- end
-
- # Common sources go here. Put sources that need to be different per-platform
- # under their collect_data block.
- def create_seed(&block)
- sources = Ohai.config[:plugin][:shard_seed][:sources] || default_sources
- data = ""
- sources.each do |src|
- data << case src
- when :fqdn
- fqdn
- when :hostname
- hostname
- when :machine_id
- machine_id
- when :machinename
- machinename
- else
- yield(src)
- end
- end
- if data.empty?
- 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.")
- raise "Failed to generate shard_seed"
- end
- shard_seed digest_algorithm.hexdigest(data)[0...7].to_i(16)
- end
-
- collect_data do
- create_seed do |src|
- Ohai::Log.error("shard_seed: No such source #{src}")
- raise "No such shard_seed source: #{src}"
- end
- end
-
- collect_data(:windows) do
- require "wmi-lite/wmi" unless defined?(WmiLite::Wmi)
- wmi = WmiLite::Wmi.new
-
- create_seed do |src|
- case src
- when :serial
- wmi.first_of("Win32_BIOS")["SerialNumber"]
- when :os_serial
- kernel["os_info"]["serial_number"]
- when :uuid
- wmi.first_of("Win32_ComputerSystemProduct")["UUID"]
- else
- Ohai::Log.error("shard_seed: No such source #{src}")
- raise "No such shard_seed source: #{src}"
- end
- end
- end
-
- collect_data(:darwin) do
- create_seed do |src|
- case src
- when :serial
- hardware["serial_number"]
- when :uuid
- hardware["platform_UUID"]
- else
- Ohai::Log.error("shard_seed: No such source #{src}")
- raise "No such shard_seed source: #{src}"
- end
- end
- end
-
- collect_data(:linux) do
- create_seed do |src|
- case src
- when :serial
- get_dmi_property(dmi, :serial_number)
- when :uuid
- get_dmi_property(dmi, :uuid)
- else
- Ohai::Log.error("shard_seed: No such source #{src}")
- raise "No such shard_seed source: #{src}"
- end
- end
- end
-end
+#
+# Author:: Phil Dibowitz <phil@ipom.com>
+# Copyright:: Copyright (c) 2016 Facebook, Inc.
+# 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(:ShardSeed) do
+ depends "hostname", "dmi", "machine_id", "machinename", "fips", "hardware", "kernel"
+ provides "shard_seed".freeze
+
+ def get_dmi_property(dmi, thing)
+ %w{system base_board chassis}.each do |section|
+ if dmi[section] && dmi[section][thing] && !dmi[section][thing].strip.empty?
+ return dmi[section][thing]
+ end
+ end
+ Ohai::Log.error("shard_seed: Failed to get dmi property #{thing}: is dmidecode installed?")
+ raise "Failed to generate shard_seed"
+ end
+
+ def default_sources
+ case collect_os
+ when "linux", "darwin", "windows"
+ %i{machinename serial uuid}
+ else
+ [:machinename]
+ end
+ end
+
+ def default_digest_algorithm
+ if fips && fips["kernel"]["enabled"]
+ # Even though it is being used safely, FIPS-mode will still blow up on
+ # any use of MD5 so default to SHA2 instead.
+ "sha256"
+ else
+ "md5"
+ end
+ end
+
+ def digest_algorithm
+ case Ohai.config[:plugin][:shard_seed][:digest_algorithm] || default_digest_algorithm
+ when "md5"
+ require "digest/md5" unless defined?(Digest::MD5)
+ Digest::MD5
+ when "sha256"
+ require "openssl/digest"
+ OpenSSL::Digest::SHA256
+ end
+ end
+
+ # Common sources go here. Put sources that need to be different per-platform
+ # under their collect_data block.
+ def create_seed(&block)
+ sources = Ohai.config[:plugin][:shard_seed][:sources] || default_sources
+ data = ""
+ sources.each do |src|
+ data << case src
+ when :fqdn
+ fqdn
+ when :hostname
+ hostname
+ when :machine_id
+ machine_id
+ when :machinename
+ machinename
+ else
+ yield(src)
+ end
+ end
+ if data.empty?
+ 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.")
+ raise "Failed to generate shard_seed"
+ end
+ shard_seed digest_algorithm.hexdigest(data)[0...7].to_i(16)
+ end
+
+ collect_data do
+ create_seed do |src|
+ Ohai::Log.error("shard_seed: No such source #{src}")
+ raise "No such shard_seed source: #{src}"
+ end
+ end
+
+ collect_data(:windows) do
+ require "wmi-lite/wmi" unless defined?(WmiLite::Wmi)
+ wmi = WmiLite::Wmi.new
+
+ create_seed do |src|
+ case src
+ when :serial
+ wmi.first_of("Win32_BIOS")["SerialNumber"]
+ when :os_serial
+ kernel["os_info"]["serial_number"]
+ when :uuid
+ wmi.first_of("Win32_ComputerSystemProduct")["UUID"]
+ else
+ Ohai::Log.error("shard_seed: No such source #{src}")
+ raise "No such shard_seed source: #{src}"
+ end
+ end
+ end
+
+ collect_data(:darwin) do
+ create_seed do |src|
+ case src
+ when :serial
+ hardware["serial_number"]
+ when :uuid
+ hardware["platform_UUID"]
+ else
+ Ohai::Log.error("shard_seed: No such source #{src}")
+ raise "No such shard_seed source: #{src}"
+ end
+ end
+ end
+
+ collect_data(:linux) do
+ create_seed do |src|
+ case src
+ when :serial
+ get_dmi_property(dmi, :serial_number)
+ when :uuid
+ get_dmi_property(dmi, :uuid)
+ else
+ Ohai::Log.error("shard_seed: No such source #{src}")
+ raise "No such shard_seed source: #{src}"
+ end
+ end
+ end
+end