facter 4.3.1 → 4.4.1

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.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/lib/docs/generate_cli.rb +1 -1
  3. data/lib/facter/custom_facts/core/execution/base.rb +5 -4
  4. data/lib/facter/custom_facts/core/execution/posix.rb +1 -1
  5. data/lib/facter/custom_facts/core/execution/windows.rb +2 -2
  6. data/lib/facter/custom_facts/core/execution.rb +1 -1
  7. data/lib/facter/custom_facts/core/file_loader.rb +23 -24
  8. data/lib/facter/custom_facts/core/legacy_facter.rb +1 -1
  9. data/lib/facter/custom_facts/util/normalization.rb +8 -23
  10. data/lib/facter/custom_facts/util/windows_root.rb +1 -1
  11. data/lib/facter/facts/debian/architecture.rb +1 -1
  12. data/lib/facter/facts/linux/hypervisors/kvm.rb +2 -2
  13. data/lib/facter/facts/linux/os/architecture.rb +1 -1
  14. data/lib/facter/facts/linux/partitions.rb +4 -0
  15. data/lib/facter/facts/linux/processors/isa.rb +1 -10
  16. data/lib/facter/facts/ol/lsbdistdescription.rb +16 -0
  17. data/lib/facter/facts/ol/lsbdistid.rb +16 -0
  18. data/lib/facter/facts/ol/os/distro/description.rb +19 -0
  19. data/lib/facter/facts/ol/os/distro/id.rb +19 -0
  20. data/lib/facter/facts/windows/hypervisors/kvm.rb +2 -2
  21. data/lib/facter/framework/cli/cli_launcher.rb +3 -3
  22. data/lib/facter/framework/config/config_reader.rb +4 -0
  23. data/lib/facter/framework/config/fact_groups.rb +2 -2
  24. data/lib/facter/framework/core/fact_loaders/fact_loader.rb +14 -2
  25. data/lib/facter/framework/core/file_loader.rb +896 -38
  26. data/lib/facter/framework/core/options/config_file_options.rb +4 -0
  27. data/lib/facter/framework/core/options/options_validator.rb +9 -2
  28. data/lib/facter/framework/detector/os_hierarchy.rb +1 -1
  29. data/lib/facter/framework/formatters/legacy_fact_formatter.rb +1 -1
  30. data/lib/facter/framework/formatters/yaml_fact_formatter.rb +2 -2
  31. data/lib/facter/framework/parsers/query_parser.rb +2 -1
  32. data/lib/facter/patches/sysfilesystem/sys/statvfs.rb +4 -4
  33. data/lib/facter/resolvers/aix/architecture.rb +1 -1
  34. data/lib/facter/resolvers/aix/filesystem.rb +1 -1
  35. data/lib/facter/resolvers/aix/hardware.rb +1 -1
  36. data/lib/facter/resolvers/aix/memory.rb +1 -1
  37. data/lib/facter/resolvers/aix/mountpoints.rb +2 -2
  38. data/lib/facter/resolvers/aix/networking.rb +5 -3
  39. data/lib/facter/resolvers/aix/partitions.rb +2 -2
  40. data/lib/facter/resolvers/bsd/processors.rb +1 -1
  41. data/lib/facter/resolvers/freebsd/processors.rb +2 -2
  42. data/lib/facter/resolvers/freebsd/swap_memory.rb +1 -1
  43. data/lib/facter/resolvers/gce.rb +9 -0
  44. data/lib/facter/resolvers/linux/hostname.rb +2 -2
  45. data/lib/facter/resolvers/load_averages.rb +1 -1
  46. data/lib/facter/resolvers/lspci.rb +1 -1
  47. data/lib/facter/resolvers/macosx/swap_memory.rb +1 -1
  48. data/lib/facter/resolvers/networking.rb +1 -1
  49. data/lib/facter/resolvers/open_vz.rb +1 -1
  50. data/lib/facter/resolvers/os_release.rb +3 -3
  51. data/lib/facter/resolvers/selinux.rb +3 -3
  52. data/lib/facter/resolvers/solaris/ffi/functions.rb +5 -3
  53. data/lib/facter/resolvers/solaris/filesystems.rb +1 -1
  54. data/lib/facter/resolvers/solaris/mountpoints.rb +1 -1
  55. data/lib/facter/resolvers/virt_what.rb +6 -6
  56. data/lib/facter/resolvers/windows/ffi/hardware_ffi.rb +2 -2
  57. data/lib/facter/resolvers/windows/ffi/identity_ffi.rb +1 -1
  58. data/lib/facter/resolvers/windows/ffi/kernel_ffi.rb +2 -2
  59. data/lib/facter/resolvers/windows/ffi/memory_ffi.rb +2 -2
  60. data/lib/facter/resolvers/windows/ffi/networking_ffi.rb +3 -3
  61. data/lib/facter/resolvers/windows/ffi/system32_ffi.rb +1 -1
  62. data/lib/facter/resolvers/windows/ffi/winnls_ffi.rb +1 -1
  63. data/lib/facter/resolvers/windows/hardware_architecture.rb +1 -1
  64. data/lib/facter/resolvers/windows/identity.rb +1 -1
  65. data/lib/facter/resolvers/windows/kernel.rb +1 -1
  66. data/lib/facter/resolvers/windows/memory.rb +1 -1
  67. data/lib/facter/resolvers/windows/networking.rb +1 -1
  68. data/lib/facter/resolvers/windows/system32.rb +1 -1
  69. data/lib/facter/resolvers/windows/timezone.rb +1 -1
  70. data/lib/facter/resolvers/windows/virtualization.rb +2 -2
  71. data/lib/facter/resolvers/xen.rb +1 -1
  72. data/lib/facter/util/api_debugger.rb +1 -1
  73. data/lib/facter/util/facts/windows_release_finder.rb +2 -2
  74. data/lib/facter/util/linux/dhcp.rb +1 -1
  75. data/lib/facter/util/resolvers/ffi/hostname.rb +1 -1
  76. data/lib/facter/util/utils.rb +1 -1
  77. data/lib/facter/version.rb +1 -1
  78. data/lib/facter.rb +15 -6
  79. metadata +11 -8
  80. data/lib/facter/facts/windows/augeas/version.rb +0 -19
