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,154 +1,154 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Julian C. Dunn (<jdunn@chef.io>)
|
3
|
-
# Author:: Isa Farnik (<isa@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(:Virtualization) do
|
21
|
-
provides "virtualization", "virtualization/wpars"
|
22
|
-
|
23
|
-
collect_data(:aix) do
|
24
|
-
virtualization Mash.new
|
25
|
-
|
26
|
-
lpar_no, lpar_name = shell_out("uname -L").stdout.split(nil, 2)
|
27
|
-
lpar_no = lpar_no.to_i
|
28
|
-
|
29
|
-
unless lpar_no == -1 || (lpar_no == 1 && lpar_name == "NULL")
|
30
|
-
virtualization[:lpar_no] = lpar_no
|
31
|
-
virtualization[:lpar_name] = lpar_name
|
32
|
-
end
|
33
|
-
|
34
|
-
wpar_no = shell_out("uname -W").stdout.strip.to_i
|
35
|
-
if wpar_no > 0
|
36
|
-
virtualization[:wpar_no] = wpar_no
|
37
|
-
else
|
38
|
-
# the below parses the output of lswpar in the long format
|
39
|
-
so = shell_out("lswpar -L").stdout.scan(/={65}.*?(?:EXPORTED\n\n)+/m)
|
40
|
-
wpars = Mash.new
|
41
|
-
so.each do |wpar|
|
42
|
-
wpar_heading = wpar.lines[1].split
|
43
|
-
wpar_name = wpar_heading[0]
|
44
|
-
|
45
|
-
wpars[wpar_name] = Mash.new
|
46
|
-
wpars[wpar_name][:state] = wpar_heading[2].downcase
|
47
|
-
|
48
|
-
wpar.scan(/^[A-Z]{4,}.*?[A-Z\:0-9]$.*?\n\n/m).each do |section|
|
49
|
-
|
50
|
-
# retrieve title of section
|
51
|
-
title = section.lines.first[0..-2].downcase
|
52
|
-
wpars[wpar_name][title] = Mash.new
|
53
|
-
|
54
|
-
# discard trailing section newline+title
|
55
|
-
# and save as array
|
56
|
-
sections = section.lines[1..-2]
|
57
|
-
|
58
|
-
sections.each do |line|
|
59
|
-
case title
|
60
|
-
when "network"
|
61
|
-
next if /^Interface|^---/.match?(line)
|
62
|
-
|
63
|
-
splat = line.strip.split
|
64
|
-
key = splat[0].downcase
|
65
|
-
value = {
|
66
|
-
"address" => splat[1],
|
67
|
-
"netmask" => splat[2],
|
68
|
-
"broadcast" => splat[3],
|
69
|
-
}
|
70
|
-
wpars[wpar_name][title][key] = value
|
71
|
-
when "user-specified routes"
|
72
|
-
next if /^Type|^---/.match?(line)
|
73
|
-
|
74
|
-
splat = line.strip.split
|
75
|
-
key = splat[2].downcase
|
76
|
-
value = {
|
77
|
-
"destination" => splat[0],
|
78
|
-
"gateway" => splat[1],
|
79
|
-
}
|
80
|
-
wpars[wpar_name][title][key] = value
|
81
|
-
when "file systems"
|
82
|
-
next if /^MountPoint|^---/.match?(line)
|
83
|
-
|
84
|
-
splat = line.strip.split
|
85
|
-
key = splat[1].downcase
|
86
|
-
value = {
|
87
|
-
"mountpoint" => splat[0],
|
88
|
-
"device" => splat[1],
|
89
|
-
"vfs" => splat[2],
|
90
|
-
"options" => splat[3].split(","),
|
91
|
-
}
|
92
|
-
wpars[wpar_name][title][key] = value
|
93
|
-
when "security settings"
|
94
|
-
privileges ||= ""
|
95
|
-
wpars[wpar_name][title]["Privileges"] ||= []
|
96
|
-
|
97
|
-
if /^Privileges/.match?(line)
|
98
|
-
privileges << line.split(":")[1].strip
|
99
|
-
else
|
100
|
-
privileges << line.strip
|
101
|
-
end
|
102
|
-
|
103
|
-
wpars[wpar_name][title]["Privileges"] += privileges.split(",")
|
104
|
-
when "device exports"
|
105
|
-
next if /^Name|^---/.match?(line)
|
106
|
-
|
107
|
-
splat = line.strip.split
|
108
|
-
key = splat[0].downcase
|
109
|
-
value = {
|
110
|
-
"type" => splat[1],
|
111
|
-
"status" => splat[2],
|
112
|
-
}
|
113
|
-
wpars[wpar_name][title][key] = value
|
114
|
-
else
|
115
|
-
# key-value pairs are handled here
|
116
|
-
# such as GENERAL and RESOURCE-
|
117
|
-
# CONTROL
|
118
|
-
splat = line.strip.split(":")
|
119
|
-
key = splat[0].downcase
|
120
|
-
value = splat[1..-1].join(", ").strip
|
121
|
-
value = value.empty? ? nil : value
|
122
|
-
case value
|
123
|
-
when "yes"
|
124
|
-
value = true
|
125
|
-
when "no"
|
126
|
-
value = false
|
127
|
-
end
|
128
|
-
wpars[wpar_name][title][key] = value
|
129
|
-
end
|
130
|
-
end
|
131
|
-
end
|
132
|
-
top_level = [
|
133
|
-
"general.directory",
|
134
|
-
"general.hostname",
|
135
|
-
"general.private /usr",
|
136
|
-
"general.type",
|
137
|
-
"general.uuid",
|
138
|
-
"resource controls.active",
|
139
|
-
"network.en0.address",
|
140
|
-
]
|
141
|
-
|
142
|
-
top_level.each do |attribute|
|
143
|
-
evalstr = "wpars['#{wpar_name}']"
|
144
|
-
breadcrumb = attribute.split(".")
|
145
|
-
breadcrumb.each do |node|
|
146
|
-
evalstr << "['#{node}']"
|
147
|
-
end
|
148
|
-
wpars[wpar_name][breadcrumb[-1]] = eval evalstr # rubocop: disable Security/Eval
|
149
|
-
end
|
150
|
-
end
|
151
|
-
virtualization[:wpars] = wpars unless wpars.empty?
|
152
|
-
end
|
153
|
-
end
|
154
|
-
end
|
1
|
+
#
|
2
|
+
# Author:: Julian C. Dunn (<jdunn@chef.io>)
|
3
|
+
# Author:: Isa Farnik (<isa@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(:Virtualization) do
|
21
|
+
provides "virtualization", "virtualization/wpars"
|
22
|
+
|
23
|
+
collect_data(:aix) do
|
24
|
+
virtualization Mash.new
|
25
|
+
|
26
|
+
lpar_no, lpar_name = shell_out("uname -L").stdout.split(nil, 2)
|
27
|
+
lpar_no = lpar_no.to_i
|
28
|
+
|
29
|
+
unless lpar_no == -1 || (lpar_no == 1 && lpar_name == "NULL")
|
30
|
+
virtualization[:lpar_no] = lpar_no
|
31
|
+
virtualization[:lpar_name] = lpar_name
|
32
|
+
end
|
33
|
+
|
34
|
+
wpar_no = shell_out("uname -W").stdout.strip.to_i
|
35
|
+
if wpar_no > 0
|
36
|
+
virtualization[:wpar_no] = wpar_no
|
37
|
+
else
|
38
|
+
# the below parses the output of lswpar in the long format
|
39
|
+
so = shell_out("lswpar -L").stdout.scan(/={65}.*?(?:EXPORTED\n\n)+/m)
|
40
|
+
wpars = Mash.new
|
41
|
+
so.each do |wpar|
|
42
|
+
wpar_heading = wpar.lines[1].split
|
43
|
+
wpar_name = wpar_heading[0]
|
44
|
+
|
45
|
+
wpars[wpar_name] = Mash.new
|
46
|
+
wpars[wpar_name][:state] = wpar_heading[2].downcase
|
47
|
+
|
48
|
+
wpar.scan(/^[A-Z]{4,}.*?[A-Z\:0-9]$.*?\n\n/m).each do |section|
|
49
|
+
|
50
|
+
# retrieve title of section
|
51
|
+
title = section.lines.first[0..-2].downcase
|
52
|
+
wpars[wpar_name][title] = Mash.new
|
53
|
+
|
54
|
+
# discard trailing section newline+title
|
55
|
+
# and save as array
|
56
|
+
sections = section.lines[1..-2]
|
57
|
+
|
58
|
+
sections.each do |line|
|
59
|
+
case title
|
60
|
+
when "network"
|
61
|
+
next if /^Interface|^---/.match?(line)
|
62
|
+
|
63
|
+
splat = line.strip.split
|
64
|
+
key = splat[0].downcase
|
65
|
+
value = {
|
66
|
+
"address" => splat[1],
|
67
|
+
"netmask" => splat[2],
|
68
|
+
"broadcast" => splat[3],
|
69
|
+
}
|
70
|
+
wpars[wpar_name][title][key] = value
|
71
|
+
when "user-specified routes"
|
72
|
+
next if /^Type|^---/.match?(line)
|
73
|
+
|
74
|
+
splat = line.strip.split
|
75
|
+
key = splat[2].downcase
|
76
|
+
value = {
|
77
|
+
"destination" => splat[0],
|
78
|
+
"gateway" => splat[1],
|
79
|
+
}
|
80
|
+
wpars[wpar_name][title][key] = value
|
81
|
+
when "file systems"
|
82
|
+
next if /^MountPoint|^---/.match?(line)
|
83
|
+
|
84
|
+
splat = line.strip.split
|
85
|
+
key = splat[1].downcase
|
86
|
+
value = {
|
87
|
+
"mountpoint" => splat[0],
|
88
|
+
"device" => splat[1],
|
89
|
+
"vfs" => splat[2],
|
90
|
+
"options" => splat[3].split(","),
|
91
|
+
}
|
92
|
+
wpars[wpar_name][title][key] = value
|
93
|
+
when "security settings"
|
94
|
+
privileges ||= ""
|
95
|
+
wpars[wpar_name][title]["Privileges"] ||= []
|
96
|
+
|
97
|
+
if /^Privileges/.match?(line)
|
98
|
+
privileges << line.split(":")[1].strip
|
99
|
+
else
|
100
|
+
privileges << line.strip
|
101
|
+
end
|
102
|
+
|
103
|
+
wpars[wpar_name][title]["Privileges"] += privileges.split(",")
|
104
|
+
when "device exports"
|
105
|
+
next if /^Name|^---/.match?(line)
|
106
|
+
|
107
|
+
splat = line.strip.split
|
108
|
+
key = splat[0].downcase
|
109
|
+
value = {
|
110
|
+
"type" => splat[1],
|
111
|
+
"status" => splat[2],
|
112
|
+
}
|
113
|
+
wpars[wpar_name][title][key] = value
|
114
|
+
else
|
115
|
+
# key-value pairs are handled here
|
116
|
+
# such as GENERAL and RESOURCE-
|
117
|
+
# CONTROL
|
118
|
+
splat = line.strip.split(":")
|
119
|
+
key = splat[0].downcase
|
120
|
+
value = splat[1..-1].join(", ").strip
|
121
|
+
value = value.empty? ? nil : value
|
122
|
+
case value
|
123
|
+
when "yes"
|
124
|
+
value = true
|
125
|
+
when "no"
|
126
|
+
value = false
|
127
|
+
end
|
128
|
+
wpars[wpar_name][title][key] = value
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
top_level = [
|
133
|
+
"general.directory",
|
134
|
+
"general.hostname",
|
135
|
+
"general.private /usr",
|
136
|
+
"general.type",
|
137
|
+
"general.uuid",
|
138
|
+
"resource controls.active",
|
139
|
+
"network.en0.address",
|
140
|
+
]
|
141
|
+
|
142
|
+
top_level.each do |attribute|
|
143
|
+
evalstr = "wpars['#{wpar_name}']"
|
144
|
+
breadcrumb = attribute.split(".")
|
145
|
+
breadcrumb.each do |node|
|
146
|
+
evalstr << "[\'#{node}\']"
|
147
|
+
end
|
148
|
+
wpars[wpar_name][breadcrumb[-1]] = eval evalstr # rubocop: disable Security/Eval
|
149
|
+
end
|
150
|
+
end
|
151
|
+
virtualization[:wpars] = wpars unless wpars.empty?
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
data/lib/ohai/plugins/alibaba.rb
CHANGED
@@ -1,72 +1,72 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
#
|
3
|
-
# Author:: Tim Smith (<tsmith@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
|
-
# How we detect Alibaba from easiest to hardest & least reliable
|
20
|
-
# 1. Ohai alibaba hint exists. This always works
|
21
|
-
# 2. DMI sys_vendor data mentions alibaba.
|
22
|
-
|
23
|
-
Ohai.plugin(:Alibaba) do
|
24
|
-
require_relative "../mixin/alibaba_metadata"
|
25
|
-
require_relative "../mixin/http_helper"
|
26
|
-
|
27
|
-
include Ohai::Mixin::AlibabaMetadata
|
28
|
-
include Ohai::Mixin::HttpHelper
|
29
|
-
|
30
|
-
provides "alibaba"
|
31
|
-
|
32
|
-
# look for alibaba string in dmi sys_vendor data within the sys tree.
|
33
|
-
# this works even if the system lacks dmidecode use by the Dmi plugin
|
34
|
-
# @return [Boolean] do we have Alibaba DMI data?
|
35
|
-
def has_ali_dmi?
|
36
|
-
if file_val_if_exists("/sys/class/dmi/id/sys_vendor").to_s.include?("Alibaba")
|
37
|
-
logger.trace("Plugin Alibaba: has_ali_dmi? == true")
|
38
|
-
true
|
39
|
-
else
|
40
|
-
logger.trace("Plugin Alibaba: has_ali_dmi? == false")
|
41
|
-
false
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
# return the contents of a file if the file exists
|
46
|
-
# @param path[String] abs path to the file
|
47
|
-
# @return [String] contents of the file if it exists
|
48
|
-
def file_val_if_exists(path)
|
49
|
-
if file_exist?(path)
|
50
|
-
file_read(path)
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
# a single check that combines all the various detection methods for Alibaba
|
55
|
-
# @return [Boolean] Does the system appear to be on Alibaba
|
56
|
-
def looks_like_alibaba?
|
57
|
-
true if hint?("alibaba") || has_ali_dmi?
|
58
|
-
end
|
59
|
-
|
60
|
-
collect_data do
|
61
|
-
if looks_like_alibaba?
|
62
|
-
logger.trace("Plugin Alibaba: looks_like_alibaba? == true")
|
63
|
-
alibaba Mash.new
|
64
|
-
fetch_metadata.each do |k, v|
|
65
|
-
alibaba[k] = v
|
66
|
-
end
|
67
|
-
else
|
68
|
-
logger.trace("Plugin Alibaba: looks_like_alibaba? == false")
|
69
|
-
false
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
#
|
3
|
+
# Author:: Tim Smith (<tsmith@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
|
+
# How we detect Alibaba from easiest to hardest & least reliable
|
20
|
+
# 1. Ohai alibaba hint exists. This always works
|
21
|
+
# 2. DMI sys_vendor data mentions alibaba.
|
22
|
+
|
23
|
+
Ohai.plugin(:Alibaba) do
|
24
|
+
require_relative "../mixin/alibaba_metadata"
|
25
|
+
require_relative "../mixin/http_helper"
|
26
|
+
|
27
|
+
include Ohai::Mixin::AlibabaMetadata
|
28
|
+
include Ohai::Mixin::HttpHelper
|
29
|
+
|
30
|
+
provides "alibaba"
|
31
|
+
|
32
|
+
# look for alibaba string in dmi sys_vendor data within the sys tree.
|
33
|
+
# this works even if the system lacks dmidecode use by the Dmi plugin
|
34
|
+
# @return [Boolean] do we have Alibaba DMI data?
|
35
|
+
def has_ali_dmi?
|
36
|
+
if file_val_if_exists("/sys/class/dmi/id/sys_vendor").to_s.include?("Alibaba")
|
37
|
+
logger.trace("Plugin Alibaba: has_ali_dmi? == true")
|
38
|
+
true
|
39
|
+
else
|
40
|
+
logger.trace("Plugin Alibaba: has_ali_dmi? == false")
|
41
|
+
false
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# return the contents of a file if the file exists
|
46
|
+
# @param path[String] abs path to the file
|
47
|
+
# @return [String] contents of the file if it exists
|
48
|
+
def file_val_if_exists(path)
|
49
|
+
if file_exist?(path)
|
50
|
+
file_read(path)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
# a single check that combines all the various detection methods for Alibaba
|
55
|
+
# @return [Boolean] Does the system appear to be on Alibaba
|
56
|
+
def looks_like_alibaba?
|
57
|
+
return true if hint?("alibaba") || has_ali_dmi?
|
58
|
+
end
|
59
|
+
|
60
|
+
collect_data do
|
61
|
+
if looks_like_alibaba?
|
62
|
+
logger.trace("Plugin Alibaba: looks_like_alibaba? == true")
|
63
|
+
alibaba Mash.new
|
64
|
+
fetch_metadata.each do |k, v|
|
65
|
+
alibaba[k] = v
|
66
|
+
end
|
67
|
+
else
|
68
|
+
logger.trace("Plugin Alibaba: looks_like_alibaba? == false")
|
69
|
+
false
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|