ohai 16.5.6 → 16.6.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +4 -0
- data/lib/ohai/application.rb +39 -0
- data/lib/ohai/common/dmi.rb +7 -3
- data/lib/ohai/dsl/plugin.rb +7 -0
- data/lib/ohai/dsl/plugin/versionvii.rb +27 -15
- data/lib/ohai/mixin/chef_utils_wiring.rb +13 -1
- data/lib/ohai/mixin/os.rb +66 -1
- data/lib/ohai/mixin/train_helpers.rb +35 -0
- data/lib/ohai/plugins/azure.rb +24 -4
- data/lib/ohai/plugins/bsd/virtualization.rb +1 -1
- data/lib/ohai/plugins/chef.rb +1 -1
- data/lib/ohai/plugins/cpu.rb +4 -4
- data/lib/ohai/plugins/darwin/virtualization.rb +1 -1
- data/lib/ohai/plugins/dmi.rb +1 -1
- data/lib/ohai/plugins/ec2.rb +13 -7
- data/lib/ohai/plugins/filesystem.rb +3 -3
- data/lib/ohai/plugins/gce.rb +2 -2
- data/lib/ohai/plugins/init_package.rb +1 -1
- data/lib/ohai/plugins/joyent.rb +2 -2
- data/lib/ohai/plugins/kernel.rb +7 -3
- data/lib/ohai/plugins/linux/block_device.rb +8 -8
- data/lib/ohai/plugins/linux/interrupts.rb +3 -3
- data/lib/ohai/plugins/linux/lsb.rb +3 -3
- data/lib/ohai/plugins/linux/machineid.rb +4 -4
- data/lib/ohai/plugins/linux/mdadm.rb +2 -2
- data/lib/ohai/plugins/linux/memory.rb +1 -1
- data/lib/ohai/plugins/linux/network.rb +3 -3
- data/lib/ohai/plugins/linux/platform.rb +29 -29
- data/lib/ohai/plugins/linux/virtualization.rb +23 -23
- data/lib/ohai/plugins/ohai_time.rb +1 -1
- data/lib/ohai/plugins/os.rb +4 -0
- data/lib/ohai/plugins/passwd.rb +57 -1
- data/lib/ohai/plugins/scaleway.rb +1 -1
- data/lib/ohai/plugins/shells.rb +2 -2
- data/lib/ohai/plugins/solaris2/dmi.rb +1 -1
- data/lib/ohai/plugins/solaris2/platform.rb +2 -2
- data/lib/ohai/plugins/solaris2/virtualization.rb +1 -1
- data/lib/ohai/plugins/ssh_host_key.rb +12 -12
- data/lib/ohai/plugins/train.rb +35 -0
- data/lib/ohai/plugins/uptime.rb +1 -1
- data/lib/ohai/plugins/vmware.rb +1 -1
- data/lib/ohai/runner.rb +4 -0
- data/lib/ohai/system.rb +32 -4
- data/lib/ohai/train_transport.rb +28 -0
- data/lib/ohai/version.rb +1 -1
- data/ohai.gemspec +2 -1
- metadata +20 -3
data/lib/ohai/plugins/os.rb
CHANGED
data/lib/ohai/plugins/passwd.rb
CHANGED
@@ -42,6 +42,62 @@ Ohai.plugin(:Passwd) do
|
|
42
42
|
end
|
43
43
|
|
44
44
|
collect_data(:windows) do
|
45
|
-
|
45
|
+
require "wmi-lite/wmi" unless defined?(WmiLite::Wmi)
|
46
|
+
|
47
|
+
unless etc
|
48
|
+
etc Mash.new
|
49
|
+
|
50
|
+
wmi = WmiLite::Wmi.new
|
51
|
+
|
52
|
+
etc[:passwd] = Mash.new
|
53
|
+
users = wmi.query("SELECT * FROM Win32_UserAccount WHERE LocalAccount = True")
|
54
|
+
users.each do |user|
|
55
|
+
uname = user["Name"].strip.downcase
|
56
|
+
Ohai::Log.debug("processing user #{uname}")
|
57
|
+
etc[:passwd][uname] = Mash.new
|
58
|
+
wmi_obj = user.wmi_ole_object
|
59
|
+
wmi_obj.properties_.each do |key|
|
60
|
+
etc[:passwd][uname][key.name.downcase] = user[key.name]
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
etc[:group] = Mash.new
|
65
|
+
groups = wmi.query("SELECT * FROM Win32_Group WHERE LocalAccount = True")
|
66
|
+
groups.each do |group|
|
67
|
+
gname = group["Name"].strip.downcase
|
68
|
+
Ohai::Log.debug("processing group #{gname}")
|
69
|
+
etc[:group][gname] = Mash.new
|
70
|
+
wmi_obj = group.wmi_ole_object
|
71
|
+
wmi_obj.properties_.each do |key|
|
72
|
+
etc[:group][gname][key.name.downcase] = group[key.name]
|
73
|
+
end
|
74
|
+
|
75
|
+
# This is the primary reason that we're using WMI instead of powershell
|
76
|
+
# cmdlets - the powershell start up cost is huge, and you *must* do this
|
77
|
+
# query for every. single. group. individually.
|
78
|
+
|
79
|
+
# The query returns nothing unless you specify domain *and* name, it's
|
80
|
+
# a path, not a set of queries.
|
81
|
+
subq = "Win32_Group.Domain='#{group["Domain"]}',Name='#{group["Name"]}'"
|
82
|
+
members = wmi.query(
|
83
|
+
"SELECT * FROM Win32_GroupUser WHERE GroupComponent=\"#{subq}\""
|
84
|
+
)
|
85
|
+
etc[:group][gname]["members"] = members.map do |member|
|
86
|
+
mi = {}
|
87
|
+
info = Hash[
|
88
|
+
member["partcomponent"].split(",").map { |x| x.split("=") }.map { |a, b| [a, b.undump] }
|
89
|
+
]
|
90
|
+
if info.keys.any? { |x| x.match?("Win32_UserAccount") }
|
91
|
+
mi["type"] = :user
|
92
|
+
else
|
93
|
+
# Note: the type here is actually Win32_SystemAccount, because,
|
94
|
+
# that's what groups are in the Windows universe.
|
95
|
+
mi["type"] = :group
|
96
|
+
end
|
97
|
+
mi["name"] = info["Name"]
|
98
|
+
mi
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
46
102
|
end
|
47
103
|
end
|
@@ -26,7 +26,7 @@ Ohai.plugin(:Scaleway) do
|
|
26
26
|
# looks for `scaleway` keyword in kernel command line
|
27
27
|
# @return [Boolean] do we have the keyword or not?
|
28
28
|
def has_scaleway_cmdline?
|
29
|
-
if
|
29
|
+
if file_exist?("/proc/cmdline") && /scaleway/.match?(file_read("/proc/cmdline"))
|
30
30
|
logger.trace("Plugin Scaleway: has_scaleway_cmdline? == true")
|
31
31
|
return true
|
32
32
|
end
|
data/lib/ohai/plugins/shells.rb
CHANGED
@@ -20,9 +20,9 @@ Ohai.plugin(:Shells) do
|
|
20
20
|
provides "shells"
|
21
21
|
|
22
22
|
collect_data do
|
23
|
-
if
|
23
|
+
if file_exist?("/etc/shells")
|
24
24
|
shells []
|
25
|
-
|
25
|
+
file_open("/etc/shells").readlines.each do |line|
|
26
26
|
# remove carriage returns and skip over comments / empty lines
|
27
27
|
shells << line.chomp if line[0] == "/"
|
28
28
|
end
|
@@ -128,7 +128,7 @@ Ohai.plugin(:DMI) do
|
|
128
128
|
id = smb_to_id[header_information[3]]
|
129
129
|
|
130
130
|
# Don't overcapture for now (OHAI-260)
|
131
|
-
unless Ohai::Common::DMI.
|
131
|
+
unless Ohai::Common::DMI.allowlisted_ids.include?(id)
|
132
132
|
dmi_record = nil
|
133
133
|
next
|
134
134
|
end
|
@@ -20,7 +20,7 @@ Ohai.plugin(:Platform) do
|
|
20
20
|
provides "platform", "platform_version", "platform_build", "platform_family"
|
21
21
|
|
22
22
|
collect_data(:solaris2) do
|
23
|
-
if
|
23
|
+
if file_exist?("/sbin/uname")
|
24
24
|
uname_exec = "/sbin/uname"
|
25
25
|
else
|
26
26
|
uname_exec = "uname"
|
@@ -35,7 +35,7 @@ Ohai.plugin(:Platform) do
|
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
-
|
38
|
+
file_open("/etc/release") do |file|
|
39
39
|
while ( line = file.gets )
|
40
40
|
case line
|
41
41
|
when /^.*(SmartOS).*$/
|
@@ -34,7 +34,7 @@ Ohai.plugin(:Virtualization) do
|
|
34
34
|
|
35
35
|
# Detect paravirt KVM/QEMU from cpuinfo, report as KVM
|
36
36
|
psrinfo_path = Ohai.abs_path( "/usr/sbin/psrinfo" )
|
37
|
-
if
|
37
|
+
if file_exist?(psrinfo_path)
|
38
38
|
so = shell_out("#{psrinfo_path} -pv")
|
39
39
|
if /QEMU Virtual CPU|Common KVM processor|Common 32-bit KVM processor/.match?(so.stdout)
|
40
40
|
virtualization[:system] = "kvm"
|
@@ -38,9 +38,9 @@ Ohai.plugin(:SSHHostKey) do
|
|
38
38
|
collect_data do
|
39
39
|
keys[:ssh] = Mash.new
|
40
40
|
|
41
|
-
sshd_config = if
|
41
|
+
sshd_config = if file_exist?("/etc/ssh/sshd_config")
|
42
42
|
"/etc/ssh/sshd_config"
|
43
|
-
elsif
|
43
|
+
elsif file_exist?("/etc/sshd_config")
|
44
44
|
# Darwin
|
45
45
|
"/etc/sshd_config"
|
46
46
|
else
|
@@ -49,11 +49,11 @@ Ohai.plugin(:SSHHostKey) do
|
|
49
49
|
end
|
50
50
|
|
51
51
|
if sshd_config
|
52
|
-
|
52
|
+
file_open(sshd_config) do |conf|
|
53
53
|
conf.each_line do |line|
|
54
54
|
if /^hostkey\s/i.match?(line)
|
55
55
|
pub_file = "#{line.split[1]}.pub"
|
56
|
-
content =
|
56
|
+
content = file_read(pub_file).split
|
57
57
|
key_type, key_subtype = extract_keytype?(content)
|
58
58
|
keys[:ssh]["host_#{key_type}_public"] = content[1] unless key_type.nil?
|
59
59
|
keys[:ssh]["host_#{key_type}_type"] = key_subtype unless key_subtype.nil?
|
@@ -62,22 +62,22 @@ Ohai.plugin(:SSHHostKey) do
|
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
|
-
if keys[:ssh][:host_dsa_public].nil? &&
|
66
|
-
keys[:ssh][:host_dsa_public] =
|
65
|
+
if keys[:ssh][:host_dsa_public].nil? && file_exist?("/etc/ssh/ssh_host_dsa_key.pub")
|
66
|
+
keys[:ssh][:host_dsa_public] = file_read("/etc/ssh/ssh_host_dsa_key.pub").split[1]
|
67
67
|
end
|
68
68
|
|
69
|
-
if keys[:ssh][:host_rsa_public].nil? &&
|
70
|
-
keys[:ssh][:host_rsa_public] =
|
69
|
+
if keys[:ssh][:host_rsa_public].nil? && file_exist?("/etc/ssh/ssh_host_rsa_key.pub")
|
70
|
+
keys[:ssh][:host_rsa_public] = file_read("/etc/ssh/ssh_host_rsa_key.pub").split[1]
|
71
71
|
end
|
72
72
|
|
73
|
-
if keys[:ssh][:host_ecdsa_public].nil? &&
|
74
|
-
content =
|
73
|
+
if keys[:ssh][:host_ecdsa_public].nil? && file_exist?("/etc/ssh/ssh_host_ecdsa_key.pub")
|
74
|
+
content = file_read("/etc/ssh/ssh_host_ecdsa_key.pub")
|
75
75
|
keys[:ssh][:host_ecdsa_public] = content.split[1]
|
76
76
|
keys[:ssh][:host_ecdsa_type] = content.split[0]
|
77
77
|
end
|
78
78
|
|
79
|
-
if keys[:ssh][:host_ed25519_public].nil? &&
|
80
|
-
keys[:ssh][:host_ed25519_public] =
|
79
|
+
if keys[:ssh][:host_ed25519_public].nil? && file_exist?("/etc/ssh/ssh_host_ed25519_key.pub")
|
80
|
+
keys[:ssh][:host_ed25519_public] = file_read("/etc/ssh/ssh_host_ed25519_key.pub").split[1]
|
81
81
|
end
|
82
82
|
end
|
83
83
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
#
|
2
|
+
# Copyright:: Copyright (c) Chef Software Inc.
|
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(:Train) do
|
19
|
+
provides "train"
|
20
|
+
|
21
|
+
collect_data do
|
22
|
+
if transport_connection
|
23
|
+
train Mash.new
|
24
|
+
train["family_hierarchy"] = transport_connection.platform.family_hierarchy
|
25
|
+
train["family"] = transport_connection.platform.family
|
26
|
+
train["platform"] = transport_connection.platform.platform
|
27
|
+
train["backend"] = transport_connection.backend_type
|
28
|
+
if transport_connection.respond_to?(:uri)
|
29
|
+
train["scheme"] = URI.parse(transport_connection.uri).scheme
|
30
|
+
train["uri"] = transport_connection.uri
|
31
|
+
else
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/ohai/plugins/uptime.rb
CHANGED
@@ -54,7 +54,7 @@ Ohai.plugin(:Uptime) do
|
|
54
54
|
end
|
55
55
|
|
56
56
|
collect_data(:linux) do
|
57
|
-
uptime, idletime =
|
57
|
+
uptime, idletime = file_open("/proc/uptime").gets.split(" ")
|
58
58
|
uptime_seconds uptime.to_i
|
59
59
|
uptime seconds_to_human(uptime.to_i)
|
60
60
|
idletime_seconds idletime.to_i
|
data/lib/ohai/plugins/vmware.rb
CHANGED
data/lib/ohai/runner.rb
CHANGED
@@ -24,6 +24,9 @@ module Ohai
|
|
24
24
|
class Runner
|
25
25
|
|
26
26
|
attr_reader :failed_plugins, :logger
|
27
|
+
|
28
|
+
attr_accessor :transport_connection
|
29
|
+
|
27
30
|
# safe_run: set to true if this runner will run plugins in
|
28
31
|
# safe-mode. default false.
|
29
32
|
def initialize(controller, safe_run = false)
|
@@ -93,6 +96,7 @@ module Ohai
|
|
93
96
|
end
|
94
97
|
|
95
98
|
if dependency_providers.empty?
|
99
|
+
next_plugin.transport_connection = transport_connection
|
96
100
|
@safe_run ? next_plugin.safe_run : next_plugin.run
|
97
101
|
if next_plugin.failed
|
98
102
|
@failed_plugins << next_plugin.name
|
data/lib/ohai/system.rb
CHANGED
@@ -29,7 +29,9 @@ require_relative "mixin/constant_helper"
|
|
29
29
|
require_relative "provides_map"
|
30
30
|
require_relative "hints"
|
31
31
|
require_relative "config"
|
32
|
+
require_relative "train_transport"
|
32
33
|
require "ffi_yajl" unless defined?(FFI_Yajl)
|
34
|
+
require "cgi" unless defined?(CGI)
|
33
35
|
|
34
36
|
module Ohai
|
35
37
|
# The class used by Ohai::Application and Chef to actually collect data
|
@@ -40,6 +42,7 @@ module Ohai
|
|
40
42
|
attr_reader :config
|
41
43
|
attr_reader :provides_map
|
42
44
|
attr_reader :logger
|
45
|
+
attr_writer :transport_connection
|
43
46
|
|
44
47
|
# the cli flag is used to determine if we're being constructed by
|
45
48
|
# something like chef-client (which doesn't set this flag) and
|
@@ -67,7 +70,6 @@ module Ohai
|
|
67
70
|
configure_logging if @cli
|
68
71
|
|
69
72
|
@loader = Ohai::Loader.new(self)
|
70
|
-
@runner = Ohai::Runner.new(self, true)
|
71
73
|
|
72
74
|
Ohai::Hints.refresh_hints
|
73
75
|
|
@@ -75,6 +77,13 @@ module Ohai
|
|
75
77
|
recursive_remove_constants(Ohai::NamedPlugin)
|
76
78
|
end
|
77
79
|
|
80
|
+
def runner
|
81
|
+
@runner ||=
|
82
|
+
Ohai::Runner.new(self, true).tap do |runner|
|
83
|
+
runner.transport_connection = transport_connection unless transport_connection.nil?
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
78
87
|
def [](key)
|
79
88
|
@data[key]
|
80
89
|
end
|
@@ -102,6 +111,13 @@ module Ohai
|
|
102
111
|
@loader.load_all
|
103
112
|
end
|
104
113
|
|
114
|
+
# get backend parameters for target mode
|
115
|
+
#
|
116
|
+
# @return [Train::Transport]
|
117
|
+
def transport_connection
|
118
|
+
@transport_connection ||= Ohai::TrainTransport.new(logger).build_transport&.connection
|
119
|
+
end
|
120
|
+
|
105
121
|
# run all plugins or those that match the attribute filter is provided
|
106
122
|
#
|
107
123
|
# @param safe [Boolean]
|
@@ -111,13 +127,14 @@ module Ohai
|
|
111
127
|
def run_plugins(safe = false, attribute_filter = nil)
|
112
128
|
begin
|
113
129
|
@provides_map.all_plugins(attribute_filter).each do |plugin|
|
114
|
-
|
130
|
+
runner.run_plugin(plugin)
|
115
131
|
end
|
132
|
+
transport_connection.close unless transport_connection.nil?
|
116
133
|
rescue Ohai::Exceptions::AttributeNotFound, Ohai::Exceptions::DependencyCycle => e
|
117
134
|
logger.error("Encountered error while running plugins: #{e.inspect}")
|
118
135
|
raise
|
119
136
|
end
|
120
|
-
critical_failed = Ohai::Config.ohai[:critical_plugins] &
|
137
|
+
critical_failed = Ohai::Config.ohai[:critical_plugins] & runner.failed_plugins
|
121
138
|
unless critical_failed.empty?
|
122
139
|
msg = "The following Ohai plugins marked as critical failed: #{critical_failed}"
|
123
140
|
if @cli
|
@@ -139,7 +156,7 @@ module Ohai
|
|
139
156
|
def run_additional_plugins(plugin_path)
|
140
157
|
@loader.load_additional(plugin_path).each do |plugin|
|
141
158
|
logger.trace "Running plugin #{plugin}"
|
142
|
-
|
159
|
+
runner.run_plugin(plugin)
|
143
160
|
end
|
144
161
|
|
145
162
|
freeze_strings!
|
@@ -225,5 +242,16 @@ module Ohai
|
|
225
242
|
end
|
226
243
|
visitor.call(@data)
|
227
244
|
end
|
245
|
+
|
246
|
+
# Extract additional backend parameters from Target Mode URL.
|
247
|
+
#
|
248
|
+
# @api private
|
249
|
+
# @return [Hash]
|
250
|
+
def backend_parameters
|
251
|
+
uri = URI.parse(config[:target])
|
252
|
+
return {} unless uri.query
|
253
|
+
|
254
|
+
CGI.parse(uri.query).map { |k, v| [k.to_sym, v.first] }.to_h
|
255
|
+
end
|
228
256
|
end
|
229
257
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# Author:: Bryan McLellan <btm@loftninjas.org>
|
2
|
+
# Copyright:: Copyright (c) Chef Software Inc.
|
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
|
+
require "chef-config/mixin/train_transport" unless defined?(ChefConfig::Mixin::TrainTransport)
|
19
|
+
|
20
|
+
module Ohai
|
21
|
+
class TrainTransport
|
22
|
+
include ChefConfig::Mixin::TrainTransport
|
23
|
+
|
24
|
+
def config
|
25
|
+
Ohai::Config
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/ohai/version.rb
CHANGED
data/ohai.gemspec
CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |s|
|
|
11
11
|
s.email = "adam@chef.io"
|
12
12
|
s.homepage = "https://github.com/chef/ohai/"
|
13
13
|
|
14
|
-
s.required_ruby_version = ">= 2.
|
14
|
+
s.required_ruby_version = ">= 2.6"
|
15
15
|
|
16
16
|
s.add_dependency "chef-config", ">= 12.8", "< 17"
|
17
17
|
s.add_dependency "chef-utils", ">= 16.0", "< 17"
|
@@ -24,6 +24,7 @@ Gem::Specification.new do |s|
|
|
24
24
|
s.add_dependency "mixlib-shellout", ">= 2.0", "< 4.0"
|
25
25
|
s.add_dependency "plist", "~> 3.1"
|
26
26
|
s.add_dependency "wmi-lite", "~> 1.0"
|
27
|
+
s.add_dependency "train-core"
|
27
28
|
# Note for ohai developers: If chef-config causes you grief, try:
|
28
29
|
# bundle install --with development
|
29
30
|
# this should work as long as chef is a development dependency in Gemfile.
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ohai
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 16.5
|
4
|
+
version: 16.6.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Jacob
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-10-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: chef-config
|
@@ -194,6 +194,20 @@ dependencies:
|
|
194
194
|
- - "~>"
|
195
195
|
- !ruby/object:Gem::Version
|
196
196
|
version: '1.0'
|
197
|
+
- !ruby/object:Gem::Dependency
|
198
|
+
name: train-core
|
199
|
+
requirement: !ruby/object:Gem::Requirement
|
200
|
+
requirements:
|
201
|
+
- - ">="
|
202
|
+
- !ruby/object:Gem::Version
|
203
|
+
version: '0'
|
204
|
+
type: :runtime
|
205
|
+
prerelease: false
|
206
|
+
version_requirements: !ruby/object:Gem::Requirement
|
207
|
+
requirements:
|
208
|
+
- - ">="
|
209
|
+
- !ruby/object:Gem::Version
|
210
|
+
version: '0'
|
197
211
|
description: Ohai profiles your system and emits JSON
|
198
212
|
email: adam@chef.io
|
199
213
|
executables:
|
@@ -232,6 +246,7 @@ files:
|
|
232
246
|
- lib/ohai/mixin/shell_out.rb
|
233
247
|
- lib/ohai/mixin/softlayer_metadata.rb
|
234
248
|
- lib/ohai/mixin/string.rb
|
249
|
+
- lib/ohai/mixin/train_helpers.rb
|
235
250
|
- lib/ohai/mixin/which.rb
|
236
251
|
- lib/ohai/plugin_config.rb
|
237
252
|
- lib/ohai/plugins/aix/kernel.rb
|
@@ -336,6 +351,7 @@ files:
|
|
336
351
|
- lib/ohai/plugins/ssh_host_key.rb
|
337
352
|
- lib/ohai/plugins/sysconf.rb
|
338
353
|
- lib/ohai/plugins/timezone.rb
|
354
|
+
- lib/ohai/plugins/train.rb
|
339
355
|
- lib/ohai/plugins/uptime.rb
|
340
356
|
- lib/ohai/plugins/virtualbox.rb
|
341
357
|
- lib/ohai/plugins/vmware.rb
|
@@ -350,6 +366,7 @@ files:
|
|
350
366
|
- lib/ohai/provides_map.rb
|
351
367
|
- lib/ohai/runner.rb
|
352
368
|
- lib/ohai/system.rb
|
369
|
+
- lib/ohai/train_transport.rb
|
353
370
|
- lib/ohai/util/file_helper.rb
|
354
371
|
- lib/ohai/util/ip_helper.rb
|
355
372
|
- lib/ohai/util/win32.rb
|
@@ -367,7 +384,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
367
384
|
requirements:
|
368
385
|
- - ">="
|
369
386
|
- !ruby/object:Gem::Version
|
370
|
-
version: '2.
|
387
|
+
version: '2.6'
|
371
388
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
372
389
|
requirements:
|
373
390
|
- - ">="
|