facter 4.0.19 → 4.0.20

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: 0d0b6c2e99da8558c39308375676c59ef7f6f1d7ce0859dc449118ce0206be3d
4
- data.tar.gz: ee96b051c6644a7de2978efbcf48c911497950341a119430061808bb9838267c
3
+ metadata.gz: baceb04e072102e0f18534a903fc7e0ead2f76d2d4f81dd49a64e325a22a0f7d
4
+ data.tar.gz: b63826bac2fef312e1745b2b2591e77a3d8a1e4b7fd019d3f77019660161d48c
5
5
  SHA512:
6
- metadata.gz: 6df1544a2c552dd38ee5013d9391aedfd539306f772ee7a020779370bcb9769a0c55a4cc376e65a970352e5fc7930df5252a49b4e4e5246d6bca42937b19cf16
7
- data.tar.gz: 66681be65dc00cb5c58ae3c8f5275ee42e6065ef28acef9ded42476d1f1ab35db754e8d8738f86f838352f14ff4b365349ccd22bef5531061a67107553cb271e
6
+ metadata.gz: 205b507dab7c7253b8d58f8e76ba664ac10545bfb3fca3b5d7649248546edf5f31fccd52c654d2d38691b48f8a30bf70b7731008b747260ba0a258775fdf231a
7
+ data.tar.gz: 5ca2bf79afe491abe2b8ace592ab269eedb9ff97e041cd39ea145c7d4da055863076432acb0eecd64a367b326c1d06621aab6545d9109093f99783c409e06945
@@ -6,7 +6,7 @@
6
6
  # Note that changes in the inspected code, or installation of new
7
7
  # versions of RuboCop, may require this file to be generated again.
8
8
 
9
- # Offense count: 80
9
+ # Offense count: 81
10
10
  # Configuration parameters: CustomTransform, IgnoreMethods.
11
11
  RSpec/FilePath:
12
12
  Exclude:
@@ -37,6 +37,7 @@ RSpec/FilePath:
37
37
  - 'spec/facter/resolvers/aix/architecture_resolver_spec.rb'
38
38
  - 'spec/facter/resolvers/aix/ffi_helper_spec.rb'
39
39
  - 'spec/facter/resolvers/aix/hardware_resolver_spec.rb'
40
+ - 'spec/facter/resolvers/bsd/ffi_helper_spec.rb'
40
41
  - 'spec/facter/resolvers/disk_resolver_spec.rb'
41
42
  - 'spec/facter/resolvers/dmi_resolver_spec.rb'
42
43
  - 'spec/facter/resolvers/filesystems_resolver_spec.rb'
@@ -191,7 +192,7 @@ RSpec/SubjectStub:
191
192
  - 'spec/custom_facts/util/fact_spec.rb'
192
193
  - 'spec/custom_facts/util/resolution_spec.rb'
193
194
 
194
- # Offense count: 169
195
+ # Offense count: 180
195
196
  # Configuration parameters: IgnoreNameless, IgnoreSymbolicNames.
196
197
  RSpec/VerifiedDoubles:
197
198
  Exclude:
@@ -227,6 +228,7 @@ RSpec/VerifiedDoubles:
227
228
  - 'spec/facter/resolvers/aix/architecture_resolver_spec.rb'
228
229
  - 'spec/facter/resolvers/aix/ffi_helper_spec.rb'
229
230
  - 'spec/facter/resolvers/aix/hardware_resolver_spec.rb'
231
+ - 'spec/facter/resolvers/bsd/ffi_helper_spec.rb'
230
232
  - 'spec/facter/resolvers/macosx/mountpoints_resolver_spec.rb'
231
233
  - 'spec/facter/resolvers/mountpoints_resolver_spec.rb'
232
234
  - 'spec/facter/resolvers/solaris/current_zone_resolver_spec.rb'
@@ -1,5 +1,22 @@
1
1
 
2
2
 
