ohai 14.3.0 → 14.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 63dacc5848d269ab4c734b26cfd943b4918d5cdfbe640fce1b8b1804a9094198
4
- data.tar.gz: '0885d6bbffe839c17f2683f75c11cae64b2177c2e12effeefa8abd09b5198a16'
3
+ metadata.gz: 1a0ff48c97fc8f901992098c99017a30e676368e4e7fb2ad1aa997bdcb88b49c
4
+ data.tar.gz: 0a5ba9acc9bc9dd07c4720fd295cde3738f35af3b3209b8427da966040bd0e23
5
5
  SHA512:
6
- metadata.gz: 815b9e031ecece77af44c06828dadd7c95db98d651b8b732c4b5b8d95376676905cd48ea3ba02bb409f38d65ca796c1707df9b880cbcae09305c1638257a454b
7
- data.tar.gz: dc225e37afcc613a73c6ed3f02b47718052263a43d7c66d2dbf763e9955ed60860d600f7f33b584a1fefa3a610e8524995fe08680eb74fa817871e0b2d14278b
6
+ metadata.gz: d646c6259b0d415ae8c30370e40e27f87ea3f3ebc10c730e98457f2020fe8c3222a2c611be3a46fa16a108070f6d0ecf761e30c002b6c2b4f39b10e5f32db976
7
+ data.tar.gz: 9475c71f49b3fadb9d9e1b5da81d2ae18ac984e37005b25d283a0bf093f22bba48cbeb574c22d3e11256751813391d2ce8e9ead474a6943eb39b968731e8255e
data/Rakefile CHANGED
@@ -22,14 +22,3 @@ require "rubocop/rake_task"
22
22
  RuboCop::RakeTask.new(:style) do |task|
23
23
  task.options += ["--display-cop-names", "--no-color"]
24
24
  end
25
-
26
- begin
27
- require "github_changelog_generator/task"
28
-
29
- GitHubChangelogGenerator::RakeTask.new :changelog do |config|
30
- config.future_release = Ohai::VERSION
31
- config.max_issues = 0
32
- config.add_issues_wo_labels = false
33
- end
34
- rescue LoadError
35
- end
@@ -34,8 +34,11 @@ class Ohai::Application
34
34
  option :directory,
35
35
  short: "-d DIRECTORY",
36
36
  long: "--directory DIRECTORY",
37
- description: "A directory to add to the Ohai plugin search path",
38
- proc: lambda { |path| Ohai::Config.platform_specific_path(path) }
37
+ description: "A directory to add to the Ohai plugin search path. If passing multiple directories use this option more than once.",
38
+ proc: lambda { |path, path_array|
39
+ (path_array ||= []) << Ohai::Config.platform_specific_path(path)
40
+ path_array
41
+ }
39
42
 
40
43
  option :log_level,
41
44
  short: "-l LEVEL",
data/lib/ohai/config.rb CHANGED
@@ -40,6 +40,7 @@ module Ohai
40
40
  default :run_all_plugins, false
41
41
  # optional plugins are the set of plugins that are marked optional but you wish to run.
42
42
  default :optional_plugins, []
43
+ default :shellout_timeout, 30
43
44
  end
44
45
  end
45
46
 
@@ -108,11 +108,8 @@ module Ohai
108
108
  # @param block [block] the actual code to collect data for the specified platforms
109
109
  def self.collect_data(platform = :default, *other_platforms, &block)
110
110
  [platform, other_platforms].flatten.each do |plat|
111
- if data_collector.key?(plat)
112
- raise Ohai::Exceptions::IllegalPluginDefinition, "collect_data already defined on platform #{plat}"
113
- else
114
- data_collector[plat] = block
115
- end
111
+ Ohai::Log.warn("collect_data already defined on platform '#{plat}' for #{self}, last plugin seen will be used") if data_collector.key?(plat)
112
+ data_collector[plat] = block
116
113
  end
117
114
  end
118
115
 
@@ -28,8 +28,8 @@ module Ohai
28
28
  # accept a command and any of the mixlib-shellout options
29
29
  def shell_out(cmd, **options)
30
30
  options = options.dup
31
- # unless specified by the caller timeout after 30 seconds
32
- options[:timeout] ||= 30
31
+ # unless specified by the caller timeout after configured timeout (default 30 seconds)
32
+ options[:timeout] ||= Ohai::Config.ohai[:shellout_timeout]
33
33
  unless RUBY_PLATFORM =~ /mswin|mingw32|windows/
34
34
  options[:env] = options.key?(:env) ? options[:env].dup : {}
35
35
  options[:env]["PATH"] ||= ((ENV["PATH"] || "").split(":") + %w{/usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin}).join(":")
