ohai 13.1.0 → 13.2.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.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +15 -6
  3. data/lib/ohai/common/dmi.rb +11 -13
  4. data/lib/ohai/dsl/plugin.rb +6 -8
  5. data/lib/ohai/dsl/plugin/versionvi.rb +1 -1
  6. data/lib/ohai/dsl/plugin/versionvii.rb +4 -4
  7. data/lib/ohai/mash.rb +1 -1
  8. data/lib/ohai/mixin/command.rb +3 -3
  9. data/lib/ohai/mixin/dmi_decode.rb +1 -1
  10. data/lib/ohai/mixin/ec2_metadata.rb +10 -10
  11. data/lib/ohai/mixin/os.rb +11 -11
  12. data/lib/ohai/mixin/softlayer_metadata.rb +2 -2
  13. data/lib/ohai/mixin/string.rb +1 -1
  14. data/lib/ohai/plugins/azure.rb +2 -2
  15. data/lib/ohai/plugins/c.rb +9 -10
  16. data/lib/ohai/plugins/darwin/cpu.rb +24 -20
  17. data/lib/ohai/plugins/darwin/hardware.rb +15 -9
  18. data/lib/ohai/plugins/digital_ocean.rb +2 -2
  19. data/lib/ohai/plugins/ec2.rb +5 -5
  20. data/lib/ohai/plugins/elixir.rb +1 -1
  21. data/lib/ohai/plugins/erlang.rb +2 -2
  22. data/lib/ohai/plugins/eucalyptus.rb +2 -2
  23. data/lib/ohai/plugins/go.rb +1 -1
  24. data/lib/ohai/plugins/hostname.rb +7 -10
  25. data/lib/ohai/plugins/ip_scopes.rb +2 -0
  26. data/lib/ohai/plugins/java.rb +19 -21
  27. data/lib/ohai/plugins/kernel.rb +1 -1
  28. data/lib/ohai/plugins/linux/cpu.rb +4 -0
  29. data/lib/ohai/plugins/linux/filesystem.rb +43 -30
  30. data/lib/ohai/plugins/linux/lsb.rb +1 -1
  31. data/lib/ohai/plugins/linux/mdadm.rb +9 -1
  32. data/lib/ohai/plugins/linux/network.rb +8 -12
  33. data/lib/ohai/plugins/linux/platform.rb +9 -1
  34. data/lib/ohai/plugins/linux/systemd_paths.rb +39 -0
  35. data/lib/ohai/plugins/mono.rb +1 -1
  36. data/lib/ohai/plugins/nodejs.rb +1 -1
  37. data/lib/ohai/plugins/openstack.rb +5 -5
  38. data/lib/ohai/plugins/packages.rb +8 -2
  39. data/lib/ohai/plugins/perl.rb +1 -1
  40. data/lib/ohai/plugins/php.rb +1 -1
  41. data/lib/ohai/plugins/powershell.rb +1 -1
  42. data/lib/ohai/plugins/python.rb +1 -1
  43. data/lib/ohai/plugins/rackspace.rb +4 -4
  44. data/lib/ohai/plugins/rust.rb +1 -1
  45. data/lib/ohai/plugins/solaris2/dmi.rb +3 -3
  46. data/lib/ohai/plugins/solaris2/network.rb +2 -2
  47. data/lib/ohai/plugins/ssh_host_key.rb +1 -1
  48. data/lib/ohai/plugins/uptime.rb +1 -1
  49. data/lib/ohai/plugins/{solaris2/zpools.rb → zpools.rb} +39 -16
  50. data/lib/ohai/util/file_helper.rb +2 -2
  51. data/lib/ohai/version.rb +1 -1
  52. data/spec/data/plugins/lslpp.output +1 -0
  53. data/spec/unit/plugins/darwin/cpu_spec.rb +66 -19
  54. data/spec/unit/plugins/darwin/hardware_spec.rb +2 -14
  55. data/spec/unit/plugins/linux/cpu_spec.rb +47 -0
  56. data/spec/unit/plugins/linux/filesystem_spec.rb +99 -9
  57. data/spec/unit/plugins/linux/mdadm_spec.rb +26 -1
  58. data/spec/unit/plugins/linux/network_spec.rb +8 -26
  59. data/spec/unit/plugins/linux/platform_spec.rb +41 -0
  60. data/spec/unit/plugins/linux/systemd_paths_spec.rb +122 -0
  61. data/spec/unit/plugins/packages_spec.rb +4 -0
  62. data/spec/unit/plugins/rackspace_spec.rb +3 -3
  63. data/spec/unit/plugins/zpools_spec.rb +242 -0
  64. metadata +7 -5
  65. data/spec/unit/plugins/solaris2/zpools_spec.rb +0 -153
