ohai 8.23.0 → 8.24.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 89282c58ac1e24456ce207bd1a1c32fb0985ddb1
4
- data.tar.gz: 3ba00373a8b89ebca6c67321df854d71191ab451
3
+ metadata.gz: 07d099fa68ce5783f29292000c8bb150e29b96a0
4
+ data.tar.gz: 5c7b6897d48af717c7371227a03c2897f3f30522
5
5
  SHA512:
6
- metadata.gz: 838cfac284099378f5ca37317abe23598e7610370ca94406c3fbe98a9a775c955f40ec2c5391985a5a555a04317f0653d71a380c1e812d855810f8047b3dace4
7
- data.tar.gz: e09dc27cc5ad660bfbd8433b72579a581ce979167c20063c9bfb2bfc12cdc2b741c65e1bbdf3457afacd41ee1f43b52f2f5f8d8b22e9d6d69049e47bc3562deb
6
+ metadata.gz: e34a92fa1e6c2ca35a92ea1d3ef1be961a5b178dd788eddabc8b77ba57fd02e7b4ccbe25c80a3271ea4c91a165ab60372b60654933661bd5afbcf5db5c663594
7
+ data.tar.gz: 432e34cc2e643412f89db7d7919cd6fda6a5c332233c22b495919fda103824a88c28d5973b8980061b315d835bf72722d998615591838980564a1dbb5771c3ac
data/Gemfile CHANGED
@@ -5,7 +5,7 @@ gemspec
5
5
  group :development do
6
6
  gem "sigar", :platform => "ruby"
7
7
 
8
- gem "chefstyle"
8
+ gem "chefstyle", "0.4.0"
9
9
  gem "overcommit", ">= 0.34.1"
10
10
  gem "pry-byebug"
11
11
  gem "pry-stack_explorer"
@@ -65,6 +65,9 @@ module Ohai
65
65
  37 => "memory_channel",
66
66
  38 => "ipmi_device",
67
67
  39 => "power_supply",
68
+ 40 => "additional_information",
69
+ 41 => "onboard_devices_extended_information",
70
+ 42 => "management_controller_host_interfaces",
68
71
  126 => "disabled_entries",
69
72
  127 => "end_of_table_marker",
70
73
  }
@@ -47,7 +47,7 @@ module Ohai
47
47
  end
48
48
 
49
49
  def default_plugin_path
50
- [ File.expand_path(File.join(File.dirname(__FILE__), "plugins")) ]
50
+ [ File.expand_path(File.join(File.dirname(__FILE__), "plugins")), ChefConfig::Config.platform_specific_path("/etc/chef/ohai/plugins") ]
51
51
  end
52
52
  end
53
53
 
@@ -40,7 +40,7 @@ module Ohai
40
40
  # Finds all the *.rb files under the configured paths in :plugin_path
41
41
  def self.find_all_in(plugin_dir)
42
42
  unless Dir.exist?(plugin_dir)
43
- Ohai::Log.warn("The plugin path #{plugin_dir} does not exist. Skipping...")
43
+ Ohai::Log.info("The plugin path #{plugin_dir} does not exist. Skipping...")
44
44
  return []
45
45
  end
46
46
 
@@ -2,7 +2,7 @@
2
2
  # Author:: Tim Dysinger (<tim@dysinger.net>)
3
3
  # Author:: Benjamin Black (<bb@chef.io>)
4
4
  # Author:: Christopher Brown (<cb@chef.io>)
5
- # Copyright:: Copyright (c) 2009-2016 Chef Software, Inc.
5
+ # Copyright:: 2009-2017 Chef Software, Inc.
6
6
  # License:: Apache License, Version 2.0
7
7
  #
8
8
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -43,7 +43,7 @@ module Ohai
43
43
  EC2_METADATA_ADDR = "169.254.169.254" unless defined?(EC2_METADATA_ADDR)
44
44
  EC2_SUPPORTED_VERSIONS = %w{ 1.0 2007-01-19 2007-03-01 2007-08-29 2007-10-10 2007-12-15
45
45
  2008-02-01 2008-09-01 2009-04-04 2011-01-01 2011-05-01 2012-01-12
46
- 2014-11-05 2014-02-25 }
46
+ 2014-11-05 2014-02-25 2016-04-19 2016-06-30 2016-09-02}
47
47
 
48
48
  EC2_ARRAY_VALUES = %w{security-groups}
49
49
  EC2_ARRAY_DIR = %w{network/interfaces/macs}
@@ -97,6 +97,8 @@ Ohai.plugin(:EC2) do
97
97
  end