@@ -0,0 +1,30 @@
1
+ #
2
+ # Author:: Stuart Preston (<stuart@chef.io>)
3
+ # Copyright:: Copyright (c) 2018, 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 :SystemEnclosure do
20
+ provides "system_enclosure"
21
+
22
+ collect_data(:windows) do
23
+ require "wmi-lite/wmi"
24
+ system_enclosure Mash.new
25
+ wmi = WmiLite::Wmi.new
26
+ wmi_object = wmi.first_of("Win32_SystemEnclosure").wmi_ole_object
27
+ system_enclosure[:manufacturer] = wmi_object.invoke("manufacturer")
28
+ system_enclosure[:serialnumber] = wmi_object.invoke("serialnumber")
29
+ end
30
+ end
data/lib/ohai/system.rb CHANGED
@@ -176,9 +176,13 @@ module Ohai
176
176
  def configure_ohai
177
177
  Ohai.config.merge!(@config)
178
178
 
179
- if Ohai.config[:directory] &&
180
- !Ohai.config[:plugin_path].include?(Ohai.config[:directory])
181
- Ohai.config[:plugin_path] << Ohai.config[:directory]
179
+ # add any additional CLI passed directories to the plugin path excluding duplicates
180
+ unless Ohai.config[:directory].nil?
181
+ # make sure the directory config is an array since it could be a string set in client.rb
182
+ Array(Ohai.config[:directory]).each do |dir|
183
+ next if Ohai.config[:plugin_path].include?(dir)
184
+ Ohai.config[:plugin_path] << dir
185
+ end
182
186
  end
183
187
 
184
188
  logger.debug("Running Ohai with the following configuration: #{Ohai.config.configuration}")
data/lib/ohai/version.rb CHANGED
@@ -18,5 +18,5 @@
18
18
 
19
19
  module Ohai
20
20
  OHAI_ROOT = File.expand_path(File.dirname(__FILE__))
21
- VERSION = "14.3.0".freeze
21
+ VERSION = "14.4.0".freeze
22
22
  end
data/ohai.gemspec CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |s|
17
17
 
18
18
  s.add_dependency "systemu", "~> 2.6.4"
19
19
  s.add_dependency "ffi-yajl", "~> 2.2"
20
- s.add_dependency "mixlib-cli"
20
+ s.add_dependency "mixlib-cli", ">= 1.7.0" # 1.7+ needed to support passing multiple options
21
21
  s.add_dependency "mixlib-config", "~> 2.0"
22
22
  s.add_dependency "mixlib-log", "~> 2.0", ">= 2.0.1"
23
23
  s.add_dependency "mixlib-shellout", "~> 2.0"
@@ -519,21 +519,20 @@ describe Ohai::DSL::Plugin::VersionVII do
519
519
  end
520
520
 
521
521
  it "fails a platform has already been defined in the same plugin" do
522
- expect do
523
- Ohai.plugin(:Test) do
524
- collect_data {}
525
- collect_data {}
526
- end
527
- end.to raise_error(Ohai::Exceptions::IllegalPluginDefinition, /collect_data already defined/)
522
+ Ohai.plugin(:Test) { collect_data {} }
523
+ expect(Ohai::Log).to receive(:warn).with(/collect_data already defined on platform/).twice
524
+ Ohai.plugin(:Test) do
525
+ collect_data {}
526
+ collect_data {}
527
+ end
528
528
  end
529
529
 
530
530
  it "fails if a platform has already been defined in another plugin file" do
531
531
  Ohai.plugin(:Test) { collect_data {} }
532
- expect do
533
- Ohai.plugin(:Test) do
534
- collect_data {}
535
- end
536
- end.to raise_error(Ohai::Exceptions::IllegalPluginDefinition, /collect_data already defined/)
532
+ expect(Ohai::Log).to receive(:warn).with(/collect_data already defined on platform/)
533
+ Ohai.plugin(:Test) do
534
+ collect_data {}
535
+ end
537
536
  end
538
537
  end
539
538
 
@@ -130,7 +130,7 @@ EOF
130
130
 
131
131
  describe "when the plugin defines collect_data on the same platform more than once" do
132
132
  it "shoud log an illegal plugin definition warning" do
