ohai 18.0.26 → 18.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (168) 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 +86 -86
  17. data/lib/ohai/mixin/azure_metadata.rb +111 -111
  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 +256 -256
  24. data/lib/ohai/mixin/gce_metadata.rb +83 -83
  25. data/lib/ohai/mixin/http_helper.rb +64 -64
  26. data/lib/ohai/mixin/network_helper.rb +65 -65
  27. data/lib/ohai/mixin/oci_metadata.rb +69 -0
  28. data/lib/ohai/mixin/os.rb +128 -128
  29. data/lib/ohai/mixin/scaleway_metadata.rb +51 -51
  30. data/lib/ohai/mixin/seconds_to_human.rb +52 -52
  31. data/lib/ohai/mixin/shell_out.rb +51 -51
  32. data/lib/ohai/mixin/softlayer_metadata.rb +74 -74
  33. data/lib/ohai/mixin/string.rb +31 -31
  34. data/lib/ohai/mixin/train_helpers.rb +36 -36
  35. data/lib/ohai/mixin/which.rb +39 -39
  36. data/lib/ohai/plugin_config.rb +47 -47
  37. data/lib/ohai/plugins/aix/kernel.rb +50 -50
  38. data/lib/ohai/plugins/aix/memory.rb +37 -37
  39. data/lib/ohai/plugins/aix/network.rb +142 -142
  40. data/lib/ohai/plugins/aix/platform.rb +30 -30
  41. data/lib/ohai/plugins/aix/uptime.rb +54 -54
  42. data/lib/ohai/plugins/aix/virtualization.rb +154 -154
  43. data/lib/ohai/plugins/alibaba.rb +72 -72
  44. data/lib/ohai/plugins/azure.rb +154 -154
  45. data/lib/ohai/plugins/bsd/virtualization.rb +121 -121
  46. data/lib/ohai/plugins/c.rb +178 -178
  47. data/lib/ohai/plugins/chef.rb +50 -50
  48. data/lib/ohai/plugins/cloud.rb +379 -357
  49. data/lib/ohai/plugins/command.rb +26 -26
  50. data/lib/ohai/plugins/cpu.rb +635 -635
  51. data/lib/ohai/plugins/darwin/hardware.rb +99 -99
  52. data/lib/ohai/plugins/darwin/memory.rb +62 -62
  53. data/lib/ohai/plugins/darwin/network.rb +207 -207
  54. data/lib/ohai/plugins/darwin/platform.rb +38 -38
  55. data/lib/ohai/plugins/darwin/virtualization.rb +90 -93
  56. data/lib/ohai/plugins/digital_ocean.rb +67 -67
  57. data/lib/ohai/plugins/dmi.rb +134 -134
  58. data/lib/ohai/plugins/docker.rb +58 -58
  59. data/lib/ohai/plugins/dragonflybsd/memory.rb +60 -60
  60. data/lib/ohai/plugins/dragonflybsd/network.rb +128 -128
  61. data/lib/ohai/plugins/dragonflybsd/platform.rb +28 -28
  62. data/lib/ohai/plugins/ec2.rb +148 -148
  63. data/lib/ohai/plugins/elixir.rb +36 -36
  64. data/lib/ohai/plugins/erlang.rb +60 -60
  65. data/lib/ohai/plugins/eucalyptus.rb +86 -86
  66. data/lib/ohai/plugins/filesystem.rb +751 -751
  67. data/lib/ohai/plugins/fips.rb +36 -36
  68. data/lib/ohai/plugins/freebsd/memory.rb +60 -60
  69. data/lib/ohai/plugins/freebsd/network.rb +128 -128
  70. data/lib/ohai/plugins/freebsd/platform.rb +28 -28
  71. data/lib/ohai/plugins/gce.rb +89 -89
  72. data/lib/ohai/plugins/go.rb +34 -34
  73. data/lib/ohai/plugins/groovy.rb +38 -38
  74. data/lib/ohai/plugins/grub2.rb +40 -40
  75. data/lib/ohai/plugins/habitat.rb +73 -73
  76. data/lib/ohai/plugins/haskell.rb +96 -96
  77. data/lib/ohai/plugins/hostname.rb +133 -133
  78. data/lib/ohai/plugins/init_package.rb +26 -26
  79. data/lib/ohai/plugins/java.rb +78 -78
  80. data/lib/ohai/plugins/kernel.rb +292 -292
  81. data/lib/ohai/plugins/keys.rb +27 -27
  82. data/lib/ohai/plugins/languages.rb +26 -26
  83. data/lib/ohai/plugins/libvirt.rb +114 -114
  84. data/lib/ohai/plugins/linode.rb +73 -73
  85. data/lib/ohai/plugins/linux/block_device.rb +48 -48
  86. data/lib/ohai/plugins/linux/hostnamectl.rb +34 -34
  87. data/lib/ohai/plugins/linux/interrupts.rb +84 -84
  88. data/lib/ohai/plugins/linux/ipc.rb +52 -52
  89. data/lib/ohai/plugins/linux/livepatch.rb +38 -38
  90. data/lib/ohai/plugins/linux/lsb.rb +46 -46
  91. data/lib/ohai/plugins/linux/lspci.rb +76 -76
  92. data/lib/ohai/plugins/linux/machineid.rb +36 -36
  93. data/lib/ohai/plugins/linux/mdadm.rb +120 -120
  94. data/lib/ohai/plugins/linux/memory.rb +106 -106
  95. data/lib/ohai/plugins/linux/network.rb +879 -879
  96. data/lib/ohai/plugins/linux/os_release.rb +38 -38
  97. data/lib/ohai/plugins/linux/platform.rb +314 -314
  98. data/lib/ohai/plugins/linux/selinux.rb +69 -69
  99. data/lib/ohai/plugins/linux/sessions.rb +54 -54
  100. data/lib/ohai/plugins/linux/sysctl.rb +39 -39
  101. data/lib/ohai/plugins/linux/systemd_paths.rb +36 -36
  102. data/lib/ohai/plugins/linux/tc.rb +61 -61
  103. data/lib/ohai/plugins/linux/virtualization.rb +300 -300
  104. data/lib/ohai/plugins/lua.rb +39 -39
  105. data/lib/ohai/plugins/mono.rb +50 -50
  106. data/lib/ohai/plugins/netbsd/memory.rb +99 -99
  107. data/lib/ohai/plugins/netbsd/network.rb +122 -122
  108. data/lib/ohai/plugins/netbsd/platform.rb +28 -28
  109. data/lib/ohai/plugins/network.rb +186 -186
  110. data/lib/ohai/plugins/nodejs.rb +40 -40
  111. data/lib/ohai/plugins/oci.rb +94 -0
  112. data/lib/ohai/plugins/ohai.rb +29 -29
  113. data/lib/ohai/plugins/ohai_time.rb +26 -26
  114. data/lib/ohai/plugins/openbsd/memory.rb +99 -99
  115. data/lib/ohai/plugins/openbsd/network.rb +122 -122
  116. data/lib/ohai/plugins/openbsd/platform.rb +28 -28
  117. data/lib/ohai/plugins/openstack.rb +84 -84
  118. data/lib/ohai/plugins/os.rb +55 -55
  119. data/lib/ohai/plugins/packages.rb +234 -234
  120. data/lib/ohai/plugins/passwd.rb +104 -104
  121. data/lib/ohai/plugins/perl.rb +45 -45
  122. data/lib/ohai/plugins/php.rb +52 -52
  123. data/lib/ohai/plugins/platform.rb +29 -29
  124. data/lib/ohai/plugins/powershell.rb +82 -82
  125. data/lib/ohai/plugins/ps.rb +35 -35
  126. data/lib/ohai/plugins/python.rb +43 -43
  127. data/lib/ohai/plugins/rackspace.rb +177 -177
  128. data/lib/ohai/plugins/root_group.rb +41 -41
  129. data/lib/ohai/plugins/rpm.rb +121 -121
  130. data/lib/ohai/plugins/ruby.rb +66 -66
  131. data/lib/ohai/plugins/rust.rb +34 -34
  132. data/lib/ohai/plugins/scala.rb +38 -38
  133. data/lib/ohai/plugins/scaleway.rb +58 -58
  134. data/lib/ohai/plugins/scsi.rb +52 -52
  135. data/lib/ohai/plugins/shard.rb +142 -142
  136. data/lib/ohai/plugins/shells.rb +32 -32
  137. data/lib/ohai/plugins/softlayer.rb +48 -48
  138. data/lib/ohai/plugins/solaris2/dmi.rb +191 -191
  139. data/lib/ohai/plugins/solaris2/memory.rb +32 -32
  140. data/lib/ohai/plugins/solaris2/network.rb +192 -192
  141. data/lib/ohai/plugins/solaris2/platform.rb +58 -58
  142. data/lib/ohai/plugins/solaris2/virtualization.rb +90 -90
  143. data/lib/ohai/plugins/ssh_host_key.rb +84 -84
  144. data/lib/ohai/plugins/sysconf.rb +46 -46
  145. data/lib/ohai/plugins/timezone.rb +45 -25
  146. data/lib/ohai/plugins/train.rb +35 -35
  147. data/lib/ohai/plugins/uptime.rb +95 -95
  148. data/lib/ohai/plugins/virtualbox.rb +197 -197
  149. data/lib/ohai/plugins/vmware.rb +109 -94
  150. data/lib/ohai/plugins/windows/dmi.rb +95 -95
  151. data/lib/ohai/plugins/windows/drivers.rb +52 -52
  152. data/lib/ohai/plugins/windows/memory.rb +39 -39
  153. data/lib/ohai/plugins/windows/network.rb +222 -222
  154. data/lib/ohai/plugins/windows/platform.rb +34 -34
  155. data/lib/ohai/plugins/windows/system_enclosure.rb +29 -29
  156. data/lib/ohai/plugins/windows/virtualization.rb +45 -45
  157. data/lib/ohai/plugins/zpools.rb +94 -94
  158. data/lib/ohai/provides_map.rb +208 -208
  159. data/lib/ohai/runner.rb +128 -128
  160. data/lib/ohai/system.rb +258 -258
  161. data/lib/ohai/train_transport.rb +29 -29
  162. data/lib/ohai/util/file_helper.rb +6 -6
  163. data/lib/ohai/util/ip_helper.rb +56 -56
  164. data/lib/ohai/util/win32.rb +47 -47
  165. data/lib/ohai/version.rb +23 -23
  166. data/lib/ohai.rb +23 -23
  167. data/ohai.gemspec +35 -35
  168. metadata +5 -3
@@ -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