98
98
  ec2[:userdata] = fetch_userdata
99
99
  ec2[:account_id] = fetch_dynamic_data["accountId"]
100
+ ec2[:availability_zone] = fetch_dynamic_data["availabilityZone"]
101
+ ec2[:region] = fetch_dynamic_data["region"]
100
102
  # ASCII-8BIT is equivalent to BINARY in this case
101
103
  if ec2[:userdata] && ec2[:userdata].encoding.to_s == "ASCII-8BIT"
102
104
  Ohai::Log.debug("Plugin EC2: Binary UserData Found. Storing in base64")
@@ -1,6 +1,8 @@
1
1
  #
2
2
  # Author:: Tim Smith <tsmith@limelight.com>
3
+ # Author:: Phil Dibowitz <phild@ipomc.com>
3
4
  # Copyright:: Copyright (c) 2013-2014, Limelight Networks, Inc.
5
+ # Copyright:: Copyright (c) 2017 Facebook, Inc.
4
6
  # Plugin:: mdadm
5
7
  #
6
8
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -52,15 +54,19 @@ Ohai.plugin(:Mdadm) do
52
54
  collect_data(:linux) do
53
55
  # gather a list of all raid arrays
54
56
  if File.exist?("/proc/mdstat")
55
- devices = []
57
+ devices = {}
56
58
  File.open("/proc/mdstat").each do |line|
57
- devices << Regexp.last_match[1] if line =~ /(md[0-9]+)/
59
+ if line =~ /(md[0-9]+)/
60
+ device = Regexp.last_match[1]
61
+ pieces = line.split(/\s+/)
62
+ devices[device] = pieces[4..-1].map { |s| s.match(/(.+)\[\d\]/)[1] }
63
+ end
58
64
  end
59
65
 
60
66
  # create the mdadm mash and gather individual information if devices are present
61
67
  unless devices.empty?
62
68
  mdadm Mash.new
63
- devices.sort.each do |device|
69
+ devices.keys.sort.each do |device|
64
70
  mdadm[device] = Mash.new
65
71
 
66
72
  # gather detailed information on the array
@@ -68,6 +74,7 @@ Ohai.plugin(:Mdadm) do
68
74
 
69
75
  # if the mdadm command was sucessful pass so.stdout to create_raid_device_mash to grab the tidbits we want
70
76
  mdadm[device] = create_raid_device_mash(so.stdout) if so.stdout
77
+ mdadm[device]["members"] = devices[device]
71
78
  end
72
79
  end
73
80
  end
@@ -27,7 +27,9 @@ Ohai.plugin(:Lua) do
27
27
  # Lua 5.2.4 Copyright (C) 1994-2015 Lua.org, PUC-Rio
28
28
  if so.exitstatus == 0
29
29
  lua = Mash.new
30
- lua[:version] = so.stderr.split[1]
30
+ # at some point in lua's history they went from outputting the version
31
+ # on stderr to doing it on stdout. This handles old / new versions
32
+ lua[:version] = so.stdout.empty? ? so.stderr.split[1] : so.stdout.split[1]
31
33
  languages[:lua] = lua if lua[:version]
32
34
  end
33
35
  rescue Ohai::Exceptions::Exec
@@ -23,9 +23,10 @@ Ohai.plugin(:Scala) do
23
23
  begin
24
24
  so = shell_out("scala -version")
25
25
  # Sample output:
26
- # Scala code runner version 2.11.8 -- Copyright 2002-2016, LAMP/EPFL
26
+ # cat: /release: No such file or directory
27
+ # Scala code runner version 2.12.1 -- Copyright 2002-2016, LAMP/EPFL and Lightbend, Inc.
27
28
  if so.exitstatus == 0
28
- scala[:version] = so.stderr.split[4]
29
+ scala[:version] = so.stderr.match(/.*version (\S*)/)[1]
29
30
  end
30
31
  rescue Ohai::Exceptions::Exec
31
32
  Ohai::Log.debug('Plugin Scala: Could not shell_out "scala -version". Skipping data')
@@ -34,7 +35,7 @@ Ohai.plugin(:Scala) do
34
35
  # Check for sbt
35
36
  begin
36
37
  # sbt launcher version 0.13.7
37
- so = shell_out("sbt --version")
38
+ so = shell_out("sbt --version", timeout: 5)
38
39
  if so.exitstatus == 0
39
40
  scala[:sbt] = Mash.new
40
41
  scala[:sbt][:version] = so.stdout.split[3]