@@ -43,10 +43,10 @@ Ohai.plugin(:EC2) do
43
43
  # detect a version of '4.2.amazon'
44
44
  if get_attribute(:dmi, :bios, :all_records, 0, :Version) =~ /amazon/
45
45
  Ohai::Log.debug("Plugin EC2: has_ec2_dmi? == true")
46
- return true
46
+ true
47
47
  else
48
48
  Ohai::Log.debug("Plugin EC2: has_ec2_dmi? == false")
49
- return false
49
+ false
50
50
  end
51
51
  end
52
52
 
@@ -60,7 +60,7 @@ Ohai.plugin(:EC2) do
60
60
  end
61
61
  end
62
62
  Ohai::Log.debug("Plugin EC2: has_ec2_xen_uuid? == false")
63
- return false
63
+ false
64
64
  end
65
65
 
66
66
  # looks for the Amazon.com Organization in Windows Kernel data
@@ -69,10 +69,10 @@ Ohai.plugin(:EC2) do
69
69
  # detect an Organization of 'Amazon.com'
70
70
  if get_attribute(:kernel, :os_info, :organization) =~ /Amazon/
71
71
  Ohai::Log.debug("Plugin EC2: has_amazon_org? == true")
72
- return true
72
+ true
73
73
  else
74
74
  Ohai::Log.debug("Plugin EC2: has_amazon_org? == false")
75
- return false
75
+ false
76
76
  end
77
77
  end
78
78
 
@@ -30,7 +30,7 @@ Ohai.plugin(:Elixir) do
30
30
  languages[:elixir] = elixir
31
31
  end
32
32
  rescue Ohai::Exceptions::Exec
33
- Ohai::Log.debug('Elixir plugin: Could not shell_out "elixir -v". Skipping plugin')
33
+ Ohai::Log.debug('Plugin Elixir: Could not shell_out "elixir -v". Skipping plugin')
34
34
  end
35
35
  end
36
36
  end
@@ -34,7 +34,7 @@ Ohai.plugin(:Erlang) do
34
34
  erlang[:nif_version] = output[2]
35
35
  end
36
36
  rescue Ohai::Exceptions::Exec
37
- Ohai::Log.debug('Erlang plugin: Could not shell_out "erl -eval \'erlang:display(erlang:system_info(otp_release)), erlang:display(erlang:system_info(version)), erlang:display(erlang:system_info(nif_version)), halt().\' -noshell". Skipping data')
37
+ Ohai::Log.debug('Plugin Erlang: Could not shell_out "erl -eval \'erlang:display(erlang:system_info(otp_release)), erlang:display(erlang:system_info(version)), erlang:display(erlang:system_info(nif_version)), halt().\' -noshell". Skipping data')
38
38
  end
39
39
 
40
40
  begin
@@ -51,7 +51,7 @@ Ohai.plugin(:Erlang) do
51
51
  end
52
52
  end
53
53
  rescue Ohai::Exceptions::Exec
54
- Ohai::Log.debug('Erlang plugin: Could not shell_out "erl +V". Skipping data')
54
+ Ohai::Log.debug('Plugin Erlang: Could not shell_out "erl +V". Skipping data')
55
55
  end
56
56
 
57
57
  languages[:erlang] = erlang unless erlang.empty?
@@ -62,7 +62,7 @@ Ohai.plugin(:Eucalyptus) do
62
62
  if looks_like_euca?
63
63
  Ohai::Log.debug("Plugin Eucalyptus: looks_like_euca? == true")
64
64
  eucalyptus Mash.new
65
- self.fetch_metadata.each do |k, v|
65
+ fetch_metadata.each do |k, v|
66
66
  # Eucalyptus 3.4+ supports IAM roles and Instance Profiles much like AWS
67
67
  # https://www.eucalyptus.com/blog/2013/10/15/iam-roles-and-instance-profiles-eucalyptus-34
68
68
  #
@@ -73,7 +73,7 @@ Ohai.plugin(:Eucalyptus) do
73
73
  next if k == "iam" && !hint?("iam")
74
74
  eucalyptus[k] = v
