ohai 18.2.6 → 19.0.3

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 (169) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +28 -28
  3. data/LICENSE +201 -201
  4. data/bin/ohai +25 -25
  5. data/lib/ohai/application.rb +189 -189
  6. data/lib/ohai/common/dmi.rb +167 -167
  7. data/lib/ohai/config.rb +51 -51
  8. data/lib/ohai/dsl/plugin/versionvii.rb +203 -203
  9. data/lib/ohai/dsl/plugin.rb +232 -232
  10. data/lib/ohai/dsl.rb +22 -22
  11. data/lib/ohai/exception.rb +36 -36
  12. data/lib/ohai/hints.rb +68 -68
  13. data/lib/ohai/loader.rb +178 -178
  14. data/lib/ohai/log.rb +34 -34
  15. data/lib/ohai/mash.rb +22 -22
  16. data/lib/ohai/mixin/alibaba_metadata.rb +83 -83
  17. data/lib/ohai/mixin/azure_metadata.rb +105 -105
  18. data/lib/ohai/mixin/chef_utils_wiring.rb +52 -52
  19. data/lib/ohai/mixin/command.rb +4 -4
  20. data/lib/ohai/mixin/constant_helper.rb +55 -55
  21. data/lib/ohai/mixin/dmi_decode.rb +54 -54
  22. data/lib/ohai/mixin/do_metadata.rb +48 -48
  23. data/lib/ohai/mixin/ec2_metadata.rb +264 -270
  24. data/lib/ohai/mixin/gce_metadata.rb +79 -79
  25. data/lib/ohai/mixin/http_helper.rb +64 -64
  26. data/lib/ohai/mixin/json_helper.rb +36 -36
  27. data/lib/ohai/mixin/network_helper.rb +92 -92
  28. data/lib/ohai/mixin/oci_metadata.rb +60 -60
  29. data/lib/ohai/mixin/os.rb +128 -128
  30. data/lib/ohai/mixin/scaleway_metadata.rb +51 -51
  31. data/lib/ohai/mixin/seconds_to_human.rb +52 -52
  32. data/lib/ohai/mixin/shell_out.rb +51 -51
  33. data/lib/ohai/mixin/softlayer_metadata.rb +74 -74
  34. data/lib/ohai/mixin/string.rb +31 -31
  35. data/lib/ohai/mixin/train_helpers.rb +36 -36
  36. data/lib/ohai/mixin/which.rb +39 -39
  37. data/lib/ohai/plugin_config.rb +47 -47
  38. data/lib/ohai/plugins/aix/kernel.rb +50 -50
  39. data/lib/ohai/plugins/aix/memory.rb +37 -37
  40. data/lib/ohai/plugins/aix/network.rb +142 -142
  41. data/lib/ohai/plugins/aix/platform.rb +30 -30
  42. data/lib/ohai/plugins/aix/uptime.rb +54 -54
  43. data/lib/ohai/plugins/aix/virtualization.rb +154 -154
  44. data/lib/ohai/plugins/alibaba.rb +72 -72
  45. data/lib/ohai/plugins/azure.rb +154 -154
  46. data/lib/ohai/plugins/bsd/virtualization.rb +121 -121
  47. data/lib/ohai/plugins/c.rb +178 -178
  48. data/lib/ohai/plugins/chef.rb +50 -50
  49. data/lib/ohai/plugins/cloud.rb +379 -379
  50. data/lib/ohai/plugins/command.rb +26 -26
  51. data/lib/ohai/plugins/cpu.rb +642 -642
  52. data/lib/ohai/plugins/darwin/hardware.rb +99 -99
  53. data/lib/ohai/plugins/darwin/memory.rb +62 -62
  54. data/lib/ohai/plugins/darwin/network.rb +207 -207
  55. data/lib/ohai/plugins/darwin/platform.rb +40 -40
  56. data/lib/ohai/plugins/darwin/virtualization.rb +104 -104
  57. data/lib/ohai/plugins/digital_ocean.rb +67 -67
  58. data/lib/ohai/plugins/dmi.rb +134 -134
  59. data/lib/ohai/plugins/docker.rb +58 -58
  60. data/lib/ohai/plugins/dragonflybsd/memory.rb +60 -60
  61. data/lib/ohai/plugins/dragonflybsd/network.rb +128 -128
  62. data/lib/ohai/plugins/dragonflybsd/platform.rb +28 -28
  63. data/lib/ohai/plugins/ec2.rb +148 -148
  64. data/lib/ohai/plugins/elixir.rb +36 -36
  65. data/lib/ohai/plugins/erlang.rb +60 -60
  66. data/lib/ohai/plugins/eucalyptus.rb +86 -86
  67. data/lib/ohai/plugins/filesystem.rb +753 -753
  68. data/lib/ohai/plugins/fips.rb +36 -36
  69. data/lib/ohai/plugins/freebsd/memory.rb +60 -60
  70. data/lib/ohai/plugins/freebsd/network.rb +128 -128
  71. data/lib/ohai/plugins/freebsd/platform.rb +28 -28
  72. data/lib/ohai/plugins/gce.rb +89 -89
  73. data/lib/ohai/plugins/go.rb +34 -34
  74. data/lib/ohai/plugins/groovy.rb +38 -38
  75. data/lib/ohai/plugins/grub2.rb +40 -40
  76. data/lib/ohai/plugins/habitat.rb +73 -73
  77. data/lib/ohai/plugins/haskell.rb +96 -96
  78. data/lib/ohai/plugins/hostname.rb +133 -133
  79. data/lib/ohai/plugins/init_package.rb +26 -26
  80. data/lib/ohai/plugins/java.rb +78 -78
  81. data/lib/ohai/plugins/kernel.rb +292 -292
  82. data/lib/ohai/plugins/keys.rb +27 -27
  83. data/lib/ohai/plugins/languages.rb +26 -26
  84. data/lib/ohai/plugins/libvirt.rb +114 -114
  85. data/lib/ohai/plugins/linode.rb +73 -73
  86. data/lib/ohai/plugins/linux/block_device.rb +48 -48
  87. data/lib/ohai/plugins/linux/hostnamectl.rb +34 -34
  88. data/lib/ohai/plugins/linux/interrupts.rb +84 -83
  89. data/lib/ohai/plugins/linux/ipc.rb +52 -52
  90. data/lib/ohai/plugins/linux/livepatch.rb +38 -38
  91. data/lib/ohai/plugins/linux/lsb.rb +46 -46
  92. data/lib/ohai/plugins/linux/lspci.rb +80 -80
  93. data/lib/ohai/plugins/linux/machineid.rb +36 -36
  94. data/lib/ohai/plugins/linux/mdadm.rb +120 -120
  95. data/lib/ohai/plugins/linux/memory.rb +106 -106
  96. data/lib/ohai/plugins/linux/network.rb +879 -879
  97. data/lib/ohai/plugins/linux/os_release.rb +38 -38
  98. data/lib/ohai/plugins/linux/platform.rb +314 -314
  99. data/lib/ohai/plugins/linux/selinux.rb +69 -69
  100. data/lib/ohai/plugins/linux/sessions.rb +54 -54
  101. data/lib/ohai/plugins/linux/sysctl.rb +39 -39
  102. data/lib/ohai/plugins/linux/systemd_paths.rb +36 -36
  103. data/lib/ohai/plugins/linux/tc.rb +61 -61
  104. data/lib/ohai/plugins/linux/virtualization.rb +300 -300
  105. data/lib/ohai/plugins/lua.rb +39 -39
  106. data/lib/ohai/plugins/mono.rb +50 -50
  107. data/lib/ohai/plugins/netbsd/memory.rb +99 -99
  108. data/lib/ohai/plugins/netbsd/network.rb +122 -122
  109. data/lib/ohai/plugins/netbsd/platform.rb +28 -28
  110. data/lib/ohai/plugins/network.rb +186 -186
  111. data/lib/ohai/plugins/nodejs.rb +40 -40
  112. data/lib/ohai/plugins/oci.rb +94 -94
  113. data/lib/ohai/plugins/ohai.rb +29 -29
  114. data/lib/ohai/plugins/ohai_time.rb +26 -26
  115. data/lib/ohai/plugins/openbsd/memory.rb +99 -99
  116. data/lib/ohai/plugins/openbsd/network.rb +122 -122
  117. data/lib/ohai/plugins/openbsd/platform.rb +28 -28
  118. data/lib/ohai/plugins/openstack.rb +84 -84
  119. data/lib/ohai/plugins/os.rb +55 -55
  120. data/lib/ohai/plugins/packages.rb +234 -234
  121. data/lib/ohai/plugins/passwd.rb +104 -104
  122. data/lib/ohai/plugins/perl.rb +45 -45
  123. data/lib/ohai/plugins/php.rb +52 -52
  124. data/lib/ohai/plugins/platform.rb +41 -41
  125. data/lib/ohai/plugins/powershell.rb +82 -82
  126. data/lib/ohai/plugins/ps.rb +35 -35
  127. data/lib/ohai/plugins/python.rb +43 -43
  128. data/lib/ohai/plugins/rackspace.rb +177 -177
  129. data/lib/ohai/plugins/root_group.rb +41 -41
  130. data/lib/ohai/plugins/rpm.rb +121 -121
  131. data/lib/ohai/plugins/ruby.rb +66 -66
  132. data/lib/ohai/plugins/rust.rb +34 -34
  133. data/lib/ohai/plugins/scala.rb +38 -38
  134. data/lib/ohai/plugins/scaleway.rb +58 -58
  135. data/lib/ohai/plugins/scsi.rb +52 -52
  136. data/lib/ohai/plugins/shard.rb +142 -142
  137. data/lib/ohai/plugins/shells.rb +32 -32
  138. data/lib/ohai/plugins/softlayer.rb +48 -48
  139. data/lib/ohai/plugins/solaris2/dmi.rb +191 -191
  140. data/lib/ohai/plugins/solaris2/memory.rb +32 -32
  141. data/lib/ohai/plugins/solaris2/network.rb +192 -192
  142. data/lib/ohai/plugins/solaris2/platform.rb +58 -58
  143. data/lib/ohai/plugins/solaris2/virtualization.rb +90 -90
  144. data/lib/ohai/plugins/ssh_host_key.rb +84 -84
  145. data/lib/ohai/plugins/sysconf.rb +46 -46
  146. data/lib/ohai/plugins/timezone.rb +45 -45
  147. data/lib/ohai/plugins/train.rb +35 -35
  148. data/lib/ohai/plugins/uptime.rb +95 -95
  149. data/lib/ohai/plugins/virtualbox.rb +197 -197
  150. data/lib/ohai/plugins/vmware.rb +109 -109
  151. data/lib/ohai/plugins/windows/dmi.rb +95 -95
  152. data/lib/ohai/plugins/windows/drivers.rb +52 -52
  153. data/lib/ohai/plugins/windows/memory.rb +39 -39
  154. data/lib/ohai/plugins/windows/network.rb +222 -222
  155. data/lib/ohai/plugins/windows/platform.rb +34 -34
  156. data/lib/ohai/plugins/windows/system_enclosure.rb +29 -29
  157. data/lib/ohai/plugins/windows/virtualization.rb +45 -45
  158. data/lib/ohai/plugins/zpools.rb +94 -94
  159. data/lib/ohai/provides_map.rb +208 -208
  160. data/lib/ohai/runner.rb +128 -126
  161. data/lib/ohai/system.rb +258 -258
  162. data/lib/ohai/train_transport.rb +29 -29
  163. data/lib/ohai/util/file_helper.rb +6 -6
  164. data/lib/ohai/util/ip_helper.rb +56 -56
  165. data/lib/ohai/util/win32.rb +47 -47
  166. data/lib/ohai/version.rb +23 -23
  167. data/lib/ohai.rb +23 -23
  168. data/ohai.gemspec +35 -35
  169. metadata +9 -15
