facter 4.0.19 → 4.0.20

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: 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