ohai 15.0.35 → 15.1.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/lib/ohai.rb +4 -4
- data/lib/ohai/application.rb +3 -3
- data/lib/ohai/config.rb +2 -2
- data/lib/ohai/dsl.rb +2 -2
- data/lib/ohai/dsl/plugin.rb +5 -5
- data/lib/ohai/hints.rb +1 -1
- data/lib/ohai/loader.rb +4 -4
- data/lib/ohai/mixin/azure_metadata.rb +3 -3
- data/lib/ohai/mixin/command.rb +3 -3
- data/lib/ohai/mixin/do_metadata.rb +3 -3
- data/lib/ohai/mixin/ec2_metadata.rb +6 -6
- data/lib/ohai/mixin/gce_metadata.rb +3 -3
- data/lib/ohai/mixin/http_helper.rb +1 -1
- data/lib/ohai/mixin/scaleway_metadata.rb +3 -3
- data/lib/ohai/mixin/softlayer_metadata.rb +2 -2
- data/lib/ohai/plugin_config.rb +1 -1
- data/lib/ohai/plugins/aix/network.rb +6 -6
- data/lib/ohai/plugins/azure.rb +2 -2
- data/lib/ohai/plugins/bsd/virtualization.rb +2 -2
- data/lib/ohai/plugins/darwin/network.rb +14 -13
- data/lib/ohai/plugins/darwin/virtualization.rb +1 -1
- data/lib/ohai/plugins/digital_ocean.rb +2 -2
- data/lib/ohai/plugins/dmi.rb +3 -3
- data/lib/ohai/plugins/dragonflybsd/network.rb +9 -9
- data/lib/ohai/plugins/ec2.rb +2 -2
- data/lib/ohai/plugins/eucalyptus.rb +2 -2
- data/lib/ohai/plugins/filesystem.rb +5 -5
- data/lib/ohai/plugins/freebsd/network.rb +9 -9
- data/lib/ohai/plugins/gce.rb +2 -2
- data/lib/ohai/plugins/hostname.rb +2 -2
- data/lib/ohai/plugins/kernel.rb +1 -1
- data/lib/ohai/plugins/linux/fips.rb +1 -1
- data/lib/ohai/plugins/linux/network.rb +18 -18
- data/lib/ohai/plugins/linux/platform.rb +1 -3
- data/lib/ohai/plugins/linux/sessions.rb +2 -2
- data/lib/ohai/plugins/linux/virtualization.rb +2 -2
- data/lib/ohai/plugins/netbsd/network.rb +9 -9
- data/lib/ohai/plugins/network.rb +3 -3
- data/lib/ohai/plugins/openbsd/network.rb +9 -9
- data/lib/ohai/plugins/openstack.rb +2 -2
- data/lib/ohai/plugins/os.rb +1 -1
- data/lib/ohai/plugins/packages.rb +6 -8
- data/lib/ohai/plugins/passwd.rb +1 -1
- data/lib/ohai/plugins/scaleway.rb +2 -2
- data/lib/ohai/plugins/scsi.rb +1 -1
- data/lib/ohai/plugins/softlayer.rb +1 -1
- data/lib/ohai/plugins/solaris2/dmi.rb +2 -2
- data/lib/ohai/plugins/solaris2/network.rb +9 -9
- data/lib/ohai/plugins/solaris2/virtualization.rb +1 -1
- data/lib/ohai/plugins/uptime.rb +1 -1
- data/lib/ohai/plugins/virtualbox.rb +164 -19
- data/lib/ohai/plugins/windows/filesystem.rb +1 -1
- data/lib/ohai/plugins/windows/fips.rb +1 -1
- data/lib/ohai/plugins/windows/network.rb +3 -3
- data/lib/ohai/plugins/windows/virtualization.rb +2 -2
- data/lib/ohai/provides_map.rb +4 -4
- data/lib/ohai/runner.rb +1 -1
- data/lib/ohai/system.rb +15 -15
- data/lib/ohai/util/win32.rb +1 -1
- data/lib/ohai/version.rb +1 -1
- data/spec/unit/plugins/solaris2/network_spec.rb +10 -1
- data/spec/unit/plugins/vbox_host_spec.rb +14 -0
- data/spec/unit/plugins/virtualbox_spec.rb +310 -23
- metadata +3 -2
data/lib/ohai/plugins/network.rb
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
Ohai.plugin(:NetworkAddresses) do
|
20
20
|
require "ipaddress"
|
21
|
-
|
21
|
+
require_relative "../mixin/network_constants"
|
22
22
|
include Ohai::Mixin::NetworkConstants
|
23
23
|
|
24
24
|
provides "ipaddress", "ip6address", "macaddress"
|
@@ -135,9 +135,9 @@ Ohai.plugin(:NetworkAddresses) do
|
|
135
135
|
results = {}
|
136
136
|
|
137
137
|
network Mash.new unless network
|
138
|
-
network[:interfaces]
|
138
|
+
network[:interfaces] ||= Mash.new
|
139
139
|
counters Mash.new unless counters
|
140
|
-
counters[:network]
|
140
|
+
counters[:network] ||= Mash.new
|
141
141
|
|
142
142
|
# inet family is processed before inet6 to give ipv4 precedence
|
143
143
|
Ohai::Mixin::NetworkConstants::FAMILIES.keys.sort.each do |family|
|
@@ -22,9 +22,9 @@ Ohai.plugin(:Network) do
|
|
22
22
|
|
23
23
|
collect_data(:openbsd) do
|
24
24
|
network Mash.new unless network
|
25
|
-
network[:interfaces]
|
25
|
+
network[:interfaces] ||= Mash.new
|
26
26
|
counters Mash.new unless counters
|
27
|
-
counters[:network]
|
27
|
+
counters[:network] ||= Mash.new
|
28
28
|
|
29
29
|
so = shell_out("route -n get default")
|
30
30
|
so.stdout.lines do |line|
|
@@ -52,11 +52,11 @@ Ohai.plugin(:Network) do
|
|
52
52
|
end
|
53
53
|
# call the family lladdr to match linux for consistency
|
54
54
|
if line =~ /\s+lladdr (.+?)\s/
|
55
|
-
iface[cint][:addresses]
|
55
|
+
iface[cint][:addresses] ||= Mash.new
|
56
56
|
iface[cint][:addresses][$1] = { "family" => "lladdr" }
|
57
57
|
end
|
58
58
|
if line =~ /\s+inet ([\d.]+) netmask ([\da-fx]+)\s*\w*\s*([\d.]*)/
|
59
|
-
iface[cint][:addresses]
|
59
|
+
iface[cint][:addresses] ||= Mash.new
|
60
60
|
# convert the netmask to decimal for consistency
|
61
61
|
netmask = "#{$2[2, 2].hex}.#{$2[4, 2].hex}.#{$2[6, 2].hex}.#{$2[8, 2].hex}"
|
62
62
|
if $3.empty?
|
@@ -67,7 +67,7 @@ Ohai.plugin(:Network) do
|
|
67
67
|
end
|
68
68
|
end
|
69
69
|
if line =~ /\s+inet6 ([a-f0-9\:]+)%?(\w*)\s+prefixlen\s+(\d+)\s*\w*\s*([\da-fx]*)/
|
70
|
-
iface[cint][:addresses]
|
70
|
+
iface[cint][:addresses] ||= Mash.new
|
71
71
|
if $4.empty?
|
72
72
|
iface[cint][:addresses][$1] = { "family" => "inet6", "prefixlen" => $3 }
|
73
73
|
else
|
@@ -89,7 +89,7 @@ Ohai.plugin(:Network) do
|
|
89
89
|
so.stdout.lines do |line|
|
90
90
|
if line =~ /\((\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\) at ([a-fA-F0-9\:]+) on ([0-9a-zA-Z\.\:\-]+)/
|
91
91
|
next unless iface[$3] # this should never happen
|
92
|
-
iface[$3][:arp]
|
92
|
+
iface[$3][:arp] ||= Mash.new
|
93
93
|
iface[$3][:arp][$1] = $2.downcase
|
94
94
|
end
|
95
95
|
end
|
@@ -107,9 +107,9 @@ Ohai.plugin(:Network) do
|
|
107
107
|
# em0 1500 <Link> 00:11:25:2d:90:be 3719557 0 3369969 0 0 0
|
108
108
|
# $1 $2 $3 $4 $5 $6 $7 $8
|
109
109
|
if line =~ /^([\w\.\*]+)\s+\d+\s+<Link>\s+([\w:]*)\s*(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/
|
110
|
-
net_counters[$1]
|
111
|
-
net_counters[$1]["rx"]
|
112
|
-
net_counters[$1]["tx"]
|
110
|
+
net_counters[$1] ||= Mash.new
|
111
|
+
net_counters[$1]["rx"] ||= Mash.new
|
112
|
+
net_counters[$1]["tx"] ||= Mash.new
|
113
113
|
net_counters[$1]["rx"]["packets"] = $3
|
114
114
|
net_counters[$1]["rx"]["errors"] = $4
|
115
115
|
net_counters[$1]["tx"]["packets"] = $5
|
@@ -17,8 +17,8 @@
|
|
17
17
|
# limitations under the License.
|
18
18
|
|
19
19
|
Ohai.plugin(:Openstack) do
|
20
|
-
|
21
|
-
|
20
|
+
require_relative "../mixin/ec2_metadata"
|
21
|
+
require_relative "../mixin/http_helper"
|
22
22
|
include Ohai::Mixin::Ec2Metadata
|
23
23
|
include Ohai::Mixin::HttpHelper
|
24
24
|
|
data/lib/ohai/plugins/os.rb
CHANGED
@@ -22,13 +22,11 @@ Ohai.plugin(:Packages) do
|
|
22
22
|
provides "packages"
|
23
23
|
depends "platform_family"
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
}.freeze
|
31
|
-
end
|
25
|
+
WINDOWS_ATTRIBUTE_ALIASES ||= {
|
26
|
+
"DisplayVersion" => "version",
|
27
|
+
"Publisher" => "publisher",
|
28
|
+
"InstallDate" => "installdate",
|
29
|
+
}.freeze
|
32
30
|
|
33
31
|
collect_data(:linux) do
|
34
32
|
packages Mash.new
|
@@ -104,7 +102,7 @@ Ohai.plugin(:Packages) do
|
|
104
102
|
end
|
105
103
|
|
106
104
|
collect_data(:windows) do
|
107
|
-
require "win32/registry"
|
105
|
+
require "win32/registry" unless defined?(Win32::Registry)
|
108
106
|
packages Mash.new
|
109
107
|
collect_programs_from_registry_key('Software\Microsoft\Windows\CurrentVersion\Uninstall')
|
110
108
|
# on 64 bit systems, 32 bit programs are stored here
|
data/lib/ohai/plugins/passwd.rb
CHANGED
@@ -15,8 +15,8 @@
|
|
15
15
|
# limitations under the License.
|
16
16
|
|
17
17
|
Ohai.plugin(:Scaleway) do
|
18
|
-
|
19
|
-
|
18
|
+
require_relative "../mixin/scaleway_metadata"
|
19
|
+
require_relative "../mixin/http_helper"
|
20
20
|
|
21
21
|
include Ohai::Mixin::ScalewayMetadata
|
22
22
|
include Ohai::Mixin::HttpHelper
|
data/lib/ohai/plugins/scsi.rb
CHANGED
@@ -20,7 +20,7 @@ Ohai.plugin(:DMI) do
|
|
20
20
|
provides "dmi"
|
21
21
|
|
22
22
|
collect_data(:solaris2) do
|
23
|
-
|
23
|
+
require_relative "../../common/dmi"
|
24
24
|
|
25
25
|
# if we already have a "dmi" with keys (presumably from dmidecode), don't try smbios
|
26
26
|
# note that a single key just means dmidecode exited with its version
|
@@ -142,7 +142,7 @@ Ohai.plugin(:DMI) do
|
|
142
142
|
next
|
143
143
|
end
|
144
144
|
|
145
|
-
dmi[dmi_record[:type]]
|
145
|
+
dmi[dmi_record[:type]] ||= Mash.new
|
146
146
|
dmi[dmi_record[:type]][:all_records] = [] unless dmi[dmi_record[:type]].key?(:all_records)
|
147
147
|
dmi_record[:position] = dmi[dmi_record[:type]][:all_records].length
|
148
148
|
dmi[dmi_record[:type]][:all_records].push(Mash.new)
|
@@ -95,18 +95,18 @@ Ohai.plugin(:Network) do
|
|
95
95
|
|
96
96
|
iface = Mash.new
|
97
97
|
network Mash.new unless network
|
98
|
-
network[:interfaces]
|
98
|
+
network[:interfaces] ||= Mash.new
|
99
99
|
counters Mash.new unless counters
|
100
|
-
counters[:network]
|
100
|
+
counters[:network] ||= Mash.new
|
101
101
|
|
102
102
|
so = shell_out("ifconfig -a")
|
103
103
|
cint = nil
|
104
104
|
|
105
105
|
so.stdout.lines do |line|
|
106
|
-
# regex:
|
107
|
-
if line =~ /^([0-9a-zA-Z\.\:\-]+): \S+ mtu (\d+) index (\d+)
|
106
|
+
# regex: https://rubular.com/r/ZiIHbsnfiWPW1p
|
107
|
+
if line =~ /^([0-9a-zA-Z\.\:\-]+): \S+ mtu (\d+)(?: index (\d+))?/
|
108
108
|
cint = $1
|
109
|
-
iface[cint]
|
109
|
+
iface[cint] ||= Mash.new
|
110
110
|
iface[cint][:mtu] = $2
|
111
111
|
iface[cint][:index] = $3
|
112
112
|
if line =~ / flags\=\d+\<((ADDRCONF|ANYCAST|BROADCAST|CoS|DEPRECATED|DHCP|DUPLICATE|FAILED|FIXEDMTU|INACTIVE|L3PROTECT|LOOPBACK|MIP|MULTI_BCAST|MULTICAST|NOARP|NOFAILOVER|NOLOCAL|NONUD|NORTEXCH|NOXMIT|OFFLINE|PHYSRUNNING|POINTOPOINT|PREFERRED|PRIVATE|ROUTER|RUNNING|STANDBY|TEMPORARY|UNNUMBERED|UP|VIRTUAL|XRESOLV|IPv4|IPv6|,)+)\>\s/
|
@@ -122,15 +122,15 @@ Ohai.plugin(:Network) do
|
|
122
122
|
end
|
123
123
|
end
|
124
124
|
if line =~ /\s+inet (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}) netmask (([0-9a-f]){1,8})\s*$/
|
125
|
-
iface[cint][:addresses]
|
125
|
+
iface[cint][:addresses] ||= Mash.new
|
126
126
|
iface[cint][:addresses][$1] = { "family" => "inet", "netmask" => $2.scanf("%2x" * 4) * "." }
|
127
127
|
end
|
128
128
|
if line =~ /\s+inet (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}) netmask (([0-9a-f]){1,8}) broadcast (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/
|
129
|
-
iface[cint][:addresses]
|
129
|
+
iface[cint][:addresses] ||= Mash.new
|
130
130
|
iface[cint][:addresses][$1] = { "family" => "inet", "netmask" => $2.scanf("%2x" * 4) * ".", "broadcast" => $4 }
|
131
131
|
end
|
132
132
|
if line =~ /\s+inet6 ([a-f0-9\:]+)(\s*|(\%[a-z0-9]+)\s*)\/(\d+)\s*$/
|
133
|
-
iface[cint][:addresses]
|
133
|
+
iface[cint][:addresses] ||= Mash.new
|
134
134
|
iface[cint][:addresses][$1] = { "family" => "inet6", "prefixlen" => $4 }
|
135
135
|
end
|
136
136
|
end
|
@@ -141,7 +141,7 @@ Ohai.plugin(:Network) do
|
|
141
141
|
so.stdout.lines do |line|
|
142
142
|
if line =~ /([0-9a-zA-Z]+)\s+(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s+(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s+(\w+)?\s+([a-zA-Z0-9\.\:\-]+)/
|
143
143
|
next unless iface[arpname_to_ifname(iface, $1)] # this should never happen, except on solaris because sun hates you.
|
144
|
-
iface[arpname_to_ifname(iface, $1)][:arp]
|
144
|
+
iface[arpname_to_ifname(iface, $1)][:arp] ||= Mash.new
|
145
145
|
iface[arpname_to_ifname(iface, $1)][:arp][$2] = $5
|
146
146
|
end
|
147
147
|
end
|
data/lib/ohai/plugins/uptime.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
#
|
2
|
-
# Author::
|
3
|
-
#
|
2
|
+
# Author:: Tim Smith <tsmith@chef.io>
|
3
|
+
# Author:: Joshua Colson <joshua.colson@gmail.com>
|
4
|
+
# Copyright:: 2015-2019 Chef Software, Inc.
|
5
|
+
# Copyright:: 2019 Joshua Colson
|
4
6
|
# License:: Apache License, Version 2.0
|
5
7
|
#
|
6
8
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -17,33 +19,176 @@
|
|
17
19
|
#
|
18
20
|
|
19
21
|
Ohai.plugin(:Virtualbox) do
|
22
|
+
depends "virtualization"
|
20
23
|
provides "virtualbox"
|
21
24
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
+
# query virtualbox for each configured vm, as well as
|
26
|
+
# each guest's individual configuration settings
|
27
|
+
def vboxmanage_list_vms
|
28
|
+
vms = Mash.new
|
29
|
+
so_cmd = "VBoxManage list --sorted vms"
|
30
|
+
logger.trace(so_cmd)
|
31
|
+
so = shell_out(so_cmd)
|
25
32
|
|
26
33
|
if so.exitstatus == 0
|
27
|
-
|
28
|
-
virtualbox[:host] = Mash.new
|
29
|
-
virtualbox[:guest] = Mash.new
|
34
|
+
# parse the output
|
30
35
|
so.stdout.lines.each do |line|
|
31
36
|
case line
|
32
|
-
when
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
when /VBoxRev, value: (\S*),/
|
37
|
-
virtualbox[:host][:revision] = Regexp.last_match(1)
|
38
|
-
when /GuestAdd\/VersionExt, value: (\S*),/
|
39
|
-
virtualbox[:guest][:guest_additions_version] = Regexp.last_match(1)
|
40
|
-
when /GuestAdd\/Revision, value: (\S*),/
|
41
|
-
virtualbox[:guest][:guest_additions_revision] = Regexp.last_match(1)
|
37
|
+
when /^"(\S*)" \{(\S*)\}$/
|
38
|
+
name = Regexp.last_match(1)
|
39
|
+
uuid = Regexp.last_match(2)
|
40
|
+
vms[name] = vboxmanage_vminfo(uuid)
|
42
41
|
end
|
43
42
|
end
|
44
43
|
end
|
44
|
+
vms
|
45
45
|
rescue Ohai::Exceptions::Exec
|
46
|
-
logger.trace(
|
46
|
+
logger.trace("Plugin VboxHost: Could not run 'VBoxManage list --sorted vms'. Skipping data")
|
47
|
+
end
|
48
|
+
|
49
|
+
# query the vminfo for particular guest instance, normalizing
|
50
|
+
# the fields so that they're not enclosed in double-quotes (")
|
51
|
+
def vboxmanage_vminfo(machine_id)
|
52
|
+
vm = Mash.new
|
53
|
+
|
54
|
+
so_cmd = "VBoxManage showvminfo #{machine_id} --machinereadable"
|
55
|
+
logger.trace(so_cmd)
|
56
|
+
so = shell_out(so_cmd)
|
57
|
+
|
58
|
+
if so.exitstatus == 0
|
59
|
+
so.stdout.lines.each do |line|
|
60
|
+
line.chomp!
|
61
|
+
left, right = line.split("=")
|
62
|
+
|
63
|
+
# remove enclosing quotes, if needed
|
64
|
+
key = left.delete_prefix('"').delete_suffix('"')
|
65
|
+
|
66
|
+
# skip the name attribute since that is the parent key
|
67
|
+
next if key == "name"
|
68
|
+
|
69
|
+
vm[key.downcase] = right.delete_prefix('"').delete_suffix('"')
|
70
|
+
end
|
71
|
+
end
|
72
|
+
vm
|
73
|
+
rescue Ohai::Exceptions::Exec
|
74
|
+
logger.trace("Plugin VboxHost: Could not run '#{so_cmd}'. Skipping data")
|
75
|
+
end
|
76
|
+
|
77
|
+
# query virtualbox for a list of #{query_type} items
|
78
|
+
# these queries return a result set that is delimited by
|
79
|
+
# multiple successive newlines, with each block containing
|
80
|
+
# key/value pairs delimited by a colon (:) and column aligned
|
81
|
+
#
|
82
|
+
# the keys of each k/v pair are normalized to lowercase
|
83
|
+
def vboxmanage_list_blocks(query_type, name_key)
|
84
|
+
# ignore unrecognized query type
|
85
|
+
supported_queries = %w{
|
86
|
+
bridgedifs dhcpservers dvds hdds hostdvds
|
87
|
+
hostfloppies hostonlyifs natnets
|
88
|
+
}
|
89
|
+
return nil unless supported_queries.include? query_type
|
90
|
+
results = Mash.new
|
91
|
+
|
92
|
+
so_cmd = "VBoxManage list --sorted #{query_type}"
|
93
|
+
logger.trace(so_cmd)
|
94
|
+
so = shell_out(so_cmd)
|
95
|
+
# raise an exception if the command fails
|
96
|
+
# so.error!
|
97
|
+
|
98
|
+
if so.exitstatus == 0
|
99
|
+
# break the result into paragraph blocks, on successive newlines
|
100
|
+
so.stdout.each_line("") do |blk|
|
101
|
+
# remove the multiple newlines of each record
|
102
|
+
blk.chomp!.chomp!
|
103
|
+
# initialize a blank record hash
|
104
|
+
record = Mash.new
|
105
|
+
# parse the record block into key/value pairs
|
106
|
+
blk.each_line() do |line|
|
107
|
+
next unless line.include? ":"
|
108
|
+
# split the line into key/value pair
|
109
|
+
key, right = line.split(":", 2)
|
110
|
+
|
111
|
+
# strip the leading/trailing whitespace if the value is not nil
|
112
|
+
value = right.nil? ? "" : right.strip
|
113
|
+
record[key.downcase] = value
|
114
|
+
end
|
47
115
|
|
116
|
+
# insert the record into the list of results
|
117
|
+
if record.key? name_key.downcase
|
118
|
+
name = record.delete(name_key.downcase)
|
119
|
+
results[name] = record
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
results
|
124
|
+
rescue Ohai::Exceptions::Exec
|
125
|
+
logger.trace("Plugin VboxHost: Could not run '#{so_cmd}'. Skipping data")
|
126
|
+
end
|
127
|
+
|
128
|
+
collect_data(:default) do
|
129
|
+
case virtualization.dig("systems", "vbox")
|
130
|
+
when "guest"
|
131
|
+
logger.trace("Plugin Virtualbox: Node detected as vbox guest. Collecting guest data.")
|
132
|
+
begin
|
133
|
+
so = shell_out("VBoxControl guestproperty enumerate")
|
134
|
+
|
135
|
+
if so.exitstatus == 0
|
136
|
+
virtualbox Mash.new
|
137
|
+
virtualbox[:host] = Mash.new
|
138
|
+
virtualbox[:guest] = Mash.new
|
139
|
+
so.stdout.lines.each do |line|
|
140
|
+
case line
|
141
|
+
when /LanguageID, value: (\S*),/
|
142
|
+
virtualbox[:host][:language] = Regexp.last_match(1)
|
143
|
+
when /VBoxVer, value: (\S*),/
|
144
|
+
virtualbox[:host][:version] = Regexp.last_match(1)
|
145
|
+
when /VBoxRev, value: (\S*),/
|
146
|
+
virtualbox[:host][:revision] = Regexp.last_match(1)
|
147
|
+
when /GuestAdd\/VersionExt, value: (\S*),/
|
148
|
+
virtualbox[:guest][:guest_additions_version] = Regexp.last_match(1)
|
149
|
+
when /GuestAdd\/Revision, value: (\S*),/
|
150
|
+
virtualbox[:guest][:guest_additions_revision] = Regexp.last_match(1)
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
154
|
+
rescue Ohai::Exceptions::Exec
|
155
|
+
logger.trace('Plugin Virtualbox: Could not execute "VBoxControl guestproperty enumerate". Skipping data collection.')
|
156
|
+
end
|
157
|
+
when "host"
|
158
|
+
logger.trace("Plugin Virtualbox: Node detected as vbox host. Collecting host data.")
|
159
|
+
virtualbox Mash.new
|
160
|
+
begin
|
161
|
+
# get a list of virtualbox guest vms
|
162
|
+
virtualbox["guests"] = vboxmanage_list_vms
|
163
|
+
|
164
|
+
# get a list of virtualbox virtual hard disk drives
|
165
|
+
virtualbox["hdds"] = vboxmanage_list_blocks("hdds", "Location")
|
166
|
+
|
167
|
+
# get a list of virtualbox virtual dvd drives
|
168
|
+
virtualbox["dvds"] = vboxmanage_list_blocks("dvds", "Location")
|
169
|
+
|
170
|
+
# get a list of virtualbox host dvd drives
|
171
|
+
virtualbox["hostdvds"] = vboxmanage_list_blocks("hostdvds", "Name")
|
172
|
+
|
173
|
+
# get a list of virtualbox host floppy drives
|
174
|
+
virtualbox["hostfloppies"] = vboxmanage_list_blocks("hostfloppies", "Name")
|
175
|
+
|
176
|
+
# get a list of virtualbox hostonly network interfaces
|
177
|
+
virtualbox["hostonlyifs"] = vboxmanage_list_blocks("hostonlyifs", "Name")
|
178
|
+
|
179
|
+
# get a list of virtualbox bridged network interfaces
|
180
|
+
virtualbox["bridgedifs"] = vboxmanage_list_blocks("bridgedifs", "Name")
|
181
|
+
|
182
|
+
# get a list of virtualbox dhcp servers
|
183
|
+
virtualbox["dhcpservers"] = vboxmanage_list_blocks("dhcpservers", "NetworkName")
|
184
|
+
|
185
|
+
# get a list of virtualbox nat networks
|
186
|
+
virtualbox["natnets"] = vboxmanage_list_blocks("natnets", "NetworkName")
|
187
|
+
rescue Ohai::Exceptions::Exec
|
188
|
+
logger.trace("Plugin VboxHost: Could not collect data for VirtualBox host. Skipping data")
|
189
|
+
end
|
190
|
+
else
|
191
|
+
logger.trace("Plugin Virtualbox: Not on a Virtualbox host or guest. Skipping plugin.")
|
192
|
+
end
|
48
193
|
end
|
49
194
|
end
|