@@ -13,7 +13,7 @@ module Facter
13
13
  description = input[:description]
14
14
  kernel_version = input[:kernel_version]
15
15
 
16
- if version =~ /10.0/
16
+ if /10.0/.match?(version)
17
17
  check_version_10_11(consumerrel, kernel_version)
18
18
  else
19
19
  check_version_6(version, consumerrel) || check_version_5(version, consumerrel, description) || version
@@ -47,7 +47,7 @@ module Facter
47
47
  end
48
48
 
49
49
  def check_version_5(version, consumerrel, description)
50
- return unless version =~ /5.2/
50
+ return unless /5.2/.match?(version)
51
51
  return 'XP' if consumerrel
52
52
 
53
53
  description == 'R2' ? '2003 R2' : '2003'
@@ -45,7 +45,7 @@ module Facter
45
45
 
46
46
  lease_files.select do |file|
47
47
  content = Facter::Util::FileHelper.safe_read("#{dir}#{file}", nil)
48
- next unless content =~ /interface.*#{interface_name}/
48
+ next unless /interface.*#{interface_name}/.match?(content)
49
49
 
50
50
  dhcp = content.match(/dhcp-server-identifier ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/)
51
51
  return dhcp[1] if dhcp
@@ -36,7 +36,7 @@ module Facter
36
36
  raw_hostname.read_string
37
37
  end
38
38
 
39
- def self.getffiaddrinfo(hostname) # rubocop:disable Metrics/AbcSize
39
+ def self.getffiaddrinfo(hostname)
40
40
  ret = FFI::MemoryPointer.new(:pointer)
41
41
 
42
42
  hints = Facter::Util::Resolvers::Ffi::AddrInfo.new
@@ -14,7 +14,7 @@ module Facter
14
14
 
15
15
  def self.split_user_query(user_query)
16
16
  queries = user_query.split('.')
17
- queries.map! { |query| query =~ /^[0-9]+$/ ? query.to_i : query }
17
+ queries.map! { |query| /^[0-9]+$/.match?(query) ? query.to_i : query }
18
18
  end
19
19
 
20
20
  def self.deep_stringify_keys(object)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Facter
4
- VERSION = '4.3.1' unless defined?(VERSION)
4
+ VERSION = '4.4.1' unless defined?(VERSION)
5
5
  end
data/lib/facter.rb CHANGED
@@ -3,9 +3,9 @@
3
3
  require 'pathname'
4
4
  require_relative 'util/api_debugger' if ENV['API_DEBUG']
5
5
 
6
- require 'facter/version'
7
- require 'facter/framework/core/file_loader'
8
- require 'facter/framework/core/options/options_validator'
6
+ require_relative 'facter/version'
7
+ require_relative 'facter/framework/core/file_loader'
8
+ require_relative 'facter/framework/core/options/options_validator'
9
9
 