@@ -28,6 +28,7 @@ require "ohai/mixin/constant_helper"
28
28
  require "ohai/provides_map"
29
29
  require "ohai/hints"
30
30
  require "mixlib/shellout"
31
+ require "ohai/config"
31
32
 
32
33
  module Ohai
33
34
  class System
@@ -18,5 +18,5 @@
18
18
 
19
19
  module Ohai
20
20
  OHAI_ROOT = File.expand_path(File.dirname(__FILE__))
21
- VERSION = "8.23.0"
21
+ VERSION = "8.24.0"
22
22
  end
@@ -25,15 +25,11 @@ Gem::Specification.new do |s|
25
25
  s.add_dependency "ipaddress"
26
26
  s.add_dependency "wmi-lite", "~> 1.0"
27
27
  s.add_dependency "ffi", "~> 1.9"
28
+ s.add_dependency "chef-config", ">= 12.5.0.alpha.1", "< 14"
28
29
  # Note for ohai developers: If chef-config causes you grief, try:
29
30
  # bundle install --with development
30
31
  # this should work as long as chef is a development dependency in Gemfile.
31
32
  #
32
- # Chef depends on ohai and chef-config. Ohai depends on chef-config. The
33
- # version of chef-config that chef depends on is whatver version chef
34
- # happens to be on master. This will need to be updated again once work on
35
- # Chef 13 starts, otherwise builds will break.
36
- s.add_dependency "chef-config", ">= 12.5.0.alpha.1", "< 13"
37
33
 
38
34
  s.bindir = "bin"
39
35
  s.executables = %w{ohai}
@@ -222,7 +222,7 @@ EOF
222
222
 
223
223
  describe "when plugin directory does not exist" do
224
224
  it "logs an invalid plugin path warning" do
225
- expect(Ohai::Log).to receive(:warn).with(/The plugin path.*does not exist/)
225
+ expect(Ohai::Log).to receive(:info).with(/The plugin path.*does not exist/)
226
226
  allow(Dir).to receive(:exist?).with("/bogus/dir").and_return(false)
227
227
  Ohai::Loader::PluginFile.find_all_in("/bogus/dir")
228
228
  end
@@ -127,6 +127,49 @@ describe Ohai::System, "plugin ec2" do
127
127
  expect(plugin[:ec2]["account_id"]).to eq("4815162342")
128
128
  end
129
129
 
130
+ it "fetches AWS region" do
131
+ paths.each do |name, body|
132
+ expect(@http_client).to receive(:get).
133
+ with("/2012-01-12/#{name}").
134
+ and_return(double("Net::HTTP Response", :body => body, :code => "200"))
135
+ end
136
+ expect(@http_client).to receive(:get).
137
+ with("/2012-01-12/user-data/").
138
+ and_return(double("Net::HTTP Response", :body => "^_<8B>^H^H<C7>U^@^Csomething^@KT<C8><C9>,)<C9>IU(I-.I<CB><CC>I<E5>^B^@^Qz<BF><B0>^R^@^@^@", :code => "200"))
139
+ expect(@http_client).to receive(:get).
140
+ with("/2012-01-12/dynamic/instance-identity/document/").
141
+ and_return(double("Net::HTTP Response", :body => "{\"region\":\"us-east-1\"}", :code => "200"))
142
+
143
+ plugin.run
144
+
145
+ expect(plugin[:ec2]).not_to be_nil
146
+ expect(plugin[:ec2]["instance_type"]).to eq("c1.medium")
147
+ expect(plugin[:ec2]["ami_id"]).to eq("ami-5d2dc934")
148
+ expect(plugin[:ec2]["security_groups"]).to eql %w{group1 group2}
149
+ expect(plugin[:ec2]["region"]).to eq("us-east-1")
150
+ end
151
+
152
+ it "fetches AWS availability zone" do
153
+ paths.each do |name, body|
154
+ expect(@http_client).to receive(:get).
155
+ with("/2012-01-12/#{name}").
156
+ and_return(double("Net::HTTP Response", :body => body, :code => "200"))
157
+ end
158
+ expect(@http_client).to receive(:get).
159
+ with("/2012-01-12/user-data/").
160
+ and_return(double("Net::HTTP Response", :body => "^_<8B>^H^H<C7>U^@^Csomething^@KT<C8><C9>,)<C9>IU(I-.I<CB><CC>I<E5>^B^@^Qz<BF><B0>^R^@^@^@", :code => "200"))
161
+ expect(@http_client).to receive(:get).
162
+ with("/2012-01-12/dynamic/instance-identity/document/").
163
+ and_return(double("Net::HTTP Response", :body => "{\"availabilityZone\":\"us-east-1d\"}", :code => "200"))
164
+
165
+ plugin.run
166
+
167
+ expect(plugin[:ec2]).not_to be_nil
168
+ expect(plugin[:ec2]["instance_type"]).to eq("c1.medium")
169
+ expect(plugin[:ec2]["ami_id"]).to eq("ami-5d2dc934")
170
+ expect(plugin[:ec2]["security_groups"]).to eql %w{group1 group2}
171
+ expect(plugin[:ec2]["availability_zone"]).to eq("us-east-1d")
172
+ end
130
173
  end