75
75
  end
76
- eucalyptus[:userdata] = self.fetch_userdata
76
+ eucalyptus[:userdata] = fetch_userdata
77
77
  else
78
78
  Ohai::Log.debug("Plugin Eucalyptus: looks_like_euca? == false")
79
79
  false
@@ -28,7 +28,7 @@ Ohai.plugin(:Go) do
28
28
  languages[:go] = go
29
29
  end
30
30
  rescue Ohai::Exceptions::Exec
31
- Ohai::Log.debug('Go plugin: Could not shell_out "go version". Skipping plugin')
31
+ Ohai::Log.debug('Plugin Go: Could not shell_out "go version". Skipping plugin')
32
32
  end
33
33
  end
34
34
  end
@@ -47,14 +47,12 @@ Ohai.plugin(:Hostname) do
47
47
  # forward and reverse lookup to canonicalize FQDN (hostname -f equivalent)
48
48
  # this is ipv6-safe, works on ruby 1.8.7+
49
49
  def resolve_fqdn
50
- begin
51
- hostname = from_cmd("hostname")
52
- addrinfo = Socket.getaddrinfo(hostname, nil).first
53
- iaddr = IPAddr.new(addrinfo[3])
54
- Socket.gethostbyaddr(iaddr.hton)[0]
55
- rescue
56
- nil
57
- end
50
+ hostname = from_cmd("hostname")
51
+ addrinfo = Socket.getaddrinfo(hostname, nil).first
52
+ iaddr = IPAddr.new(addrinfo[3])
53
+ Socket.gethostbyaddr(iaddr.hton)[0]
54
+ rescue
55
+ nil
58
56
  end
59
57
 
60
58
  def collect_domain
@@ -149,8 +147,7 @@ Ohai.plugin(:Hostname) do
149
147
  fqdn ourfqdn
150
148
  end
151
149
  rescue
152
- Ohai::Log.debug(
153
- "Plugin Hostname: hostname --fqdn returned an error, probably no domain set")
150
+ Ohai::Log.debug("Plugin Hostname: hostname --fqdn returned an error, probably no domain set")
154
151
  end
155
152
  domain collect_domain
156
153
  end
@@ -24,6 +24,8 @@ Ohai.plugin(:IpScopes) do
24
24
  begin
25
25
  require "ipaddr_extensions"
26
26
 
27
+ Ohai::Log.warn("The IpScopes Ohai plugin has been deprecated and will be removed from Ohai 14 (April 2018).")
28
+
27
29
  network["interfaces"].keys.sort.each do |if_name|
28
30
  next if network["interfaces"][if_name]["addresses"].nil?
29
31
 
@@ -21,30 +21,28 @@ Ohai.plugin(:Java) do
21
21
  depends "languages"
22
22
 
23
23
  def get_java_info
24
- begin
25
- so = shell_out("java -mx64m -version")
26
- # Sample output:
27
- # java version "1.8.0_60"
28
- # Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
29
- # Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
30
- if so.exitstatus == 0
31
- java = Mash.new
32
- so.stderr.split(/\r?\n/).each do |line|
33
- case line
34
- when /(?:java|openjdk) version \"([0-9\.\_]+)\"/
35
- java[:version] = $1
36
- when /^(.+Runtime Environment.*) \((build)\s*(.+)\)$/
37
- java[:runtime] = { "name" => $1, "build" => $3 }
38
- when /^(.+ (Client|Server) VM) \(build\s*(.+)\)$/
39
- java[:hotspot] = { "name" => $1, "build" => $3 }
40
- end
24
+ so = shell_out("java -mx64m -version")
25
+ # Sample output:
26
+ # java version "1.8.0_60"
27
+ # Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
28
+ # Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
29
+ if so.exitstatus == 0
30
+ java = Mash.new
31
+ so.stderr.split(/\r?\n/).each do |line|
32
+ case line
33
+ when /(?:java|openjdk) version \"([0-9\.\_]+)\"/
34
+ java[:version] = $1
35
+ when /^(.+Runtime Environment.*) \((build)\s*(.+)\)$/
36
+ java[:runtime] = { "name" => $1, "build" => $3 }
37
+ when /^(.+ (Client|Server) VM) \(build\s*(.+)\)$/
38
+ java[:hotspot] = { "name" => $1, "build" => $3 }
41
39
  end
42
-
43
- languages[:java] = java unless java.empty?
44
40
  end