@@ -1,83 +1,84 @@
1
- # frozen_string_literal: true
2
- #
3
- # Author:: Davide Cavalca <dcavalca@fb.com>
4
- # Copyright:: Copyright (c) 2020 Facebook
5
- # License:: Apache License, Version 2.0
6
- #
7
- # Licensed under the Apache License, Version 2.0 (the "License");
8
- # you may not use this file except in compliance with the License.
9
- # You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS,
15
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
- #
19
-
20
- Ohai.plugin(:Interrupts) do
21
- depends "cpu"
22
- provides "interrupts", "interrupts/irq", "interrupts/smp_affinity_by_cpu"
23
- optional true
24
-
25
- # Documentation: https://www.kernel.org/doc/Documentation/IRQ-affinity.txt
26
- # format: comma-separate list of 32bit bitmask in hex
27
- # each bit is a CPU, right to left ordering (i.e. CPU0 is rightmost)
28
- def parse_smp_affinity(path, cpus)
29
- masks = file_read(path).strip
30
- bit_masks = masks.split(",").map do |mask|
31
- mask.rjust(8, "0").to_i(16).to_s(2)
32
- end
33
- affinity_mask = bit_masks.join
34
- affinity_by_cpu = affinity_mask.split("").reverse
35
- smp_affinity_by_cpu = Mash.new
36
- (0..cpus - 1).each do |cpu|
37
- smp_affinity_by_cpu[cpu] = affinity_by_cpu[cpu].to_i == 1
38
- end
39
- smp_affinity_by_cpu
40
- end
41
-
42
- collect_data(:linux) do
43
- interrupts Mash.new
44
-
45
- cpus = cpu["total"]
46
- interrupts[:smp_affinity_by_cpu] =
47
- parse_smp_affinity("/proc/irq/default_smp_affinity", cpus)
48
-
49
- interrupts[:irq] = Mash.new
50
- file_open("/proc/interrupts").each do |line|
51
- # Documentation: https://www.kernel.org/doc/Documentation/filesystems/proc.txt
52
- # format is "{irqn}: {CPUn...} [type] [vector] [device]"
53
- irqn, fields = line.split(":", 2)
54
- # skip the header
55
- next if fields.nil?
56
-
57
- irqn.strip!
58
- Ohai::Log.debug("irq: processing #{irqn}")
59
-
60
- interrupts[:irq][irqn] = Mash.new
61
- interrupts[:irq][irqn][:events_by_cpu] = Mash.new
62
-
63
- fields = fields.split(nil, cpus + 1)
64
- (0..cpus - 1).each do |cpu|
65
- interrupts[:irq][irqn][:events_by_cpu][cpu] = fields[cpu].to_i
66
- end
67
- # Only regular IRQs have extra fields and affinity settings
68
- if /^\d+$/.match?(irqn)
69
- interrupts[:irq][irqn][:type],
70
- interrupts[:irq][irqn][:vector],
71
- interrupts[:irq][irqn][:device] =
72
- fields[cpus].split
73
- if file_exist?("/proc/irq/#{irqn}/smp_affinity")
74
- interrupts[:irq][irqn][:smp_affinity_by_cpu] =
75
- parse_smp_affinity("/proc/irq/#{irqn}/smp_affinity", cpus)
76
- end
77
- # ERR and MIS do not have any extra fields
78
- elsif fields[cpus]
79
- interrupts[:irq][irqn][:type] = fields[cpus].strip
80
- end
81
- end
82
- end
83
- end
1
+ # frozen_string_literal: true
2
+ #
3
+ # Author:: Davide Cavalca <dcavalca@fb.com>
4
+ # Copyright:: Copyright (c) 2020 Facebook
5
+ # License:: Apache License, Version 2.0
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ #
19
+
20
+ Ohai.plugin(:Interrupts) do
21
+ depends "cpu"
22
+ provides "interrupts", "interrupts/irq", "interrupts/smp_affinity_by_cpu"
23
+ optional true
24
+
25
+ # Documentation: https://www.kernel.org/doc/Documentation/IRQ-affinity.txt
26
+ # format: comma-separate list of 32bit bitmask in hex
27
+ # each bit is a CPU, right to left ordering (i.e. CPU0 is rightmost)
28
+ def parse_smp_affinity(path, cpus)
29
+ masks = file_read(path).strip
30
+ bit_masks = []
31
+ masks.split(",").each do |mask|
32
+ bit_masks << mask.rjust(8, "0").to_i(16).to_s(2)
33
+ end
34
+ affinity_mask = bit_masks.join
35
+ affinity_by_cpu = affinity_mask.split("").reverse
36
+ smp_affinity_by_cpu = Mash.new
37
+ (0..cpus - 1).each do |cpu|
38
+ smp_affinity_by_cpu[cpu] = affinity_by_cpu[cpu].to_i == 1
39
+ end
40
+ smp_affinity_by_cpu
41
+ end
42
+
43
+ collect_data(:linux) do
44
+ interrupts Mash.new
45
+
46
+ cpus = cpu["total"]
47
+ interrupts[:smp_affinity_by_cpu] =
48
+ parse_smp_affinity("/proc/irq/default_smp_affinity", cpus)
49
+
50
+ interrupts[:irq] = Mash.new
51
+ file_open("/proc/interrupts").each do |line|
52
+ # Documentation: https://www.kernel.org/doc/Documentation/filesystems/proc.txt
53
+ # format is "{irqn}: {CPUn...} [type] [vector] [device]"
54
+ irqn, fields = line.split(":", 2)
55
+ # skip the header
56
+ next if fields.nil?
57
+
58
+ irqn.strip!
59
+ Ohai::Log.debug("irq: processing #{irqn}")
60
+
61
+ interrupts[:irq][irqn] = Mash.new
62
+ interrupts[:irq][irqn][:events_by_cpu] = Mash.new
63
+
64
+ fields = fields.split(nil, cpus + 1)
65
+ (0..cpus - 1).each do |cpu|
66
+ interrupts[:irq][irqn][:events_by_cpu][cpu] = fields[cpu].to_i
67
+ end
68
+ # Only regular IRQs have extra fields and affinity settings
69
+ if /^\d+$/.match?(irqn)
70
+ interrupts[:irq][irqn][:type],
71
+ interrupts[:irq][irqn][:vector],
72
+ interrupts[:irq][irqn][:device] =
73
+ fields[cpus].split
74
+ if file_exist?("/proc/irq/#{irqn}/smp_affinity")
75
+ interrupts[:irq][irqn][:smp_affinity_by_cpu] =
76
+ parse_smp_affinity("/proc/irq/#{irqn}/smp_affinity", cpus)
77
+ end
78
+ # ERR and MIS do not have any extra fields
79
+ elsif fields[cpus]
80
+ interrupts[:irq][irqn][:type] = fields[cpus].strip
81
+ end
82
+ end
83
+ end
84
+ end
@@ -1,52 +1,52 @@
1
- # frozen_string_literal: true
2
- #
3
- # Author:: Jay Vana <jsvana@fb.com>
4
- # Author:: Davide Cavalca <dcavalca@fb.com>
5
- # Copyright:: Copyright (c) 2016-2020 Facebook, Inc.
6
- # License:: Apache License, Version 2.0
7
- #
8
- # Licensed under the Apache License, Version 2.0 (the "License");
9
- # you may not use this file except in compliance with the License.
10
- # You may obtain a copy of the License at
11
- #
12
- # http://www.apache.org/licenses/LICENSE-2.0
13
- #
14
- # Unless required by applicable law or agreed to in writing, software
15
- # distributed under the License is distributed on an "AS IS" BASIS,
16
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
- # See the License for the specific language governing permissions and
18
- # limitations under the License.
19
- #
20
-
21
- Ohai.plugin(:IPC) do
22
- provides "ipc"
23
- optional true
24
-
25
- collect_data(:linux) do
26
- ipcs_path = which("ipcs")
27
- if ipcs_path
28
- # NOTE: currently only supports shared memory
29
- cmd = "#{ipcs_path} -m"
30
- ipcs = shell_out(cmd)
31
-
32
- ipc Mash.new unless ipc
33
- ipc["shm"] = Mash.new unless ipc["shm"]
34
-
35
- ipcs.stdout.split("\n").each do |line|
36
- next unless line.start_with?("0x")
37
-
38
- parts = line.split
39
- segment = {
40
- "key" => parts[0],
41
- "owner" => parts[2],
42
- "perms" => parts[3],
43
- "bytes" => parts[4].to_i,
44
- "nattch" => parts[5].to_i,
45
- "status" => parts[6] || "",
46
- }
47
-
48
- ipc["shm"][parts[1].to_i] = segment
49
- end
50
- end
51
- end
52
- end
1
+ # frozen_string_literal: true
2
+ #
3
+ # Author:: Jay Vana <jsvana@fb.com>
4
+ # Author:: Davide Cavalca <dcavalca@fb.com>
5
+ # Copyright:: Copyright (c) 2016-2020 Facebook, Inc.
6
+ # License:: Apache License, Version 2.0
7
+ #
8
+ # Licensed under the Apache License, Version 2.0 (the "License");
9
+ # you may not use this file except in compliance with the License.
10
+ # You may obtain a copy of the License at
11
+ #
12
+ # http://www.apache.org/licenses/LICENSE-2.0
13
+ #
14
+ # Unless required by applicable law or agreed to in writing, software
15
+ # distributed under the License is distributed on an "AS IS" BASIS,
16
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ # See the License for the specific language governing permissions and
18
+ # limitations under the License.
19
+ #
20
+
21
+ Ohai.plugin(:IPC) do
22
+ provides "ipc"
23
+ optional true
24
+
25
+ collect_data(:linux) do
26
+ ipcs_path = which("ipcs")
27
+ if ipcs_path
28
+ # NOTE: currently only supports shared memory
29
+ cmd = "#{ipcs_path} -m"
30
+ ipcs = shell_out(cmd)
31
+
32
+ ipc Mash.new unless ipc
33
+ ipc["shm"] = Mash.new unless ipc["shm"]
34
+
35
+ ipcs.stdout.split("\n").each do |line|
36
+ next unless line.start_with?("0x")
37
+
38
+ parts = line.split
39
+ segment = {
40
+ "key" => parts[0],
41
+ "owner" => parts[2],
42
+ "perms" => parts[3],
43
+ "bytes" => parts[4].to_i,
44
+ "nattch" => parts[5].to_i,
45
+ "status" => parts[6] || "",
46
+ }
47
+
48
+ ipc["shm"][parts[1].to_i] = segment
49
+ end
50
+ end
51
+ end
52
+ end
@@ -1,38 +1,38 @@
1
- # frozen_string_literal: true
2
- #
3
- # Author:: Song Liu <song@kernel.org>
4
- # Copyright:: Copyright (c) 2021 Facebook, Inc.
5
- # License:: Apache License, Version 2.0
6
- #
7
- # Licensed under the Apache License, Version 2.0 (the "License");
8
- # you may not use this file except in compliance with the License.
9
- # You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS,
15
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
- #
19
-
20
- Ohai.plugin(:Livepatch) do
21
- provides "livepatch"
22
-
23
- collect_data(:linux) do
24
- if file_exist?("/sys/kernel/livepatch")
25
- patches = Mash.new
26
- dir_glob("/sys/kernel/livepatch/*").each do |livepatch_dir|
27
- dir = File.basename(livepatch_dir)
28
- patches[dir] = Mash.new
29
- %w{enabled transition}.each do |check|
30
- if file_exist?("/sys/kernel/livepatch/#{dir}/#{check}")
31
- file_open("/sys/kernel/livepatch/#{dir}/#{check}") { |f| patches[dir][check] = f.read_nonblock(1024).strip }
32
- end
33
- end
34
- livepatch patches
35
- end
36
- end
37
- end
38
- end
1
+ # frozen_string_literal: true
2
+ #
3
+ # Author:: Song Liu <song@kernel.org>
4
+ # Copyright:: Copyright (c) 2021 Facebook, Inc.
5
+ # License:: Apache License, Version 2.0
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ #
19
+
20
+ Ohai.plugin(:Livepatch) do
21
+ provides "livepatch"
22
+
23
+ collect_data(:linux) do
24
+ if file_exist?("/sys/kernel/livepatch")
25
+ patches = Mash.new
26
+ dir_glob("/sys/kernel/livepatch/*").each do |livepatch_dir|
27
+ dir = File.basename(livepatch_dir)
28
+ patches[dir] = Mash.new
29
+ %w{enabled transition}.each do |check|
30
+ if file_exist?("/sys/kernel/livepatch/#{dir}/#{check}")
31
+ file_open("/sys/kernel/livepatch/#{dir}/#{check}") { |f| patches[dir][check] = f.read_nonblock(1024).strip }
32
+ end
33
+ end
34
+ livepatch patches
35
+ end
36
+ end
37
+ end
38
+ end
@@ -1,46 +1,46 @@
1
- # frozen_string_literal: true
2
- #
3
- # Author:: Adam Jacob (<adam@chef.io>)
4
- # Copyright:: Copyright (c) Chef Software Inc.
5
- # License:: Apache License, Version 2.0
6
- #
7
- # Licensed under the Apache License, Version 2.0 (the "License");
8
- # you may not use this file except in compliance with the License.
9
- # You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS,
15
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
- #
19
-
20
- Ohai.plugin(:LSB) do
21
- provides "lsb"
22
-
23
- collect_data(:linux) do
24
- lsb Mash.new
25
-
26
- if file_exist?("/usr/bin/lsb_release")
27
- # From package redhat-lsb on Fedora/Redhat, lsb-release on Debian/Ubuntu
28
- shell_out("lsb_release -a").stdout.lines do |line|
29
- case line
30
- when /^Distributor ID:\s+(.+)/
31
- lsb[:id] = $1
32
- when /^Description:\s+(.+)/
33
- lsb[:description] = $1
34
- when /^Release:\s+(.+)/
35
- lsb[:release] = $1
36
- when /^Codename:\s+(.+)/
37
- lsb[:codename] = $1
38
- else
39
- lsb[:id] = line
40
- end
41
- end
42
- else
43
- logger.trace("Plugin LSB: Skipping LSB, cannot find /usr/bin/lsb_release")
44
- end
45
- end
46
- end
1
+ # frozen_string_literal: true
2
+ #
3
+ # Author:: Adam Jacob (<adam@chef.io>)
4
+ # Copyright:: Copyright (c) Chef Software Inc.
5
+ # License:: Apache License, Version 2.0
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ #
19
+
20
+ Ohai.plugin(:LSB) do
21
+ provides "lsb"
22
+
23
+ collect_data(:linux) do
24
+ lsb Mash.new
25
+
26
+ if file_exist?("/usr/bin/lsb_release")
27
+ # From package redhat-lsb on Fedora/Redhat, lsb-release on Debian/Ubuntu
28
+ shell_out("lsb_release -a").stdout.lines do |line|
29
+ case line
30
+ when /^Distributor ID:\s+(.+)/
31
+ lsb[:id] = $1
32
+ when /^Description:\s+(.+)/
33
+ lsb[:description] = $1
34
+ when /^Release:\s+(.+)/
35
+ lsb[:release] = $1
36
+ when /^Codename:\s+(.+)/
37
+ lsb[:codename] = $1
38
+ else
39
+ lsb[:id] = line
40
+ end
41
+ end
42
+ else
43
+ logger.trace("Plugin LSB: Skipping LSB, cannot find /usr/bin/lsb_release")
44
+ end
45
+ end
46
+ end
@@ -1,80 +1,80 @@
1
- # frozen_string_literal: true
2
- #
3
- # Author:: Joerg Herzinger <joerg.herzinger@oiml.at>
4
- # Author:: Phil Dibowitz <phil@ipom.com>
5
- # Copyright:: Copyright (c) 2011 GLOBAL 2000/Friends of the Earth Austria
6
- # Copyright:: Copyright (c) 2017 Facebook, Inc.
7
- # License:: Apache License, Version 2.0
8
- #
9
- # Licensed under the Apache License, Version 2.0 (the "License");
10
- # you may not use this file except in compliance with the License.
11
- # You may obtain a copy of the License at
12
- #
13
- # http://www.apache.org/licenses/LICENSE-2.0
14
- #
15
- # Unless required by applicable law or agreed to in writing, software
16
- # distributed under the License is distributed on an "AS IS" BASIS,
17
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18
- # See the License for the specific language governing permissions and
19
- # limitations under the License.
20
-
21
- Ohai.plugin(:Lspci) do
22
- provides "pci"
23
- optional true
24
-
25
- collect_data(:linux) do
26
- devices = Mash.new
27
-
28
- h = /[0-9a-fA-F]/ # any hex digit
29
- hh = /#{h}#{h}/ # any 2 hex digits
30
- hhhh = /#{h}#{h}#{h}#{h}/ # any 4 hex digits
31
-
32
- d_id = "" # This identifies our pci devices
33
-
34
- def standard_form(devices, d_id, hhhh, tag, line)
35
- tmp = line.scan(/(.*)\s\[(#{hhhh})\]/)[0]
36
- devices[d_id]["#{tag}_name"] = tmp[0]
37
- devices[d_id]["#{tag}_id"] = tmp[1]
38
- end
39
-
40
- def standard_array(devices, d_id, tag, line)
41
- if !devices[d_id][tag].is_a?(Array)
42
- devices[d_id][tag] = [line]
43
- else
44
- devices[d_id][tag].push(line)
45
- end
46
- end
47
-
48
- shell_out("lspci -vnnmk").stdout.split("\n").each do |line|
49
- dev = line.scan(/^(.*):\s(.*)$/)[0]
50
- next if dev.nil?
51
-
52
- case dev[0]
53
- when "Device" # There are two different Device tags
54
- if ( tmp = dev[1].match(/(#{hhhh}:)?(#{hh}:#{hh}\.#{h})/) )
55
- # We have a device id
56
- d_id = tmp[0] # From now on we will need this id
57
- devices[d_id] = Mash.new
58
- if tmp[1]
59
- # We have a root complex
60
- devices[d_id]["root_port"] = tmp[1][0..-2]
61
- end
62
- else
63
- standard_form(devices, d_id, hhhh, "device", dev[1])
64
- end
65
- when "Class"
66
- standard_form(devices, d_id, hhhh, "class", dev[1])
67
- when "Vendor"
68
- standard_form(devices, d_id, hhhh, "vendor", dev[1])
69
- when "Driver"
70
- standard_array(devices, d_id, "driver", dev[1])
71
- when "Module"
72
- standard_array(devices, d_id, "module", dev[1])
73
- when "SDevice"
74
- standard_form(devices, d_id, hhhh, "sdevice", dev[1])
75
- end
76
- end
77
-
78
- pci devices
79
- end
80
- end
1
+ # frozen_string_literal: true
2
+ #
3
+ # Author:: Joerg Herzinger <joerg.herzinger@oiml.at>
4
+ # Author:: Phil Dibowitz <phil@ipom.com>
5
+ # Copyright:: Copyright (c) 2011 GLOBAL 2000/Friends of the Earth Austria
6
+ # Copyright:: Copyright (c) 2017 Facebook, Inc.
7
+ # License:: Apache License, Version 2.0
8
+ #
9
+ # Licensed under the Apache License, Version 2.0 (the "License");
10
+ # you may not use this file except in compliance with the License.
11
+ # You may obtain a copy of the License at
12
+ #
13
+ # http://www.apache.org/licenses/LICENSE-2.0
14
+ #
15
+ # Unless required by applicable law or agreed to in writing, software
16
+ # distributed under the License is distributed on an "AS IS" BASIS,
17
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18
+ # See the License for the specific language governing permissions and
19
+ # limitations under the License.
20
+
21
+ Ohai.plugin(:Lspci) do
22
+ provides "pci"
23
+ optional true
24
+
25
+ collect_data(:linux) do
26
+ devices = Mash.new
27
+
28
+ h = /[0-9a-fA-F]/ # any hex digit
29
+ hh = /#{h}#{h}/ # any 2 hex digits
30
+ hhhh = /#{h}#{h}#{h}#{h}/ # any 4 hex digits
31
+
32
+ d_id = "" # This identifies our pci devices
33
+
34
+ def standard_form(devices, d_id, hhhh, tag, line)
35
+ tmp = line.scan(/(.*)\s\[(#{hhhh})\]/)[0]
36
+ devices[d_id]["#{tag}_name"] = tmp[0]
37
+ devices[d_id]["#{tag}_id"] = tmp[1]
38
+ end
39
+
40
+ def standard_array(devices, d_id, tag, line)
41
+ if !devices[d_id][tag].is_a?(Array)
42
+ devices[d_id][tag] = [line]
43
+ else
44
+ devices[d_id][tag].push(line)
45
+ end
46
+ end
47
+
48
+ shell_out("lspci -vnnmk").stdout.split("\n").each do |line|
49
+ dev = line.scan(/^(.*):\s(.*)$/)[0]
50
+ next if dev.nil?
51
+
52
+ case dev[0]
53
+ when "Device" # There are two different Device tags
54
+ if ( tmp = dev[1].match(/(#{hhhh}:)?(#{hh}:#{hh}\.#{h})/) )
55
+ # We have a device id
56
+ d_id = tmp[0] # From now on we will need this id
57
+ devices[d_id] = Mash.new
58
+ if tmp[1]
59
+ # We have a root complex
60
+ devices[d_id]["root_port"] = tmp[1][0..-2]
61
+ end
62
+ else
63
+ standard_form(devices, d_id, hhhh, "device", dev[1])
64
+ end
65
+ when "Class"
66
+ standard_form(devices, d_id, hhhh, "class", dev[1])
67
+ when "Vendor"
68
+ standard_form(devices, d_id, hhhh, "vendor", dev[1])
69
+ when "Driver"
70
+ standard_array(devices, d_id, "driver", dev[1])
71
+ when "Module"
72
+ standard_array(devices, d_id, "module", dev[1])
73
+ when "SDevice"
74
+ standard_form(devices, d_id, hhhh, "sdevice", dev[1])
75
+ end
76
+ end
77
+
78
+ pci devices
79
+ end
80
+ end