ohai 18.1.0 → 18.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6d6704f249d63eb6abebd08dd48e408fee70bd50d5ca2304471bdcc53b80941c
4
- data.tar.gz: f761a02520c31d96e8a8bab3853f5a432d0fb9460b2901dd1a0abe4efdcdcc6b
3
+ metadata.gz: 62cb983e4564cb9d15a8eb0b74bbdfdbf2c515fc2906a46718ad71f8e54fa663
4
+ data.tar.gz: 1b5157e0f291485d13ef5ee96d5b0aa90e274f19d259d1ac15897ea9a9a3bb33
5
5
  SHA512:
6
- metadata.gz: a58f353ea899d897e4fc3cd8aa5dabe9737b8002ceda5483482ac7fceded93d40ef5581ca4e403edaa049e6f43587932945e8f1f125cb88162e31ae424a80865
7
- data.tar.gz: a58f4b0a239f206e2194abacbdbf137931057980745f0b5b9eee528ff314c21a042ae1b88a0325b12a68fc928c77817778d53d89e952bbd9d88410df35a93865
6
+ metadata.gz: 815bce3ce6a1a8b83d0bdcd702581331632fc2239f7eea243261db411c951145bdbdc0c45802acae14ad514bcb390ce7f65fc8c2ef61d9e16b672cdb550e53fe
7
+ data.tar.gz: 98a13a200478051a2898b7d210f944bbdad9fecab0b39ecf7fa54ea0a3104027bcfcced0b22d9b17bf25383830a0386bd5a3cad5cf2ca202adf36a4fd19ffafb
@@ -18,6 +18,9 @@
18
18
 
19
19
  require "net/http" unless defined?(Net::HTTP)
20
20
 
21
+ require_relative "../mixin/json_helper"
22
+ include Ohai::Mixin::JsonHelper
23
+
21
24
  module Ohai
22
25
  module Mixin
23
26
  #
@@ -40,44 +43,28 @@ module Ohai
40
43
 
41
44
  def fetch_metadata(id = "")
42
45
  response = http_get(id)
43
- return nil unless response.code == "200"
44
-
45
- if json?(response.body)
46
- data = String(response.body)
47
- parser = FFI_Yajl::Parser.new
48
- parser.parse(data)
49
- elsif response.body.include?("\n")
50
- temp = {}
51
- response.body.split("\n").each do |sub_attr|
52
- temp[sanitize_key(sub_attr)] = fetch_metadata("#{id}/#{sub_attr}")
46
+ if response.code == "200"
47
+ json_data = parse_json(response.body)
48
+ if json_data.nil?
49
+ logger.warn("Mixin AlibabaMetadata: Metadata response is NOT valid JSON for id='#{id}'")
50
+ if response.body.include?("\n")
51
+ temp = {}
52
+ response.body.split("\n").each do |sub_attr|
53
+ temp[sanitize_key(sub_attr)] = fetch_metadata("#{id}/#{sub_attr}")
54
+ end
55
+ temp
56
+ else
57
+ response.body
58
+ end
59
+ else
60
+ json_data
53
61
  end
54
- temp
55
62
  else
56
- response.body
63
+ logger.warn("Mixin AlibabaMetadata: Received response code #{response.code} requesting metadata for id='#{id}'")
64
+ nil
57
65
  end
58
66
  end
59
67
 
60
- # @param [String] data that might be JSON
61
- #
62
- # @return [Boolean] is the data JSON or not?
63
- def json?(data)
64
- data = String(data)
65
- parser = FFI_Yajl::Parser.new
66
- begin
67
- parser.parse(data)
68
- true
69
- rescue FFI_Yajl::ParseError
70
- false
71
- end
72
- end
73
-
74
- # @param data [String]
75
- #
76
- # @return [Boolean] is there a trailing /?
77
- def has_trailing_slash?(data)
78
- !!( data =~ %r{/$} )
79
- end
80
-
81
68
  def sanitize_key(key)
82
69
  key.gsub(%r{\-|/}, "_")
83
70
  end
@@ -18,6 +18,9 @@
18
18
 
19
19
  require "net/http" unless defined?(Net::HTTP)
20
20
 
21
+ require_relative "../mixin/json_helper"
22
+ include Ohai::Mixin::JsonHelper
23
+
21
24
  module Ohai
22
25
  module Mixin
23
26
  #
