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.
- checksums.yaml +4 -4
- data/Gemfile +28 -28
- data/LICENSE +201 -201
- data/bin/ohai +25 -25
- data/lib/ohai/application.rb +189 -189
- data/lib/ohai/common/dmi.rb +167 -167
- data/lib/ohai/config.rb +51 -51
- data/lib/ohai/dsl/plugin/versionvii.rb +203 -203
- data/lib/ohai/dsl/plugin.rb +232 -232
- data/lib/ohai/dsl.rb +22 -22
- data/lib/ohai/exception.rb +36 -36
- data/lib/ohai/hints.rb +68 -68
- data/lib/ohai/loader.rb +178 -178
- data/lib/ohai/log.rb +34 -34
- data/lib/ohai/mash.rb +22 -22
- data/lib/ohai/mixin/alibaba_metadata.rb +83 -83
- data/lib/ohai/mixin/azure_metadata.rb +105 -105
- data/lib/ohai/mixin/chef_utils_wiring.rb +52 -52
- data/lib/ohai/mixin/command.rb +4 -4
- data/lib/ohai/mixin/constant_helper.rb +55 -55
- data/lib/ohai/mixin/dmi_decode.rb +54 -54
- data/lib/ohai/mixin/do_metadata.rb +48 -48
- data/lib/ohai/mixin/ec2_metadata.rb +264 -270
- data/lib/ohai/mixin/gce_metadata.rb +79 -79
- data/lib/ohai/mixin/http_helper.rb +64 -64
- data/lib/ohai/mixin/json_helper.rb +36 -36
- data/lib/ohai/mixin/network_helper.rb +92 -92
- data/lib/ohai/mixin/oci_metadata.rb +60 -60
- data/lib/ohai/mixin/os.rb +128 -128
- data/lib/ohai/mixin/scaleway_metadata.rb +51 -51
- data/lib/ohai/mixin/seconds_to_human.rb +52 -52
- data/lib/ohai/mixin/shell_out.rb +51 -51
- data/lib/ohai/mixin/softlayer_metadata.rb +74 -74
- data/lib/ohai/mixin/string.rb +31 -31
- data/lib/ohai/mixin/train_helpers.rb +36 -36
- data/lib/ohai/mixin/which.rb +39 -39
- data/lib/ohai/plugin_config.rb +47 -47
- data/lib/ohai/plugins/aix/kernel.rb +50 -50
- data/lib/ohai/plugins/aix/memory.rb +37 -37
- data/lib/ohai/plugins/aix/network.rb +142 -142
- data/lib/ohai/plugins/aix/platform.rb +30 -30
- data/lib/ohai/plugins/aix/uptime.rb +54 -54
- data/lib/ohai/plugins/aix/virtualization.rb +154 -154
- data/lib/ohai/plugins/alibaba.rb +72 -72
- data/lib/ohai/plugins/azure.rb +154 -154
- data/lib/ohai/plugins/bsd/virtualization.rb +121 -121
- data/lib/ohai/plugins/c.rb +178 -178
- data/lib/ohai/plugins/chef.rb +50 -50
- data/lib/ohai/plugins/cloud.rb +379 -379
- data/lib/ohai/plugins/command.rb +26 -26
- data/lib/ohai/plugins/cpu.rb +642 -642
- data/lib/ohai/plugins/darwin/hardware.rb +99 -99
- data/lib/ohai/plugins/darwin/memory.rb +62 -62
- data/lib/ohai/plugins/darwin/network.rb +207 -207
- data/lib/ohai/plugins/darwin/platform.rb +40 -40
- data/lib/ohai/plugins/darwin/virtualization.rb +104 -104
- data/lib/ohai/plugins/digital_ocean.rb +67 -67
- data/lib/ohai/plugins/dmi.rb +134 -134
- data/lib/ohai/plugins/docker.rb +58 -58
- data/lib/ohai/plugins/dragonflybsd/memory.rb +60 -60
- data/lib/ohai/plugins/dragonflybsd/network.rb +128 -128
- data/lib/ohai/plugins/dragonflybsd/platform.rb +28 -28
- data/lib/ohai/plugins/ec2.rb +148 -148
- data/lib/ohai/plugins/elixir.rb +36 -36
- data/lib/ohai/plugins/erlang.rb +60 -60
- data/lib/ohai/plugins/eucalyptus.rb +86 -86
- data/lib/ohai/plugins/filesystem.rb +753 -753
- data/lib/ohai/plugins/fips.rb +36 -36
- data/lib/ohai/plugins/freebsd/memory.rb +60 -60
- data/lib/ohai/plugins/freebsd/network.rb +128 -128
- data/lib/ohai/plugins/freebsd/platform.rb +28 -28
- data/lib/ohai/plugins/gce.rb +89 -89
- data/lib/ohai/plugins/go.rb +34 -34
- data/lib/ohai/plugins/groovy.rb +38 -38
- data/lib/ohai/plugins/grub2.rb +40 -40
- data/lib/ohai/plugins/habitat.rb +73 -73
- data/lib/ohai/plugins/haskell.rb +96 -96
- data/lib/ohai/plugins/hostname.rb +133 -133
- data/lib/ohai/plugins/init_package.rb +26 -26
- data/lib/ohai/plugins/java.rb +78 -78
- data/lib/ohai/plugins/kernel.rb +292 -292
- data/lib/ohai/plugins/keys.rb +27 -27
- data/lib/ohai/plugins/languages.rb +26 -26
- data/lib/ohai/plugins/libvirt.rb +114 -114
- data/lib/ohai/plugins/linode.rb +73 -73
- data/lib/ohai/plugins/linux/block_device.rb +48 -48
- data/lib/ohai/plugins/linux/hostnamectl.rb +34 -34
- data/lib/ohai/plugins/linux/interrupts.rb +84 -83
- data/lib/ohai/plugins/linux/ipc.rb +52 -52
- data/lib/ohai/plugins/linux/livepatch.rb +38 -38
- data/lib/ohai/plugins/linux/lsb.rb +46 -46
- data/lib/ohai/plugins/linux/lspci.rb +80 -80
- data/lib/ohai/plugins/linux/machineid.rb +36 -36
- data/lib/ohai/plugins/linux/mdadm.rb +120 -120
- data/lib/ohai/plugins/linux/memory.rb +106 -106
- data/lib/ohai/plugins/linux/network.rb +879 -879
- data/lib/ohai/plugins/linux/os_release.rb +38 -38
- data/lib/ohai/plugins/linux/platform.rb +314 -314
- data/lib/ohai/plugins/linux/selinux.rb +69 -69
- data/lib/ohai/plugins/linux/sessions.rb +54 -54
- data/lib/ohai/plugins/linux/sysctl.rb +39 -39
- data/lib/ohai/plugins/linux/systemd_paths.rb +36 -36
- data/lib/ohai/plugins/linux/tc.rb +61 -61
- data/lib/ohai/plugins/linux/virtualization.rb +300 -300
- data/lib/ohai/plugins/lua.rb +39 -39
- data/lib/ohai/plugins/mono.rb +50 -50
- data/lib/ohai/plugins/netbsd/memory.rb +99 -99
- data/lib/ohai/plugins/netbsd/network.rb +122 -122
- data/lib/ohai/plugins/netbsd/platform.rb +28 -28
- data/lib/ohai/plugins/network.rb +186 -186
- data/lib/ohai/plugins/nodejs.rb +40 -40
- data/lib/ohai/plugins/oci.rb +94 -94
- data/lib/ohai/plugins/ohai.rb +29 -29
- data/lib/ohai/plugins/ohai_time.rb +26 -26
- data/lib/ohai/plugins/openbsd/memory.rb +99 -99
- data/lib/ohai/plugins/openbsd/network.rb +122 -122
- data/lib/ohai/plugins/openbsd/platform.rb +28 -28
- data/lib/ohai/plugins/openstack.rb +84 -84
- data/lib/ohai/plugins/os.rb +55 -55
- data/lib/ohai/plugins/packages.rb +234 -234
- data/lib/ohai/plugins/passwd.rb +104 -104
- data/lib/ohai/plugins/perl.rb +45 -45
- data/lib/ohai/plugins/php.rb +52 -52
- data/lib/ohai/plugins/platform.rb +41 -41
- data/lib/ohai/plugins/powershell.rb +82 -82
- data/lib/ohai/plugins/ps.rb +35 -35
- data/lib/ohai/plugins/python.rb +43 -43
- data/lib/ohai/plugins/rackspace.rb +177 -177
- data/lib/ohai/plugins/root_group.rb +41 -41
- data/lib/ohai/plugins/rpm.rb +121 -121
- data/lib/ohai/plugins/ruby.rb +66 -66
- data/lib/ohai/plugins/rust.rb +34 -34
- data/lib/ohai/plugins/scala.rb +38 -38
- data/lib/ohai/plugins/scaleway.rb +58 -58
- data/lib/ohai/plugins/scsi.rb +52 -52
- data/lib/ohai/plugins/shard.rb +142 -142
- data/lib/ohai/plugins/shells.rb +32 -32
- data/lib/ohai/plugins/softlayer.rb +48 -48
- data/lib/ohai/plugins/solaris2/dmi.rb +191 -191
- data/lib/ohai/plugins/solaris2/memory.rb +32 -32
- data/lib/ohai/plugins/solaris2/network.rb +192 -192
- data/lib/ohai/plugins/solaris2/platform.rb +58 -58
- data/lib/ohai/plugins/solaris2/virtualization.rb +90 -90
- data/lib/ohai/plugins/ssh_host_key.rb +84 -84
- data/lib/ohai/plugins/sysconf.rb +46 -46
- data/lib/ohai/plugins/timezone.rb +45 -45
- data/lib/ohai/plugins/train.rb +35 -35
- data/lib/ohai/plugins/uptime.rb +95 -95
- data/lib/ohai/plugins/virtualbox.rb +197 -197
- data/lib/ohai/plugins/vmware.rb +109 -109
- data/lib/ohai/plugins/windows/dmi.rb +95 -95
- data/lib/ohai/plugins/windows/drivers.rb +52 -52
- data/lib/ohai/plugins/windows/memory.rb +39 -39
- data/lib/ohai/plugins/windows/network.rb +222 -222
- data/lib/ohai/plugins/windows/platform.rb +34 -34
- data/lib/ohai/plugins/windows/system_enclosure.rb +29 -29
- data/lib/ohai/plugins/windows/virtualization.rb +45 -45
- data/lib/ohai/plugins/zpools.rb +94 -94
- data/lib/ohai/provides_map.rb +208 -208
- data/lib/ohai/runner.rb +128 -126
- data/lib/ohai/system.rb +258 -258
- data/lib/ohai/train_transport.rb +29 -29
- data/lib/ohai/util/file_helper.rb +6 -6
- data/lib/ohai/util/ip_helper.rb +56 -56
- data/lib/ohai/util/win32.rb +47 -47
- data/lib/ohai/version.rb +23 -23
- data/lib/ohai.rb +23 -23
- data/ohai.gemspec +35 -35
- metadata +9 -15
data/lib/ohai/plugins/passwd.rb
CHANGED
@@ -1,104 +1,104 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
Ohai.plugin(:Passwd) do
|
4
|
-
provides "etc", "current_user"
|
5
|
-
optional true
|
6
|
-
|
7
|
-
# @param [String] str
|
8
|
-
#
|
9
|
-
# @return [String]
|
10
|
-
#
|
11
|
-
def fix_encoding(str)
|
12
|
-
str.force_encoding(Encoding.default_external) if str.respond_to?(:force_encoding)
|
13
|
-
str
|
14
|
-
end
|
15
|
-
|
16
|
-
collect_data do
|
17
|
-
require "etc" unless defined?(Etc)
|
18
|
-
|
19
|
-
unless etc
|
20
|
-
etc Mash.new
|
21
|
-
|
22
|
-
etc[:passwd] = Mash.new
|
23
|
-
etc[:group] = Mash.new
|
24
|
-
|
25
|
-
Etc.passwd do |entry|
|
26
|
-
user_passwd_entry = Mash.new(dir: entry.dir, gid: entry.gid, uid: entry.uid, shell: entry.shell, gecos: entry.gecos)
|
27
|
-
user_passwd_entry.each_value { |v| fix_encoding(v) }
|
28
|
-
entry_name = fix_encoding(entry.name)
|
29
|
-
etc[:passwd][entry_name] = user_passwd_entry unless etc[:passwd].key?(entry_name)
|
30
|
-
end
|
31
|
-
|
32
|
-
Etc.group do |entry|
|
33
|
-
group_entry = Mash.new(gid: entry.gid,
|
34
|
-
|
35
|
-
|
36
|
-
etc[:group][fix_encoding(entry.name)] = group_entry
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
unless current_user
|
41
|
-
current_user fix_encoding(Etc.getpwuid(Process.euid).name)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
collect_data(:windows) do
|
46
|
-
require "wmi-lite/wmi" unless defined?(WmiLite::Wmi)
|
47
|
-
|
48
|
-
unless etc
|
49
|
-
etc Mash.new
|
50
|
-
|
51
|
-
wmi = WmiLite::Wmi.new
|
52
|
-
|
53
|
-
etc[:passwd] = Mash.new
|
54
|
-
users = wmi.query("SELECT * FROM Win32_UserAccount WHERE LocalAccount = True")
|
55
|
-
users.each do |user|
|
56
|
-
uname = user["Name"].strip.downcase
|
57
|
-
Ohai::Log.debug("processing user #{uname}")
|
58
|
-
etc[:passwd][uname] = Mash.new
|
59
|
-
wmi_obj = user.wmi_ole_object
|
60
|
-
wmi_obj.properties_.each do |key|
|
61
|
-
etc[:passwd][uname][key.name.downcase] = user[key.name]
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
etc[:group] = Mash.new
|
66
|
-
groups = wmi.query("SELECT * FROM Win32_Group WHERE LocalAccount = True")
|
67
|
-
groups.each do |group|
|
68
|
-
gname = group["Name"].strip.downcase
|
69
|
-
Ohai::Log.debug("processing group #{gname}")
|
70
|
-
etc[:group][gname] = Mash.new
|
71
|
-
wmi_obj = group.wmi_ole_object
|
72
|
-
wmi_obj.properties_.each do |key|
|
73
|
-
etc[:group][gname][key.name.downcase] = group[key.name]
|
74
|
-
end
|
75
|
-
|
76
|
-
# This is the primary reason that we're using WMI instead of powershell
|
77
|
-
# cmdlets - the powershell start up cost is huge, and you *must* do this
|
78
|
-
# query for every. single. group. individually.
|
79
|
-
|
80
|
-
# The query returns nothing unless you specify domain *and* name, it's
|
81
|
-
# a path, not a set of queries.
|
82
|
-
subq = "Win32_Group.Domain='#{group["Domain"]}',Name='#{group["Name"]}'"
|
83
|
-
members = wmi.query(
|
84
|
-
"SELECT * FROM Win32_GroupUser WHERE GroupComponent=\"#{subq}\""
|
85
|
-
)
|
86
|
-
etc[:group][gname]["members"] = members.map do |member|
|
87
|
-
mi = {}
|
88
|
-
info = Hash[
|
89
|
-
member["partcomponent"].split(",").map { |x| x.split("=") }.map { |a, b| [a, b.undump] }
|
90
|
-
]
|
91
|
-
if info.keys.any? { |x| x.match?("Win32_UserAccount") }
|
92
|
-
mi["type"] = :user
|
93
|
-
else
|
94
|
-
# NOTE: the type here is actually Win32_SystemAccount, because,
|
95
|
-
# that's what groups are in the Windows universe.
|
96
|
-
mi["type"] = :group
|
97
|
-
end
|
98
|
-
mi["name"] = info["Name"]
|
99
|
-
mi
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
104
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
Ohai.plugin(:Passwd) do
|
4
|
+
provides "etc", "current_user"
|
5
|
+
optional true
|
6
|
+
|
7
|
+
# @param [String] str
|
8
|
+
#
|
9
|
+
# @return [String]
|
10
|
+
#
|
11
|
+
def fix_encoding(str)
|
12
|
+
str.force_encoding(Encoding.default_external) if str.respond_to?(:force_encoding)
|
13
|
+
str
|
14
|
+
end
|
15
|
+
|
16
|
+
collect_data do
|
17
|
+
require "etc" unless defined?(Etc)
|
18
|
+
|
19
|
+
unless etc
|
20
|
+
etc Mash.new
|
21
|
+
|
22
|
+
etc[:passwd] = Mash.new
|
23
|
+
etc[:group] = Mash.new
|
24
|
+
|
25
|
+
Etc.passwd do |entry|
|
26
|
+
user_passwd_entry = Mash.new(dir: entry.dir, gid: entry.gid, uid: entry.uid, shell: entry.shell, gecos: entry.gecos)
|
27
|
+
user_passwd_entry.each_value { |v| fix_encoding(v) }
|
28
|
+
entry_name = fix_encoding(entry.name)
|
29
|
+
etc[:passwd][entry_name] = user_passwd_entry unless etc[:passwd].key?(entry_name)
|
30
|
+
end
|
31
|
+
|
32
|
+
Etc.group do |entry|
|
33
|
+
group_entry = Mash.new(gid: entry.gid,
|
34
|
+
members: entry.mem.map { |u| fix_encoding(u) })
|
35
|
+
|
36
|
+
etc[:group][fix_encoding(entry.name)] = group_entry
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
unless current_user
|
41
|
+
current_user fix_encoding(Etc.getpwuid(Process.euid).name)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
collect_data(:windows) do
|
46
|
+
require "wmi-lite/wmi" unless defined?(WmiLite::Wmi)
|
47
|
+
|
48
|
+
unless etc
|
49
|
+
etc Mash.new
|
50
|
+
|
51
|
+
wmi = WmiLite::Wmi.new
|
52
|
+
|
53
|
+
etc[:passwd] = Mash.new
|
54
|
+
users = wmi.query("SELECT * FROM Win32_UserAccount WHERE LocalAccount = True")
|
55
|
+
users.each do |user|
|
56
|
+
uname = user["Name"].strip.downcase
|
57
|
+
Ohai::Log.debug("processing user #{uname}")
|
58
|
+
etc[:passwd][uname] = Mash.new
|
59
|
+
wmi_obj = user.wmi_ole_object
|
60
|
+
wmi_obj.properties_.each do |key|
|
61
|
+
etc[:passwd][uname][key.name.downcase] = user[key.name]
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
etc[:group] = Mash.new
|
66
|
+
groups = wmi.query("SELECT * FROM Win32_Group WHERE LocalAccount = True")
|
67
|
+
groups.each do |group|
|
68
|
+
gname = group["Name"].strip.downcase
|
69
|
+
Ohai::Log.debug("processing group #{gname}")
|
70
|
+
etc[:group][gname] = Mash.new
|
71
|
+
wmi_obj = group.wmi_ole_object
|
72
|
+
wmi_obj.properties_.each do |key|
|
73
|
+
etc[:group][gname][key.name.downcase] = group[key.name]
|
74
|
+
end
|
75
|
+
|
76
|
+
# This is the primary reason that we're using WMI instead of powershell
|
77
|
+
# cmdlets - the powershell start up cost is huge, and you *must* do this
|
78
|
+
# query for every. single. group. individually.
|
79
|
+
|
80
|
+
# The query returns nothing unless you specify domain *and* name, it's
|
81
|
+
# a path, not a set of queries.
|
82
|
+
subq = "Win32_Group.Domain='#{group["Domain"]}',Name='#{group["Name"]}'"
|
83
|
+
members = wmi.query(
|
84
|
+
"SELECT * FROM Win32_GroupUser WHERE GroupComponent=\"#{subq}\""
|
85
|
+
)
|
86
|
+
etc[:group][gname]["members"] = members.map do |member|
|
87
|
+
mi = {}
|
88
|
+
info = Hash[
|
89
|
+
member["partcomponent"].split(",").map { |x| x.split("=") }.map { |a, b| [a, b.undump] }
|
90
|
+
]
|
91
|
+
if info.keys.any? { |x| x.match?("Win32_UserAccount") }
|
92
|
+
mi["type"] = :user
|
93
|
+
else
|
94
|
+
# NOTE: the type here is actually Win32_SystemAccount, because,
|
95
|
+
# that's what groups are in the Windows universe.
|
96
|
+
mi["type"] = :group
|
97
|
+
end
|
98
|
+
mi["name"] = info["Name"]
|
99
|
+
mi
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
data/lib/ohai/plugins/perl.rb
CHANGED
@@ -1,45 +1,45 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Joshua Timberman (<joshua@chef.io>)
|
3
|
-
# Copyright:: Copyright (c) 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(:Perl) do
|
20
|
-
provides "languages/perl"
|
21
|
-
depends "languages".freeze
|
22
|
-
|
23
|
-
collect_data do
|
24
|
-
|
25
|
-
so = shell_out("perl -V:version -V:archname")
|
26
|
-
# Sample output:
|
27
|
-
# version='5.18.2';
|
28
|
-
# archname='darwin-thread-multi-2level';
|
29
|
-
if so.exitstatus == 0
|
30
|
-
perl = Mash.new
|
31
|
-
so.stdout.split(/\r?\n/).each do |line|
|
32
|
-
case line
|
33
|
-
when /^version=\'(.+)\';$/
|
34
|
-
perl[:version] = $1
|
35
|
-
when /^archname=\'(.+)\';$/
|
36
|
-
perl[:archname] = $1
|
37
|
-
end
|
38
|
-
end
|
39
|
-
languages[:perl] = perl unless perl.empty?
|
40
|
-
end
|
41
|
-
rescue Ohai::Exceptions::Exec
|
42
|
-
logger.trace('Plugin Perl: Could not shell_out "perl -V:version -V:archname". Skipping plugin')
|
43
|
-
|
44
|
-
end
|
45
|
-
end
|
1
|
+
#
|
2
|
+
# Author:: Joshua Timberman (<joshua@chef.io>)
|
3
|
+
# Copyright:: Copyright (c) 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(:Perl) do
|
20
|
+
provides "languages/perl"
|
21
|
+
depends "languages".freeze
|
22
|
+
|
23
|
+
collect_data do
|
24
|
+
|
25
|
+
so = shell_out("perl -V:version -V:archname")
|
26
|
+
# Sample output:
|
27
|
+
# version='5.18.2';
|
28
|
+
# archname='darwin-thread-multi-2level';
|
29
|
+
if so.exitstatus == 0
|
30
|
+
perl = Mash.new
|
31
|
+
so.stdout.split(/\r?\n/).each do |line|
|
32
|
+
case line
|
33
|
+
when /^version=\'(.+)\';$/
|
34
|
+
perl[:version] = $1
|
35
|
+
when /^archname=\'(.+)\';$/
|
36
|
+
perl[:archname] = $1
|
37
|
+
end
|
38
|
+
end
|
39
|
+
languages[:perl] = perl unless perl.empty?
|
40
|
+
end
|
41
|
+
rescue Ohai::Exceptions::Exec
|
42
|
+
logger.trace('Plugin Perl: Could not shell_out "perl -V:version -V:archname". Skipping plugin')
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
data/lib/ohai/plugins/php.rb
CHANGED
@@ -1,52 +1,52 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Doug MacEachern <dougm@vmware.com>
|
3
|
-
# Author:: Tim Smith <tim@cozy.co>
|
4
|
-
# Copyright:: Copyright (c) 2009 VMware, Inc.
|
5
|
-
# Copyright:: Copyright (c) 2014 Cozy Services, Ltd.
|
6
|
-
# License:: Apache License, Version 2.0
|
7
|
-
#
|
8
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
9
|
-
# you may not use this file except in compliance with the License.
|
10
|
-
# You may obtain a copy of the License at
|
11
|
-
#
|
12
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
13
|
-
#
|
14
|
-
# Unless required by applicable law or agreed to in writing, software
|
15
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
16
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
17
|
-
# See the License for the specific language governing permissions and
|
18
|
-
# limitations under the License.
|
19
|
-
#
|
20
|
-
|
21
|
-
Ohai.plugin(:PHP) do
|
22
|
-
provides "languages/php"
|
23
|
-
depends "languages".freeze
|
24
|
-
|
25
|
-
collect_data do
|
26
|
-
|
27
|
-
so = shell_out("php -v")
|
28
|
-
# Sample output:
|
29
|
-
# PHP 5.5.31 (cli) (built: Feb 20 2016 20:33:10)
|
30
|
-
# Copyright (c) 1997-2015 The PHP Group
|
31
|
-
# Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies
|
32
|
-
if so.exitstatus == 0
|
33
|
-
php = Mash.new
|
34
|
-
so.stdout.each_line do |line|
|
35
|
-
case line
|
36
|
-
when /^PHP (\S+)(?:.*built: ([^)]+))?/
|
37
|
-
php[:version] = $1
|
38
|
-
php[:builddate] = $2
|
39
|
-
when /Zend Engine v([^\s]+),/
|
40
|
-
php[:zend_engine_version] = $1
|
41
|
-
when /Zend OPcache v([^\s]+),/
|
42
|
-
php[:zend_opcache_version] = $1
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
languages[:php] = php unless php.empty?
|
47
|
-
end
|
48
|
-
rescue Ohai::Exceptions::Exec
|
49
|
-
logger.trace('Plugin Php: Could not shell_out "php -v". Skipping plugin')
|
50
|
-
|
51
|
-
end
|
52
|
-
end
|
1
|
+
#
|
2
|
+
# Author:: Doug MacEachern <dougm@vmware.com>
|
3
|
+
# Author:: Tim Smith <tim@cozy.co>
|
4
|
+
# Copyright:: Copyright (c) 2009 VMware, Inc.
|
5
|
+
# Copyright:: Copyright (c) 2014 Cozy Services, Ltd.
|
6
|
+
# License:: Apache License, Version 2.0
|
7
|
+
#
|
8
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
9
|
+
# you may not use this file except in compliance with the License.
|
10
|
+
# You may obtain a copy of the License at
|
11
|
+
#
|
12
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
13
|
+
#
|
14
|
+
# Unless required by applicable law or agreed to in writing, software
|
15
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
16
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
17
|
+
# See the License for the specific language governing permissions and
|
18
|
+
# limitations under the License.
|
19
|
+
#
|
20
|
+
|
21
|
+
Ohai.plugin(:PHP) do
|
22
|
+
provides "languages/php"
|
23
|
+
depends "languages".freeze
|
24
|
+
|
25
|
+
collect_data do
|
26
|
+
|
27
|
+
so = shell_out("php -v")
|
28
|
+
# Sample output:
|
29
|
+
# PHP 5.5.31 (cli) (built: Feb 20 2016 20:33:10)
|
30
|
+
# Copyright (c) 1997-2015 The PHP Group
|
31
|
+
# Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies
|
32
|
+
if so.exitstatus == 0
|
33
|
+
php = Mash.new
|
34
|
+
so.stdout.each_line do |line|
|
35
|
+
case line
|
36
|
+
when /^PHP (\S+)(?:.*built: ([^)]+))?/
|
37
|
+
php[:version] = $1
|
38
|
+
php[:builddate] = $2
|
39
|
+
when /Zend Engine v([^\s]+),/
|
40
|
+
php[:zend_engine_version] = $1
|
41
|
+
when /Zend OPcache v([^\s]+),/
|
42
|
+
php[:zend_opcache_version] = $1
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
languages[:php] = php unless php.empty?
|
47
|
+
end
|
48
|
+
rescue Ohai::Exceptions::Exec
|
49
|
+
logger.trace('Plugin Php: Could not shell_out "php -v". Skipping plugin')
|
50
|
+
|
51
|
+
end
|
52
|
+
end
|
@@ -1,41 +1,41 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
#
|
3
|
-
# Author:: Adam Jacob (<adam@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(:Platform) do
|
21
|
-
provides "platform", "platform_version", "platform_family", "platform_backend"
|
22
|
-
depends "os", "os_version"
|
23
|
-
|
24
|
-
collect_data(:default) do
|
25
|
-
platform os unless attribute?("platform")
|
26
|
-
platform_version os_version unless attribute?("platform_version")
|
27
|
-
platform_family platform unless attribute?("platform_family")
|
28
|
-
|
29
|
-
platform_backend Mash.new
|
30
|
-
platform_backend["type"] = "local"
|
31
|
-
platform_backend["uri"] = "local://"
|
32
|
-
|
33
|
-
if connection
|
34
|
-
platform_backend["type"] = connection.backend_type
|
35
|
-
if connection.respond_to?(:uri)
|
36
|
-
platform_backend["type"] = connection.uri.split(":").first
|
37
|
-
platform_backend["uri"] = connection.uri
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
#
|
3
|
+
# Author:: Adam Jacob (<adam@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(:Platform) do
|
21
|
+
provides "platform", "platform_version", "platform_family", "platform_backend"
|
22
|
+
depends "os", "os_version"
|
23
|
+
|
24
|
+
collect_data(:default) do
|
25
|
+
platform os unless attribute?("platform")
|
26
|
+
platform_version os_version unless attribute?("platform_version")
|
27
|
+
platform_family platform unless attribute?("platform_family")
|
28
|
+
|
29
|
+
platform_backend Mash.new
|
30
|
+
platform_backend["type"] = "local"
|
31
|
+
platform_backend["uri"] = "local://"
|
32
|
+
|
33
|
+
if connection
|
34
|
+
platform_backend["type"] = connection.backend_type
|
35
|
+
if connection.respond_to?(:uri)
|
36
|
+
platform_backend["type"] = connection.uri.split(":").first
|
37
|
+
platform_backend["uri"] = connection.uri
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -1,82 +1,82 @@
|
|
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(:Powershell) do
|
19
|
-
provides "languages/powershell"
|
20
|
-
depends "languages".freeze
|
21
|
-
|
22
|
-
collect_data(:windows) do
|
23
|
-
|
24
|
-
so = shell_out("powershell.exe -NoLogo -NonInteractive -NoProfile -command $PSVersionTable")
|
25
|
-
# Sample output:
|
26
|
-
#
|
27
|
-
# Name Value
|
28
|
-
# ---- -----
|
29
|
-
# PSVersion 4.0
|
30
|
-
# WSManStackVersion 3.0
|
31
|
-
# SerializationVersion 1.1.0.1
|
32
|
-
# CLRVersion 4.0.30319.34014
|
33
|
-
# BuildVersion 6.3.9600.16394
|
34
|
-
# PSCompatibleVersions {1.0, 2.0, 3.0, 4.0}
|
35
|
-
# PSRemotingProtocolVersion 2.2
|
36
|
-
|
37
|
-
if so.exitstatus == 0
|
38
|
-
powershell = Mash.new
|
39
|
-
version_info = {}
|
40
|
-
so.stdout.strip.each_line do |line|
|
41
|
-
kv = line.strip.split(/\s+/, 2)
|
42
|
-
version_info[kv[0]] = kv[1] if kv.length == 2
|
43
|
-
end
|
44
|
-
powershell[:version] = version_info["PSVersion"]
|
45
|
-
powershell[:ws_man_stack_version] = version_info["WSManStackVersion"]
|
46
|
-
powershell[:serialization_version] = version_info["SerializationVersion"]
|
47
|
-
powershell[:clr_version] = version_info["CLRVersion"]
|
48
|
-
powershell[:build_version] = version_info["BuildVersion"]
|
49
|
-
powershell[:compatible_versions] = parse_compatible_versions
|
50
|
-
powershell[:remoting_protocol_version] = version_info["PSRemotingProtocolVersion"]
|
51
|
-
languages[:powershell] = powershell unless powershell.empty?
|
52
|
-
end
|
53
|
-
rescue Ohai::Exceptions::Exec
|
54
|
-
logger.trace('Plugin Powershell: Could not shell_out "powershell.exe -NoLogo -NonInteractive -NoProfile -command $PSVersionTable". Skipping plugin')
|
55
|
-
|
56
|
-
end
|
57
|
-
|
58
|
-
def version_command
|
59
|
-
[
|
60
|
-
"$progresspreference = 'silentlycontinue'",
|
61
|
-
"$PSVersionTable.PSCompatibleVersions | foreach {$_.tostring()}",
|
62
|
-
].join("; ")
|
63
|
-
end
|
64
|
-
|
65
|
-
def powershell_command
|
66
|
-
["powershell.exe",
|
67
|
-
"-NoLogo",
|
68
|
-
"-NonInteractive",
|
69
|
-
"-NoProfile",
|
70
|
-
"-Command",
|
71
|
-
].join(" ")
|
72
|
-
end
|
73
|
-
|
74
|
-
def parse_compatible_versions
|
75
|
-
so = shell_out("#{powershell_command} \"#{version_command}\"")
|
76
|
-
versions = []
|
77
|
-
so.stdout.strip.each_line do |line|
|
78
|
-
versions << line.strip
|
79
|
-
end
|
80
|
-
versions
|
81
|
-
end
|
82
|
-
end
|
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(:Powershell) do
|
19
|
+
provides "languages/powershell"
|
20
|
+
depends "languages".freeze
|
21
|
+
|
22
|
+
collect_data(:windows) do
|
23
|
+
|
24
|
+
so = shell_out("powershell.exe -NoLogo -NonInteractive -NoProfile -command $PSVersionTable")
|
25
|
+
# Sample output:
|
26
|
+
#
|
27
|
+
# Name Value
|
28
|
+
# ---- -----
|
29
|
+
# PSVersion 4.0
|
30
|
+
# WSManStackVersion 3.0
|
31
|
+
# SerializationVersion 1.1.0.1
|
32
|
+
# CLRVersion 4.0.30319.34014
|
33
|
+
# BuildVersion 6.3.9600.16394
|
34
|
+
# PSCompatibleVersions {1.0, 2.0, 3.0, 4.0}
|
35
|
+
# PSRemotingProtocolVersion 2.2
|
36
|
+
|
37
|
+
if so.exitstatus == 0
|
38
|
+
powershell = Mash.new
|
39
|
+
version_info = {}
|
40
|
+
so.stdout.strip.each_line do |line|
|
41
|
+
kv = line.strip.split(/\s+/, 2)
|
42
|
+
version_info[kv[0]] = kv[1] if kv.length == 2
|
43
|
+
end
|
44
|
+
powershell[:version] = version_info["PSVersion"]
|
45
|
+
powershell[:ws_man_stack_version] = version_info["WSManStackVersion"]
|
46
|
+
powershell[:serialization_version] = version_info["SerializationVersion"]
|
47
|
+
powershell[:clr_version] = version_info["CLRVersion"]
|
48
|
+
powershell[:build_version] = version_info["BuildVersion"]
|
49
|
+
powershell[:compatible_versions] = parse_compatible_versions
|
50
|
+
powershell[:remoting_protocol_version] = version_info["PSRemotingProtocolVersion"]
|
51
|
+
languages[:powershell] = powershell unless powershell.empty?
|
52
|
+
end
|
53
|
+
rescue Ohai::Exceptions::Exec
|
54
|
+
logger.trace('Plugin Powershell: Could not shell_out "powershell.exe -NoLogo -NonInteractive -NoProfile -command $PSVersionTable". Skipping plugin')
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
def version_command
|
59
|
+
[
|
60
|
+
"$progresspreference = 'silentlycontinue'",
|
61
|
+
"$PSVersionTable.PSCompatibleVersions | foreach {$_.tostring()}",
|
62
|
+
].join("; ")
|
63
|
+
end
|
64
|
+
|
65
|
+
def powershell_command
|
66
|
+
["powershell.exe",
|
67
|
+
"-NoLogo",
|
68
|
+
"-NonInteractive",
|
69
|
+
"-NoProfile",
|
70
|
+
"-Command",
|
71
|
+
].join(" ")
|
72
|
+
end
|
73
|
+
|
74
|
+
def parse_compatible_versions
|
75
|
+
so = shell_out("#{powershell_command} \"#{version_command}\"")
|
76
|
+
versions = []
|
77
|
+
so.stdout.strip.each_line do |line|
|
78
|
+
versions << line.strip
|
79
|
+
end
|
80
|
+
versions
|
81
|
+
end
|
82
|
+
end
|