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