@@ -81,26 +84,16 @@ module Ohai
81
84
  conn.get(uri, { "Metadata" => "true" })
82
85
  end
83
86
 
84
- # parse JSON data from a String to a Hash
85
- #
86
- # @param [String] response_body json as string to parse
87
- #
88
- # @return [Hash]
89
- def parse_json(response_body)
90
- data = String(response_body)
91
- parser = FFI_Yajl::Parser.new
92
- parser.parse(data)
93
- rescue FFI_Yajl::ParseError
94
- logger.warn("Mixin AzureMetadata: Metadata response is NOT valid JSON")
95
- nil
96
- end
97
-
98
- def fetch_metadata(api_version = nil)
87
+ def fetch_metadata(_api_version = nil)
99
88
  metadata_url = "/metadata/instance?api-version=#{best_api_version}"
100
89
  logger.trace("Mixin AzureMetadata: Fetching metadata from host #{AZURE_METADATA_ADDR} at #{metadata_url}")
101
90
  response = http_get(metadata_url)
102
91
  if response.code == "200"
103
- parse_json(response.body)
92
+ json_data = parse_json(response.body)
93
+ if json_data.nil?
94
+ logger.warn("Mixin AzureMetadata: Metadata response is NOT valid JSON")
95
+ end
96
+ json_data
104
97
  else
105
98
  logger.warn("Mixin AzureMetadata: Received response code #{response.code} requesting metadata")
106
99
  nil
@@ -20,6 +20,9 @@
20
20
 
21
21
  require "net/http" unless defined?(Net::HTTP)
22
22
 
23
+ require_relative "../mixin/json_helper"
24
+ include Ohai::Mixin::JsonHelper
25
+
23
26
  module Ohai
24
27
  module Mixin
25
28
  ##
@@ -229,9 +232,14 @@ module Ohai
229
232
  @fetch_dynamic_data ||= begin
230
233
  response = http_client.get("/#{best_api_version}/dynamic/instance-identity/document/", { 'X-aws-ec2-metadata-token': v2_token })
231
234
 
232
- if json?(response.body) && response.code == "200"
233
- FFI_Yajl::Parser.parse(response.body)
235
+ if response.code == "200"
236
+ json_data = parse_json(response.body, {})
237
+ if json_data.nil?
238
+ logger.warn("Mixin Ec2Metadata: Metadata response is NOT valid JSON")
239
+ end
240
+ json_data
234
241
  else
242
+ logger.warn("Mixin Ec2Metadata: Received response code #{response.code} requesting metadata")
235
243
  {}
236
244
  end
237
245
  end
@@ -17,6 +17,9 @@
17
17
 
18
18
  require "net/http" unless defined?(Net::HTTP)
19
19
 
20
+ require_relative "../mixin/json_helper"
21
+ include Ohai::Mixin::JsonHelper
22
+
20
23
  module Ohai
21
24
  module Mixin
22
25
  module GCEMetadata
@@ -37,34 +40,25 @@ module Ohai
37
40
 
38
41
  def fetch_metadata(id = "")
39
42
  response = http_get("#{GCE_METADATA_URL}/#{id}")
40
- return nil unless response.code == "200"
41
-
42
- if json?(response.body)
43
- data = String(response.body)
44
- parser = FFI_Yajl::Parser.new
45
- parser.parse(data)
46
- elsif has_trailing_slash?(id) || (id == "")
47
- temp = {}
48
- response.body.split("\n").each do |sub_attr|
49
- temp[sanitize_key(sub_attr)] = fetch_metadata("#{id}#{sub_attr}")
43
+ if response.code == "200"
44
+ json_data = parse_json(response.body)
45
+ if json_data.nil?
46
+ logger.warn("Mixin GCEMetadata: Metadata response is NOT valid JSON for id='#{id}'")
47
+ if has_trailing_slash?(id) || (id == "")
48
+ temp = {}
49
+ response.body.split("\n").each do |sub_attr|
50
+ temp[sanitize_key(sub_attr)] = fetch_metadata("#{id}#{sub_attr}")
51
+ end
52
+ temp
53
+ else
54
+ response.body
55
+ end
56
+ else
57
+ json_data
50
58
  end
51
- temp
52
59
  else