45
- rescue Ohai::Exceptions::Exec
46
- Ohai::Log.debug('Java plugin: Could not shell_out "java -mx64m -version". Skipping plugin')
41
+
42
+ languages[:java] = java unless java.empty?
47
43
  end
44
+ rescue Ohai::Exceptions::Exec
45
+ Ohai::Log.debug('Plugin Java: Could not shell_out "java -mx64m -version". Skipping plugin')
48
46
  end
49
47
 
50
48
  # On Mac OS X, the development tools include "stubs" for JVM executables that
@@ -67,7 +67,7 @@ Ohai.plugin(:Kernel) do
67
67
  return "WIN98" if sys_type.to_s.eql?("17")
68
68
  return "WINNT" if sys_type.to_s.eql?("18")
69
69
  return "WINCE" if sys_type.to_s.eql?("19")
70
- return nil
70
+ nil
71
71
  end
72
72
 
73
73
  collect_data(:default) do
@@ -59,6 +59,10 @@ Ohai.plugin(:CPU) do
59
59
  cpuinfo[current_cpu]["cache_size"] = $1
60
60
  when /flags\s+:\s(.+)/
61
61
  cpuinfo[current_cpu]["flags"] = $1.split(" ")
62
+ when /BogoMIPS\s+:\s(.+)/
63
+ cpuinfo[current_cpu]["bogomips"] = $1
64
+ when /Features\s+:\s(.+)/
65
+ cpuinfo[current_cpu]["features"] = $1.split(" ")
62
66
  when /bogomips per cpu:\s(.+)/
63
67
  cpuinfo["bogomips_per_cpu"] = $1
64
68
  when /features\s+:\s(.+)/
@@ -30,8 +30,9 @@ Ohai.plugin(:Filesystem) do
30
30
  name
31
31
  end
32
32
 
33
- def parse_line(line, have_lsblk)
34
- if have_lsblk
33
+ def parse_line(line, cmdtype)
34
+ case cmdtype
35
+ when "lsblk"
35
36
  regex = /NAME="(\S+).*?" UUID="(\S*)" LABEL="(\S*)" FSTYPE="(\S*)"/
36
37
  if line =~ regex
37
38
  dev = $1
@@ -41,7 +42,7 @@ Ohai.plugin(:Filesystem) do
41
42
  fs_type = $4
42
43
  return { :dev => dev, :uuid => uuid, :label => label, :fs_type => fs_type }
43
44
  end
44
- else
45
+ when "blkid"
45
46
  bits = line.split
46
47
  dev = bits.shift.split(":")[0]
47
48
  f = { :dev => dev }
@@ -54,7 +55,7 @@ Ohai.plugin(:Filesystem) do
54
55
  end
55
56
  return f
56
57
  end
57
- return nil
58
+ nil
58
59
  end
59
60
 
60
61
  def generate_device_view(fs)
@@ -142,36 +143,48 @@ Ohai.plugin(:Filesystem) do
142
143
  end
143
144
  end
144
145
 
145
- have_lsblk = File.exist?("/bin/lsblk")
146
- if have_lsblk
147
- cmd = "lsblk -n -P -o NAME,UUID,LABEL,FSTYPE"
148
- else
149
- # CentOS5 and other platforms don't have lsblk
150
- cmd = "blkid"
146
+ # We used to try to decide if we wanted to run lsblk or blkid
147
+ # but they each have a variety of cases were they fail to report
148
+ # data. For example, there are a variety of cases where lsblk won't
149
+ # report unmounted filesystems, but blkid will. And vise-versa. Sweet.
150
+ # So for reliability, we'll run both, if we have them.
151
+
152
+ lsblk = which("lsblk")
153
+ blkid = which("blkid")
154
+ cmds = []
155
+ # These should be in order of preference... first writer wins.
156
+ if lsblk
157
+ cmds << "#{lsblk} -n -P -o NAME,UUID,LABEL,FSTYPE"
158
+ end
159
+ if blkid
160
+ cmds << blkid
151
161
  end
152
162
 