133
- expect(loader.logger).to receive(:warn).with(/Plugin Definition Error: <#{path_to("illegal_def.rb")}>:/)
133
+ expect(Ohai::Log).to receive(:warn).with(/collect_data already defined on platform/)
134
134
  loader.load_plugin(path_to("illegal_def.rb"))
135
135
  end
136
136
 
@@ -0,0 +1,45 @@
1
+ #
2
+ # Author:: Stuart Preston (<stuart@chef.io>)
3
+ # Copyright:: Copyright (c) 2018, 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
+ require_relative "../../../spec_helper.rb"
20
+
21
+ describe Ohai::System, "System Enclosure", :windows_only do
22
+ before do
23
+ require "wmi-lite/wmi"
24
+ @plugin = get_plugin("windows/system_enclosure")
25
+ manufacturer = double("WIN32OLE", name: "manufacturer", value: "My Fake Manufacturer")
26
+ serialnumber = double("WIN32OLE", name: "serialnumber", value: "1234123412341234")
27
+ property_map = [ manufacturer, serialnumber ]
28
+
29
+ wmi_ole_object = double( "WIN32OLE", properties_: property_map)
30
+ allow(wmi_ole_object).to receive(:invoke).with(manufacturer.name).and_return(manufacturer.value)
31
+ allow(wmi_ole_object).to receive(:invoke).with(serialnumber.name).and_return(serialnumber.value)
32
+ wmi_object = WmiLite::Wmi::Instance.new(wmi_ole_object)
33
+ expect_any_instance_of(WmiLite::Wmi).to receive(:first_of).with(("Win32_SystemEnclosure")).and_return(wmi_object)
34
+ end
35
+
36
+ it "should return the manufacturer" do
37
+ @plugin.run
38
+ expect(@plugin["system_enclosure"]["manufacturer"]).to eql("My Fake Manufacturer")
39
+ end
40
+
41
+ it "should return a serial number" do
42
+ @plugin.run
43
+ expect(@plugin["system_enclosure"]["serialnumber"]).to eql("1234123412341234")
44
+ end
45
+ end
@@ -38,7 +38,7 @@ describe "Ohai::System" do
38
38
  it "merges provided configuration options into the ohai config context" do
39
39
  config = {
40
40
  disabled_plugins: [ :Foo, :Baz ],
41
- directory: "/some/extra/plugins",
41
+ directory: ["/some/extra/plugins"],
42
42
  critical_plugins: [ :Foo, :Bar ],
43
43
  }
44
44
  Ohai::System.new(config)
@@ -47,13 +47,24 @@ describe "Ohai::System" do
47
47
  end
48
48
  end
49
49
 
50
- context "when directory is configured" do
50
+ context "when a single directory is configured as a string" do
51
51
  let(:directory) { "/some/fantastic/plugins" }
52
52
 
53
53
  it "adds directory to plugin_path" do
54
54
  Ohai.config[:directory] = directory
55
55
  Ohai::System.new({ invoked_from_cli: true })
56
- expect(Ohai.config[:plugin_path]).to include(directory)
56
+ expect(Ohai.config[:plugin_path]).to include("/some/fantastic/plugins")
57
+ end
58
+ end
59
+
60
+ context "when multiple directories are configured" do
61
+ let(:directory) { ["/some/fantastic/plugins", "/some/other/plugins"] }
62
+
63
+ it "adds directories to plugin_path" do
64
+ Ohai.config[:directory] = directory
65
+ Ohai::System.new({ invoked_from_cli: true })
66
+ expect(Ohai.config[:plugin_path]).to include("/some/fantastic/plugins")
67
+ expect(Ohai.config[:plugin_path]).to include("/some/other/plugins")
57
68
  end
58
69
  end
59
70
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ohai
3
3
  version: !ruby/object:Gem::Version
4
- version: 14.3.0
4
+ version: 14.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Jacob
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-09 00:00:00.000000000 Z
11
+ date: 2018-08-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: systemu
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: 1.7.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: 1.7.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: mixlib-config
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -336,6 +336,7 @@ files:
336
336
  - lib/ohai/plugins/windows/memory.rb
337
337
  - lib/ohai/plugins/windows/network.rb
338
338
  - lib/ohai/plugins/windows/platform.rb
339
+ - lib/ohai/plugins/windows/system_enclosure.rb
339
340
  - lib/ohai/plugins/windows/virtualization.rb
340
341
  - lib/ohai/plugins/zpools.rb
341
342
  - lib/ohai/provides_map.rb
@@ -513,6 +514,7 @@ files:
513
514
  - spec/unit/plugins/windows/fips_spec.rb
514
515
  - spec/unit/plugins/windows/kernel_spec.rb
515
516
  - spec/unit/plugins/windows/memory_spec.rb
517
+ - spec/unit/plugins/windows/system_enclosure_spec.rb
516
518
  - spec/unit/plugins/windows/uptime_spec.rb
517
519
  - spec/unit/plugins/windows/virtualization_spec.rb
518
520
  - spec/unit/plugins/zpools_spec.rb
@@ -541,7 +543,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
541
543
  version: '0'
542
544
  requirements: []
543
545
  rubyforge_project:
544
- rubygems_version: 2.7.5
546
+ rubygems_version: 2.7.6
545
547
  signing_key:
546
548
  specification_version: 4
547
549
  summary: Ohai profiles your system and emits JSON