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/mixin/os.rb
CHANGED
@@ -1,128 +1,128 @@
|
|
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
|
16
|
-
# implied.
|
17
|
-
# See the License for the specific language governing permissions and
|
18
|
-
# limitations under the License.
|
19
|
-
#
|
20
|
-
|
21
|
-
require "rbconfig" unless defined?(RbConfig)
|
22
|
-
|
23
|
-
module Ohai
|
24
|
-
module Mixin
|
25
|
-
module OS
|
26
|
-
|
27
|
-
# Using ruby configuration determine the OS we're running on
|
28
|
-
#
|
29
|
-
# @return [String] the OS
|
30
|
-
def collect_os
|
31
|
-
if target_mode?
|
32
|
-
collect_os_target
|
33
|
-
else
|
34
|
-
collect_os_local
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
# This should exactly preserve the semantics of collect_os_local below, which is authoritative
|
39
|
-
# for the API and must adhere to pre-existing ohai semantics and not follow inspec's notion of
|
40
|
-
# os/family/hierarchy.
|
41
|
-
#
|
42
|
-
# Right or wrong the ohai `os` variable has matched the ruby `host_os` definition for the past
|
43
|
-
# 10+ years, preceding inspec/train's definitions and this is the documented correct API of
|
44
|
-
# these methods. Mismatches between the ruby notion and the train version will be fixed as
|
45
|
-
# bugfixes in these methods and may not be considered semver violating even though they make
|
46
|
-
# break downstream consumers. Please ensure that both methods produce the same results if
|
47
|
-
# you are on a platform which supports running ruby (train is considered authoritative for
|
48
|
-
# any "OS" which cannot run ruby -- server consoles, REST APIs, etc...)
|
49
|
-
#
|
50
|
-
# @api private
|
51
|
-
def collect_os_target
|
52
|
-
case
|
53
|
-
when transport_connection.os.aix?
|
54
|
-
"aix"
|
55
|
-
when transport_connection.os.darwin?
|
56
|
-
"darwin"
|
57
|
-
when transport_connection.os.linux?
|
58
|
-
"linux"
|
59
|
-
when transport_connection.os.family == "freebsd"
|
60
|
-
"freebsd"
|
61
|
-
when transport_connection.os.family == "openbsd"
|
62
|
-
"openbsd"
|
63
|
-
when transport_connection.os.family == "netbsd"
|
64
|
-
"netbsd"
|
65
|
-
when transport_connection.os.family == "dragonflybsd"
|
66
|
-
"dragonflybsd"
|
67
|
-
when transport_connection.os.solaris?
|
68
|
-
"solaris2"
|
69
|
-
when transport_connection.os.windows?
|
70
|
-
"windows"
|
71
|
-
|
72
|
-
#
|
73
|
-
# The purpose of the next two lines is that anything which runs Unix is presumed to be able to run ruby, and
|
74
|
-
# if it was not caught above, we MUST translate whatever train uses as the 'os' into the proper ruby host_os
|
75
|
-
# string. If it is not unix and not caught above we assume it is something like a REST API which cannot run
|
76
|
-
# ruby. If these assumptions are incorrect then it is a bug, which should be submitted to fix it, and the
|
77
|
-
# values should not be relied upon until that bug is fixed. The train os is NEVER considered authoritative
|
78
|
-
# for any target which can run ruby.
|
79
|
-
#
|
80
|
-
when transport_connection.os.unix?
|
81
|
-
raise "Target mode unsupported on this Unix-like host, please update the collect_os_target case statement with the correct ruby host_os value."
|
82
|
-
else
|
83
|
-
# now we have something like an IPMI console that isn't Unix-like or Windows, presumably cannot run ruby, and
|
84
|
-
# so we just trust the train O/S information.
|
85
|
-
transport_connection.os.name
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
# @api private
|
90
|
-
def nonruby_target?
|
91
|
-
transport_connection && !transport_connection.os.unix? && !transport_connection.os.windows?
|
92
|
-
end
|
93
|
-
|
94
|
-
# @api private
|
95
|
-
def collect_os_local
|
96
|
-
case ::RbConfig::CONFIG["host_os"]
|
97
|
-
when /aix(.+)$/
|
98
|
-
"aix"
|
99
|
-
when /darwin(.+)$/
|
100
|
-
"darwin"
|
101
|
-
when /linux/
|
102
|
-
"linux"
|
103
|
-
when /freebsd(.+)$/
|
104
|
-
"freebsd"
|
105
|
-
when /openbsd(.+)$/
|
106
|
-
"openbsd"
|
107
|
-
when /netbsd(.*)$/
|
108
|
-
"netbsd"
|
109
|
-
when /dragonfly(.*)$/
|
110
|
-
"dragonflybsd"
|
111
|
-
when /solaris2/
|
112
|
-
"solaris2"
|
113
|
-
when /mswin|mingw|windows/
|
114
|
-
# After long discussion in IRC the "powers that be" have come to a consensus
|
115
|
-
# that no Windows platform exists that was not based on the
|
116
|
-
# Windows_NT kernel, so we herby decree that "windows" will refer to all
|
117
|
-
# platforms built upon the Windows_NT kernel and have access to win32 or win64
|
118
|
-
# subsystems.
|
119
|
-
"windows"
|
120
|
-
else
|
121
|
-
::RbConfig::CONFIG["host_os"]
|
122
|
-
end
|
123
|
-
end
|
124
|
-
|
125
|
-
extend self
|
126
|
-
end
|
127
|
-
end
|
128
|
-
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
|
16
|
+
# implied.
|
17
|
+
# See the License for the specific language governing permissions and
|
18
|
+
# limitations under the License.
|
19
|
+
#
|
20
|
+
|
21
|
+
require "rbconfig" unless defined?(RbConfig)
|
22
|
+
|
23
|
+
module Ohai
|
24
|
+
module Mixin
|
25
|
+
module OS
|
26
|
+
|
27
|
+
# Using ruby configuration determine the OS we're running on
|
28
|
+
#
|
29
|
+
# @return [String] the OS
|
30
|
+
def collect_os
|
31
|
+
if target_mode?
|
32
|
+
collect_os_target
|
33
|
+
else
|
34
|
+
collect_os_local
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# This should exactly preserve the semantics of collect_os_local below, which is authoritative
|
39
|
+
# for the API and must adhere to pre-existing ohai semantics and not follow inspec's notion of
|
40
|
+
# os/family/hierarchy.
|
41
|
+
#
|
42
|
+
# Right or wrong the ohai `os` variable has matched the ruby `host_os` definition for the past
|
43
|
+
# 10+ years, preceding inspec/train's definitions and this is the documented correct API of
|
44
|
+
# these methods. Mismatches between the ruby notion and the train version will be fixed as
|
45
|
+
# bugfixes in these methods and may not be considered semver violating even though they make
|
46
|
+
# break downstream consumers. Please ensure that both methods produce the same results if
|
47
|
+
# you are on a platform which supports running ruby (train is considered authoritative for
|
48
|
+
# any "OS" which cannot run ruby -- server consoles, REST APIs, etc...)
|
49
|
+
#
|
50
|
+
# @api private
|
51
|
+
def collect_os_target
|
52
|
+
case
|
53
|
+
when transport_connection.os.aix?
|
54
|
+
"aix"
|
55
|
+
when transport_connection.os.darwin?
|
56
|
+
"darwin"
|
57
|
+
when transport_connection.os.linux?
|
58
|
+
"linux"
|
59
|
+
when transport_connection.os.family == "freebsd"
|
60
|
+
"freebsd"
|
61
|
+
when transport_connection.os.family == "openbsd"
|
62
|
+
"openbsd"
|
63
|
+
when transport_connection.os.family == "netbsd"
|
64
|
+
"netbsd"
|
65
|
+
when transport_connection.os.family == "dragonflybsd"
|
66
|
+
"dragonflybsd"
|
67
|
+
when transport_connection.os.solaris?
|
68
|
+
"solaris2"
|
69
|
+
when transport_connection.os.windows?
|
70
|
+
"windows"
|
71
|
+
|
72
|
+
#
|
73
|
+
# The purpose of the next two lines is that anything which runs Unix is presumed to be able to run ruby, and
|
74
|
+
# if it was not caught above, we MUST translate whatever train uses as the 'os' into the proper ruby host_os
|
75
|
+
# string. If it is not unix and not caught above we assume it is something like a REST API which cannot run
|
76
|
+
# ruby. If these assumptions are incorrect then it is a bug, which should be submitted to fix it, and the
|
77
|
+
# values should not be relied upon until that bug is fixed. The train os is NEVER considered authoritative
|
78
|
+
# for any target which can run ruby.
|
79
|
+
#
|
80
|
+
when transport_connection.os.unix?
|
81
|
+
raise "Target mode unsupported on this Unix-like host, please update the collect_os_target case statement with the correct ruby host_os value."
|
82
|
+
else
|
83
|
+
# now we have something like an IPMI console that isn't Unix-like or Windows, presumably cannot run ruby, and
|
84
|
+
# so we just trust the train O/S information.
|
85
|
+
transport_connection.os.name
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
# @api private
|
90
|
+
def nonruby_target?
|
91
|
+
transport_connection && !transport_connection.os.unix? && !transport_connection.os.windows?
|
92
|
+
end
|
93
|
+
|
94
|
+
# @api private
|
95
|
+
def collect_os_local
|
96
|
+
case ::RbConfig::CONFIG["host_os"]
|
97
|
+
when /aix(.+)$/
|
98
|
+
"aix"
|
99
|
+
when /darwin(.+)$/
|
100
|
+
"darwin"
|
101
|
+
when /linux/
|
102
|
+
"linux"
|
103
|
+
when /freebsd(.+)$/
|
104
|
+
"freebsd"
|
105
|
+
when /openbsd(.+)$/
|
106
|
+
"openbsd"
|
107
|
+
when /netbsd(.*)$/
|
108
|
+
"netbsd"
|
109
|
+
when /dragonfly(.*)$/
|
110
|
+
"dragonflybsd"
|
111
|
+
when /solaris2/
|
112
|
+
"solaris2"
|
113
|
+
when /mswin|mingw|windows/
|
114
|
+
# After long discussion in IRC the "powers that be" have come to a consensus
|
115
|
+
# that no Windows platform exists that was not based on the
|
116
|
+
# Windows_NT kernel, so we herby decree that "windows" will refer to all
|
117
|
+
# platforms built upon the Windows_NT kernel and have access to win32 or win64
|
118
|
+
# subsystems.
|
119
|
+
"windows"
|
120
|
+
else
|
121
|
+
::RbConfig::CONFIG["host_os"]
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
extend self
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
@@ -1,51 +1,51 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
#
|
3
|
-
# Author:: Jonathan Amiez (<jonathan.amiez@gmail.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
|
-
require "net/http" unless defined?(Net::HTTP)
|
19
|
-
|
20
|
-
module Ohai
|
21
|
-
module Mixin
|
22
|
-
module ScalewayMetadata
|
23
|
-
|
24
|
-
SCALEWAY_METADATA_ADDR ||= "169.254.42.42"
|
25
|
-
SCALEWAY_METADATA_URL ||= "/conf?format=json"
|
26
|
-
|
27
|
-
# @return [Net::HTTP] net/http object without timeout set to 6
|
28
|
-
def http_client
|
29
|
-
Net::HTTP.start(SCALEWAY_METADATA_ADDR).tap { |h| h.read_timeout = 6 }
|
30
|
-
end
|
31
|
-
|
32
|
-
# fetch scaleway metadata and parse the resulting JSON
|
33
|
-
#
|
34
|
-
# @return [Hash]
|
35
|
-
def fetch_metadata
|
36
|
-
uri = SCALEWAY_METADATA_URL.to_s
|
37
|
-
response = http_client.get(uri)
|
38
|
-
case response.code
|
39
|
-
when "200"
|
40
|
-
parser = FFI_Yajl::Parser.new
|
41
|
-
parser.parse(response.body)
|
42
|
-
when "404"
|
43
|
-
logger.trace("Mixin ScalewayMetadata: Encountered 404 response retrieving Scaleway metadata: #{uri} ; continuing.")
|
44
|
-
{}
|
45
|
-
else
|
46
|
-
raise "Mixin ScalewayMetadata: Encountered error retrieving Scaleway metadata (#{uri} returned #{response.code} response)"
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
#
|
3
|
+
# Author:: Jonathan Amiez (<jonathan.amiez@gmail.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
|
+
require "net/http" unless defined?(Net::HTTP)
|
19
|
+
|
20
|
+
module Ohai
|
21
|
+
module Mixin
|
22
|
+
module ScalewayMetadata
|
23
|
+
|
24
|
+
SCALEWAY_METADATA_ADDR ||= "169.254.42.42"
|
25
|
+
SCALEWAY_METADATA_URL ||= "/conf?format=json"
|
26
|
+
|
27
|
+
# @return [Net::HTTP] net/http object without timeout set to 6
|
28
|
+
def http_client
|
29
|
+
Net::HTTP.start(SCALEWAY_METADATA_ADDR).tap { |h| h.read_timeout = 6 }
|
30
|
+
end
|
31
|
+
|
32
|
+
# fetch scaleway metadata and parse the resulting JSON
|
33
|
+
#
|
34
|
+
# @return [Hash]
|
35
|
+
def fetch_metadata
|
36
|
+
uri = SCALEWAY_METADATA_URL.to_s
|
37
|
+
response = http_client.get(uri)
|
38
|
+
case response.code
|
39
|
+
when "200"
|
40
|
+
parser = FFI_Yajl::Parser.new
|
41
|
+
parser.parse(response.body)
|
42
|
+
when "404"
|
43
|
+
logger.trace("Mixin ScalewayMetadata: Encountered 404 response retrieving Scaleway metadata: #{uri} ; continuing.")
|
44
|
+
{}
|
45
|
+
else
|
46
|
+
raise "Mixin ScalewayMetadata: Encountered error retrieving Scaleway metadata (#{uri} returned #{response.code} response)"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -1,52 +1,52 @@
|
|
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
|
-
module Ohai
|
21
|
-
module Mixin
|
22
|
-
module SecondsToHuman
|
23
|
-
# given the number of seconds return a day/hours/minutes/seconds human form
|
24
|
-
#
|
25
|
-
# @param seconds [Integer]
|
26
|
-
#
|
27
|
-
# @return String
|
28
|
-
def seconds_to_human(seconds)
|
29
|
-
days = seconds.to_i / 86400
|
30
|
-
seconds -= 86400 * days
|
31
|
-
|
32
|
-
hours = seconds.to_i / 3600
|
33
|
-
seconds -= 3600 * hours
|
34
|
-
|
35
|
-
minutes = seconds.to_i / 60
|
36
|
-
seconds -= 60 * minutes
|
37
|
-
|
38
|
-
if days > 1
|
39
|
-
sprintf("%d days %02d hours %02d minutes %02d seconds", days, hours, minutes, seconds)
|
40
|
-
elsif days == 1
|
41
|
-
sprintf("%d day %02d hours %02d minutes %02d seconds", days, hours, minutes, seconds)
|
42
|
-
elsif hours > 0
|
43
|
-
sprintf("%d hours %02d minutes %02d seconds", hours, minutes, seconds)
|
44
|
-
elsif minutes > 0
|
45
|
-
sprintf("%d minutes %02d seconds", minutes, seconds)
|
46
|
-
else
|
47
|
-
sprintf("%02d seconds", seconds)
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
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
|
+
module Ohai
|
21
|
+
module Mixin
|
22
|
+
module SecondsToHuman
|
23
|
+
# given the number of seconds return a day/hours/minutes/seconds human form
|
24
|
+
#
|
25
|
+
# @param seconds [Integer]
|
26
|
+
#
|
27
|
+
# @return String
|
28
|
+
def seconds_to_human(seconds)
|
29
|
+
days = seconds.to_i / 86400
|
30
|
+
seconds -= 86400 * days
|
31
|
+
|
32
|
+
hours = seconds.to_i / 3600
|
33
|
+
seconds -= 3600 * hours
|
34
|
+
|
35
|
+
minutes = seconds.to_i / 60
|
36
|
+
seconds -= 60 * minutes
|
37
|
+
|
38
|
+
if days > 1
|
39
|
+
sprintf("%d days %02d hours %02d minutes %02d seconds", days, hours, minutes, seconds)
|
40
|
+
elsif days == 1
|
41
|
+
sprintf("%d day %02d hours %02d minutes %02d seconds", days, hours, minutes, seconds)
|
42
|
+
elsif hours > 0
|
43
|
+
sprintf("%d hours %02d minutes %02d seconds", hours, minutes, seconds)
|
44
|
+
elsif minutes > 0
|
45
|
+
sprintf("%d minutes %02d seconds", minutes, seconds)
|
46
|
+
else
|
47
|
+
sprintf("%02d seconds", seconds)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
data/lib/ohai/mixin/shell_out.rb
CHANGED
@@ -1,51 +1,51 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
#
|
3
|
-
# Author:: Adam Jacob (<adam@chef.io>)
|
4
|
-
# Author:: Tim Smith (<tsmith@chef.io>)
|
5
|
-
# Copyright:: Copyright (c) Chef Software Inc.
|
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
|
-
require_relative "../exception"
|
22
|
-
require_relative "../log"
|
23
|
-
|
24
|
-
require "mixlib/shellout/helper" unless defined?(Mixlib::ShellOut::Helper)
|
25
|
-
require_relative "chef_utils_wiring" unless defined?(Ohai::Mixin::ChefUtilsWiring)
|
26
|
-
|
27
|
-
module Ohai
|
28
|
-
module Mixin
|
29
|
-
module ShellOut
|
30
|
-
include Mixlib::ShellOut::Helper
|
31
|
-
include Ohai::Mixin::ChefUtilsWiring
|
32
|
-
|
33
|
-
def shell_out(cmd, **options)
|
34
|
-
options = options.dup
|
35
|
-
# unless specified by the caller timeout after configured timeout (default 30 seconds)
|
36
|
-
options[:timeout] ||= Ohai::Config.ohai[:shellout_timeout]
|
37
|
-
begin
|
38
|
-
so = super(cmd, **options)
|
39
|
-
logger.trace("Plugin #{name}: ran '#{cmd}' and returned #{so.exitstatus}")
|
40
|
-
so
|
41
|
-
rescue Errno::ENOENT => e
|
42
|
-
logger.trace("Plugin #{name}: ran '#{cmd}' and failed #{e.inspect}")
|
43
|
-
raise Ohai::Exceptions::Exec, e
|
44
|
-
rescue Mixlib::ShellOut::CommandTimeout => e
|
45
|
-
logger.trace("Plugin #{name}: ran '#{cmd}' and timed out after #{options[:timeout]} seconds")
|
46
|
-
raise Ohai::Exceptions::Exec, e
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
#
|
3
|
+
# Author:: Adam Jacob (<adam@chef.io>)
|
4
|
+
# Author:: Tim Smith (<tsmith@chef.io>)
|
5
|
+
# Copyright:: Copyright (c) Chef Software Inc.
|
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
|
+
require_relative "../exception"
|
22
|
+
require_relative "../log"
|
23
|
+
|
24
|
+
require "mixlib/shellout/helper" unless defined?(Mixlib::ShellOut::Helper)
|
25
|
+
require_relative "chef_utils_wiring" unless defined?(Ohai::Mixin::ChefUtilsWiring)
|
26
|
+
|
27
|
+
module Ohai
|
28
|
+
module Mixin
|
29
|
+
module ShellOut
|
30
|
+
include Mixlib::ShellOut::Helper
|
31
|
+
include Ohai::Mixin::ChefUtilsWiring
|
32
|
+
|
33
|
+
def shell_out(cmd, **options)
|
34
|
+
options = options.dup
|
35
|
+
# unless specified by the caller timeout after configured timeout (default 30 seconds)
|
36
|
+
options[:timeout] ||= Ohai::Config.ohai[:shellout_timeout]
|
37
|
+
begin
|
38
|
+
so = super(cmd, **options)
|
39
|
+
logger.trace("Plugin #{name}: ran '#{cmd}' and returned #{so.exitstatus}")
|
40
|
+
so
|
41
|
+
rescue Errno::ENOENT => e
|
42
|
+
logger.trace("Plugin #{name}: ran '#{cmd}' and failed #{e.inspect}")
|
43
|
+
raise Ohai::Exceptions::Exec, e
|
44
|
+
rescue Mixlib::ShellOut::CommandTimeout => e
|
45
|
+
logger.trace("Plugin #{name}: ran '#{cmd}' and timed out after #{options[:timeout]} seconds")
|
46
|
+
raise Ohai::Exceptions::Exec, e
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|