153
- so = shell_out(cmd)
154
- so.stdout.each_line do |line|
155
- parsed = parse_line(line, have_lsblk)
156
- next if parsed.nil?
157
- # lsblk lists each device once, so we need to update all entries
158
- # in the hash that are related to this device
159
- keys_to_update = []
160
- fs.each_key do |key|
161
- keys_to_update << key if key.start_with?("#{parsed[:dev]},")
162
- end
163
+ cmds.each do |cmd|
164
+ cmdtype = File.basename(cmd.split.first)
165
+ so = shell_out(cmd)
166
+ so.stdout.each_line do |line|
167
+ parsed = parse_line(line, cmdtype)
168
+ next if parsed.nil?
169
+ # lsblk lists each device once, so we need to update all entries
170
+ # in the hash that are related to this device
171
+ keys_to_update = []
172
+ fs.each_key do |key|
173
+ keys_to_update << key if key.start_with?("#{parsed[:dev]},")
174
+ end
163
175
 
164
- if keys_to_update.empty?
165
- key = "#{parsed[:dev]},"
166
- fs[key] = Mash.new
167
- fs[key][:device] = parsed[:dev]
168
- keys_to_update << key
169
- end
176
+ if keys_to_update.empty?
177
+ key = "#{parsed[:dev]},"
178
+ fs[key] = Mash.new
179
+ fs[key][:device] = parsed[:dev]
180
+ keys_to_update << key
181
+ end
170
182
 
171
- keys_to_update.each do |key|
172
- [:fs_type, :uuid, :label].each do |subkey|
173
- if parsed[subkey] && !parsed[subkey].empty?
174
- fs[key][subkey] = parsed[subkey]
183
+ keys_to_update.each do |key|
184
+ [:fs_type, :uuid, :label].each do |subkey|
185
+ if parsed[subkey] && !parsed[subkey].empty?
186
+ fs[key][subkey] = parsed[subkey]
187
+ end
175
188
  end
176
189
  end
177
190
  end
@@ -54,7 +54,7 @@ Ohai.plugin(:LSB) do
54
54
  end
55
55
  end
56
56
  else
57
- Ohai::Log.debug("Skipping LSB, cannot find /etc/lsb-release or /usr/bin/lsb_release")
57
+ Ohai::Log.debug("Plugin LSB: Skipping LSB, cannot find /etc/lsb-release or /usr/bin/lsb_release")
58
58
  end
59
59
  end
60
60
  end
@@ -59,7 +59,15 @@ Ohai.plugin(:Mdadm) do
59
59
  if line =~ /(md[0-9]+)/
60
60
  device = Regexp.last_match[1]
61
61
  pieces = line.split(/\s+/)
62
- devices[device] = pieces[4..-1].map { |s| s.match(/(.+)\[\d\]/)[1] }
62
+ # there are variable numbers of fields until you hit the raid level
63
+ # everything after that is members...
64
+ # unless the array is inactive, in which case you don't get a raid
65
+ # level.
66
+ members = pieces.drop_while { |x| !x.start_with?("raid", "inactive") }
67
+ # drop the 'raid' too
68
+
69
+ members.shift unless members.empty?
70
+ devices[device] = members.map { |s| s.match(/(.+)\[\d\]/)[1] }
63
71
  end
64
72
  end
65
73
 
@@ -37,16 +37,12 @@ Ohai.plugin(:Network) do
37
37
  File.exist? "/proc/net/if_inet6"
38
38
  end
39
39
 
40
- def iproute2_binary_available?
41
- ["/sbin/ip", "/usr/bin/ip", "/bin/ip"].any? { |path| File.exist?(path) }
42
- end
43
-
44
- def find_ethtool_binary
45
- ["/sbin/ethtool", "/usr/sbin/ethtool"].find { |path| File.exist?(path) }
40
+ def ethtool_binary_path
41
+ @ethtool ||= which("ethtool")
46
42
  end
47
43
 
48
44
  def is_openvz?
49
- ::File.directory?("/proc/vz")
45
+ @openvz ||= ::File.directory?("/proc/vz")
50
46
  end
51
47
 
52
48
  def is_openvz_host?
@@ -151,11 +147,11 @@ Ohai.plugin(:Network) do
151
147
 
152
148
  # determine layer 1 details for the interface using ethtool
153
149
  def ethernet_layer_one(iface)
154
- return iface unless ethtool_binary = find_ethtool_binary
150
+ return iface unless ethtool_binary_path
155
151
  keys = %w{ Speed Duplex Port Transceiver Auto-negotiation MDI-X }
156
152
  iface.each_key do |tmp_int|
157
153
  next unless iface[tmp_int][:encapsulation] == "Ethernet"
