ohai 7.4.1 → 7.6.0.rc.0
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 +5 -13
- data/README.md +8 -8
- data/Rakefile +2 -2
- data/lib/ohai/mixin/cloudstack_metadata.rb +88 -0
- data/lib/ohai/plugins/aix/kernel.rb +15 -1
- data/lib/ohai/plugins/aix/network.rb +5 -2
- data/lib/ohai/plugins/aix/virtualization.rb +39 -0
- data/lib/ohai/plugins/cloud.rb +32 -0
- data/lib/ohai/plugins/cloudstack.rb +43 -0
- data/lib/ohai/plugins/darwin/cpu.rb +2 -2
- data/lib/ohai/plugins/go.rb +30 -0
- data/lib/ohai/plugins/hostname.rb +1 -1
- data/lib/ohai/plugins/linux/filesystem.rb +19 -5
- data/lib/ohai/plugins/linux/platform.rb +5 -1
- data/lib/ohai/plugins/openstack.rb +22 -0
- data/lib/ohai/plugins/passwd.rb +5 -1
- data/lib/ohai/plugins/python.rb +3 -3
- data/lib/ohai/plugins/solaris2/zpools.rb +1 -1
- data/lib/ohai/version.rb +1 -1
- data/spec/unit/mixin/cloudstack_metadata_spec.rb +33 -0
- data/spec/unit/plugins/aix/kernel_spec.rb +6 -3
- data/spec/unit/plugins/aix/network_spec.rb +1 -1
- data/spec/unit/plugins/aix/virtualization_spec.rb +53 -0
- data/spec/unit/plugins/cloud_spec.rb +31 -0
- data/spec/unit/plugins/cloudstack_spec.rb +155 -0
- data/spec/unit/plugins/darwin/cpu_spec.rb +2 -2
- data/spec/unit/plugins/go_spec.rb +44 -0
- data/spec/unit/plugins/hostname_spec.rb +12 -0
- data/spec/unit/plugins/linux/filesystem_spec.rb +55 -40
- data/spec/unit/plugins/linux/platform_spec.rb +36 -0
- data/spec/unit/plugins/openstack_spec.rb +55 -0
- data/spec/unit/plugins/passwd_spec.rb +3 -2
- data/spec/unit/plugins/python_spec.rb +22 -20
- data/spec/unit/plugins/solaris2/zpools_spec.rb +153 -0
- metadata +75 -59
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
ZjRlYjkwYjE5ODRkYmRjMjljZWQ1ZDQ0YjVhMzk4NGUxNDRlZGRmMg==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 9b3fe8adb1220f8ba23d9f4580d72c51b31e39cc
|
4
|
+
data.tar.gz: 8d2f029cbbc2c838b8e3f5844ffbeacc335af035
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
ZThmOTgxMDM2MzhlYWJjOTkxYjFmYjZhMDU1MzE5MjFmOGVlNjI5ZTcyNTVl
|
11
|
-
OWVkYTM1NWU5NWZmNTljNTE3YmZmM2Y3YWIxYWY3YTJjMGU2MDU=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
N2Q5Y2UzMzczYWU3MzRkNTNkZjk3ZmI5NGM0ODU5Y2M5NDMwMjUxM2NlZmUz
|
14
|
-
NDMwYzhjYWQ2MWMwMDgzOGYyNzUxOTQ4MjI3OWNhMTQyNTFjMWM5MGU0NzVi
|
15
|
-
N2Y3NDExZWNmYmFlNGM0NTFjNmRmZDE2ZDhkY2YyYTc4YTBjYWU=
|
6
|
+
metadata.gz: ab5925dd17bdd934be8c747e764611259a416ecb02d62d54b4be2eb6b99054c59a7444d98977b71c1e47a6c1f0e9405484758f910c0cff62b2b6451d5edcab0a
|
7
|
+
data.tar.gz: b248e02c48954d9166bc2a96b07576de71f31e54bc9773c8c49ffa4672f726745594e59cb3c976c0e6933d8929c78535144adaab8b33ece599e3a6510c597a8a
|
data/README.md
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
# DESCRIPTION:
|
4
4
|
|
5
5
|
Ohai detects data about your operating system. It can be used
|
6
|
-
standalone, but
|
6
|
+
standalone, but its primary purpose is to provide node data to Chef.
|
7
7
|
|
8
8
|
Ohai will print out a JSON data blob for all the known data about your
|
9
9
|
system. When used with Chef, that data is reported back via node
|
@@ -66,20 +66,19 @@ Source:
|
|
66
66
|
|
67
67
|
* http://github.com/opscode/ohai/tree/master
|
68
68
|
|
69
|
-
|
69
|
+
Issues:
|
70
70
|
|
71
|
-
*
|
72
|
-
|
73
|
-
(Use the OHAI project)
|
71
|
+
* https://github.com/opscode/ohai/issues
|
74
72
|
|
75
73
|
# LICENSE:
|
76
74
|
|
77
75
|
Ohai - system information application
|
78
76
|
|
79
|
-
Author:: Adam Jacob (<adam@getchef.com>)
|
80
|
-
Copyright:: Copyright (c) 2008-2014 Chef Software, Inc.
|
81
|
-
License:: Apache License, Version 2.0
|
77
|
+
* Author:: Adam Jacob (<adam@getchef.com>)
|
78
|
+
* Copyright:: Copyright (c) 2008-2014 Chef Software, Inc.
|
79
|
+
* License:: Apache License, Version 2.0
|
82
80
|
|
81
|
+
```text
|
83
82
|
Licensed under the Apache License, Version 2.0 (the "License");
|
84
83
|
you may not use this file except in compliance with the License.
|
85
84
|
You may obtain a copy of the License at
|
@@ -91,3 +90,4 @@ distributed under the License is distributed on an "AS IS" BASIS,
|
|
91
90
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
92
91
|
See the License for the specific language governing permissions and
|
93
92
|
limitations under the License.
|
93
|
+
```
|
data/Rakefile
CHANGED
@@ -2,15 +2,15 @@ require 'rubygems'
|
|
2
2
|
require 'rubygems/package_task'
|
3
3
|
require 'rubygems/specification'
|
4
4
|
require 'date'
|
5
|
+
require 'ohai/version'
|
5
6
|
|
6
7
|
gemspec = eval(IO.read("ohai.gemspec"))
|
7
8
|
|
8
|
-
|
9
9
|
Gem::PackageTask.new(gemspec).define
|
10
10
|
|
11
11
|
desc "install the gem locally"
|
12
12
|
task :install => [:package] do
|
13
|
-
sh %{gem install pkg
|
13
|
+
sh %{gem install pkg/ohai-#{Ohai::VERSION}.gem}
|
14
14
|
end
|
15
15
|
|
16
16
|
begin
|
@@ -0,0 +1,88 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Olle Lundberg (<geek@nerd.sh>)
|
3
|
+
# Copyright:: Copyright (c) 2014 Opscode, 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
|
+
require 'ohai/mixin/ec2_metadata'
|
19
|
+
require 'ohai/hints'
|
20
|
+
require 'net/dhcp'
|
21
|
+
require 'socket'
|
22
|
+
|
23
|
+
|
24
|
+
module Ohai
|
25
|
+
module Mixin
|
26
|
+
module CloudstackMetadata
|
27
|
+
include Ohai::Mixin::Ec2Metadata
|
28
|
+
|
29
|
+
def self.discover_dhcp_server
|
30
|
+
response = ''
|
31
|
+
if Ohai::Hints.hint?('cloudstack')
|
32
|
+
begin
|
33
|
+
request = DHCP::Discover.new
|
34
|
+
|
35
|
+
listensock = UDPSocket.new
|
36
|
+
sendsock = UDPSocket.new
|
37
|
+
|
38
|
+
listensock.setsockopt(Socket::SOL_SOCKET, Socket::SO_REUSEADDR, true)
|
39
|
+
sendsock.setsockopt(Socket::SOL_SOCKET, Socket::SO_REUSEADDR, true)
|
40
|
+
|
41
|
+
sendsock.setsockopt(Socket::SOL_SOCKET, Socket::SO_BROADCAST, true)
|
42
|
+
sendaddr = "<broadcast>"
|
43
|
+
listenport = 68
|
44
|
+
|
45
|
+
listensock.bind('', listenport)
|
46
|
+
sendsock.connect(sendaddr, 67)
|
47
|
+
|
48
|
+
sendsock.send(request.pack, 0)
|
49
|
+
|
50
|
+
data = listensock.recvfrom_nonblock(1500)
|
51
|
+
rescue Exception => e
|
52
|
+
if (defined?(IO::WaitReadable) && e.instance_of?(IO::WaitReadable)) ||
|
53
|
+
(e.instance_of?(Errno::EAGAIN) || e.instance_of?(Errno::EWOULDBLOCK)) # This OR branch can be removed when ruby > 1.8.7
|
54
|
+
unless IO.select([listensock], nil, nil, 10)
|
55
|
+
# timeout reached
|
56
|
+
Ohai::Log.debug("Timeout reached awaiting response from DHCP server")
|
57
|
+
else
|
58
|
+
# try to read from the socket again
|
59
|
+
data = listensock.recvfrom_nonblock(1500)
|
60
|
+
end
|
61
|
+
else
|
62
|
+
Ohai::Log.debug("Exceptions encountered when trying to connect to dhcp server. #{e.message}")
|
63
|
+
end
|
64
|
+
ensure
|
65
|
+
sendsock.close
|
66
|
+
listensock.close
|
67
|
+
if data
|
68
|
+
response = [DHCP::Message.from_udp_payload(data[0]).siaddr].pack('N').unpack('C4').join('.')
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
response
|
73
|
+
end
|
74
|
+
|
75
|
+
CLOUDSTACK_METADATA_ADDR = self.discover_dhcp_server unless defined?(CLOUDSTACK_METADATA_ADDR)
|
76
|
+
|
77
|
+
def http_client
|
78
|
+
Net::HTTP.start(CLOUDSTACK_METADATA_ADDR).tap { |h| h.read_timeout = 600 }
|
79
|
+
end
|
80
|
+
|
81
|
+
def best_api_version
|
82
|
+
'latest'
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
@@ -26,6 +26,20 @@ Ohai.plugin(:Kernel) do
|
|
26
26
|
kernel[:release] = shell_out("uname -r").stdout.split($/)[0]
|
27
27
|
kernel[:version] = shell_out("uname -v").stdout.split($/)[0]
|
28
28
|
kernel[:machine] = shell_out("uname -p").stdout.split($/)[0]
|
29
|
-
|
29
|
+
|
30
|
+
modules = Mash.new
|
31
|
+
so = shell_out("genkex -d")
|
32
|
+
# Text address Size Data address Size File
|
33
|
+
#
|
34
|
+
# f1000000c0338000 77000 f1000000c0390000 1ec8c /usr/lib/drivers/cluster
|
35
|
+
# 6390000 20000 63a0000 ba8 /usr/lib/drivers/if_en
|
36
|
+
# f1000000c0318000 20000 f1000000c0320000 17138 /usr/lib/drivers/random
|
37
|
+
so.stdout.lines do |line|
|
38
|
+
if line =~ /\s*([0-9a-f]+)\s+([0-9a-f]+)\s+([0-9a-f]+)\s+([0-9a-f]+)\s+([a-zA-Z0-9\/\._]+)/
|
39
|
+
modules[$5] = { :text => { :address => $1, :size => $2 }, :data => { :address => $3, :size => $4 } }
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
kernel[:modules] = modules
|
30
44
|
end
|
31
45
|
end
|
@@ -42,6 +42,9 @@ Ohai.plugin(:Network) do
|
|
42
42
|
|
43
43
|
iface = Mash.new
|
44
44
|
|
45
|
+
network Mash.new unless network
|
46
|
+
network[:interfaces] = Mash.new unless network[:interfaces]
|
47
|
+
|
45
48
|
# :default_interface, :default_gateway - route -n get 0
|
46
49
|
so = shell_out("route -n get 0")
|
47
50
|
so.stdout.lines.each do |line|
|
@@ -90,10 +93,10 @@ Ohai.plugin(:Network) do
|
|
90
93
|
if line =~ /broadcast\s(\S+)\s/
|
91
94
|
iface[interface][:addresses][tmp_addr][:broadcast] = $1
|
92
95
|
end
|
93
|
-
elsif line =~ /inet6 ([a-f0-9
|
96
|
+
elsif line =~ /inet6 ([a-f0-9\:]+)%?([\d]*)\/?(\d*)/
|
94
97
|
# TODO do we have more properties on inet6 in aix? broadcast
|
95
98
|
iface[interface][:addresses] = Mash.new unless iface[interface][:addresses]
|
96
|
-
iface[interface][:addresses][$1] = { "family" => "inet6", "
|
99
|
+
iface[interface][:addresses][$1] = { "family" => "inet6", "zone_index" => $2, "prefixlen" => $3 }
|
97
100
|
else
|
98
101
|
# load all key-values, example "tcp_sendspace 131072 tcp_recvspace 131072 rfc1323 1"
|
99
102
|
properties = line.split
|
@@ -0,0 +1,39 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Julian C. Dunn (<jdunn@getchef.com>)
|
3
|
+
# Copyright:: Copyright (c) 2014 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(:Virtualization) do
|
20
|
+
provides "virtualization"
|
21
|
+
|
22
|
+
collect_data(:aix) do
|
23
|
+
virtualization Mash.new
|
24
|
+
|
25
|
+
so = shell_out("uname -L")
|
26
|
+
lpar_no = so.stdout.split($/)[0].split(/\s/)[0]
|
27
|
+
lpar_name = so.stdout.split($/)[0].split(/\s/)[1]
|
28
|
+
|
29
|
+
unless lpar_no.to_i == -1 || (lpar_no.to_i == 1 && lpar_name == "NULL")
|
30
|
+
virtualization[:lpar_no] = lpar_no
|
31
|
+
virtualization[:lpar_name] = lpar_name
|
32
|
+
end
|
33
|
+
|
34
|
+
so = shell_out("uname -W")
|
35
|
+
wpar_no = so.stdout.split($/)[0]
|
36
|
+
virtualization[:wpar_no] = wpar_no unless wpar_no.to_i == 0
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
data/lib/ohai/plugins/cloud.rb
CHANGED
@@ -24,6 +24,7 @@ Ohai.plugin(:Cloud) do
|
|
24
24
|
depends "linode"
|
25
25
|
depends "openstack"
|
26
26
|
depends "azure"
|
27
|
+
depends "cloudstack"
|
27
28
|
|
28
29
|
# Make top-level cloud hashes
|
29
30
|
#
|
@@ -215,6 +216,31 @@ Ohai.plugin(:Cloud) do
|
|
215
216
|
cloud[:provider] = "azure"
|
216
217
|
end
|
217
218
|
|
219
|
+
# ----------------------------------------
|
220
|
+
# cloudstack
|
221
|
+
# ----------------------------------------
|
222
|
+
|
223
|
+
# Is current cloud cloudstack-based?
|
224
|
+
#
|
225
|
+
# === Return
|
226
|
+
# true:: If cloudstack Hash is defined
|
227
|
+
# false:: Otherwise
|
228
|
+
def on_cloudstack?
|
229
|
+
cloudstack != nil
|
230
|
+
end
|
231
|
+
|
232
|
+
# Fill cloud hash with cloudstack values
|
233
|
+
def get_cloudstack_values
|
234
|
+
cloud[:public_ips] << cloudstack['public_ipv4']
|
235
|
+
cloud[:private_ips] << cloudstack['local_ipv4']
|
236
|
+
cloud[:public_ipv4] = cloudstack['public_ipv4']
|
237
|
+
cloud[:public_hostname] = cloudstack['public_hostname']
|
238
|
+
cloud[:local_ipv4] = cloudstack['local_ipv4']
|
239
|
+
cloud[:local_hostname] = cloudstack['local_hostname']
|
240
|
+
cloud[:vm_id] = cloudstack['vm_id']
|
241
|
+
cloud[:provider] = "cloudstack"
|
242
|
+
end
|
243
|
+
|
218
244
|
collect_data do
|
219
245
|
# setup gce cloud
|
220
246
|
if on_gce?
|
@@ -256,5 +282,11 @@ Ohai.plugin(:Cloud) do
|
|
256
282
|
create_objects
|
257
283
|
get_azure_values
|
258
284
|
end
|
285
|
+
|
286
|
+
# setup cloudstack cloud
|
287
|
+
if on_cloudstack?
|
288
|
+
create_objects
|
289
|
+
get_cloudstack_values
|
290
|
+
end
|
259
291
|
end
|
260
292
|
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Olle Lundberg (<geek@nerd.sh>)
|
3
|
+
# Copyright:: Copyright (c) 2014 Opscode, 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
|
+
require 'ohai/mixin/cloudstack_metadata'
|
19
|
+
|
20
|
+
Ohai.plugin(:Cloudstack) do
|
21
|
+
provides "cloudstack"
|
22
|
+
|
23
|
+
include Ohai::Mixin::CloudstackMetadata
|
24
|
+
|
25
|
+
collect_data do
|
26
|
+
# Adds cloudstack Mash
|
27
|
+
if hint?('cloudstack')
|
28
|
+
Ohai::Log.debug("found 'cloudstack' hint. Will try to connect to the metadata server")
|
29
|
+
|
30
|
+
if can_metadata_connect?(Ohai::Mixin::CloudstackMetadata::CLOUDSTACK_METADATA_ADDR, 80)
|
31
|
+
cloudstack Mash.new
|
32
|
+
Ohai::Log.debug("connecting to the 'cloudstack' metadata service")
|
33
|
+
fetch_metadata.each { |k, v| cloudstack[k] = v }
|
34
|
+
else
|
35
|
+
Ohai::Log.debug("unable to connect to the 'cloudstack' metadata service")
|
36
|
+
end
|
37
|
+
else
|
38
|
+
Ohai::Log.debug("unable to find 'cloudstack' hint. Won't connect to the metadata server.")
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
|
@@ -29,9 +29,9 @@ Ohai.plugin(:CPU) do
|
|
29
29
|
so = shell_out("sysctl -n hw.cpufrequency")
|
30
30
|
cpu[:mhz] = so.stdout.to_i / 1000000
|
31
31
|
so = shell_out("sysctl -n machdep.cpu.vendor")
|
32
|
-
cpu[:vendor_id] = so.stdout
|
32
|
+
cpu[:vendor_id] = so.stdout.chomp
|
33
33
|
so = shell_out("sysctl -n machdep.cpu.brand_string")
|
34
|
-
cpu[:model_name] = so.stdout
|
34
|
+
cpu[:model_name] = so.stdout.chomp
|
35
35
|
so = shell_out("sysctl -n machdep.cpu.model")
|
36
36
|
cpu[:model] = so.stdout.to_i
|
37
37
|
so = shell_out("sysctl -n machdep.cpu.family")
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# Author:: Christian Vozar (<christian@rogueethic.com>)
|
2
|
+
# License:: Apache License, Version 2.0
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
|
16
|
+
Ohai.plugin(:Go) do
|
17
|
+
provides "languages/go"
|
18
|
+
depends "languages"
|
19
|
+
|
20
|
+
collect_data do
|
21
|
+
output = nil
|
22
|
+
go = Mash.new
|
23
|
+
so = shell_out("go version")
|
24
|
+
if so.exitstatus == 0
|
25
|
+
output = so.stdout.split
|
26
|
+
go[:version] = output[2].slice!(2..16)
|
27
|
+
languages[:go] = go if go[:version]
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -32,6 +32,14 @@ Ohai.plugin(:Filesystem) do
|
|
32
32
|
have_lsblk ? /^(\S+) (\S+)/ : /^(\S+): #{attr}="(\S+)"/
|
33
33
|
end
|
34
34
|
|
35
|
+
def find_device(name)
|
36
|
+
%w{/dev /dev/mapper}.each do |dir|
|
37
|
+
path = File.join(dir, name)
|
38
|
+
return path if File.exist?(path)
|
39
|
+
end
|
40
|
+
name
|
41
|
+
end
|
42
|
+
|
35
43
|
collect_data(:linux) do
|
36
44
|
fs = Mash.new
|
37
45
|
have_lsblk = File.executable?('/bin/lsblk')
|
@@ -82,7 +90,7 @@ Ohai.plugin(:Filesystem) do
|
|
82
90
|
end
|
83
91
|
end
|
84
92
|
|
85
|
-
have_lsblk = File.
|
93
|
+
have_lsblk = File.exist?('/bin/lsblk')
|
86
94
|
|
87
95
|
# Gather more filesystem types via libuuid, even devices that's aren't mounted
|
88
96
|
cmd = get_blk_cmd('TYPE', have_lsblk)
|
@@ -91,8 +99,10 @@ Ohai.plugin(:Filesystem) do
|
|
91
99
|
so.stdout.lines do |line|
|
92
100
|
if line =~ regex
|
93
101
|
filesystem = $1
|
102
|
+
type = $2
|
103
|
+
filesystem = find_device(filesystem) unless filesystem.start_with?('/')
|
94
104
|
fs[filesystem] = Mash.new unless fs.has_key?(filesystem)
|
95
|
-
fs[filesystem][:fs_type] =
|
105
|
+
fs[filesystem][:fs_type] = type
|
96
106
|
end
|
97
107
|
end
|
98
108
|
|
@@ -103,8 +113,10 @@ Ohai.plugin(:Filesystem) do
|
|
103
113
|
so.stdout.lines do |line|
|
104
114
|
if line =~ regex
|
105
115
|
filesystem = $1
|
116
|
+
uuid = $2
|
117
|
+
filesystem = find_device(filesystem) unless filesystem.start_with?('/')
|
106
118
|
fs[filesystem] = Mash.new unless fs.has_key?(filesystem)
|
107
|
-
fs[filesystem][:uuid] =
|
119
|
+
fs[filesystem][:uuid] = uuid
|
108
120
|
end
|
109
121
|
end
|
110
122
|
|
@@ -115,13 +127,15 @@ Ohai.plugin(:Filesystem) do
|
|
115
127
|
so.stdout.lines do |line|
|
116
128
|
if line =~ regex
|
117
129
|
filesystem = $1
|
130
|
+
label = $2
|
131
|
+
filesystem = find_device(filesystem) unless filesystem.start_with?('/')
|
118
132
|
fs[filesystem] = Mash.new unless fs.has_key?(filesystem)
|
119
|
-
fs[filesystem][:label] =
|
133
|
+
fs[filesystem][:label] = label
|
120
134
|
end
|
121
135
|
end
|
122
136
|
|
123
137
|
# Grab any missing mount information from /proc/mounts
|
124
|
-
if File.
|
138
|
+
if File.exist?('/proc/mounts')
|
125
139
|
mounts = ''
|
126
140
|
# Due to https://tickets.opscode.com/browse/OHAI-196
|
127
141
|
# we have to non-block read dev files. Ew.
|