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
data/lib/ohai/plugins/vmware.rb
CHANGED
@@ -1,109 +1,109 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
#
|
3
|
-
# Author:: "Dan Robinson" <drobinson@chef.io>
|
4
|
-
# Author:: "Christopher M. Luciano" <cmlucian@us.ibm.com>
|
5
|
-
# Copyright:: Copyright (c) Chef Software Inc.
|
6
|
-
# Copyright (C) 2015 IBM Corp.
|
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
|
-
|
22
|
-
#
|
23
|
-
# Provides a set of attributes for a VMware ESX virtual machine with results
|
24
|
-
# obtained from vmware-toolbox-cmd. VMware Tools must be installed
|
25
|
-
# on the virtual machine.
|
26
|
-
#
|
27
|
-
# Modify the path to vmware-toolbox-cmd in the call to get_vm_attributes for
|
28
|
-
# your particular operating system and configuration
|
29
|
-
#
|
30
|
-
# Example:
|
31
|
-
#
|
32
|
-
# get_vm_attributes("/usr/bin/vmware-toolbox-cmd")
|
33
|
-
#
|
34
|
-
|
35
|
-
Ohai.plugin(:VMware) do
|
36
|
-
provides "vmware"
|
37
|
-
depends "virtualization"
|
38
|
-
|
39
|
-
def from_cmd(cmd)
|
40
|
-
shell_out(cmd).stdout.strip
|
41
|
-
end
|
42
|
-
|
43
|
-
def get_vm_attributes(vmtools_path)
|
44
|
-
if !file_exist?(vmtools_path)
|
45
|
-
logger.trace("Plugin VMware: #{vmtools_path} not found")
|
46
|
-
else
|
47
|
-
vmware Mash.new
|
48
|
-
vmware[:host] = Mash.new
|
49
|
-
vmware[:guest] = Mash.new
|
50
|
-
begin
|
51
|
-
# vmware-toolbox-cmd stat <param> commands
|
52
|
-
# Iterate through each parameter supported by the "vwware-toolbox-cmd stat" command, assign value
|
53
|
-
# to attribute "vmware[:<parameter>]"
|
54
|
-
%w{hosttime speed sessionid balloon swap memlimit memres cpures cpulimit}.each do |param|
|
55
|
-
vmware[param] = from_cmd([vmtools_path, "stat", param])
|
56
|
-
if param == "hosttime" && vmtools_path.include?("Program Files")
|
57
|
-
# popen and %x return stdout encoded as IBM437 in Windows but in a string marked
|
58
|
-
# UTF-8. The string doesn't throw an exception when encoded to "UTF-8" but
|
59
|
-
# displays [?] character in Windows without this.
|
60
|
-
#
|
61
|
-
# .force_encoding(Encoding::ISO_8859_1) causes the character to be dropped
|
62
|
-
# and .force_encoding(Encoding::Windows_1252) displays the „ character in place
|
63
|
-
# of an ä. .force_encoding(Encoding::IBM437) allows for the correct characters
|
64
|
-
# to be displayed.
|
65
|
-
#
|
66
|
-
# Note:
|
67
|
-
# * this is broken for at least Ruby 2.7 through 3.1.3
|
68
|
-
# * confirmed that this is broken on Windows Server 2022
|
69
|
-
vmware[param] = vmware[param].force_encoding(Encoding::IBM437).encode("UTF-8")
|
70
|
-
end
|
71
|
-
if vmware[param].include?("UpdateInfo failed")
|
72
|
-
vmware[param] = nil
|
73
|
-
end
|
74
|
-
end
|
75
|
-
# vmware-toolbox-cmd <param> status commands
|
76
|
-
# Iterate through each parameter supported by the "vmware-toolbox-cmd status" command, assign value
|
77
|
-
# to attribute "vmware[:<parameter>]"
|
78
|
-
%w{upgrade timesync}.each do |param|
|
79
|
-
vmware[param] = from_cmd([vmtools_path, param, "status"])
|
80
|
-
end
|
81
|
-
# Distinguish hypervisors by presence of raw session data (vSphere only)
|
82
|
-
raw_session = from_cmd([vmtools_path, "stat", "raw", "json", "session"])
|
83
|
-
if raw_session.empty?
|
84
|
-
vmware[:host] = {
|
85
|
-
type: "vmware_desktop",
|
86
|
-
}
|
87
|
-
else
|
88
|
-
require "json" unless defined?(JSON)
|
89
|
-
session = JSON.parse(raw_session)
|
90
|
-
vmware[:host] = {
|
91
|
-
type: "vmware_vsphere",
|
92
|
-
version: session["version"],
|
93
|
-
}
|
94
|
-
end
|
95
|
-
vmware[:guest][:vmware_tools_version] = from_cmd([vmtools_path, "-v"]).split(" ").first
|
96
|
-
rescue
|
97
|
-
logger.trace("Plugin VMware: Error while collecting VMware guest attributes")
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
collect_data(:linux) do
|
103
|
-
get_vm_attributes("/usr/bin/vmware-toolbox-cmd") if virtualization[:systems][:vmware]
|
104
|
-
end
|
105
|
-
|
106
|
-
collect_data(:windows) do
|
107
|
-
get_vm_attributes("C:/Program Files/VMWare/VMware Tools/VMwareToolboxCmd.exe") if virtualization[:systems][:vmware]
|
108
|
-
end
|
109
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
#
|
3
|
+
# Author:: "Dan Robinson" <drobinson@chef.io>
|
4
|
+
# Author:: "Christopher M. Luciano" <cmlucian@us.ibm.com>
|
5
|
+
# Copyright:: Copyright (c) Chef Software Inc.
|
6
|
+
# Copyright (C) 2015 IBM Corp.
|
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
|
+
|
22
|
+
#
|
23
|
+
# Provides a set of attributes for a VMware ESX virtual machine with results
|
24
|
+
# obtained from vmware-toolbox-cmd. VMware Tools must be installed
|
25
|
+
# on the virtual machine.
|
26
|
+
#
|
27
|
+
# Modify the path to vmware-toolbox-cmd in the call to get_vm_attributes for
|
28
|
+
# your particular operating system and configuration
|
29
|
+
#
|
30
|
+
# Example:
|
31
|
+
#
|
32
|
+
# get_vm_attributes("/usr/bin/vmware-toolbox-cmd")
|
33
|
+
#
|
34
|
+
|
35
|
+
Ohai.plugin(:VMware) do
|
36
|
+
provides "vmware"
|
37
|
+
depends "virtualization"
|
38
|
+
|
39
|
+
def from_cmd(cmd)
|
40
|
+
shell_out(cmd).stdout.strip
|
41
|
+
end
|
42
|
+
|
43
|
+
def get_vm_attributes(vmtools_path)
|
44
|
+
if !file_exist?(vmtools_path)
|
45
|
+
logger.trace("Plugin VMware: #{vmtools_path} not found")
|
46
|
+
else
|
47
|
+
vmware Mash.new
|
48
|
+
vmware[:host] = Mash.new
|
49
|
+
vmware[:guest] = Mash.new
|
50
|
+
begin
|
51
|
+
# vmware-toolbox-cmd stat <param> commands
|
52
|
+
# Iterate through each parameter supported by the "vwware-toolbox-cmd stat" command, assign value
|
53
|
+
# to attribute "vmware[:<parameter>]"
|
54
|
+
%w{hosttime speed sessionid balloon swap memlimit memres cpures cpulimit}.each do |param|
|
55
|
+
vmware[param] = from_cmd([vmtools_path, "stat", param])
|
56
|
+
if param == "hosttime" && vmtools_path.include?("Program Files")
|
57
|
+
# popen and %x return stdout encoded as IBM437 in Windows but in a string marked
|
58
|
+
# UTF-8. The string doesn't throw an exception when encoded to "UTF-8" but
|
59
|
+
# displays [?] character in Windows without this.
|
60
|
+
#
|
61
|
+
# .force_encoding(Encoding::ISO_8859_1) causes the character to be dropped
|
62
|
+
# and .force_encoding(Encoding::Windows_1252) displays the „ character in place
|
63
|
+
# of an ä. .force_encoding(Encoding::IBM437) allows for the correct characters
|
64
|
+
# to be displayed.
|
65
|
+
#
|
66
|
+
# Note:
|
67
|
+
# * this is broken for at least Ruby 2.7 through 3.1.3
|
68
|
+
# * confirmed that this is broken on Windows Server 2022
|
69
|
+
vmware[param] = vmware[param].force_encoding(Encoding::IBM437).encode("UTF-8")
|
70
|
+
end
|
71
|
+
if vmware[param].include?("UpdateInfo failed")
|
72
|
+
vmware[param] = nil
|
73
|
+
end
|
74
|
+
end
|
75
|
+
# vmware-toolbox-cmd <param> status commands
|
76
|
+
# Iterate through each parameter supported by the "vmware-toolbox-cmd status" command, assign value
|
77
|
+
# to attribute "vmware[:<parameter>]"
|
78
|
+
%w{upgrade timesync}.each do |param|
|
79
|
+
vmware[param] = from_cmd([vmtools_path, param, "status"])
|
80
|
+
end
|
81
|
+
# Distinguish hypervisors by presence of raw session data (vSphere only)
|
82
|
+
raw_session = from_cmd([vmtools_path, "stat", "raw", "json", "session"])
|
83
|
+
if raw_session.empty?
|
84
|
+
vmware[:host] = {
|
85
|
+
type: "vmware_desktop",
|
86
|
+
}
|
87
|
+
else
|
88
|
+
require "json" unless defined?(JSON)
|
89
|
+
session = JSON.parse(raw_session)
|
90
|
+
vmware[:host] = {
|
91
|
+
type: "vmware_vsphere",
|
92
|
+
version: session["version"],
|
93
|
+
}
|
94
|
+
end
|
95
|
+
vmware[:guest][:vmware_tools_version] = from_cmd([vmtools_path, "-v"]).split(" ").first
|
96
|
+
rescue
|
97
|
+
logger.trace("Plugin VMware: Error while collecting VMware guest attributes")
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
collect_data(:linux) do
|
103
|
+
get_vm_attributes("/usr/bin/vmware-toolbox-cmd") if virtualization[:systems][:vmware]
|
104
|
+
end
|
105
|
+
|
106
|
+
collect_data(:windows) do
|
107
|
+
get_vm_attributes("C:/Program Files/VMWare/VMware Tools/VMwareToolboxCmd.exe") if virtualization[:systems][:vmware]
|
108
|
+
end
|
109
|
+
end
|
@@ -1,95 +1,95 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
#
|
3
|
-
# Author:: Pete Higgins (pete@peterhiggins.org)
|
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(:DMI) do
|
21
|
-
provides "dmi"
|
22
|
-
|
23
|
-
# Map the linux component types to their rough Windows API equivalents
|
24
|
-
DMI_TO_WIN32OLE ||= {
|
25
|
-
chassis: "SystemEnclosure",
|
26
|
-
processor: "Processor",
|
27
|
-
bios: "Bios",
|
28
|
-
system: "ComputerSystemProduct",
|
29
|
-
base_board: "BaseBoard",
|
30
|
-
}.freeze
|
31
|
-
|
32
|
-
# This regex is in 3 parts for the different supported patterns in camel
|
33
|
-
# case names coming from the Windows API:
|
34
|
-
# * Typical camelcase, eg Depth, PartNumber, NumberOfPowerCords
|
35
|
-
# * Acronyms preceding camelcase, eg SMBIOSAssetTag
|
36
|
-
# * Acronyms that occur at the end of the name, eg SKU, DeviceID
|
37
|
-
#
|
38
|
-
# This cannot handle some property names, eg SMBIOSBIOSVersion.
|
39
|
-
# https://rubular.com/r/FBNtXod4wkZGAG
|
40
|
-
SPLIT_REGEX ||= /[A-Z][a-z0-9]+|[A-Z]{2,}(?=[A-Z][a-z0-9])|[A-Z]{2,}/.freeze
|
41
|
-
|
42
|
-
WINDOWS_TO_UNIX_KEYS ||= [
|
43
|
-
%w{vendor manufacturer},
|
44
|
-
%w{identifying_number serial_number},
|
45
|
-
%w{name family},
|
46
|
-
].freeze
|
47
|
-
|
48
|
-
collect_data(:windows) do
|
49
|
-
require_relative "../../common/dmi"
|
50
|
-
require "wmi-lite/wmi" unless defined?(WmiLite::Wmi)
|
51
|
-
wmi = WmiLite::Wmi.new
|
52
|
-
|
53
|
-
dmi Mash.new
|
54
|
-
|
55
|
-
# The Windows API returns property names in camel case, eg "SerialNumber",
|
56
|
-
# while `dmi` returns them as space separated strings, eg "Serial Number".
|
57
|
-
# `Ohai::Common::DMI.convenience_keys` expects property names in `dmi`'s
|
58
|
-
# format, so build two parallel hashes with the keys as they come from the
|
59
|
-
# Windows API and in a faked-out `dmi` version. After the call to
|
60
|
-
# `Ohai::Common::DMI.convenience_keys` replace the faked-out `dmi`
|
61
|
-
# collection with the one with the original property names.
|
62
|
-
DMI_TO_WIN32OLE.each do |dmi_key, ole_key|
|
63
|
-
wmi_objects = wmi.instances_of("Win32_#{ole_key}").map(&:wmi_ole_object)
|
64
|
-
|
65
|
-
split_name_properties = []
|
66
|
-
properties = []
|
67
|
-
|
68
|
-
wmi_objects.each do |wmi_object|
|
69
|
-
split_name_properties << Mash.new
|
70
|
-
properties << Mash.new
|
71
|
-
|
72
|
-
wmi_object.properties_.each do |property|
|
73
|
-
property_name = property.name
|
74
|
-
value = wmi_object.invoke(property_name)
|
75
|
-
|
76
|
-
split_name = property_name.scan(SPLIT_REGEX).join(" ")
|
77
|
-
split_name_properties.last[split_name] = value
|
78
|
-
properties.last[property_name] = value
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
dmi[dmi_key] = Mash.new(all_records: split_name_properties, _all_records: properties)
|
83
|
-
end
|
84
|
-
|
85
|
-
Ohai::Common::DMI.convenience_keys(dmi)
|
86
|
-
|
87
|
-
dmi.each_value do |records|
|
88
|
-
records[:all_records] = records.delete(:_all_records)
|
89
|
-
|
90
|
-
WINDOWS_TO_UNIX_KEYS.each do |windows_key, unix_key|
|
91
|
-
records[unix_key] = records.delete(windows_key) if records.key?(windows_key)
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
#
|
3
|
+
# Author:: Pete Higgins (pete@peterhiggins.org)
|
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(:DMI) do
|
21
|
+
provides "dmi"
|
22
|
+
|
23
|
+
# Map the linux component types to their rough Windows API equivalents
|
24
|
+
DMI_TO_WIN32OLE ||= {
|
25
|
+
chassis: "SystemEnclosure",
|
26
|
+
processor: "Processor",
|
27
|
+
bios: "Bios",
|
28
|
+
system: "ComputerSystemProduct",
|
29
|
+
base_board: "BaseBoard",
|
30
|
+
}.freeze
|
31
|
+
|
32
|
+
# This regex is in 3 parts for the different supported patterns in camel
|
33
|
+
# case names coming from the Windows API:
|
34
|
+
# * Typical camelcase, eg Depth, PartNumber, NumberOfPowerCords
|
35
|
+
# * Acronyms preceding camelcase, eg SMBIOSAssetTag
|
36
|
+
# * Acronyms that occur at the end of the name, eg SKU, DeviceID
|
37
|
+
#
|
38
|
+
# This cannot handle some property names, eg SMBIOSBIOSVersion.
|
39
|
+
# https://rubular.com/r/FBNtXod4wkZGAG
|
40
|
+
SPLIT_REGEX ||= /[A-Z][a-z0-9]+|[A-Z]{2,}(?=[A-Z][a-z0-9])|[A-Z]{2,}/.freeze
|
41
|
+
|
42
|
+
WINDOWS_TO_UNIX_KEYS ||= [
|
43
|
+
%w{vendor manufacturer},
|
44
|
+
%w{identifying_number serial_number},
|
45
|
+
%w{name family},
|
46
|
+
].freeze
|
47
|
+
|
48
|
+
collect_data(:windows) do
|
49
|
+
require_relative "../../common/dmi"
|
50
|
+
require "wmi-lite/wmi" unless defined?(WmiLite::Wmi)
|
51
|
+
wmi = WmiLite::Wmi.new
|
52
|
+
|
53
|
+
dmi Mash.new
|
54
|
+
|
55
|
+
# The Windows API returns property names in camel case, eg "SerialNumber",
|
56
|
+
# while `dmi` returns them as space separated strings, eg "Serial Number".
|
57
|
+
# `Ohai::Common::DMI.convenience_keys` expects property names in `dmi`'s
|
58
|
+
# format, so build two parallel hashes with the keys as they come from the
|
59
|
+
# Windows API and in a faked-out `dmi` version. After the call to
|
60
|
+
# `Ohai::Common::DMI.convenience_keys` replace the faked-out `dmi`
|
61
|
+
# collection with the one with the original property names.
|
62
|
+
DMI_TO_WIN32OLE.each do |dmi_key, ole_key|
|
63
|
+
wmi_objects = wmi.instances_of("Win32_#{ole_key}").map(&:wmi_ole_object)
|
64
|
+
|
65
|
+
split_name_properties = []
|
66
|
+
properties = []
|
67
|
+
|
68
|
+
wmi_objects.each do |wmi_object|
|
69
|
+
split_name_properties << Mash.new
|
70
|
+
properties << Mash.new
|
71
|
+
|
72
|
+
wmi_object.properties_.each do |property|
|
73
|
+
property_name = property.name
|
74
|
+
value = wmi_object.invoke(property_name)
|
75
|
+
|
76
|
+
split_name = property_name.scan(SPLIT_REGEX).join(" ")
|
77
|
+
split_name_properties.last[split_name] = value
|
78
|
+
properties.last[property_name] = value
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
dmi[dmi_key] = Mash.new(all_records: split_name_properties, _all_records: properties)
|
83
|
+
end
|
84
|
+
|
85
|
+
Ohai::Common::DMI.convenience_keys(dmi)
|
86
|
+
|
87
|
+
dmi.each_value do |records|
|
88
|
+
records[:all_records] = records.delete(:_all_records)
|
89
|
+
|
90
|
+
WINDOWS_TO_UNIX_KEYS.each do |windows_key, unix_key|
|
91
|
+
records[unix_key] = records.delete(windows_key) if records.key?(windows_key)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
@@ -1,52 +1,52 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
#
|
3
|
-
# Copyright:: Copyright (c) Chef Software Inc.
|
4
|
-
# License:: Apache License, Version 2.0
|
5
|
-
#
|
6
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
-
# you may not use this file except in compliance with the License.
|
8
|
-
# You may obtain a copy of the License at
|
9
|
-
#
|
10
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
-
#
|
12
|
-
# Unless required by applicable law or agreed to in writing, software
|
13
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
-
# See the License for the specific language governing permissions and
|
16
|
-
# limitations under the License.
|
17
|
-
#
|
18
|
-
|
19
|
-
Ohai.plugin(:Drivers) do
|
20
|
-
provides "kernel/pnp_drivers", "kernel/modules"
|
21
|
-
depends "kernel"
|
22
|
-
|
23
|
-
collect_data(:windows) do
|
24
|
-
if configuration(:enabled)
|
25
|
-
|
26
|
-
require "wmi-lite/wmi" unless defined?(WmiLite::Wmi)
|
27
|
-
|
28
|
-
kext = Mash.new
|
29
|
-
pnp_drivers = Mash.new
|
30
|
-
|
31
|
-
wmi = WmiLite::Wmi.new
|
32
|
-
|
33
|
-
drivers = wmi.instances_of("Win32_PnPSignedDriver")
|
34
|
-
drivers.each do |driver|
|
35
|
-
pnp_drivers[driver["deviceid"]] = Mash.new
|
36
|
-
driver.wmi_ole_object.properties_.each do |p|
|
37
|
-
pnp_drivers[driver["deviceid"]][p.name.wmi_underscore.to_sym] = driver[p.name.downcase]
|
38
|
-
end
|
39
|
-
if driver["devicename"]
|
40
|
-
kext[driver["devicename"]] = pnp_drivers[driver["deviceid"]]
|
41
|
-
kext[driver["devicename"]][:version] = pnp_drivers[driver["deviceid"]][:driver_version]
|
42
|
-
kext[driver["devicename"]][:date] = pnp_drivers[driver["deviceid"]][:driver_date] ? pnp_drivers[driver["deviceid"]][:driver_date].to_s[0..7] : nil
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
kernel[:pnp_drivers] = pnp_drivers
|
47
|
-
kernel[:modules] = kext
|
48
|
-
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
#
|
3
|
+
# Copyright:: Copyright (c) Chef Software Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
Ohai.plugin(:Drivers) do
|
20
|
+
provides "kernel/pnp_drivers", "kernel/modules"
|
21
|
+
depends "kernel"
|
22
|
+
|
23
|
+
collect_data(:windows) do
|
24
|
+
if configuration(:enabled)
|
25
|
+
|
26
|
+
require "wmi-lite/wmi" unless defined?(WmiLite::Wmi)
|
27
|
+
|
28
|
+
kext = Mash.new
|
29
|
+
pnp_drivers = Mash.new
|
30
|
+
|
31
|
+
wmi = WmiLite::Wmi.new
|
32
|
+
|
33
|
+
drivers = wmi.instances_of("Win32_PnPSignedDriver")
|
34
|
+
drivers.each do |driver|
|
35
|
+
pnp_drivers[driver["deviceid"]] = Mash.new
|
36
|
+
driver.wmi_ole_object.properties_.each do |p|
|
37
|
+
pnp_drivers[driver["deviceid"]][p.name.wmi_underscore.to_sym] = driver[p.name.downcase]
|
38
|
+
end
|
39
|
+
if driver["devicename"]
|
40
|
+
kext[driver["devicename"]] = pnp_drivers[driver["deviceid"]]
|
41
|
+
kext[driver["devicename"]][:version] = pnp_drivers[driver["deviceid"]][:driver_version]
|
42
|
+
kext[driver["devicename"]][:date] = pnp_drivers[driver["deviceid"]][:driver_date] ? pnp_drivers[driver["deviceid"]][:driver_date].to_s[0..7] : nil
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
kernel[:pnp_drivers] = pnp_drivers
|
47
|
+
kernel[:modules] = kext
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
@@ -1,39 +1,39 @@
|
|
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
|
-
Ohai.plugin(:Memory) do
|
18
|
-
provides "memory"
|
19
|
-
|
20
|
-
collect_data(:windows) do
|
21
|
-
require "wmi-lite/wmi" unless defined?(WmiLite::Wmi)
|
22
|
-
|
23
|
-
memory Mash.new
|
24
|
-
memory[:swap] = Mash.new
|
25
|
-
|
26
|
-
wmi = WmiLite::Wmi.new
|
27
|
-
|
28
|
-
os = wmi.first_of("Win32_OperatingSystem")
|
29
|
-
|
30
|
-
# MemTotal
|
31
|
-
memory[:total] = os["TotalVisibleMemorySize"] + "kB"
|
32
|
-
# MemFree
|
33
|
-
memory[:free] = os["FreePhysicalMemory"] + "kB"
|
34
|
-
# SwapTotal
|
35
|
-
memory[:swap][:total] = os["SizeStoredInPagingFiles"] + "kB"
|
36
|
-
# SwapFree
|
37
|
-
memory[:swap][:free] = os["FreeSpaceInPagingFiles"] + "kB"
|
38
|
-
end
|
39
|
-
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
|
+
Ohai.plugin(:Memory) do
|
18
|
+
provides "memory"
|
19
|
+
|
20
|
+
collect_data(:windows) do
|
21
|
+
require "wmi-lite/wmi" unless defined?(WmiLite::Wmi)
|
22
|
+
|
23
|
+
memory Mash.new
|
24
|
+
memory[:swap] = Mash.new
|
25
|
+
|
26
|
+
wmi = WmiLite::Wmi.new
|
27
|
+
|
28
|
+
os = wmi.first_of("Win32_OperatingSystem")
|
29
|
+
|
30
|
+
# MemTotal
|
31
|
+
memory[:total] = os["TotalVisibleMemorySize"] + "kB"
|
32
|
+
# MemFree
|
33
|
+
memory[:free] = os["FreePhysicalMemory"] + "kB"
|
34
|
+
# SwapTotal
|
35
|
+
memory[:swap][:total] = os["SizeStoredInPagingFiles"] + "kB"
|
36
|
+
# SwapFree
|
37
|
+
memory[:swap][:free] = os["FreeSpaceInPagingFiles"] + "kB"
|
38
|
+
end
|
39
|
+
end
|