158
- so = shell_out("#{ethtool_binary} #{tmp_int}")
154
+ so = shell_out("#{ethtool_binary_path} #{tmp_int}")
159
155
  so.stdout.lines do |line|
160
156
  line.chomp!
161
157
  Ohai::Log.debug("Plugin Network: Parsing ethtool output: #{line}")
@@ -175,10 +171,10 @@ Ohai.plugin(:Network) do
175
171
 
176
172
  # determine ring parameters for the interface using ethtool
177
173
  def ethernet_ring_parameters(iface)
178
- return iface unless ethtool_binary = find_ethtool_binary
174
+ return iface unless ethtool_binary_path
179
175
  iface.each_key do |tmp_int|
180
176
  next unless iface[tmp_int][:encapsulation] == "Ethernet"
181
- so = shell_out("#{ethtool_binary} -g #{tmp_int}")
177
+ so = shell_out("#{ethtool_binary_path} -g #{tmp_int}")
182
178
  Ohai::Log.debug("Plugin Network: Parsing ethtool output: #{so.stdout}")
183
179
  type = nil
184
180
  iface[tmp_int]["ring_params"] = {}
@@ -471,7 +467,7 @@ Ohai.plugin(:Network) do
471
467
  # The '@eth0:' portion doesn't exist on primary interfaces and thus is optional in the regex
472
468
  IPROUTE_INT_REGEX = /^(\d+): ([0-9a-zA-Z@:\.\-_]*?)(@[0-9a-zA-Z]+|):\s/ unless defined? IPROUTE_INT_REGEX
473
469
 
474
- if iproute2_binary_available?
470
+ if which("ip")
475
471
  # families to get default routes from
476
472
  families = [{
477
473
  :name => "inet",
@@ -107,7 +107,7 @@ Ohai.plugin(:Platform) do
107
107
  case platform
108
108
  when /debian/, /ubuntu/, /linuxmint/, /raspbian/, /cumulus/
109
109
  "debian"
110
- when /oracle/, /centos/, /redhat/, /scientific/, /enterpriseenterprise/, /xenserver/, /cloudlinux/, /ibm_powerkvm/, /parallels/, /nexus_centos/ # Note that 'enterpriseenterprise' is oracle's LSB "distributor ID"
110
+ when /oracle/, /centos/, /redhat/, /scientific/, /enterpriseenterprise/, /xenserver/, /cloudlinux/, /ibm_powerkvm/, /parallels/, /nexus_centos/, /clearos/ # Note that 'enterpriseenterprise' is oracle's LSB "distributor ID"
111
111
  "rhel"
112
112
  when /amazon/
113
113
  "amazon"
@@ -127,6 +127,8 @@ Ohai.plugin(:Platform) do
127
127
  "exherbo"
128
128
  when /alpine/
129
129
  "alpine"
130
+ when /clearlinux/
131
+ "clearlinux"
130
132
  end
131
133
  end
132
134
 
@@ -232,6 +234,12 @@ Ohai.plugin(:Platform) do
232
234
  elsif File.exist?("/etc/alpine-release")
233
235
  platform "alpine"
234
236
  platform_version File.read("/etc/alpine-release").strip()
237
+ elsif File.exist?("/usr/lib/os-release")
238
+ contents = File.read("/usr/lib/os-release")
239
+ if /Clear Linux/ =~ contents
240
+ platform "clearlinux"
241
+ platform_version contents[/VERSION_ID=(\d+)/, 1]
242
+ end
235
243
  elsif lsb[:id] =~ /RedHat/i
236
244
  platform "redhat"
237
245
  platform_version lsb[:release]
@@ -0,0 +1,39 @@
1
+ #
2
+ # Author:: Davide Cavalca <dcavalca@fb.com>
3
+ # Copyright:: Copyright (c) 2017 Facebook
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
+ require "ohai/util/file_helper"
20
+
21
+ include Ohai::Util::FileHelper
22
+
23
+ Ohai.plugin(:SystemdPaths) do
24
+ provides "systemd_paths"
25
+
26
+ collect_data(:linux) do
27
+ systemd_path_path = which("systemd-path")
28
+ if systemd_path_path
29
+ systemd_path = shell_out(systemd_path_path)
30
+
31
+ systemd_paths Mash.new unless systemd_paths
32
+
33
+ systemd_path.stdout.each_line do |line|
34
+ key, val = line.split(":")
35
+ systemd_paths[key] = val.strip
36
+ end
37
+ end
38
+ end
39
+ end