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,191 +1,191 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
#
|
3
|
-
# Author:: Kurt Yoder (ktyopscode@yoderhome.com)
|
4
|
-
# Copyright:: Copyright (c) 2010 Kurt Yoder
|
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(:DMI) do
|
21
|
-
provides "dmi"
|
22
|
-
|
23
|
-
collect_data(:solaris2) do
|
24
|
-
require_relative "../../common/dmi"
|
25
|
-
|
26
|
-
# if we already have a "dmi" with keys (presumably from dmidecode), don't try smbios
|
27
|
-
# note that a single key just means dmidecode exited with its version
|
28
|
-
if dmi.is_a?(Mash) && dmi.keys.length > 1
|
29
|
-
logger.trace("Plugin DMI: skipping smbios output, since DMI information has already been provided")
|
30
|
-
return
|
31
|
-
end
|
32
|
-
|
33
|
-
dmi Mash.new
|
34
|
-
|
35
|
-
# bad Solaris shows strings defined by system instead of SMB IDs
|
36
|
-
# this is what the *real* IDs are:
|
37
|
-
# pulled from http://src.opensolaris.org/source/xref/nwam/nwam1/usr/src/uts/common/sys/smbios.h
|
38
|
-
smb_to_id = {
|
39
|
-
"SMB_TYPE_BIOS" => 0, # BIOS information (R)
|
40
|
-
"SMB_TYPE_SYSTEM" => 1, # system information (R)
|
41
|
-
"SMB_TYPE_BASEBOARD" => 2, # base board
|
42
|
-
"SMB_TYPE_CHASSIS" => 3, # system enclosure or chassis (R)
|
43
|
-
"SMB_TYPE_PROCESSOR" => 4, # processor (R)
|
44
|
-
"SMB_TYPE_MEMCTL" => 5, # memory controller (O)
|
45
|
-
"SMB_TYPE_MEMMOD" => 6, # memory module (O)
|
46
|
-
"SMB_TYPE_CACHE" => 7, # processor cache (R)
|
47
|
-
"SMB_TYPE_PORT" => 8, # port connector
|
48
|
-
"SMB_TYPE_SLOT" => 9, # upgradeable system slot (R)
|
49
|
-
"SMB_TYPE_OBDEVS" => 10, # on-board devices
|
50
|
-
"SMB_TYPE_OEMSTR" => 11, # OEM string table
|
51
|
-
"SMB_TYPE_SYSCONFSTR" => 12, # system configuration string table
|
52
|
-
"SMB_TYPE_LANG" => 13, # BIOS language information
|
53
|
-
"SMB_TYPE_GROUP" => 14, # group associations
|
54
|
-
"SMB_TYPE_EVENTLOG" => 15, # system event log
|
55
|
-
"SMB_TYPE_MEMARRAY" => 16, # physical memory array (R)
|
56
|
-
"SMB_TYPE_MEMDEVICE" => 17, # memory device (R)
|
57
|
-
"SMB_TYPE_MEMERR32" => 18, # 32-bit memory error information
|
58
|
-
"SMB_TYPE_MEMARRAYMAP" => 19, # memory array mapped address (R)
|
59
|
-
"SMB_TYPE_MEMDEVICEMAP" => 20, # memory device mapped address (R)
|
60
|
-
"SMB_TYPE_POINTDEV" => 21, # built-in pointing device
|
61
|
-
"SMB_TYPE_BATTERY" => 22, # portable battery
|
62
|
-
"SMB_TYPE_RESET" => 23, # system reset settings
|
63
|
-
"SMB_TYPE_SECURITY" => 24, # hardware security settings
|
64
|
-
"SMB_TYPE_POWERCTL" => 25, # system power controls
|
65
|
-
"SMB_TYPE_VPROBE" => 26, # voltage probe
|
66
|
-
"SMB_TYPE_COOLDEV" => 27, # cooling device
|
67
|
-
"SMB_TYPE_TPROBE" => 28, # temperature probe
|
68
|
-
"SMB_TYPE_IPROBE" => 29, # current probe
|
69
|
-
"SMB_TYPE_OOBRA" => 30, # out-of-band remote access facility
|
70
|
-
"SMB_TYPE_BIS" => 31, # boot integrity services
|
71
|
-
"SMB_TYPE_BOOT" => 32, # system boot status (R)
|
72
|
-
"SMB_TYPE_MEMERR64" => 33, # 64-bit memory error information
|
73
|
-
"SMB_TYPE_MGMTDEV" => 34, # management device
|
74
|
-
"SMB_TYPE_MGMTDEVCP" => 35, # management device component
|
75
|
-
"SMB_TYPE_MGMTDEVDATA" => 36, # management device threshold data
|
76
|
-
"SMB_TYPE_MEMCHAN" => 37, # memory channel
|
77
|
-
"SMB_TYPE_IPMIDEV" => 38, # IPMI device information
|
78
|
-
"SMB_TYPE_POWERSUP" => 39, # system power supply
|
79
|
-
"SMB_TYPE_ADDINFO" => 40, # additional information
|
80
|
-
"SMB_TYPE_OBDEVEXT" => 41, # on-board device extended info
|
81
|
-
"SMB_TYPE_MCHI" => 42, # mgmt controller host interface
|
82
|
-
"SMB_TYPE_INACTIVE" => 126, # inactive table entry
|
83
|
-
"SMB_TYPE_EOT" => 127, # end of table
|
84
|
-
"SMB_TYPE_OEM_LO" => 128, # start of OEM-specific type range
|
85
|
-
"SUN_OEM_EXT_PROCESSOR" => 132, # processor extended info
|
86
|
-
"SUN_OEM_PCIEXRC" => 138, # PCIE RootComplex/RootPort info
|
87
|
-
"SUN_OEM_EXT_MEMARRAY" => 144, # phys memory array extended info
|
88
|
-
"SUN_OEM_EXT_MEMDEVICE" => 145, # memory device extended info
|
89
|
-
"SMB_TYPE_OEM_HI" => 256, # end of OEM-specific type range
|
90
|
-
}.freeze
|
91
|
-
|
92
|
-
# all output lines should fall within one of these patterns
|
93
|
-
header_type_line = /^ID\s+SIZE\s+TYPE/
|
94
|
-
header_information_line = /^(\d+)\s+(\d+)\s+(\S+)\s+\(([^\)]+)\)/
|
95
|
-
blank_line = /^\s*$/
|
96
|
-
data_key_value_line = /^ ([^:]+): (.*)/
|
97
|
-
data_key_only_line = /^ (\S.*)(:\s*)?$/
|
98
|
-
extended_data_line = /^\t(\S+) \((.+)\)/
|
99
|
-
|
100
|
-
dmi_record = nil
|
101
|
-
field = nil
|
102
|
-
|
103
|
-
# ==== EXAMPLE: ====
|
104
|
-
# ID SIZE TYPE
|
105
|
-
# 0 40 SMB_TYPE_BIOS (BIOS information)
|
106
|
-
#
|
107
|
-
# Vendor: HP
|
108
|
-
# Version String: 2.16
|
109
|
-
# ... similar lines trimmed
|
110
|
-
# Characteristics: 0x7fc9da80
|
111
|
-
# SMB_BIOSFL_PCI (PCI is supported)
|
112
|
-
# ... similar lines trimmed
|
113
|
-
# note the second level of indentation is via a *tab*
|
114
|
-
shell_out("smbios").stdout.lines do |raw_line|
|
115
|
-
next if header_type_line.match(raw_line)
|
116
|
-
next if blank_line.match(raw_line)
|
117
|
-
|
118
|
-
# remove/replace any characters that don't fall inside permissible ASCII range, or whitespace
|
119
|
-
line = raw_line.gsub(/[^\x20-\x7E\n\t\r]/, ".")
|
120
|
-
if line != raw_line
|
121
|
-
logger.trace("Plugin DMI: converted characters from line:\n#{raw_line}")
|
122
|
-
end
|
123
|
-
|
124
|
-
if ( header_information = header_information_line.match(line) )
|
125
|
-
dmi_record = {}
|
126
|
-
|
127
|
-
# look up SMB ID
|
128
|
-
if smb_to_id.key?(header_information[3])
|
129
|
-
id = smb_to_id[header_information[3]]
|
130
|
-
|
131
|
-
# Don't overcapture for now (OHAI-260)
|
132
|
-
unless Ohai::Common::DMI.allowlisted_ids.include?(id)
|
133
|
-
dmi_record = nil
|
134
|
-
next
|
135
|
-
end
|
136
|
-
|
137
|
-
dmi_record[:type] = Ohai::Common::DMI.id_lookup(id)
|
138
|
-
|
139
|
-
else
|
140
|
-
logger.trace("Plugin DMI: unrecognized header type; skipping")
|
141
|
-
dmi_record = nil
|
142
|
-
next
|
143
|
-
end
|
144
|
-
|
145
|
-
dmi[dmi_record[:type]] ||= Mash.new
|
146
|
-
dmi[dmi_record[:type]][:all_records] = [] unless dmi[dmi_record[:type]].key?(:all_records)
|
147
|
-
dmi_record[:position] = dmi[dmi_record[:type]][:all_records].length
|
148
|
-
dmi[dmi_record[:type]][:all_records].push(Mash.new)
|
149
|
-
dmi[dmi_record[:type]][:all_records][dmi_record[:position]][:record_id] = header_information[1]
|
150
|
-
dmi[dmi_record[:type]][:all_records][dmi_record[:position]][:size] = header_information[2]
|
151
|
-
dmi[dmi_record[:type]][:all_records][dmi_record[:position]][:application_identifier] = header_information[4]
|
152
|
-
field = nil
|
153
|
-
|
154
|
-
elsif ( data = data_key_value_line.match(line) )
|
155
|
-
if dmi_record.nil?
|
156
|
-
logger.trace("Plugin DMI: unexpected data line found before header; discarding:\n#{line}")
|
157
|
-
next
|
158
|
-
end
|
159
|
-
dmi[dmi_record[:type]][:all_records][dmi_record[:position]][data[1]] = data[2]
|
160
|
-
field = data[1]
|
161
|
-
|
162
|
-
elsif ( data = data_key_only_line.match(line) )
|
163
|
-
if dmi_record.nil?
|
164
|
-
logger.trace("Plugin DMI: unexpected data line found before header; discarding:\n#{line}")
|
165
|
-
next
|
166
|
-
end
|
167
|
-
dmi[dmi_record[:type]][:all_records][dmi_record[:position]][data[1]] = ""
|
168
|
-
field = data[1]
|
169
|
-
|
170
|
-
elsif ( extended_data = extended_data_line.match(line) )
|
171
|
-
if dmi_record.nil?
|
172
|
-
logger.trace("Plugin DMI: unexpected extended data line found before header; discarding:\n#{line}")
|
173
|
-
next
|
174
|
-
end
|
175
|
-
if field.nil?
|
176
|
-
logger.trace("Plugin DMI: unexpected extended data line found outside data section; discarding:\n#{line}")
|
177
|
-
next
|
178
|
-
end
|
179
|
-
# overwrite "raw" value with a new Mash
|
180
|
-
dmi[dmi_record[:type]][:all_records][dmi_record[:position]][field] = Mash.new unless dmi[dmi_record[:type]][:all_records][dmi_record[:position]][field].is_a?(Mash)
|
181
|
-
dmi[dmi_record[:type]][:all_records][dmi_record[:position]][field][extended_data[1]] = extended_data[2]
|
182
|
-
|
183
|
-
else
|
184
|
-
logger.trace("Plugin DMI: unrecognized output line; discarding:\n#{line}")
|
185
|
-
|
186
|
-
end
|
187
|
-
end
|
188
|
-
|
189
|
-
Ohai::Common::DMI.convenience_keys(dmi)
|
190
|
-
end
|
191
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
#
|
3
|
+
# Author:: Kurt Yoder (ktyopscode@yoderhome.com)
|
4
|
+
# Copyright:: Copyright (c) 2010 Kurt Yoder
|
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(:DMI) do
|
21
|
+
provides "dmi"
|
22
|
+
|
23
|
+
collect_data(:solaris2) do
|
24
|
+
require_relative "../../common/dmi"
|
25
|
+
|
26
|
+
# if we already have a "dmi" with keys (presumably from dmidecode), don't try smbios
|
27
|
+
# note that a single key just means dmidecode exited with its version
|
28
|
+
if dmi.is_a?(Mash) && dmi.keys.length > 1
|
29
|
+
logger.trace("Plugin DMI: skipping smbios output, since DMI information has already been provided")
|
30
|
+
return
|
31
|
+
end
|
32
|
+
|
33
|
+
dmi Mash.new
|
34
|
+
|
35
|
+
# bad Solaris shows strings defined by system instead of SMB IDs
|
36
|
+
# this is what the *real* IDs are:
|
37
|
+
# pulled from http://src.opensolaris.org/source/xref/nwam/nwam1/usr/src/uts/common/sys/smbios.h
|
38
|
+
smb_to_id = {
|
39
|
+
"SMB_TYPE_BIOS" => 0, # BIOS information (R)
|
40
|
+
"SMB_TYPE_SYSTEM" => 1, # system information (R)
|
41
|
+
"SMB_TYPE_BASEBOARD" => 2, # base board
|
42
|
+
"SMB_TYPE_CHASSIS" => 3, # system enclosure or chassis (R)
|
43
|
+
"SMB_TYPE_PROCESSOR" => 4, # processor (R)
|
44
|
+
"SMB_TYPE_MEMCTL" => 5, # memory controller (O)
|
45
|
+
"SMB_TYPE_MEMMOD" => 6, # memory module (O)
|
46
|
+
"SMB_TYPE_CACHE" => 7, # processor cache (R)
|
47
|
+
"SMB_TYPE_PORT" => 8, # port connector
|
48
|
+
"SMB_TYPE_SLOT" => 9, # upgradeable system slot (R)
|
49
|
+
"SMB_TYPE_OBDEVS" => 10, # on-board devices
|
50
|
+
"SMB_TYPE_OEMSTR" => 11, # OEM string table
|
51
|
+
"SMB_TYPE_SYSCONFSTR" => 12, # system configuration string table
|
52
|
+
"SMB_TYPE_LANG" => 13, # BIOS language information
|
53
|
+
"SMB_TYPE_GROUP" => 14, # group associations
|
54
|
+
"SMB_TYPE_EVENTLOG" => 15, # system event log
|
55
|
+
"SMB_TYPE_MEMARRAY" => 16, # physical memory array (R)
|
56
|
+
"SMB_TYPE_MEMDEVICE" => 17, # memory device (R)
|
57
|
+
"SMB_TYPE_MEMERR32" => 18, # 32-bit memory error information
|
58
|
+
"SMB_TYPE_MEMARRAYMAP" => 19, # memory array mapped address (R)
|
59
|
+
"SMB_TYPE_MEMDEVICEMAP" => 20, # memory device mapped address (R)
|
60
|
+
"SMB_TYPE_POINTDEV" => 21, # built-in pointing device
|
61
|
+
"SMB_TYPE_BATTERY" => 22, # portable battery
|
62
|
+
"SMB_TYPE_RESET" => 23, # system reset settings
|
63
|
+
"SMB_TYPE_SECURITY" => 24, # hardware security settings
|
64
|
+
"SMB_TYPE_POWERCTL" => 25, # system power controls
|
65
|
+
"SMB_TYPE_VPROBE" => 26, # voltage probe
|
66
|
+
"SMB_TYPE_COOLDEV" => 27, # cooling device
|
67
|
+
"SMB_TYPE_TPROBE" => 28, # temperature probe
|
68
|
+
"SMB_TYPE_IPROBE" => 29, # current probe
|
69
|
+
"SMB_TYPE_OOBRA" => 30, # out-of-band remote access facility
|
70
|
+
"SMB_TYPE_BIS" => 31, # boot integrity services
|
71
|
+
"SMB_TYPE_BOOT" => 32, # system boot status (R)
|
72
|
+
"SMB_TYPE_MEMERR64" => 33, # 64-bit memory error information
|
73
|
+
"SMB_TYPE_MGMTDEV" => 34, # management device
|
74
|
+
"SMB_TYPE_MGMTDEVCP" => 35, # management device component
|
75
|
+
"SMB_TYPE_MGMTDEVDATA" => 36, # management device threshold data
|
76
|
+
"SMB_TYPE_MEMCHAN" => 37, # memory channel
|
77
|
+
"SMB_TYPE_IPMIDEV" => 38, # IPMI device information
|
78
|
+
"SMB_TYPE_POWERSUP" => 39, # system power supply
|
79
|
+
"SMB_TYPE_ADDINFO" => 40, # additional information
|
80
|
+
"SMB_TYPE_OBDEVEXT" => 41, # on-board device extended info
|
81
|
+
"SMB_TYPE_MCHI" => 42, # mgmt controller host interface
|
82
|
+
"SMB_TYPE_INACTIVE" => 126, # inactive table entry
|
83
|
+
"SMB_TYPE_EOT" => 127, # end of table
|
84
|
+
"SMB_TYPE_OEM_LO" => 128, # start of OEM-specific type range
|
85
|
+
"SUN_OEM_EXT_PROCESSOR" => 132, # processor extended info
|
86
|
+
"SUN_OEM_PCIEXRC" => 138, # PCIE RootComplex/RootPort info
|
87
|
+
"SUN_OEM_EXT_MEMARRAY" => 144, # phys memory array extended info
|
88
|
+
"SUN_OEM_EXT_MEMDEVICE" => 145, # memory device extended info
|
89
|
+
"SMB_TYPE_OEM_HI" => 256, # end of OEM-specific type range
|
90
|
+
}.freeze
|
91
|
+
|
92
|
+
# all output lines should fall within one of these patterns
|
93
|
+
header_type_line = /^ID\s+SIZE\s+TYPE/
|
94
|
+
header_information_line = /^(\d+)\s+(\d+)\s+(\S+)\s+\(([^\)]+)\)/
|
95
|
+
blank_line = /^\s*$/
|
96
|
+
data_key_value_line = /^ ([^:]+): (.*)/
|
97
|
+
data_key_only_line = /^ (\S.*)(:\s*)?$/
|
98
|
+
extended_data_line = /^\t(\S+) \((.+)\)/
|
99
|
+
|
100
|
+
dmi_record = nil
|
101
|
+
field = nil
|
102
|
+
|
103
|
+
# ==== EXAMPLE: ====
|
104
|
+
# ID SIZE TYPE
|
105
|
+
# 0 40 SMB_TYPE_BIOS (BIOS information)
|
106
|
+
#
|
107
|
+
# Vendor: HP
|
108
|
+
# Version String: 2.16
|
109
|
+
# ... similar lines trimmed
|
110
|
+
# Characteristics: 0x7fc9da80
|
111
|
+
# SMB_BIOSFL_PCI (PCI is supported)
|
112
|
+
# ... similar lines trimmed
|
113
|
+
# note the second level of indentation is via a *tab*
|
114
|
+
shell_out("smbios").stdout.lines do |raw_line|
|
115
|
+
next if header_type_line.match(raw_line)
|
116
|
+
next if blank_line.match(raw_line)
|
117
|
+
|
118
|
+
# remove/replace any characters that don't fall inside permissible ASCII range, or whitespace
|
119
|
+
line = raw_line.gsub(/[^\x20-\x7E\n\t\r]/, ".")
|
120
|
+
if line != raw_line
|
121
|
+
logger.trace("Plugin DMI: converted characters from line:\n#{raw_line}")
|
122
|
+
end
|
123
|
+
|
124
|
+
if ( header_information = header_information_line.match(line) )
|
125
|
+
dmi_record = {}
|
126
|
+
|
127
|
+
# look up SMB ID
|
128
|
+
if smb_to_id.key?(header_information[3])
|
129
|
+
id = smb_to_id[header_information[3]]
|
130
|
+
|
131
|
+
# Don't overcapture for now (OHAI-260)
|
132
|
+
unless Ohai::Common::DMI.allowlisted_ids.include?(id)
|
133
|
+
dmi_record = nil
|
134
|
+
next
|
135
|
+
end
|
136
|
+
|
137
|
+
dmi_record[:type] = Ohai::Common::DMI.id_lookup(id)
|
138
|
+
|
139
|
+
else
|
140
|
+
logger.trace("Plugin DMI: unrecognized header type; skipping")
|
141
|
+
dmi_record = nil
|
142
|
+
next
|
143
|
+
end
|
144
|
+
|
145
|
+
dmi[dmi_record[:type]] ||= Mash.new
|
146
|
+
dmi[dmi_record[:type]][:all_records] = [] unless dmi[dmi_record[:type]].key?(:all_records)
|
147
|
+
dmi_record[:position] = dmi[dmi_record[:type]][:all_records].length
|
148
|
+
dmi[dmi_record[:type]][:all_records].push(Mash.new)
|
149
|
+
dmi[dmi_record[:type]][:all_records][dmi_record[:position]][:record_id] = header_information[1]
|
150
|
+
dmi[dmi_record[:type]][:all_records][dmi_record[:position]][:size] = header_information[2]
|
151
|
+
dmi[dmi_record[:type]][:all_records][dmi_record[:position]][:application_identifier] = header_information[4]
|
152
|
+
field = nil
|
153
|
+
|
154
|
+
elsif ( data = data_key_value_line.match(line) )
|
155
|
+
if dmi_record.nil?
|
156
|
+
logger.trace("Plugin DMI: unexpected data line found before header; discarding:\n#{line}")
|
157
|
+
next
|
158
|
+
end
|
159
|
+
dmi[dmi_record[:type]][:all_records][dmi_record[:position]][data[1]] = data[2]
|
160
|
+
field = data[1]
|
161
|
+
|
162
|
+
elsif ( data = data_key_only_line.match(line) )
|
163
|
+
if dmi_record.nil?
|
164
|
+
logger.trace("Plugin DMI: unexpected data line found before header; discarding:\n#{line}")
|
165
|
+
next
|
166
|
+
end
|
167
|
+
dmi[dmi_record[:type]][:all_records][dmi_record[:position]][data[1]] = ""
|
168
|
+
field = data[1]
|
169
|
+
|
170
|
+
elsif ( extended_data = extended_data_line.match(line) )
|
171
|
+
if dmi_record.nil?
|
172
|
+
logger.trace("Plugin DMI: unexpected extended data line found before header; discarding:\n#{line}")
|
173
|
+
next
|
174
|
+
end
|
175
|
+
if field.nil?
|
176
|
+
logger.trace("Plugin DMI: unexpected extended data line found outside data section; discarding:\n#{line}")
|
177
|
+
next
|
178
|
+
end
|
179
|
+
# overwrite "raw" value with a new Mash
|
180
|
+
dmi[dmi_record[:type]][:all_records][dmi_record[:position]][field] = Mash.new unless dmi[dmi_record[:type]][:all_records][dmi_record[:position]][field].is_a?(Mash)
|
181
|
+
dmi[dmi_record[:type]][:all_records][dmi_record[:position]][field][extended_data[1]] = extended_data[2]
|
182
|
+
|
183
|
+
else
|
184
|
+
logger.trace("Plugin DMI: unrecognized output line; discarding:\n#{line}")
|
185
|
+
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
189
|
+
Ohai::Common::DMI.convenience_keys(dmi)
|
190
|
+
end
|
191
|
+
end
|
@@ -1,32 +1,32 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
#
|
3
|
-
# License:: Apache License, Version 2.0
|
4
|
-
#
|
5
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
# you may not use this file except in compliance with the License.
|
7
|
-
# You may obtain a copy of the License at
|
8
|
-
#
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
#
|
11
|
-
# Unless required by applicable law or agreed to in writing, software
|
12
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
# See the License for the specific language governing permissions and
|
15
|
-
# limitations under the License.
|
16
|
-
#
|
17
|
-
|
18
|
-
Ohai.plugin(:Memory) do
|
19
|
-
provides "memory"
|
20
|
-
|
21
|
-
collect_data(:solaris2) do
|
22
|
-
memory Mash.new
|
23
|
-
memory[:swap] = Mash.new
|
24
|
-
memory[:total] = "#{shell_out("prtconf | grep Memory").stdout.split[2].to_i * 1024}kB"
|
25
|
-
|
26
|
-
tokens = shell_out("swap -s").stdout.strip.split
|
27
|
-
used_swap = tokens[8][0..-1].to_i # strip k from end
|
28
|
-
free_swap = tokens[10][0..-1].to_i # strip k from end
|
29
|
-
memory[:swap][:total] = "#{used_swap + free_swap}kB"
|
30
|
-
memory[:swap][:free] = "#{free_swap}kB"
|
31
|
-
end
|
32
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
#
|
3
|
+
# License:: Apache License, Version 2.0
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
#
|
17
|
+
|
18
|
+
Ohai.plugin(:Memory) do
|
19
|
+
provides "memory"
|
20
|
+
|
21
|
+
collect_data(:solaris2) do
|
22
|
+
memory Mash.new
|
23
|
+
memory[:swap] = Mash.new
|
24
|
+
memory[:total] = "#{shell_out("prtconf | grep Memory").stdout.split[2].to_i * 1024}kB"
|
25
|
+
|
26
|
+
tokens = shell_out("swap -s").stdout.strip.split
|
27
|
+
used_swap = tokens[8][0..-1].to_i # strip k from end
|
28
|
+
free_swap = tokens[10][0..-1].to_i # strip k from end
|
29
|
+
memory[:swap][:total] = "#{used_swap + free_swap}kB"
|
30
|
+
memory[:swap][:free] = "#{free_swap}kB"
|
31
|
+
end
|
32
|
+
end
|