ohai 17.6.0 → 17.7.5
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/lib/ohai/mixin/constant_helper.rb +1 -1
- data/lib/ohai/mixin/network_helper.rb +18 -0
- data/lib/ohai/mixin/os.rb +2 -2
- data/lib/ohai/plugins/cpu.rb +1 -1
- data/lib/ohai/plugins/hostname.rb +9 -87
- data/lib/ohai/plugins/os.rb +6 -0
- data/lib/ohai/plugins/packages.rb +2 -2
- data/lib/ohai/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 19b09efb3e8a7318b9401b9faf1fb17a472544ec5c7f45e7be090bcaafac9d93
|
4
|
+
data.tar.gz: d6deeb673906082bda7ab8ac7b4b1b5fb8dc41c22720ab4f4d47dfa994479be6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a8aec83f05fb402a2cc08efa9ce6d6fc81a0c2133bc57f60c9cbedff90236812e30e65373b5bb4813590ea2c7d5ae6c763caa58bbf56ef10c4ac5362df1dbc59
|
7
|
+
data.tar.gz: 948e93dddd2a283f43350795e15b46d83fe31db12d9f988bbe594882295fb7c57e576bc18be0a4db1d22002a177a6dddcce49f041dbc24cd777c75b59e62bce4
|
@@ -23,7 +23,7 @@ module Ohai
|
|
23
23
|
module ConstantHelper
|
24
24
|
|
25
25
|
def remove_constants
|
26
|
-
new_object_constants = Object.constants - @object_pristine.constants
|
26
|
+
new_object_constants = Object.constants - @object_pristine.constants - [ :SortedSet ]
|
27
27
|
new_object_constants.each do |constant|
|
28
28
|
Object.send(:remove_const, constant) unless Object.const_get(constant).is_a?(Module)
|
29
29
|
end
|
@@ -32,6 +32,24 @@ module Ohai
|
|
32
32
|
[2, 4, 6].each { |n| dec = dec + "." + netmask[n..n + 1].to_i(16).to_s(10) }
|
33
33
|
dec
|
34
34
|
end
|
35
|
+
|
36
|
+
# This does a forward and reverse lookup on the hostname to return what should be
|
37
|
+
# the FQDN for the host determined by name lookup (generally DNS)
|
38
|
+
#
|
39
|
+
def canonicalize_hostname(hostname)
|
40
|
+
Addrinfo.getaddrinfo(hostname, nil).first.getnameinfo.first
|
41
|
+
end
|
42
|
+
|
43
|
+
def canonicalize_hostname_with_retries(hostname)
|
44
|
+
retries = 3
|
45
|
+
begin
|
46
|
+
canonicalize_hostname(hostname)
|
47
|
+
rescue
|
48
|
+
retries -= 1
|
49
|
+
retry if retries > 0
|
50
|
+
nil
|
51
|
+
end
|
52
|
+
end
|
35
53
|
end
|
36
54
|
end
|
37
55
|
end
|
data/lib/ohai/mixin/os.rb
CHANGED
@@ -82,13 +82,13 @@ module Ohai
|
|
82
82
|
else
|
83
83
|
# now we have something like an IPMI console that isn't Unix-like or Windows, presumably cannot run ruby, and
|
84
84
|
# so we just trust the train O/S information.
|
85
|
-
transport_connection.os
|
85
|
+
transport_connection.os.name
|
86
86
|
end
|
87
87
|
end
|
88
88
|
|
89
89
|
# @api private
|
90
90
|
def nonruby_target?
|
91
|
-
transport_connection && !transport_connection.os.unix? && !transport_connection.os.windows
|
91
|
+
transport_connection && !transport_connection.os.unix? && !transport_connection.os.windows?
|
92
92
|
end
|
93
93
|
|
94
94
|
# @api private
|
data/lib/ohai/plugins/cpu.rb
CHANGED
@@ -499,7 +499,7 @@ Ohai.plugin(:CPU) do
|
|
499
499
|
|
500
500
|
cpu[:total] = shell_out("pmcycles -m").stdout.lines.length
|
501
501
|
|
502
|
-
# The below is only
|
502
|
+
# The below is only relevant on an LPAR
|
503
503
|
if shell_out("uname -W").stdout.strip == "0"
|
504
504
|
|
505
505
|
# At least one CPU will be available, but we'll wait to increment this later.
|
@@ -26,7 +26,11 @@
|
|
26
26
|
# limitations under the License.
|
27
27
|
#
|
28
28
|
|
29
|
+
require_relative "../mixin/network_helper"
|
30
|
+
|
29
31
|
Ohai.plugin(:Hostname) do
|
32
|
+
include Ohai::Mixin::NetworkHelper
|
33
|
+
|
30
34
|
provides "domain", "hostname", "fqdn", "machinename"
|
31
35
|
|
32
36
|
# hostname : short hostname
|
@@ -42,38 +46,8 @@ Ohai.plugin(:Hostname) do
|
|
42
46
|
end
|
43
47
|
|
44
48
|
# forward and reverse lookup to canonicalize FQDN (hostname -f equivalent)
|
45
|
-
# this is ipv6-safe, works on ruby 1.8.7+
|
46
49
|
def resolve_fqdn
|
47
|
-
|
48
|
-
require "ipaddr" unless defined?(IPAddr)
|
49
|
-
|
50
|
-
hostname = from_cmd("hostname")
|
51
|
-
begin
|
52
|
-
addrinfo = Socket.getaddrinfo(hostname, nil).first
|
53
|
-
rescue SocketError
|
54
|
-
# In the event that we got an exception from Socket, it's possible
|
55
|
-
# that it will work if we restrict it to IPv4 only either because of
|
56
|
-
# IPv6 misconfiguration or other bugs.
|
57
|
-
#
|
58
|
-
# Specifically it's worth noting that on macOS, getaddrinfo() will choke
|
59
|
-
# if it gets back a link-local address (say if you have 'fe80::1 myhost'
|
60
|
-
# in /etc/hosts). This will raise:
|
61
|
-
# SocketError (getnameinfo: Non-recoverable failure in name resolution)
|
62
|
-
#
|
63
|
-
# But general misconfiguration could cause similar issues, so attempt to
|
64
|
-
# fall back to v4-only
|
65
|
-
begin
|
66
|
-
addrinfo = Socket.getaddrinfo(hostname, nil, :INET).first
|
67
|
-
rescue
|
68
|
-
# and if *that* fails, then try v6-only, in case we're in a v6-only
|
69
|
-
# environment with v4 config issues
|
70
|
-
addrinfo = Socket.getaddrinfo(hostname, nil, :INET6).first
|
71
|
-
end
|
72
|
-
end
|
73
|
-
iaddr = IPAddr.new(addrinfo[3])
|
74
|
-
Socket.gethostbyaddr(iaddr.hton)[0]
|
75
|
-
rescue
|
76
|
-
nil
|
50
|
+
canonicalize_hostname_with_retries(from_cmd("hostname"))
|
77
51
|
end
|
78
52
|
|
79
53
|
def collect_domain
|
@@ -119,58 +93,21 @@ Ohai.plugin(:Hostname) do
|
|
119
93
|
collect_data(:darwin) do
|
120
94
|
hostname from_cmd("hostname -s")
|
121
95
|
machinename from_cmd("hostname")
|
122
|
-
|
123
|
-
our_fqdn = resolve_fqdn
|
124
|
-
# Sometimes... very rarely, but sometimes, 'hostname --fqdn' falsely
|
125
|
-
# returns a blank string. WTF.
|
126
|
-
if our_fqdn.nil? || our_fqdn.empty?
|
127
|
-
logger.trace("Plugin Hostname: hostname returned an empty string, retrying once.")
|
128
|
-
our_fqdn = resolve_fqdn
|
129
|
-
end
|
130
|
-
|
131
|
-
if our_fqdn.nil? || our_fqdn.empty?
|
132
|
-
logger.trace("Plugin Hostname: hostname returned an empty string twice and will" +
|
133
|
-
"not be set.")
|
134
|
-
else
|
135
|
-
fqdn our_fqdn
|
136
|
-
end
|
137
|
-
rescue
|
138
|
-
logger.trace(
|
139
|
-
"Plugin Hostname: hostname returned an error, probably no domain set"
|
140
|
-
)
|
141
|
-
end
|
96
|
+
fqdn resolve_fqdn
|
142
97
|
domain collect_domain
|
143
98
|
end
|
144
99
|
|
145
100
|
collect_data(:freebsd) do
|
146
101
|
hostname from_cmd("hostname -s")
|
147
102
|
machinename from_cmd("hostname")
|
148
|
-
fqdn
|
103
|
+
fqdn resolve_fqdn
|
149
104
|
collect_domain
|
150
105
|
end
|
151
106
|
|
152
107
|
collect_data(:linux) do
|
153
108
|
hostname from_cmd("hostname -s")
|
154
109
|
machinename from_cmd("hostname")
|
155
|
-
|
156
|
-
our_fqdn = from_cmd("hostname --fqdn")
|
157
|
-
# Sometimes... very rarely, but sometimes, 'hostname --fqdn' falsely
|
158
|
-
# returns a blank string. WTF.
|
159
|
-
if our_fqdn.nil? || our_fqdn.empty?
|
160
|
-
logger.trace("Plugin Hostname: hostname --fqdn returned an empty string, retrying " +
|
161
|
-
"once.")
|
162
|
-
our_fqdn = from_cmd("hostname --fqdn")
|
163
|
-
end
|
164
|
-
|
165
|
-
if our_fqdn.nil? || our_fqdn.empty?
|
166
|
-
logger.trace("Plugin Hostname: hostname --fqdn returned an empty string twice and " +
|
167
|
-
"will not be set.")
|
168
|
-
else
|
169
|
-
fqdn our_fqdn
|
170
|
-
end
|
171
|
-
rescue
|
172
|
-
logger.trace("Plugin Hostname: hostname --fqdn returned an error, probably no domain set")
|
173
|
-
end
|
110
|
+
fqdn resolve_fqdn
|
174
111
|
domain collect_domain
|
175
112
|
end
|
176
113
|
|
@@ -190,22 +127,7 @@ Ohai.plugin(:Hostname) do
|
|
190
127
|
|
191
128
|
hostname host["dnshostname"].to_s
|
192
129
|
machinename host["name"].to_s
|
193
|
-
|
194
|
-
info = Socket.gethostbyname(Socket.gethostname)
|
195
|
-
if /.+?\.(.*)/.match?(info.first)
|
196
|
-
fqdn info.first
|
197
|
-
else
|
198
|
-
# host is not in dns. optionally use:
|
199
|
-
# C:\WINDOWS\system32\drivers\etc\hosts
|
200
|
-
info[3..info.length].reverse_each do |addr|
|
201
|
-
hostent = Socket.gethostbyaddr(addr)
|
202
|
-
if /.+?\.(.*)/.match?(hostent.first)
|
203
|
-
fqdn hostent.first
|
204
|
-
break
|
205
|
-
end
|
206
|
-
end
|
207
|
-
fqdn info.first unless fqdn
|
208
|
-
end
|
130
|
+
fqdn canonicalize_hostname_with_retries(Socket.gethostname)
|
209
131
|
domain collect_domain
|
210
132
|
end
|
211
133
|
end
|
data/lib/ohai/plugins/os.rb
CHANGED
@@ -134,9 +134,9 @@ Ohai.plugin(:Packages) do
|
|
134
134
|
require "win32/registry" unless defined?(Win32::Registry)
|
135
135
|
packages Mash.new
|
136
136
|
collect_programs_from_registry_key(Win32::Registry::HKEY_LOCAL_MACHINE, 'Software\Microsoft\Windows\CurrentVersion\Uninstall')
|
137
|
-
|
137
|
+
# on 64 bit systems, 32 bit programs are stored here moved before HKEY_CURRENT_USER otherwise it is not collected (impacts both ohai 16 & 17)
|
138
138
|
collect_programs_from_registry_key(Win32::Registry::HKEY_LOCAL_MACHINE, 'Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall')
|
139
|
-
|
139
|
+
collect_programs_from_registry_key(Win32::Registry::HKEY_CURRENT_USER, 'Software\Microsoft\Windows\CurrentVersion\Uninstall') rescue nil
|
140
140
|
end
|
141
141
|
|
142
142
|
collect_data(:aix) do
|
data/lib/ohai/version.rb
CHANGED
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: 17.
|
4
|
+
version: 17.7.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: 2021-
|
11
|
+
date: 2021-10-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: chef-config
|