10
10
  module Facter
11
11
  class ResolveCustomFactError < StandardError; end
@@ -22,7 +22,7 @@ module Facter
22
22
  #
23
23
  # @api private
24
24
  def resolve(args_as_string)
25
- require 'facter/framework/cli/cli_launcher'
25
+ require_relative 'facter/framework/cli/cli_launcher'
26
26
 
27
27
  args = args_as_string.split(' ')
28
28
  Facter::OptionsValidator.validate(args)
@@ -380,7 +380,14 @@ module Facter
380
380
  resolved_facts = Facter::FactManager.instance.resolve_facts
381
381
  resolved_facts.reject! { |fact| fact.type == :custom && fact.value.nil? }
382
382
  collection = Facter::FactCollection.new.build_fact_collection!(resolved_facts)
383
- Hash[collection]
383
+
384
+ # Ensures order of keys in hash returned from Facter.to_hash() and
385
+ # Facter.resolve() is always stable
386
+ if collection.empty?
387
+ Hash[collection]
388
+ else
389
+ Hash[Facter::Utils.sort_hash_by_key(collection)]
390
+ end
384
391
  end
385
392
 
386
393
  # Check whether printing stack trace is enabled
@@ -510,8 +517,10 @@ module Facter
510
517
  resolved_facts = Facter::FactManager.instance.resolve_facts(user_query)
511
518
  resolved_facts.reject! { |fact| fact.type == :custom && fact.value.nil? }
512
519
 
520
+ # Ensures order of keys in hash returned from Facter.to_hash() and
521
+ # Facter.resolve() is always stable
513
522
  if user_query.count.zero?
514
- Facter::FactCollection.new.build_fact_collection!(resolved_facts)
523
+ Facter::Utils.sort_hash_by_key(Facter::FactCollection.new.build_fact_collection!(resolved_facts))
515
524
  else
516
525
  FormatterHelper.retrieve_facts_to_display_for_user_query(user_query, resolved_facts)
517
526
  end
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.3.1
4
+ version: 4.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-04-04 00:00:00.000000000 Z
11
+ date: 2023-06-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -16,20 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '12.3'
19
+ version: '13.0'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 12.3.3
22
+ version: 13.0.6
23
23
  type: :development
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: '12.3'
29
+ version: '13.0'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 12.3.3
32
+ version: 13.0.6
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: rspec
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -649,6 +649,10 @@ files:
649
649
  - lib/facter/facts/mariner/os/release.rb
650
650
  - lib/facter/facts/meego/os/release.rb
651
651
  - lib/facter/facts/oel/os/release.rb
652
+ - lib/facter/facts/ol/lsbdistdescription.rb
653
+ - lib/facter/facts/ol/lsbdistid.rb
654
+ - lib/facter/facts/ol/os/distro/description.rb
655
+ - lib/facter/facts/ol/os/distro/id.rb
652
656
  - lib/facter/facts/ol/os/release.rb
653
657
  - lib/facter/facts/openwrt/os/release.rb
654
658
  - lib/facter/facts/ovs/os/release.rb
@@ -776,7 +780,6 @@ files:
776
780
  - lib/facter/facts/ubuntu/os/distro/release.rb
777
781
  - lib/facter/facts/ubuntu/os/release.rb
778
782
  - lib/facter/facts/windows/aio_agent_version.rb
779
- - lib/facter/facts/windows/augeas/version.rb
780
783
  - lib/facter/facts/windows/az_metadata.rb
781
784
  - lib/facter/facts/windows/cloud/provider.rb
782
785
  - lib/facter/facts/windows/dhcp_servers.rb
@@ -1085,7 +1088,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1085
1088
  - !ruby/object:Gem::Version
1086
1089
  version: '0'
1087
1090
  requirements: []
1088
- rubygems_version: 3.1.6
1091
+ rubygems_version: 3.4.12
1089
1092
  signing_key:
1090
1093
  specification_version: 4
1091
1094
  summary: Facter, a system inventory tool
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Facts
4
- module Windows
5
- module Augeas
6
- class Version
7
- FACT_NAME = 'augeas.version'
8
- ALIASES = 'augeasversion'
9
-
10
- def call_the_resolver
11
- fact_value = Facter::Resolvers::Augeas.resolve(:augeas_version)
12
-
13
- [Facter::ResolvedFact.new(FACT_NAME, fact_value),
14
- Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
15
- end
16
- end
17
- end
18
- end
19
- end