3
+ ## [4.0.20](https://github.com/puppetlabs/facter-ng/tree/4.0.20) (2020-05-06)
4
+
5
+ [Full Changelog](https://github.com/puppetlabs/facter-ng/compare/4.0.19...4.0.20)
6
+
7
+ ### Added
8
+
9
+ - Add \*BSD kernelversion and kernelmajversion facts [\#462](https://github.com/puppetlabs/facter-ng/pull/462) ([smortex](https://github.com/smortex))
10
+ - Fix os.family fact on \*BSD [\#461](https://github.com/puppetlabs/facter-ng/pull/461) ([smortex](https://github.com/smortex))
11
+ - Add support for \*BSD load averages [\#460](https://github.com/puppetlabs/facter-ng/pull/460) ([smortex](https://github.com/smortex))
12
+
13
+ ### Fixed
14
+
15
+ - \(FACT-2590\) No facts are displayed on Redhat 5 and Centos6 [\#484](https://github.com/puppetlabs/facter-ng/pull/484) ([IrimieBogdan](https://github.com/IrimieBogdan))
16
+ - \(FACT-2530\) Fix for tests/facts/os\_processors\_and\_kernel.rb [\#449](https://github.com/puppetlabs/facter-ng/pull/449) ([oanatmaria](https://github.com/oanatmaria))
17
+
18
+
19
+
3
20
  ## [4.0.19](https://github.com/puppetlabs/facter-ng/tree/4.0.19) (2020-04-29)
4
21
 
5
22
  [Full Changelog](https://github.com/puppetlabs/facter-ng/compare/4.0.18...4.0.19)
data/Rakefile CHANGED
@@ -9,7 +9,7 @@ Dir.glob(File.join('tasks/**/*.rake')).each { |file| load file }
9
9
  task default: :spec
10
10
 
11
11
  def retrieve_from_keyboard
12
- return unless ARGV =~ /changelog/
12
+ return unless ARGV.include?('changelog')
13
13
 
14
14
  puts "Please provide the next release tag:\n"
15
15
  next_version = $stdin.gets.chomp
data/VERSION CHANGED
@@ -1 +1 @@
1
- 4.0.19
1
+ 4.0.20
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Bsd
5
+ class Kernelmajversion
6
+ FACT_NAME = 'kernelmajversion'
7
+
8
+ def call_the_resolver
9
+ full_version = Facter::Resolvers::Uname.resolve(:kernelrelease)
10
+ versions_split = full_version.split('.')
11
+ major_version = versions_split[0]
12
+ Facter::ResolvedFact.new(FACT_NAME, major_version)
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Bsd
5
+ class Kernelversion
6
+ FACT_NAME = 'kernelversion'
7
+
8
+ def call_the_resolver
9
+ fact_value = Facter::Resolvers::Uname.resolve(:kernelrelease).sub(/\A(\d+(\.\d+)*).*/, '\1')
10
+ Facter::ResolvedFact.new(FACT_NAME, fact_value)
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Bsd
5
+ class LoadAverages
6
+ FACT_NAME = 'load_averages'
7
+
8
+ def call_the_resolver
9
+ fact_value = Facter::Resolvers::Bsd::LoadAverages.resolve(:load_averages)
10
+ Facter::ResolvedFact.new(FACT_NAME, fact_value)
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Bsd
5
+ module Os
6
+ class Family
7
+ FACT_NAME = 'os.family'
8
+ ALIASES = 'osfamily'
9
+
10
+ def call_the_resolver
11
+ fact_value = Facter::Resolvers::Uname.resolve(:kernelname)
12
+
13
+ [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -10,14 +10,7 @@ module Facts
10
10
  def call_the_resolver
11
11
  fact_value = determine_release_for_os
12
12
 
13
- return Facter::ResolvedFact.new(FACT_NAME, nil) unless fact_value
14
-
15
- versions = fact_value.split('.')
16
- release = {}
17
- release['full'] = fact_value
18
- release['major'] = versions[0]
19
- release['minor'] = versions[1].gsub(/^0([1-9])/, '\1') if versions[1]
20
- Facter::ResolvedFact.new(FACT_NAME, release)
13
+ Facter::ResolvedFact.new(FACT_NAME, fact_value)
21
14
  end
22
15
 
23
16
  private
@@ -26,9 +19,23 @@ module Facts
26
19
  os_name = Facter::Resolvers::OsRelease.resolve(:name)
27
20
 
28
21
  if os_name =~ /Debian|Raspbian/
29
- Facter::Resolvers::DebianVersion.resolve(:version)
22
+ release = Facter::Resolvers::DebianVersion.resolve(:version)
23
+ return unless release
24
+
25
+ versions = release.split('.')
26
+ fact_value = {}
27
+ fact_value['full'] = release
28
+ fact_value['major'] = versions[0]
29
+ fact_value['minor'] = versions[1].gsub(/^0([1-9])/, '\1') if versions[1]
30
+ fact_value
30
31
  else
31
- Facter::Resolvers::OsRelease.resolve(:version_id)
32
+ release = Facter::Resolvers::OsRelease.resolve(:version_id)
33
+ return unless release
34
+
35
+ {
36
+ 'full' => release,
37
+ 'major' => release
38
+ }
32
39
  end
33
40
  end
34
41
  end
@@ -10,17 +10,11 @@ module Facts
10
10
  def call_the_resolver
11
11
  fact_value = determine_release_for_os
12
12
 
13
- return Facter::ResolvedFact.new(FACT_NAME, nil) unless fact_value
13
+ return Facter::ResolvedFact.new(FACT_NAME, fact_value) unless fact_value
14
14
 
15
- versions = fact_value.split('.')
16
- release = {}
17
- release['full'] = fact_value
18
- release['major'] = versions[0]
19
- release['minor'] = versions[1].gsub(/^0([1-9])/, '\1') if versions[1]
20
-
21
- [Facter::ResolvedFact.new(FACT_NAME, release),
22
- Facter::ResolvedFact.new(ALIASES.first, versions[0], :legacy),
23
- Facter::ResolvedFact.new(ALIASES.last, fact_value, :legacy)]
15
+ [Facter::ResolvedFact.new(FACT_NAME, fact_value),
16
+ Facter::ResolvedFact.new(ALIASES.first, fact_value['major'], :legacy),
17
+ Facter::ResolvedFact.new(ALIASES.last, fact_value['full'], :legacy)]
24
18
  end
25
19
 
26
20
  private
@@ -29,9 +23,23 @@ module Facts
29
23
  os_name = Facter::Resolvers::OsRelease.resolve(:name)
30
24
 
31
25
  if os_name =~ /Debian|Raspbian/
32
- Facter::Resolvers::DebianVersion.resolve(:version)
26
+ release = Facter::Resolvers::DebianVersion.resolve(:version)
27
+ return unless release
28
+
29
+ versions = release.split('.')
30
+ fact_value = {}
31
+ fact_value['full'] = release
32
+ fact_value['major'] = versions[0]
33
+ fact_value['minor'] = versions[1].gsub(/^0([1-9])/, '\1') if versions[1]
34
+ fact_value
33
35
  else
34
- Facter::Resolvers::OsRelease.resolve(:version_id)
36
+ release = Facter::Resolvers::OsRelease.resolve(:version_id)
37
+ return unless release
38
+
39
+ {
40
+ 'full' => release,
41
+ 'major' => release
42
+ }
35
43
  end
36
44
  end
37
45
  end
@@ -8,6 +8,7 @@ class OsDetector
8
8
  attr_reader :identifier, :version, :hierarchy
9
9
 
10
10
  def initialize(*_args)
11
+ @log = Facter::Log.new(self)
11
12
  @os_hierarchy = Facter::OsHierarchy.new
12
13
  @identifier = detect
13
14
  end
@@ -39,8 +40,15 @@ class OsDetector
39
40
 
40
41
  def detect_hierarchy(identifier)
41
42
  hierarchy = @os_hierarchy.construct_hierarchy(identifier)
42
- hierarchy = @os_hierarchy.construct_hierarchy(detect_family) if hierarchy.empty?
43
- hierarchy = @os_hierarchy.construct_hierarchy(:linux) if hierarchy.empty?
43
+ if hierarchy.empty?
44
+ @log.debug("Could not detect hierarchy using os identifier: #{identifier} , trying with family")
45
+ hierarchy = @os_hierarchy.construct_hierarchy(detect_family)
46
+ end
47
+
48
+ if hierarchy.empty?
49
+ @log.debug("Could not detect hierarchy using family #{detect_family}, falling back to Linux")
50
+ hierarchy = @os_hierarchy.construct_hierarchy(:linux)
51
+ end
44
52
 
45
53
  hierarchy
46
54
  end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ffi'
4
+
5
+ module Facter
6
+ module Bsd
7
+ module FfiHelper
8
+ module Libc
9
+ extend FFI::Library
10
+
11
+ ffi_lib 'c'
12
+ attach_function :getloadavg, %i[pointer int], :int
13
+ end
14
+
15
+ def self.read_load_averages
16
+ raw_loadavg = FFI::MemoryPointer.new(:double, 3)
17
+
18
+ res = Libc.getloadavg(raw_loadavg, 3)
19
+ return unless res == 3
20
+
21
+ raw_loadavg.read_array_of_double(res)
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facter
4
+ module Resolvers
5
+ module Bsd
6
+ class LoadAverages < BaseResolver
7
+ @semaphore = Mutex.new
8
+ @fact_list ||= {}
9
+ class << self
10
+ private
11
+
12
+ def post_resolve(fact_name)
13
+ @fact_list.fetch(fact_name) { read_load_averages(fact_name) }
14
+ end
15
+
16
+ def read_load_averages(fact_name)
17
+ require_relative 'ffi/ffi_helper'
18
+ @fact_list[:load_averages] = %w[1m 5m 15m].zip(Facter::Bsd::FfiHelper.read_load_averages).to_h
19
+
20
+ @fact_list[fact_name]
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -36,6 +36,7 @@ module Facter
36
36
 
37
37
  fill_fact_list(pairs)
38
38
  process_name
39
+ pad_version_id
39
40
 
40
41
  @fact_list[fact_name]
41
42
  end
@@ -47,6 +48,10 @@ module Facter
47
48
  @fact_list[:identifier] = @fact_list[:id]
48
49
  end
49
50
 
51
+ def pad_version_id
52
+ @fact_list[:version_id] = "#{@fact_list[:version_id]}.0" unless @fact_list[:version_id] =~ /\./
53
+ end
54
+
50
55
  def process_name
51
56
  return unless @fact_list[:name]
52
57
 
@@ -12,7 +12,8 @@
12
12
  "El": [
13
13
  "Fedora",
14
14
  "Amzn",
15
- "Centos"
15
+ "Centos",
16
+ "Rhel"
16
17
  ]
17
18
  },
18
19
  {
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: facter
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.19
4
+ version: 4.0.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-29 00:00:00.000000000 Z
11
+ date: 2020-05-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -287,6 +287,10 @@ files:
287
287
  - lib/facts/aix/system_uptime/uptime.rb
288
288
  - lib/facts/aix/timezone.rb
289
289
  - lib/facts/bsd/bsd_example_fact.rb
290
+ - lib/facts/bsd/kernelmajversion.rb
291
+ - lib/facts/bsd/kernelversion.rb
292
+ - lib/facts/bsd/load_averages.rb
293
+ - lib/facts/bsd/os/family.rb
290
294
  - lib/facts/debian/augeas/version.rb
291
295
  - lib/facts/debian/disks.rb
292
296
  - lib/facts/debian/dmi/bios/release_date.rb
@@ -803,6 +807,8 @@ files:
803
807
  - lib/resolvers/aix/utils/odm_query.rb
804
808
  - lib/resolvers/augeas_resolver.rb
805
809
  - lib/resolvers/base_resolver.rb
810
+ - lib/resolvers/bsd/ffi/ffi_helper.rb
811
+ - lib/resolvers/bsd/load_averages_resolver.rb
806
812
  - lib/resolvers/debian_version.rb
807
813
  - lib/resolvers/disk_resolver.rb
808
814
  - lib/resolvers/dmi_resolver.rb