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/ps.rb
CHANGED
@@ -1,35 +1,35 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
#
|
3
|
-
# Author:: Adam Jacob (<adam@chef.io>)
|
4
|
-
# Author:: Bryan McLellan (<btm@loftninjas.org>)
|
5
|
-
# Copyright:: Copyright (c) Chef Software Inc.
|
6
|
-
# Copyright:: Copyright (c) 2009 Bryan McLellan
|
7
|
-
# License:: Apache License, Version 2.0
|
8
|
-
#
|
9
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
10
|
-
# you may not use this file except in compliance with the License.
|
11
|
-
# You may obtain a copy of the License at
|
12
|
-
#
|
13
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
14
|
-
#
|
15
|
-
# Unless required by applicable law or agreed to in writing, software
|
16
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
17
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
18
|
-
# implied.
|
19
|
-
# See the License for the specific language governing permissions and
|
20
|
-
# limitations under the License.
|
21
|
-
#
|
22
|
-
|
23
|
-
Ohai.plugin(:PS) do
|
24
|
-
provides "command/ps"
|
25
|
-
depends "command"
|
26
|
-
|
27
|
-
collect_data(:aix, :darwin, :linux, :solaris2) do
|
28
|
-
command[:ps] = "ps -ef"
|
29
|
-
end
|
30
|
-
|
31
|
-
collect_data(:freebsd, :netbsd, :openbsd, :dragonflybsd) do
|
32
|
-
# ps -e requires procfs
|
33
|
-
command[:ps] = "ps -axww"
|
34
|
-
end
|
35
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
#
|
3
|
+
# Author:: Adam Jacob (<adam@chef.io>)
|
4
|
+
# Author:: Bryan McLellan (<btm@loftninjas.org>)
|
5
|
+
# Copyright:: Copyright (c) Chef Software Inc.
|
6
|
+
# Copyright:: Copyright (c) 2009 Bryan McLellan
|
7
|
+
# License:: Apache License, Version 2.0
|
8
|
+
#
|
9
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
10
|
+
# you may not use this file except in compliance with the License.
|
11
|
+
# You may obtain a copy of the License at
|
12
|
+
#
|
13
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
14
|
+
#
|
15
|
+
# Unless required by applicable law or agreed to in writing, software
|
16
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
17
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
18
|
+
# implied.
|
19
|
+
# See the License for the specific language governing permissions and
|
20
|
+
# limitations under the License.
|
21
|
+
#
|
22
|
+
|
23
|
+
Ohai.plugin(:PS) do
|
24
|
+
provides "command/ps"
|
25
|
+
depends "command"
|
26
|
+
|
27
|
+
collect_data(:aix, :darwin, :linux, :solaris2) do
|
28
|
+
command[:ps] = "ps -ef"
|
29
|
+
end
|
30
|
+
|
31
|
+
collect_data(:freebsd, :netbsd, :openbsd, :dragonflybsd) do
|
32
|
+
# ps -e requires procfs
|
33
|
+
command[:ps] = "ps -axww"
|
34
|
+
end
|
35
|
+
end
|
data/lib/ohai/plugins/python.rb
CHANGED
@@ -1,43 +1,43 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Thom May (<thom@clearairturbulence.org>)
|
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(:Python) do
|
20
|
-
provides "languages/python"
|
21
|
-
|
22
|
-
depends "languages".freeze
|
23
|
-
|
24
|
-
collect_data do
|
25
|
-
|
26
|
-
so = shell_out("python -c \"import sys; print (sys.version)\"")
|
27
|
-
# Sample output:
|
28
|
-
# 2.7.11 (default, Dec 26 2015, 17:47:53)
|
29
|
-
# [GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)]
|
30
|
-
if so.exitstatus == 0
|
31
|
-
python = Mash.new
|
32
|
-
output = so.stdout.split
|
33
|
-
python[:version] = output[0]
|
34
|
-
if output.length >= 6
|
35
|
-
python[:builddate] = "%s %s %s %s" % [output[2], output[3], output[4], output[5].delete!(")")]
|
36
|
-
end
|
37
|
-
languages[:python] = python unless python.empty?
|
38
|
-
end
|
39
|
-
rescue Ohai::Exceptions::Exec
|
40
|
-
logger.trace('Plugin Python: Could not shell_out "python -c "import sys; print (sys.version)"". Skipping plugin')
|
41
|
-
|
42
|
-
end
|
43
|
-
end
|
1
|
+
#
|
2
|
+
# Author:: Thom May (<thom@clearairturbulence.org>)
|
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(:Python) do
|
20
|
+
provides "languages/python"
|
21
|
+
|
22
|
+
depends "languages".freeze
|
23
|
+
|
24
|
+
collect_data do
|
25
|
+
|
26
|
+
so = shell_out("python -c \"import sys; print (sys.version)\"")
|
27
|
+
# Sample output:
|
28
|
+
# 2.7.11 (default, Dec 26 2015, 17:47:53)
|
29
|
+
# [GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)]
|
30
|
+
if so.exitstatus == 0
|
31
|
+
python = Mash.new
|
32
|
+
output = so.stdout.split
|
33
|
+
python[:version] = output[0]
|
34
|
+
if output.length >= 6
|
35
|
+
python[:builddate] = "%s %s %s %s" % [output[2], output[3], output[4], output[5].delete!(")")]
|
36
|
+
end
|
37
|
+
languages[:python] = python unless python.empty?
|
38
|
+
end
|
39
|
+
rescue Ohai::Exceptions::Exec
|
40
|
+
logger.trace('Plugin Python: Could not shell_out "python -c "import sys; print (sys.version)"". Skipping plugin')
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
@@ -1,177 +1,177 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
#
|
3
|
-
# Author:: Cary Penniman (<cary@rightscale.com>)
|
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
|
-
Ohai.plugin(:Rackspace) do
|
19
|
-
provides "rackspace"
|
20
|
-
|
21
|
-
depends "kernel", "network/interfaces"
|
22
|
-
|
23
|
-
# Checks for matching rackspace kernel name
|
24
|
-
#
|
25
|
-
# === Return
|
26
|
-
# true:: If kernel name matches
|
27
|
-
# false:: Otherwise
|
28
|
-
def has_rackspace_kernel?
|
29
|
-
kernel[:release].end_with?("-rscloud")
|
30
|
-
end
|
31
|
-
|
32
|
-
# Checks for rackspace provider attribute
|
33
|
-
#
|
34
|
-
# === Return
|
35
|
-
# true:: If rackspace provider attribute found
|
36
|
-
# false:: Otherwise
|
37
|
-
def has_rackspace_metadata?
|
38
|
-
so = shell_out("xenstore-read vm-data/provider_data/provider")
|
39
|
-
if so.exitstatus == 0
|
40
|
-
so.stdout.strip.casecmp("rackspace") == 0
|
41
|
-
end
|
42
|
-
rescue Ohai::Exceptions::Exec
|
43
|
-
false
|
44
|
-
end
|
45
|
-
|
46
|
-
# Checks for the rackspace manufacturer on Windows
|
47
|
-
# === Return
|
48
|
-
# true:: If the rackspace cloud can be identified
|
49
|
-
# false:: Otherwise
|
50
|
-
def has_rackspace_manufacturer?
|
51
|
-
return false unless RUBY_PLATFORM.match?(/mswin|mingw|windows/)
|
52
|
-
|
53
|
-
require "wmi-lite/wmi" unless defined?(WmiLite::Wmi)
|
54
|
-
wmi = WmiLite::Wmi.new
|
55
|
-
if wmi.first_of("Win32_ComputerSystem")["PrimaryOwnerName"] == "Rackspace"
|
56
|
-
logger.trace("Plugin Rackspace: has_rackspace_manufacturer? == true")
|
57
|
-
true
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
# Identifies the rackspace cloud
|
62
|
-
#
|
63
|
-
# === Return
|
64
|
-
# true:: If the rackspace cloud can be identified
|
65
|
-
# false:: Otherwise
|
66
|
-
def looks_like_rackspace?
|
67
|
-
hint?("rackspace") || has_rackspace_metadata? || has_rackspace_kernel? || has_rackspace_manufacturer?
|
68
|
-
end
|
69
|
-
|
70
|
-
# Names rackspace ip address
|
71
|
-
#
|
72
|
-
# === Parameters
|
73
|
-
# name<Symbol>:: Use :public_ip or :private_ip
|
74
|
-
# eth<Symbol>:: Interface name of public or private ip
|
75
|
-
def get_ip_address(name, eth)
|
76
|
-
network[:interfaces][eth][:addresses].each do |key, info|
|
77
|
-
if info["family"] == "inet"
|
78
|
-
rackspace[name] = key
|
79
|
-
break # break when we found an address
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
# Names rackspace ipv6 address for interface
|
85
|
-
#
|
86
|
-
# === Parameters
|
87
|
-
# name<Symbol>:: Use :public_ip or :private_ip
|
88
|
-
# eth<Symbol>:: Interface name of public or private ip
|
89
|
-
def get_global_ipv6_address(name, eth)
|
90
|
-
network[:interfaces][eth][:addresses].each do |key, info|
|
91
|
-
# check if we got an ipv6 address and if its in global scope
|
92
|
-
if info["family"] == "inet6" && info["scope"] == "Global"
|
93
|
-
rackspace[name] = key
|
94
|
-
break # break when we found an address
|
95
|
-
end
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
# Get the rackspace region
|
100
|
-
#
|
101
|
-
def get_region
|
102
|
-
so = shell_out("xenstore-ls vm-data/provider_data")
|
103
|
-
if so.exitstatus == 0
|
104
|
-
so.stdout.split("\n").each do |line|
|
105
|
-
rackspace[:region] = line.split[2].delete('\"') if /^region/.match?(line)
|
106
|
-
end
|
107
|
-
end
|
108
|
-
rescue Ohai::Exceptions::Exec
|
109
|
-
logger.trace("Plugin Rackspace: Unable to find xenstore-ls, cannot capture region information for Rackspace cloud")
|
110
|
-
nil
|
111
|
-
end
|
112
|
-
|
113
|
-
# Get the rackspace instance_id
|
114
|
-
#
|
115
|
-
def get_instance_id
|
116
|
-
so = shell_out("xenstore-read name")
|
117
|
-
if so.exitstatus == 0
|
118
|
-
rackspace[:instance_id] = so.stdout.gsub(
|
119
|
-
end
|
120
|
-
rescue Ohai::Exceptions::Exec
|
121
|
-
logger.trace("Plugin Rackspace: Unable to find xenstore-read, cannot capture instance ID information for Rackspace cloud")
|
122
|
-
nil
|
123
|
-
end
|
124
|
-
|
125
|
-
# Get the rackspace private networks
|
126
|
-
#
|
127
|
-
def get_private_networks
|
128
|
-
so = shell_out("xenstore-ls vm-data/networking")
|
129
|
-
if so.exitstatus == 0
|
130
|
-
networks = []
|
131
|
-
so.stdout.split("\n").map { |l| l.split("=").first.strip }.map do |item|
|
132
|
-
so = shell_out("xenstore-read vm-data/networking/#{item}")
|
133
|
-
if so.exitstatus == 0
|
134
|
-
networks.push(FFI_Yajl::Parser.new.parse(so.stdout))
|
135
|
-
else
|
136
|
-
logger.trace("Plugin Rackspace: Unable to capture custom private networking information for Rackspace cloud")
|
137
|
-
return false
|
138
|
-
end
|
139
|
-
end
|
140
|
-
# these networks are already known to ohai, and are not 'private networks'
|
141
|
-
networks.delete_if { |hash| hash["label"] == "private" }
|
142
|
-
networks.delete_if { |hash| hash["label"] == "public" }
|
143
|
-
end
|
144
|
-
rescue Ohai::Exceptions::Exec
|
145
|
-
logger.trace("Plugin Rackspace: Unable to capture custom private networking information for Rackspace cloud")
|
146
|
-
nil
|
147
|
-
end
|
148
|
-
|
149
|
-
collect_data do
|
150
|
-
require "resolv"
|
151
|
-
|
152
|
-
# Adds rackspace Mash
|
153
|
-
if looks_like_rackspace?
|
154
|
-
rackspace Mash.new
|
155
|
-
get_ip_address(:public_ip, :eth0)
|
156
|
-
get_ip_address(:private_ip, :eth1)
|
157
|
-
get_region
|
158
|
-
get_instance_id
|
159
|
-
# public_ip + private_ip are deprecated in favor of public_ipv4 and local_ipv4 to standardize.
|
160
|
-
rackspace[:public_ipv4] = rackspace[:public_ip]
|
161
|
-
get_global_ipv6_address(:public_ipv6, :eth0)
|
162
|
-
unless rackspace[:public_ip].nil?
|
163
|
-
rackspace[:public_hostname] = begin
|
164
|
-
Resolv.getname(rackspace[:public_ip])
|
165
|
-
rescue Resolv::ResolvError, Resolv::ResolvTimeout
|
166
|
-
rackspace[:public_ip]
|
167
|
-
end
|
168
|
-
end
|
169
|
-
rackspace[:local_ipv4] = rackspace[:private_ip]
|
170
|
-
get_global_ipv6_address(:local_ipv6, :eth1)
|
171
|
-
rackspace[:local_hostname] = hostname
|
172
|
-
private_networks = get_private_networks
|
173
|
-
rackspace[:private_networks] = private_networks if private_networks
|
174
|
-
end
|
175
|
-
end
|
176
|
-
|
177
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
#
|
3
|
+
# Author:: Cary Penniman (<cary@rightscale.com>)
|
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
|
+
Ohai.plugin(:Rackspace) do
|
19
|
+
provides "rackspace"
|
20
|
+
|
21
|
+
depends "kernel", "network/interfaces"
|
22
|
+
|
23
|
+
# Checks for matching rackspace kernel name
|
24
|
+
#
|
25
|
+
# === Return
|
26
|
+
# true:: If kernel name matches
|
27
|
+
# false:: Otherwise
|
28
|
+
def has_rackspace_kernel?
|
29
|
+
kernel[:release].end_with?("-rscloud")
|
30
|
+
end
|
31
|
+
|
32
|
+
# Checks for rackspace provider attribute
|
33
|
+
#
|
34
|
+
# === Return
|
35
|
+
# true:: If rackspace provider attribute found
|
36
|
+
# false:: Otherwise
|
37
|
+
def has_rackspace_metadata?
|
38
|
+
so = shell_out("xenstore-read vm-data/provider_data/provider")
|
39
|
+
if so.exitstatus == 0
|
40
|
+
so.stdout.strip.casecmp("rackspace") == 0
|
41
|
+
end
|
42
|
+
rescue Ohai::Exceptions::Exec
|
43
|
+
false
|
44
|
+
end
|
45
|
+
|
46
|
+
# Checks for the rackspace manufacturer on Windows
|
47
|
+
# === Return
|
48
|
+
# true:: If the rackspace cloud can be identified
|
49
|
+
# false:: Otherwise
|
50
|
+
def has_rackspace_manufacturer?
|
51
|
+
return false unless RUBY_PLATFORM.match?(/mswin|mingw|windows/)
|
52
|
+
|
53
|
+
require "wmi-lite/wmi" unless defined?(WmiLite::Wmi)
|
54
|
+
wmi = WmiLite::Wmi.new
|
55
|
+
if wmi.first_of("Win32_ComputerSystem")["PrimaryOwnerName"] == "Rackspace"
|
56
|
+
logger.trace("Plugin Rackspace: has_rackspace_manufacturer? == true")
|
57
|
+
true
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
# Identifies the rackspace cloud
|
62
|
+
#
|
63
|
+
# === Return
|
64
|
+
# true:: If the rackspace cloud can be identified
|
65
|
+
# false:: Otherwise
|
66
|
+
def looks_like_rackspace?
|
67
|
+
hint?("rackspace") || has_rackspace_metadata? || has_rackspace_kernel? || has_rackspace_manufacturer?
|
68
|
+
end
|
69
|
+
|
70
|
+
# Names rackspace ip address
|
71
|
+
#
|
72
|
+
# === Parameters
|
73
|
+
# name<Symbol>:: Use :public_ip or :private_ip
|
74
|
+
# eth<Symbol>:: Interface name of public or private ip
|
75
|
+
def get_ip_address(name, eth)
|
76
|
+
network[:interfaces][eth][:addresses].each do |key, info|
|
77
|
+
if info["family"] == "inet"
|
78
|
+
rackspace[name] = key
|
79
|
+
break # break when we found an address
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
# Names rackspace ipv6 address for interface
|
85
|
+
#
|
86
|
+
# === Parameters
|
87
|
+
# name<Symbol>:: Use :public_ip or :private_ip
|
88
|
+
# eth<Symbol>:: Interface name of public or private ip
|
89
|
+
def get_global_ipv6_address(name, eth)
|
90
|
+
network[:interfaces][eth][:addresses].each do |key, info|
|
91
|
+
# check if we got an ipv6 address and if its in global scope
|
92
|
+
if info["family"] == "inet6" && info["scope"] == "Global"
|
93
|
+
rackspace[name] = key
|
94
|
+
break # break when we found an address
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
# Get the rackspace region
|
100
|
+
#
|
101
|
+
def get_region
|
102
|
+
so = shell_out("xenstore-ls vm-data/provider_data")
|
103
|
+
if so.exitstatus == 0
|
104
|
+
so.stdout.split("\n").each do |line|
|
105
|
+
rackspace[:region] = line.split[2].delete('\"') if /^region/.match?(line)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
rescue Ohai::Exceptions::Exec
|
109
|
+
logger.trace("Plugin Rackspace: Unable to find xenstore-ls, cannot capture region information for Rackspace cloud")
|
110
|
+
nil
|
111
|
+
end
|
112
|
+
|
113
|
+
# Get the rackspace instance_id
|
114
|
+
#
|
115
|
+
def get_instance_id
|
116
|
+
so = shell_out("xenstore-read name")
|
117
|
+
if so.exitstatus == 0
|
118
|
+
rackspace[:instance_id] = so.stdout.gsub(/instance-/, "")
|
119
|
+
end
|
120
|
+
rescue Ohai::Exceptions::Exec
|
121
|
+
logger.trace("Plugin Rackspace: Unable to find xenstore-read, cannot capture instance ID information for Rackspace cloud")
|
122
|
+
nil
|
123
|
+
end
|
124
|
+
|
125
|
+
# Get the rackspace private networks
|
126
|
+
#
|
127
|
+
def get_private_networks
|
128
|
+
so = shell_out("xenstore-ls vm-data/networking")
|
129
|
+
if so.exitstatus == 0
|
130
|
+
networks = []
|
131
|
+
so.stdout.split("\n").map { |l| l.split("=").first.strip }.map do |item|
|
132
|
+
so = shell_out("xenstore-read vm-data/networking/#{item}")
|
133
|
+
if so.exitstatus == 0
|
134
|
+
networks.push(FFI_Yajl::Parser.new.parse(so.stdout))
|
135
|
+
else
|
136
|
+
logger.trace("Plugin Rackspace: Unable to capture custom private networking information for Rackspace cloud")
|
137
|
+
return false
|
138
|
+
end
|
139
|
+
end
|
140
|
+
# these networks are already known to ohai, and are not 'private networks'
|
141
|
+
networks.delete_if { |hash| hash["label"] == "private" }
|
142
|
+
networks.delete_if { |hash| hash["label"] == "public" }
|
143
|
+
end
|
144
|
+
rescue Ohai::Exceptions::Exec
|
145
|
+
logger.trace("Plugin Rackspace: Unable to capture custom private networking information for Rackspace cloud")
|
146
|
+
nil
|
147
|
+
end
|
148
|
+
|
149
|
+
collect_data do
|
150
|
+
require "resolv"
|
151
|
+
|
152
|
+
# Adds rackspace Mash
|
153
|
+
if looks_like_rackspace?
|
154
|
+
rackspace Mash.new
|
155
|
+
get_ip_address(:public_ip, :eth0)
|
156
|
+
get_ip_address(:private_ip, :eth1)
|
157
|
+
get_region
|
158
|
+
get_instance_id
|
159
|
+
# public_ip + private_ip are deprecated in favor of public_ipv4 and local_ipv4 to standardize.
|
160
|
+
rackspace[:public_ipv4] = rackspace[:public_ip]
|
161
|
+
get_global_ipv6_address(:public_ipv6, :eth0)
|
162
|
+
unless rackspace[:public_ip].nil?
|
163
|
+
rackspace[:public_hostname] = begin
|
164
|
+
Resolv.getname(rackspace[:public_ip])
|
165
|
+
rescue Resolv::ResolvError, Resolv::ResolvTimeout
|
166
|
+
rackspace[:public_ip]
|
167
|
+
end
|
168
|
+
end
|
169
|
+
rackspace[:local_ipv4] = rackspace[:private_ip]
|
170
|
+
get_global_ipv6_address(:local_ipv6, :eth1)
|
171
|
+
rackspace[:local_hostname] = hostname
|
172
|
+
private_networks = get_private_networks
|
173
|
+
rackspace[:private_networks] = private_networks if private_networks
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
end
|
@@ -1,41 +1,41 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
#
|
3
|
-
# Author:: Joseph Anthony Pasquale Holsten (<joseph@josephholsten.com>)
|
4
|
-
# Copyright:: Copyright (c) 2013 Joseph Anthony Pasquale Holsten
|
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
|
-
Ohai.plugin(:RootGroup) do
|
20
|
-
provides "root_group"
|
21
|
-
|
22
|
-
collect_data(:windows) do
|
23
|
-
require "wmi-lite/wmi" unless defined?(WmiLite::Wmi)
|
24
|
-
|
25
|
-
wmi = WmiLite::Wmi.new
|
26
|
-
# Per http://support.microsoft.com/kb/243330 SID: S-1-5-32-544 is the
|
27
|
-
# internal name for the Administrators group, which lets us work
|
28
|
-
# properly in environments with a renamed or localized name for the
|
29
|
-
# Administrators group.
|
30
|
-
# Use LocalAccount=True because otherwise WMI will attempt to include
|
31
|
-
# (unneeded) Active Directory groups by querying AD, which is a performance
|
32
|
-
# and reliability issue since AD might not be reachable.
|
33
|
-
groups = wmi.query("select * from Win32_Group where sid like 'S-1-5-32-544' and LocalAccount=True")
|
34
|
-
windows_root_group_name = groups[0]["name"]
|
35
|
-
root_group windows_root_group_name
|
36
|
-
end
|
37
|
-
|
38
|
-
collect_data(:default) do
|
39
|
-
root_group Etc.getgrgid(Etc.getpwnam("root").gid).name
|
40
|
-
end
|
41
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
#
|
3
|
+
# Author:: Joseph Anthony Pasquale Holsten (<joseph@josephholsten.com>)
|
4
|
+
# Copyright:: Copyright (c) 2013 Joseph Anthony Pasquale Holsten
|
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
|
+
Ohai.plugin(:RootGroup) do
|
20
|
+
provides "root_group"
|
21
|
+
|
22
|
+
collect_data(:windows) do
|
23
|
+
require "wmi-lite/wmi" unless defined?(WmiLite::Wmi)
|
24
|
+
|
25
|
+
wmi = WmiLite::Wmi.new
|
26
|
+
# Per http://support.microsoft.com/kb/243330 SID: S-1-5-32-544 is the
|
27
|
+
# internal name for the Administrators group, which lets us work
|
28
|
+
# properly in environments with a renamed or localized name for the
|
29
|
+
# Administrators group.
|
30
|
+
# Use LocalAccount=True because otherwise WMI will attempt to include
|
31
|
+
# (unneeded) Active Directory groups by querying AD, which is a performance
|
32
|
+
# and reliability issue since AD might not be reachable.
|
33
|
+
groups = wmi.query("select * from Win32_Group where sid like 'S-1-5-32-544' and LocalAccount=True")
|
34
|
+
windows_root_group_name = groups[0]["name"]
|
35
|
+
root_group windows_root_group_name
|
36
|
+
end
|
37
|
+
|
38
|
+
collect_data(:default) do
|
39
|
+
root_group Etc.getgrgid(Etc.getpwnam("root").gid).name
|
40
|
+
end
|
41
|
+
end
|