131
174
 
132
175
  it "parses ec2 network/ directory as a multi-level hash" do
@@ -99,6 +99,12 @@ MD
99
99
  end
100
100
  end
101
101
 
102
+ it "should detect member devies" do
103
+ @plugin.run
104
+ expect(@plugin[:mdadm][:md0][:members].sort).to eq(
105
+ %w{sdc sdd sde sdf sdg sdh}
106
+ )
107
+ end
102
108
  end
103
109
 
104
110
  end
@@ -26,8 +26,8 @@ describe Ohai::System, "plugin lua" do
26
26
 
27
27
  before(:each) do
28
28
  plugin[:languages] = Mash.new
29
- @stderr = "Lua 5.1.2 Copyright (C) 1994-2008 Lua.org, PUC-Rio\n"
30
- allow(plugin).to receive(:shell_out).with("lua -v").and_return(mock_shell_out(0, "", @stderr))
29
+ @message = "Lua 5.1.2 Copyright (C) 1994-2008 Lua.org, PUC-Rio\n"
30
+ allow(plugin).to receive(:shell_out).with("lua -v").and_return(mock_shell_out(0, "", @message))
31
31
  end
32
32
 
33
33
  it "gets the lua version from running lua -v" do
@@ -51,4 +51,10 @@ describe Ohai::System, "plugin lua" do
51
51
  plugin.run
52
52
  expect(plugin.languages).not_to have_key(:lua)
53
53
  end
54
+
55
+ it "sets languages[:lua][:version] when 'lua -v' returns output on stdout not stderr" do
56
+ allow(plugin).to receive(:shell_out).with("lua -v").and_return(mock_shell_out(0, @message, ""))
57
+ plugin.run
58
+ expect(plugin.languages[:lua][:version]).to eql("5.1.2")
59
+ end
54
60
  end
@@ -33,7 +33,7 @@ describe Ohai::System, "plugin scala" do
33
33
  .with("scala -version")
34
34
  .and_return(mock_shell_out(0, "", scala_out))
35
35
  allow(plugin).to receive(:shell_out)
36
- .with("sbt --version")
36
+ .with("sbt --version", { :timeout => 5 })
37
37
  .and_return(mock_shell_out(0, sbt_out, ""))
38
38
  end
39
39
 
@@ -80,7 +80,7 @@ describe Ohai::System, "plugin scala" do
80
80
  .and_return(mock_shell_out(0, "", scala_out))
81
81
 
82
82
  allow(plugin).to receive(:shell_out)
83
- .with("sbt --version")
83
+ .with("sbt --version", { :timeout => 5 })
84
84
  .and_raise( Ohai::Exceptions::Exec )
85
85
  plugin.run
86
86
  end
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: 8.23.0
4
+ version: 8.24.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: 2017-01-24 00:00:00.000000000 Z
11
+ date: 2017-05-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: systemu
@@ -165,7 +165,7 @@ dependencies:
165
165
  version: 12.5.0.alpha.1
166
166
  - - "<"
167
167
  - !ruby/object:Gem::Version
168
- version: '13'
168
+ version: '14'
169
169
  type: :runtime
170
170
  prerelease: false
171
171
  version_requirements: !ruby/object:Gem::Requirement
@@ -175,7 +175,7 @@ dependencies:
175
175
  version: 12.5.0.alpha.1
176
176
  - - "<"
177
177
  - !ruby/object:Gem::Version
178
- version: '13'
178
+ version: '14'
179
179
  description: Ohai profiles your system and emits JSON
180
180
  email: adam@chef.io
181
181
  executables:
@@ -546,7 +546,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
546
546
  version: '0'
547
547
  requirements: []
548
548
  rubyforge_project:
549
- rubygems_version: 2.5.2
549
+ rubygems_version: 2.6.11
550
550
  signing_key:
551
551
  specification_version: 4
552
552
  summary: Ohai profiles your system and emits JSON