53
- response.body
54
- end
55
- end
56
-
57
- # @param [String] data that might be JSON
58
- #
59
- # @return [Boolean] is the data JSON or not?
60
- def json?(data)
61
- data = String(data)
62
- parser = FFI_Yajl::Parser.new
63
- begin
64
- parser.parse(data)
65
- true
66
- rescue FFI_Yajl::ParseError
67
- false
60
+ logger.warn("Mixin GCEMetadata: Received response code #{response.code} requesting metadata for id='#{id}'")
61
+ nil
68
62
  end
69
63
  end
70
64
 
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+ #
3
+ # Author:: Renato Covarrubias (<rnt@rnt.cl>)
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
+ module Ohai
19
+ module Mixin
20
+ module JsonHelper
21
+ # parse JSON data from a String to a Hash
22
+ #
23
+ # @param [String] response_body json as string to parse
24
+ # @param [Object] return_on_parse_error value to return if parsing fails
25
+ #
26
+ # @return [Hash]
27
+ def parse_json(response_body, return_on_parse_error = nil)
28
+ data = String(response_body)
29
+ parser = FFI_Yajl::Parser.new
30
+ parser.parse(data)
31
+ rescue FFI_Yajl::ParseError
32
+ return_on_parse_error
33
+ end
34
+ end
35
+ end
36
+ end
@@ -18,6 +18,9 @@
18
18
 
19
19
  require "net/http" unless defined?(Net::HTTP)
20
20
 
21
+ require_relative "../mixin/json_helper"
22
+ include Ohai::Mixin::JsonHelper
23
+
21
24
  module Ohai
22
25
  module Mixin
23
26
  module OCIMetadata
@@ -38,27 +41,15 @@ module Ohai
38
41
  )
39
42
  end
40
43
 
41
- # parse JSON data from a String to a Hash
42
- #
43
- # @param [String] response_body json as string to parse
44
- #
45
- # @return [Hash]
46
- def parse_json(response_body)
47
- data = String(response_body)
48
- parser = FFI_Yajl::Parser.new
49
- parser.parse(data)
50
- rescue FFI_Yajl::ParseError
51
- logger.warn("Mixin OciMetadata: Metadata response is NOT valid JSON")
52
- nil
53
- end
54
-
55
44
  # Fetch metadata from api
56
45
  def fetch_metadata(metadata = "instance")
57
46
  response = http_get("#{OCI_METADATA_URL}/#{metadata}")
58
- return nil unless response.code == "200"
59
-
60
47
  if response.code == "200"
61
- parse_json(response.body)
48
+ json_data = parse_json(response.body)
49
+ if json_data.nil?
50
+ logger.warn("Mixin OciMetadata: Metadata response is NOT valid JSON")
51
+ end
52
+ json_data
62
53
  else
63
54
  logger.warn("Mixin OciMetadata: Received response code #{response.code} requesting metadata")
64
55
  nil
@@ -31,7 +31,7 @@ Ohai.plugin(:BlockDevice) do
31
31
  file_open("/sys/block/#{dir}/#{check}") { |f| block[dir][check] = f.read_nonblock(1024).strip }
32
32
  end
33
33
  end
34
- %w{model rev state timeout vendor queue_depth}.each do |check|
34
+ %w{model rev state timeout vendor queue_depth firmware_rev}.each do |check|
35
35
  if file_exist?("/sys/block/#{dir}/device/#{check}")
36
36
  file_open("/sys/block/#{dir}/device/#{check}") { |f| block[dir][check] = f.read_nonblock(1024).strip }
37
37
  end
data/lib/ohai/version.rb CHANGED
@@ -19,5 +19,5 @@
19
19
 
20
20
  module Ohai
21
21
  OHAI_ROOT = File.expand_path(__dir__)
22
- VERSION = "18.1.0"
22
+ VERSION = "18.1.3"
23
23
  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: 18.1.0
4
+ version: 18.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Jacob
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-20 00:00:00.000000000 Z
11
+ date: 2023-03-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: chef-config
@@ -240,6 +240,7 @@ files:
240
240
  - lib/ohai/mixin/ec2_metadata.rb
241
241
  - lib/ohai/mixin/gce_metadata.rb
242
242
  - lib/ohai/mixin/http_helper.rb
243
+ - lib/ohai/mixin/json_helper.rb
243
244
  - lib/ohai/mixin/network_helper.rb
244
245
  - lib/ohai/mixin/oci_metadata.rb
245
246
  - lib/ohai/mixin/os.rb