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.
- checksums.yaml +4 -4
- data/Gemfile +28 -28
- data/LICENSE +201 -201
- data/bin/ohai +25 -25
- data/lib/ohai/application.rb +189 -189
- data/lib/ohai/common/dmi.rb +167 -167
- data/lib/ohai/config.rb +51 -51
- data/lib/ohai/dsl/plugin/versionvii.rb +203 -203
- data/lib/ohai/dsl/plugin.rb +232 -232
- data/lib/ohai/dsl.rb +22 -22
- data/lib/ohai/exception.rb +36 -36
- data/lib/ohai/hints.rb +68 -68
- data/lib/ohai/loader.rb +178 -178
- data/lib/ohai/log.rb +34 -34
- data/lib/ohai/mash.rb +22 -22
- data/lib/ohai/mixin/alibaba_metadata.rb +83 -83
- data/lib/ohai/mixin/azure_metadata.rb +105 -105
- data/lib/ohai/mixin/chef_utils_wiring.rb +52 -52
- data/lib/ohai/mixin/command.rb +4 -4
- data/lib/ohai/mixin/constant_helper.rb +55 -55
- data/lib/ohai/mixin/dmi_decode.rb +54 -54
- data/lib/ohai/mixin/do_metadata.rb +48 -48
- data/lib/ohai/mixin/ec2_metadata.rb +264 -270
- data/lib/ohai/mixin/gce_metadata.rb +79 -79
- data/lib/ohai/mixin/http_helper.rb +64 -64
- data/lib/ohai/mixin/json_helper.rb +36 -36
- data/lib/ohai/mixin/network_helper.rb +92 -92
- data/lib/ohai/mixin/oci_metadata.rb +60 -60
- data/lib/ohai/mixin/os.rb +128 -128
- data/lib/ohai/mixin/scaleway_metadata.rb +51 -51
- data/lib/ohai/mixin/seconds_to_human.rb +52 -52
- data/lib/ohai/mixin/shell_out.rb +51 -51
- data/lib/ohai/mixin/softlayer_metadata.rb +74 -74
- data/lib/ohai/mixin/string.rb +31 -31
- data/lib/ohai/mixin/train_helpers.rb +36 -36
- data/lib/ohai/mixin/which.rb +39 -39
- data/lib/ohai/plugin_config.rb +47 -47
- data/lib/ohai/plugins/aix/kernel.rb +50 -50
- data/lib/ohai/plugins/aix/memory.rb +37 -37
- data/lib/ohai/plugins/aix/network.rb +142 -142
- data/lib/ohai/plugins/aix/platform.rb +30 -30
- data/lib/ohai/plugins/aix/uptime.rb +54 -54
- data/lib/ohai/plugins/aix/virtualization.rb +154 -154
- data/lib/ohai/plugins/alibaba.rb +72 -72
- data/lib/ohai/plugins/azure.rb +154 -154
- data/lib/ohai/plugins/bsd/virtualization.rb +121 -121
- data/lib/ohai/plugins/c.rb +178 -178
- data/lib/ohai/plugins/chef.rb +50 -50
- data/lib/ohai/plugins/cloud.rb +379 -379
- data/lib/ohai/plugins/command.rb +26 -26
- data/lib/ohai/plugins/cpu.rb +642 -642
- data/lib/ohai/plugins/darwin/hardware.rb +99 -99
- data/lib/ohai/plugins/darwin/memory.rb +62 -62
- data/lib/ohai/plugins/darwin/network.rb +207 -207
- data/lib/ohai/plugins/darwin/platform.rb +40 -40
- data/lib/ohai/plugins/darwin/virtualization.rb +104 -104
- data/lib/ohai/plugins/digital_ocean.rb +67 -67
- data/lib/ohai/plugins/dmi.rb +134 -134
- data/lib/ohai/plugins/docker.rb +58 -58
- data/lib/ohai/plugins/dragonflybsd/memory.rb +60 -60
- data/lib/ohai/plugins/dragonflybsd/network.rb +128 -128
- data/lib/ohai/plugins/dragonflybsd/platform.rb +28 -28
- data/lib/ohai/plugins/ec2.rb +148 -148
- data/lib/ohai/plugins/elixir.rb +36 -36
- data/lib/ohai/plugins/erlang.rb +60 -60
- data/lib/ohai/plugins/eucalyptus.rb +86 -86
- data/lib/ohai/plugins/filesystem.rb +753 -753
- data/lib/ohai/plugins/fips.rb +36 -36
- data/lib/ohai/plugins/freebsd/memory.rb +60 -60
- data/lib/ohai/plugins/freebsd/network.rb +128 -128
- data/lib/ohai/plugins/freebsd/platform.rb +28 -28
- data/lib/ohai/plugins/gce.rb +89 -89
- data/lib/ohai/plugins/go.rb +34 -34
- data/lib/ohai/plugins/groovy.rb +38 -38
- data/lib/ohai/plugins/grub2.rb +40 -40
- data/lib/ohai/plugins/habitat.rb +73 -73
- data/lib/ohai/plugins/haskell.rb +96 -96
- data/lib/ohai/plugins/hostname.rb +133 -133
- data/lib/ohai/plugins/init_package.rb +26 -26
- data/lib/ohai/plugins/java.rb +78 -78
- data/lib/ohai/plugins/kernel.rb +292 -292
- data/lib/ohai/plugins/keys.rb +27 -27
- data/lib/ohai/plugins/languages.rb +26 -26
- data/lib/ohai/plugins/libvirt.rb +114 -114
- data/lib/ohai/plugins/linode.rb +73 -73
- data/lib/ohai/plugins/linux/block_device.rb +48 -48
- data/lib/ohai/plugins/linux/hostnamectl.rb +34 -34
- data/lib/ohai/plugins/linux/interrupts.rb +84 -83
- data/lib/ohai/plugins/linux/ipc.rb +52 -52
- data/lib/ohai/plugins/linux/livepatch.rb +38 -38
- data/lib/ohai/plugins/linux/lsb.rb +46 -46
- data/lib/ohai/plugins/linux/lspci.rb +80 -80
- data/lib/ohai/plugins/linux/machineid.rb +36 -36
- data/lib/ohai/plugins/linux/mdadm.rb +120 -120
- data/lib/ohai/plugins/linux/memory.rb +106 -106
- data/lib/ohai/plugins/linux/network.rb +879 -879
- data/lib/ohai/plugins/linux/os_release.rb +38 -38
- data/lib/ohai/plugins/linux/platform.rb +314 -314
- data/lib/ohai/plugins/linux/selinux.rb +69 -69
- data/lib/ohai/plugins/linux/sessions.rb +54 -54
- data/lib/ohai/plugins/linux/sysctl.rb +39 -39
- data/lib/ohai/plugins/linux/systemd_paths.rb +36 -36
- data/lib/ohai/plugins/linux/tc.rb +61 -61
- data/lib/ohai/plugins/linux/virtualization.rb +300 -300
- data/lib/ohai/plugins/lua.rb +39 -39
- data/lib/ohai/plugins/mono.rb +50 -50
- data/lib/ohai/plugins/netbsd/memory.rb +99 -99
- data/lib/ohai/plugins/netbsd/network.rb +122 -122
- data/lib/ohai/plugins/netbsd/platform.rb +28 -28
- data/lib/ohai/plugins/network.rb +186 -186
- data/lib/ohai/plugins/nodejs.rb +40 -40
- data/lib/ohai/plugins/oci.rb +94 -94
- data/lib/ohai/plugins/ohai.rb +29 -29
- data/lib/ohai/plugins/ohai_time.rb +26 -26
- data/lib/ohai/plugins/openbsd/memory.rb +99 -99
- data/lib/ohai/plugins/openbsd/network.rb +122 -122
- data/lib/ohai/plugins/openbsd/platform.rb +28 -28
- data/lib/ohai/plugins/openstack.rb +84 -84
- data/lib/ohai/plugins/os.rb +55 -55
- data/lib/ohai/plugins/packages.rb +234 -234
- data/lib/ohai/plugins/passwd.rb +104 -104
- data/lib/ohai/plugins/perl.rb +45 -45
- data/lib/ohai/plugins/php.rb +52 -52
- data/lib/ohai/plugins/platform.rb +41 -41
- data/lib/ohai/plugins/powershell.rb +82 -82
- data/lib/ohai/plugins/ps.rb +35 -35
- data/lib/ohai/plugins/python.rb +43 -43
- data/lib/ohai/plugins/rackspace.rb +177 -177
- data/lib/ohai/plugins/root_group.rb +41 -41
- data/lib/ohai/plugins/rpm.rb +121 -121
- data/lib/ohai/plugins/ruby.rb +66 -66
- data/lib/ohai/plugins/rust.rb +34 -34
- data/lib/ohai/plugins/scala.rb +38 -38
- data/lib/ohai/plugins/scaleway.rb +58 -58
- data/lib/ohai/plugins/scsi.rb +52 -52
- data/lib/ohai/plugins/shard.rb +142 -142
- data/lib/ohai/plugins/shells.rb +32 -32
- data/lib/ohai/plugins/softlayer.rb +48 -48
- data/lib/ohai/plugins/solaris2/dmi.rb +191 -191
- data/lib/ohai/plugins/solaris2/memory.rb +32 -32
- data/lib/ohai/plugins/solaris2/network.rb +192 -192
- data/lib/ohai/plugins/solaris2/platform.rb +58 -58
- data/lib/ohai/plugins/solaris2/virtualization.rb +90 -90
- data/lib/ohai/plugins/ssh_host_key.rb +84 -84
- data/lib/ohai/plugins/sysconf.rb +46 -46
- data/lib/ohai/plugins/timezone.rb +45 -45
- data/lib/ohai/plugins/train.rb +35 -35
- data/lib/ohai/plugins/uptime.rb +95 -95
- data/lib/ohai/plugins/virtualbox.rb +197 -197
- data/lib/ohai/plugins/vmware.rb +109 -109
- data/lib/ohai/plugins/windows/dmi.rb +95 -95
- data/lib/ohai/plugins/windows/drivers.rb +52 -52
- data/lib/ohai/plugins/windows/memory.rb +39 -39
- data/lib/ohai/plugins/windows/network.rb +222 -222
- data/lib/ohai/plugins/windows/platform.rb +34 -34
- data/lib/ohai/plugins/windows/system_enclosure.rb +29 -29
- data/lib/ohai/plugins/windows/virtualization.rb +45 -45
- data/lib/ohai/plugins/zpools.rb +94 -94
- data/lib/ohai/provides_map.rb +208 -208
- data/lib/ohai/runner.rb +128 -126
- data/lib/ohai/system.rb +258 -258
- data/lib/ohai/train_transport.rb +29 -29
- data/lib/ohai/util/file_helper.rb +6 -6
- data/lib/ohai/util/ip_helper.rb +56 -56
- data/lib/ohai/util/win32.rb +47 -47
- data/lib/ohai/version.rb +23 -23
- data/lib/ohai.rb +23 -23
- data/ohai.gemspec +35 -35
- 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 =
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
#
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
interrupts[:irq][irqn]
|
62
|
-
|
63
|
-
|
64
|
-
(
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
interrupts[:irq][irqn][:
|
71
|
-
interrupts[:irq][irqn][:
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
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
|