facter 4.1.1 → 4.2.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.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +202 -0
  3. data/lib/facter.rb +11 -17
  4. data/lib/facter/config.rb +2 -0
  5. data/lib/facter/custom_facts/core/execution/posix.rb +2 -2
  6. data/lib/facter/custom_facts/core/execution/windows.rb +1 -1
  7. data/lib/facter/custom_facts/core/file_loader.rb +0 -1
  8. data/lib/facter/custom_facts/core/legacy_facter.rb +0 -2
  9. data/lib/facter/custom_facts/core/resolvable.rb +1 -1
  10. data/lib/facter/custom_facts/util/collection.rb +6 -4
  11. data/lib/facter/custom_facts/util/confine.rb +9 -3
  12. data/lib/facter/custom_facts/util/directory_loader.rb +19 -7
  13. data/lib/facter/custom_facts/util/fact.rb +12 -10
  14. data/lib/facter/custom_facts/util/loader.rb +5 -1
  15. data/lib/facter/custom_facts/util/parser.rb +8 -2
  16. data/lib/facter/custom_facts/util/resolution.rb +5 -1
  17. data/lib/facter/custom_facts/util/windows_root.rb +2 -1
  18. data/lib/facter/facts/freebsd/is_virtual.rb +1 -5
  19. data/lib/facter/facts/freebsd/virtual.rb +1 -2
  20. data/lib/facter/facts/linux/az_metadata.rb +1 -5
  21. data/lib/facter/facts/linux/cloud/provider.rb +1 -5
  22. data/lib/facter/facts/linux/ec2_metadata.rb +1 -5
  23. data/lib/facter/facts/linux/ec2_userdata.rb +1 -5
  24. data/lib/facter/facts/linux/hypervisors/xen.rb +1 -2
  25. data/lib/facter/facts/linux/is_virtual.rb +1 -5
  26. data/lib/facter/facts/linux/virtual.rb +1 -2
  27. data/lib/facter/facts/macosx/os/macosx/version.rb +6 -3
  28. data/lib/facter/facts/windows/az_metadata.rb +1 -1
  29. data/lib/facter/facts/windows/cloud/provider.rb +1 -1
  30. data/lib/facter/facts/windows/ec2_metadata.rb +1 -1
  31. data/lib/facter/facts/windows/ec2_userdata.rb +1 -1
  32. data/lib/facter/facts/windows/gce.rb +1 -1
  33. data/lib/facter/facts/windows/hypervisors/hyperv.rb +1 -1
  34. data/lib/facter/facts/windows/hypervisors/kvm.rb +2 -1
  35. data/lib/facter/facts/windows/hypervisors/virtualbox.rb +2 -2
  36. data/lib/facter/facts/windows/hypervisors/vmware.rb +1 -1
  37. data/lib/facter/facts/windows/hypervisors/xen.rb +3 -1
  38. data/lib/facter/facts/windows/is_virtual.rb +15 -0
  39. data/lib/facter/facts/windows/virtual.rb +15 -0
  40. data/lib/facter/framework/cli/cli.rb +13 -15
  41. data/lib/facter/framework/core/cache_manager.rb +2 -2
  42. data/lib/facter/framework/core/fact/external/external_fact_manager.rb +0 -1
  43. data/lib/facter/framework/core/fact/internal/internal_fact_manager.rb +39 -39
  44. data/lib/facter/framework/core/fact_filter.rb +4 -14
  45. data/lib/facter/framework/core/fact_loaders/fact_loader.rb +0 -1
  46. data/lib/facter/framework/core/fact_manager.rb +11 -0
  47. data/lib/facter/framework/core/file_loader.rb +1 -1
  48. data/lib/facter/framework/logging/logger.rb +61 -0
  49. data/lib/facter/framework/parsers/query_parser.rb +6 -16
  50. data/lib/facter/models/fact_collection.rb +20 -3
  51. data/lib/facter/models/resolved_fact.rb +2 -3
  52. data/lib/facter/models/searched_fact.rb +2 -3
  53. data/lib/facter/resolvers/ec2.rb +8 -1
  54. data/lib/facter/resolvers/linux/networking.rb +18 -1
  55. data/lib/facter/resolvers/lsb_release.rb +1 -2
  56. data/lib/facter/resolvers/mountpoints.rb +16 -8
  57. data/lib/facter/resolvers/networking.rb +3 -1
  58. data/lib/facter/resolvers/os_release.rb +7 -4
  59. data/lib/facter/resolvers/partitions.rb +1 -3
  60. data/lib/facter/resolvers/ruby.rb +1 -1
  61. data/lib/facter/resolvers/windows/ffi/identity_ffi.rb +5 -0
  62. data/lib/facter/resolvers/windows/ffi/kernel_ffi.rb +1 -1
  63. data/lib/facter/resolvers/windows/identity.rb +1 -6
  64. data/lib/facter/resolvers/windows/virtualization.rb +46 -44
  65. data/lib/facter/resolvers/xen.rb +6 -1
  66. data/lib/facter/util/facts/posix/virtual_detector.rb +74 -0
  67. data/lib/facter/util/linux/dhcp.rb +4 -1
  68. data/lib/facter/util/linux/if_inet6.rb +73 -0
  69. data/lib/facter/util/linux/socket_parser.rb +17 -2
  70. data/lib/facter/version.rb +1 -1
  71. metadata +48 -11
  72. data/lib/facter/custom_facts/core/logging.rb +0 -203
  73. data/lib/facter/facts/windows/virtualization/is_virtual.rb +0 -17
  74. data/lib/facter/facts/windows/virtualization/virtual.rb +0 -17
  75. data/lib/facter/framework/core/fact_augmenter.rb +0 -54
  76. data/lib/facter/util/facts/virtual_detector.rb +0 -83
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Facts
4
- module Windows
5
- module Virtualization
6
- class IsVirtual
7
- FACT_NAME = 'is_virtual'
8
-
9
- def call_the_resolver
10
- fact_value = Facter::Resolvers::Virtualization.resolve(:is_virtual)
11
-
12
- Facter::ResolvedFact.new(FACT_NAME, fact_value)
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Facts
4
- module Windows
5
- module Virtualization
6
- class Virtual
7
- FACT_NAME = 'virtual'
8
-
9
- def call_the_resolver
10
- fact_value = Facter::Resolvers::Virtualization.resolve(:virtual)
11
-
12
- Facter::ResolvedFact.new(FACT_NAME, fact_value)
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,54 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Facter
4
- module FactAugmenter
5
- def self.augment_resolved_facts(searched_facts, resolved_facts)
6
- augumented_resolved_facts = []
7
- searched_facts.each do |searched_fact|
8
- matched_facts = get_resolved_facts_for_searched_fact(searched_fact, resolved_facts)
9
- augment_resolved_fact_for_user_query!(searched_fact, matched_facts)
10
- augumented_resolved_facts.concat(matched_facts)
11
- end
12
-
13
- augumented_resolved_facts
14
- end
15
-
16
- private_class_method def self.get_resolved_facts_for_searched_fact(searched_fact, resolved_facts)
17
- if searched_fact.name.include?('.*')
18
- resolved_facts
19
- .select { |resolved_fact| resolved_fact.name.match(searched_fact.name) }
20
- .reject(&:user_query)
21
- .uniq(&:name)
22
- else
23
- resolved_facts.select do |resolved_fact|
24
- valid_fact(searched_fact, resolved_fact)
25
- end.reject(&:user_query).uniq(&:name)
26
- end
27
- end
28
-
29
- private_class_method def self.augment_resolved_fact_for_user_query!(searched_fact, matched_facts)
30
- matched_facts.each do |matched_fact|
31
- matched_fact.user_query = searched_fact.user_query
32
- matched_fact.filter_tokens = searched_fact.filter_tokens
33
- end
34
- end
35
-
36
- private_class_method def self.valid_fact(searched_fact, resolved_fact)
37
- return false unless searched_fact.name.eql?(resolved_fact.name)
38
-
39
- if searched_fact.filter_tokens.any?
40
- case resolved_fact.value
41
- when Array, Hash
42
- begin
43
- resolved_fact.value.dig(*searched_fact.filter_tokens)
44
- rescue TypeError
45
- return false
46
- end
47
- else
48
- return false
49
- end
50
- end
51
- true
52
- end
53
- end
54
- end
@@ -1,83 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Facter
4
- module Util
5
- module Facts
6
- class VirtualDetector
7
- def initialize
8
- @log = Facter::Log.new(self)
9
- end
10
-
11
- def platform
12
- @@fact_value ||= check_docker_lxc || check_freebsd || check_gce || retrieve_from_virt_what
13
- @@fact_value ||= check_vmware || check_open_vz || check_vserver || check_xen || check_other_facts
14
- @@fact_value ||= check_lspci || 'physical'
15
-
16
- @@fact_value
17
- end
18
-
19
- private
20
-
21
- def check_docker_lxc
22
- @log.debug('Checking Docker and LXC')
23
- Facter::Resolvers::Containers.resolve(:vm)
24
- end
25
-
26
- def check_gce
27
- @log.debug('Checking GCE')
28
- bios_vendor = Facter::Resolvers::Linux::DmiBios.resolve(:bios_vendor)
29
- 'gce' if bios_vendor&.include?('Google')
30
- end
31
-
32
- def check_vmware
33
- @log.debug('Checking VMware')
34
- Facter::Resolvers::Vmware.resolve(:vm)
35
- end
36
-
37
- def retrieve_from_virt_what
38
- @log.debug('Checking virtual_what')
39
- Facter::Resolvers::VirtWhat.resolve(:vm)
40
- end
41
-
42
- def check_open_vz
43
- @log.debug('Checking OpenVZ')
44
- Facter::Resolvers::OpenVz.resolve(:vm)
45
- end
46
-
47
- def check_vserver
48
- @log.debug('Checking VServer')
49
- Facter::Resolvers::VirtWhat.resolve(:vserver)
50
- end
51
-
52
- def check_xen
53
- @log.debug('Checking XEN')
54
- Facter::Resolvers::Xen.resolve(:vm)
55
- end
56
-
57
- def check_freebsd
58
- return unless Object.const_defined?('Facter::Resolvers::Freebsd::Virtual')
59
-
60
- @log.debug('Checking if jailed')
61
- Facter::Resolvers::Freebsd::Virtual.resolve(:vm)
62
- end
63
-
64
- def check_other_facts
65
- @log.debug('Checking others')
66
- product_name = Facter::Resolvers::Linux::DmiBios.resolve(:product_name)
67
- bios_vendor = Facter::Resolvers::Linux::DmiBios.resolve(:bios_vendor)
68
- return 'kvm' if bios_vendor&.include?('Amazon EC2')
69
- return unless product_name
70
-
71
- Facter::Util::Facts::HYPERVISORS_HASH.each { |key, value| return value if product_name.include?(key) }
72
-
73
- nil
74
- end
75
-
76
- def check_lspci
77
- @log.debug('Checking lspci')
78
- Facter::Resolvers::Lspci.resolve(:vm)
79
- end
80
- end
81
- end
82
- end
83
- end