facter 4.0.47 → 4.0.48

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 (94) hide show
  1. checksums.yaml +4 -4
  2. data/lib/facter.rb +0 -1
  3. data/lib/facter/config.rb +1 -2
  4. data/lib/facter/custom_facts/util/fact.rb +19 -1
  5. data/lib/facter/custom_facts/util/resolution.rb +1 -1
  6. data/lib/facter/facts/aix/disks.rb +1 -1
  7. data/lib/facter/facts/aix/ssh.rb +1 -1
  8. data/lib/facter/facts/aix/sshalgorithmkey.rb +1 -1
  9. data/lib/facter/facts/aix/sshfp_algorithm.rb +1 -1
  10. data/lib/facter/facts/freebsd/ssh.rb +1 -1
  11. data/lib/facter/facts/freebsd/sshalgorithmkey.rb +1 -1
  12. data/lib/facter/facts/freebsd/sshfp_algorithm.rb +1 -1
  13. data/lib/facter/facts/linux/disks.rb +1 -1
  14. data/lib/facter/facts/linux/os/family.rb +4 -2
  15. data/lib/facter/facts/linux/ssh.rb +1 -1
  16. data/lib/facter/facts/linux/sshalgorithmkey.rb +1 -1
  17. data/lib/facter/facts/linux/sshfp_algorithm.rb +1 -1
  18. data/lib/facter/facts/macosx/ssh.rb +1 -1
  19. data/lib/facter/facts/macosx/sshalgorithmkey.rb +1 -1
  20. data/lib/facter/facts/macosx/sshfp_algorithm.rb +1 -1
  21. data/lib/facter/facts/solaris/disks.rb +1 -1
  22. data/lib/facter/facts/solaris/ssh.rb +1 -1
  23. data/lib/facter/facts/solaris/sshalgorithmkey.rb +1 -1
  24. data/lib/facter/facts/solaris/sshfp_algorithm.rb +1 -1
  25. data/lib/facter/facts/windows/networking/fqdn.rb +1 -1
  26. data/lib/facter/framework/core/options/option_store.rb +3 -1
  27. data/lib/facter/framework/detector/os_detector.rb +1 -0
  28. data/lib/facter/resolvers/aix/{architecture_resolver.rb → architecture.rb} +0 -0
  29. data/lib/facter/resolvers/aix/{filesystem_resolver.rb → filesystem.rb} +0 -0
  30. data/lib/facter/resolvers/aix/{hardware_resolver.rb → hardware.rb} +0 -0
  31. data/lib/facter/resolvers/aix/{load_averages_resolver.rb → load_averages.rb} +0 -0
  32. data/lib/facter/resolvers/aix/{networking_resolver.rb → networking.rb} +0 -0
  33. data/lib/facter/resolvers/{augeas_resolver.rb → augeas.rb} +0 -0
  34. data/lib/facter/resolvers/{disk_resolver.rb → disk.rb} +0 -0
  35. data/lib/facter/resolvers/{dmi_resolver.rb → dmi.rb} +0 -0
  36. data/lib/facter/resolvers/{eos_release_resolver.rb → eos_release.rb} +0 -0
  37. data/lib/facter/resolvers/{facterversion_resolver.rb → facterversion.rb} +0 -0
  38. data/lib/facter/resolvers/{filesystems_resolver.rb → filesystems.rb} +0 -0
  39. data/lib/facter/resolvers/{fips_enabled_resolver.rb → fips_enabled.rb} +0 -0
  40. data/lib/facter/resolvers/freebsd/{dmi_resolver.rb → dmi.rb} +0 -0
  41. data/lib/facter/resolvers/freebsd/{freebsd_version_resolver.rb → freebsd_version.rb} +0 -0
  42. data/lib/facter/resolvers/freebsd/{geom_resolver.rb → geom.rb} +0 -0
  43. data/lib/facter/resolvers/freebsd/{swap_memory_resolver.rb → swap_memory.rb} +0 -0
  44. data/lib/facter/resolvers/freebsd/{system_memory_resolver.rb → system_memory.rb} +0 -0
  45. data/lib/facter/resolvers/freebsd/{virtual_resolver.rb → virtual.rb} +0 -0
  46. data/lib/facter/resolvers/{hostname_resolver.rb → hostname.rb} +0 -0
  47. data/lib/facter/resolvers/{identity_resolver.rb → identity.rb} +0 -0
  48. data/lib/facter/resolvers/{lpar_resolver.rb → lpar.rb} +0 -0
  49. data/lib/facter/resolvers/{lsb_release_resolver.rb → lsb_release.rb} +0 -0
  50. data/lib/facter/resolvers/macosx/{dmi_resolver.rb → dmi.rb} +0 -0
  51. data/lib/facter/resolvers/macosx/{filesystems_resolver.rb → filesystems.rb} +0 -0
  52. data/lib/facter/resolvers/macosx/{load_averages_resolver.rb → load_averages.rb} +0 -0
  53. data/lib/facter/resolvers/macosx/{mountpoints_resolver.rb → mountpoints.rb} +0 -0
  54. data/lib/facter/resolvers/macosx/{processor_resolver.rb → processor.rb} +0 -0
  55. data/lib/facter/resolvers/macosx/{swap_memory_resolver.rb → swap_memory.rb} +0 -0
  56. data/lib/facter/resolvers/macosx/{system_memory_resolver.rb → system_memory.rb} +0 -0
  57. data/lib/facter/resolvers/macosx/{system_profiler_resolver.rb → system_profiler.rb} +0 -0
  58. data/lib/facter/resolvers/{memory_resolver.rb → memory.rb} +0 -0
  59. data/lib/facter/resolvers/{mountpoints_resolver.rb → mountpoints.rb} +0 -0
  60. data/lib/facter/resolvers/{networking_resolver.rb → networking.rb} +0 -0
  61. data/lib/facter/resolvers/networking_linux.rb +296 -0
  62. data/lib/facter/resolvers/{os_release_resolver.rb → os_release.rb} +0 -0
  63. data/lib/facter/resolvers/{path_resolver.rb → path.rb} +0 -0
  64. data/lib/facter/resolvers/{processors_resolver.rb → processors.rb} +0 -0
  65. data/lib/facter/resolvers/{redhat_release_resolver.rb → redhat_release.rb} +0 -0
  66. data/lib/facter/resolvers/{ruby_resolver.rb → ruby.rb} +0 -0
  67. data/lib/facter/resolvers/{selinux_resolver.rb → selinux.rb} +0 -0
  68. data/lib/facter/resolvers/{ssh_resolver.rb → ssh.rb} +1 -1
  69. data/lib/facter/resolvers/{suse_release_resolver.rb → suse_release.rb} +0 -0
  70. data/lib/facter/resolvers/{sw_vers_resolver.rb → sw_vers.rb} +0 -0
  71. data/lib/facter/resolvers/{timezone_resolver.rb → timezone.rb} +0 -0
  72. data/lib/facter/resolvers/{uname_resolver.rb → uname.rb} +0 -0
  73. data/lib/facter/resolvers/{uptime_resolver.rb → uptime.rb} +0 -0
  74. data/lib/facter/resolvers/windows/{dmi_bios_resolver.rb → dmi_bios.rb} +0 -0
  75. data/lib/facter/resolvers/windows/{dmi_computersystem_resolver.rb → dmi_computersystem.rb} +0 -0
  76. data/lib/facter/resolvers/windows/{fips_resolver.rb → fips.rb} +0 -0
  77. data/lib/facter/resolvers/windows/{hardware_architecture_resolver.rb → hardware_architecture.rb} +0 -0
  78. data/lib/facter/resolvers/windows/{identity_resolver.rb → identity.rb} +0 -0
  79. data/lib/facter/resolvers/windows/{kernel_resolver.rb → kernel.rb} +0 -0
  80. data/lib/facter/resolvers/windows/{memory_resolver.rb → memory.rb} +0 -0
  81. data/lib/facter/resolvers/windows/{netkvm_resolver.rb → netkvm.rb} +0 -0
  82. data/lib/facter/resolvers/windows/{networking_resolver.rb → networking.rb} +13 -0
  83. data/lib/facter/resolvers/windows/{processors_resolver.rb → processors.rb} +0 -0
  84. data/lib/facter/resolvers/windows/{product_release_resolver.rb → product_release.rb} +0 -0
  85. data/lib/facter/resolvers/windows/{system32_resolver.rb → system32.rb} +0 -0
  86. data/lib/facter/resolvers/windows/{uptime_resolver.rb → uptime.rb} +0 -0
  87. data/lib/facter/resolvers/windows/{virtualization_resolver.rb → virtualization.rb} +0 -0
  88. data/lib/facter/resolvers/windows/{win_os_description_resolver.rb → win_os_description.rb} +0 -0
  89. data/lib/facter/resolvers/{wpar_resolver.rb → wpar.rb} +0 -0
  90. data/lib/facter/util/facts/facts_utils.rb +16 -0
  91. data/lib/facter/version.rb +1 -1
  92. metadata +78 -79
  93. data/lib/facter/resolvers/networking_linux_resolver.rb +0 -258
  94. data/lib/facter/util/resolvers/networking.rb +0 -90
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Facter
4
4
  module Resolvers
5
- class SshResolver < BaseResolver
5
+ class Ssh < BaseResolver
6
6
  @log = Facter::Log.new(self)
7
7
 
8
8
  init_resolver
@@ -28,6 +28,8 @@ module Facter
28
28
 
29
29
  Facter::Util::Resolvers::Networking.expand_main_bindings(@fact_list)
30
30
 
31
+ retrieve_domain_from_registry if !@fact_list[:domain] || @fact_list[:domain].empty?
32
+
31
33
  @fact_list[fact_name]
32
34
  end
33
35
 
@@ -130,6 +132,17 @@ module Facter
130
132
  @fact_list[:primary_interface] = name.to_s
131
133
  end
132
134
  end
135
+
136
+ def retrieve_domain_from_registry
137
+ ::Win32::Registry::HKEY_LOCAL_MACHINE.open('SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters') do |rg|
138
+ rg.each do |name, _value|
139
+ @fact_list[:domain] = rg[name] if name == 'Domain'
140
+ end
141
+ end
142
+ rescue Win32::Registry::Error
143
+ @log.debug('Could not read TCPIP Parameters from registry')
144
+ nil
145
+ end
133
146
  end
134
147
  end
135
148
  end
@@ -9,6 +9,22 @@ module Facter
9
9
  'BHYVE' => 'bhyve' }.freeze
10
10
 
11
11
  PHYSICAL_HYPERVISORS = %w[physical xen0 vmware_server vmware_workstation openvzhn vserver_host].freeze
12
+ REDHAT_FAMILY = %w[redhat rhel fedora centos scientific ascendos cloudlinux psbm
13
+ oraclelinux ovs oel amazon xenserver xcp-ng virtuozzo photon].freeze
14
+ DEBIAN_FAMILY = %w[debian ubuntu huaweios linuxmint devuan kde].freeze
15
+ SUSE_FAMILY = %w[sles sled suse].freeze
16
+ GENTOO_FAMILY = ['gentoo'].freeze
17
+ ARCH_FAMILY = %w[arch manjaro].freeze
18
+ MANDRAKE_FAMILY = %w[mandrake mandriva mageia].freeze
19
+ FAMILY_HASH = { 'RedHat' => REDHAT_FAMILY, 'Debian' => DEBIAN_FAMILY, 'Suse' => SUSE_FAMILY,
20
+ 'Gentoo' => GENTOO_FAMILY, 'Archlinux' => ARCH_FAMILY, 'Mandrake' => MANDRAKE_FAMILY }.freeze
21
+
22
+ class << self
23
+ def discover_family(os)
24
+ FAMILY_HASH.each { |key, array_value| return key if array_value.any? { |os_flavour| os =~ /#{os_flavour}/i } }
25
+ os
26
+ end
27
+ end
12
28
  end
13
29
  end
14
30
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Facter
4
- VERSION = '4.0.47' unless defined?(VERSION)
4
+ VERSION = '4.0.48' unless defined?(VERSION)
5
5
  end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: facter
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.47
4
+ version: 4.0.48
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-14 00:00:00.000000000 Z
11
+ date: 2021-01-13 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: coveralls
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: 0.8.23
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: 0.8.23
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: rake
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +80,20 @@ dependencies:
94
80
  - - "~>"
95
81
  - !ruby/object:Gem::Version
96
82
  version: '1.38'
83
+ - !ruby/object:Gem::Dependency
84
+ name: simplecov
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.17.1
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.17.1
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: sys-filesystem
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -834,72 +834,72 @@ files:
834
834
  - lib/facter/models/searched_fact.rb
835
835
  - lib/facter/patches/sysfilesystem/sys/statvfs.rb
836
836
  - lib/facter/resolvers/aio_agent_version.rb
837
- - lib/facter/resolvers/aix/architecture_resolver.rb
837
+ - lib/facter/resolvers/aix/architecture.rb
838
838
  - lib/facter/resolvers/aix/disks.rb
839
839
  - lib/facter/resolvers/aix/ffi/ffi_helper.rb
840
- - lib/facter/resolvers/aix/filesystem_resolver.rb
841
- - lib/facter/resolvers/aix/hardware_resolver.rb
842
- - lib/facter/resolvers/aix/load_averages_resolver.rb
840
+ - lib/facter/resolvers/aix/filesystem.rb
841
+ - lib/facter/resolvers/aix/hardware.rb
842
+ - lib/facter/resolvers/aix/load_averages.rb
843
843
  - lib/facter/resolvers/aix/memory.rb
844
844
  - lib/facter/resolvers/aix/mountpoints.rb
845
- - lib/facter/resolvers/aix/networking_resolver.rb
845
+ - lib/facter/resolvers/aix/networking.rb
846
846
  - lib/facter/resolvers/aix/nim.rb
847
847
  - lib/facter/resolvers/aix/os_level.rb
848
848
  - lib/facter/resolvers/aix/partitions.rb
849
849
  - lib/facter/resolvers/aix/processors.rb
850
850
  - lib/facter/resolvers/aix/serialnumber.rb
851
- - lib/facter/resolvers/augeas_resolver.rb
851
+ - lib/facter/resolvers/augeas.rb
852
852
  - lib/facter/resolvers/base_resolver.rb
853
853
  - lib/facter/resolvers/bsd/ffi/ffi_helper.rb
854
854
  - lib/facter/resolvers/bsd/processors.rb
855
855
  - lib/facter/resolvers/cloud.rb
856
856
  - lib/facter/resolvers/containers.rb
857
857
  - lib/facter/resolvers/debian_version.rb
858
- - lib/facter/resolvers/disk_resolver.rb
858
+ - lib/facter/resolvers/disk.rb
859
+ - lib/facter/resolvers/dmi.rb
859
860
  - lib/facter/resolvers/dmi_decode.rb
860
- - lib/facter/resolvers/dmi_resolver.rb
861
861
  - lib/facter/resolvers/ec2.rb
862
- - lib/facter/resolvers/eos_release_resolver.rb
863
- - lib/facter/resolvers/facterversion_resolver.rb
864
- - lib/facter/resolvers/filesystems_resolver.rb
865
- - lib/facter/resolvers/fips_enabled_resolver.rb
866
- - lib/facter/resolvers/freebsd/dmi_resolver.rb
862
+ - lib/facter/resolvers/eos_release.rb
863
+ - lib/facter/resolvers/facterversion.rb
864
+ - lib/facter/resolvers/filesystems.rb
865
+ - lib/facter/resolvers/fips_enabled.rb
866
+ - lib/facter/resolvers/freebsd/dmi.rb
867
867
  - lib/facter/resolvers/freebsd/ffi/ffi_helper.rb
868
- - lib/facter/resolvers/freebsd/freebsd_version_resolver.rb
869
- - lib/facter/resolvers/freebsd/geom_resolver.rb
868
+ - lib/facter/resolvers/freebsd/freebsd_version.rb
869
+ - lib/facter/resolvers/freebsd/geom.rb
870
870
  - lib/facter/resolvers/freebsd/processors.rb
871
- - lib/facter/resolvers/freebsd/swap_memory_resolver.rb
872
- - lib/facter/resolvers/freebsd/system_memory_resolver.rb
873
- - lib/facter/resolvers/freebsd/virtual_resolver.rb
871
+ - lib/facter/resolvers/freebsd/swap_memory.rb
872
+ - lib/facter/resolvers/freebsd/system_memory.rb
873
+ - lib/facter/resolvers/freebsd/virtual.rb
874
874
  - lib/facter/resolvers/gce.rb
875
- - lib/facter/resolvers/hostname_resolver.rb
876
- - lib/facter/resolvers/identity_resolver.rb
875
+ - lib/facter/resolvers/hostname.rb
876
+ - lib/facter/resolvers/identity.rb
877
877
  - lib/facter/resolvers/linux/docker_uptime.rb
878
878
  - lib/facter/resolvers/linux/load_averages.rb
879
879
  - lib/facter/resolvers/load_averages.rb
880
- - lib/facter/resolvers/lpar_resolver.rb
881
- - lib/facter/resolvers/lsb_release_resolver.rb
880
+ - lib/facter/resolvers/lpar.rb
881
+ - lib/facter/resolvers/lsb_release.rb
882
882
  - lib/facter/resolvers/lspci.rb
883
- - lib/facter/resolvers/macosx/dmi_resolver.rb
884
- - lib/facter/resolvers/macosx/filesystems_resolver.rb
885
- - lib/facter/resolvers/macosx/load_averages_resolver.rb
886
- - lib/facter/resolvers/macosx/mountpoints_resolver.rb
887
- - lib/facter/resolvers/macosx/processor_resolver.rb
888
- - lib/facter/resolvers/macosx/swap_memory_resolver.rb
889
- - lib/facter/resolvers/macosx/system_memory_resolver.rb
890
- - lib/facter/resolvers/macosx/system_profiler_resolver.rb
891
- - lib/facter/resolvers/memory_resolver.rb
892
- - lib/facter/resolvers/mountpoints_resolver.rb
893
- - lib/facter/resolvers/networking_linux_resolver.rb
894
- - lib/facter/resolvers/networking_resolver.rb
883
+ - lib/facter/resolvers/macosx/dmi.rb
884
+ - lib/facter/resolvers/macosx/filesystems.rb
885
+ - lib/facter/resolvers/macosx/load_averages.rb
886
+ - lib/facter/resolvers/macosx/mountpoints.rb
887
+ - lib/facter/resolvers/macosx/processor.rb
888
+ - lib/facter/resolvers/macosx/swap_memory.rb
889
+ - lib/facter/resolvers/macosx/system_memory.rb
890
+ - lib/facter/resolvers/macosx/system_profiler.rb
891
+ - lib/facter/resolvers/memory.rb
892
+ - lib/facter/resolvers/mountpoints.rb
893
+ - lib/facter/resolvers/networking.rb
894
+ - lib/facter/resolvers/networking_linux.rb
895
895
  - lib/facter/resolvers/open_vz.rb
896
- - lib/facter/resolvers/os_release_resolver.rb
896
+ - lib/facter/resolvers/os_release.rb
897
897
  - lib/facter/resolvers/partitions.rb
898
- - lib/facter/resolvers/path_resolver.rb
899
- - lib/facter/resolvers/processors_resolver.rb
900
- - lib/facter/resolvers/redhat_release_resolver.rb
901
- - lib/facter/resolvers/ruby_resolver.rb
902
- - lib/facter/resolvers/selinux_resolver.rb
898
+ - lib/facter/resolvers/path.rb
899
+ - lib/facter/resolvers/processors.rb
900
+ - lib/facter/resolvers/redhat_release.rb
901
+ - lib/facter/resolvers/ruby.rb
902
+ - lib/facter/resolvers/selinux.rb
903
903
  - lib/facter/resolvers/solaris/disks.rb
904
904
  - lib/facter/resolvers/solaris/dmi.rb
905
905
  - lib/facter/resolvers/solaris/dmi_sparc.rb
@@ -916,17 +916,17 @@ files:
916
916
  - lib/facter/resolvers/solaris/processors.rb
917
917
  - lib/facter/resolvers/solaris/zone.rb
918
918
  - lib/facter/resolvers/solaris/zone_name.rb
919
- - lib/facter/resolvers/ssh_resolver.rb
920
- - lib/facter/resolvers/suse_release_resolver.rb
921
- - lib/facter/resolvers/sw_vers_resolver.rb
922
- - lib/facter/resolvers/timezone_resolver.rb
923
- - lib/facter/resolvers/uname_resolver.rb
924
- - lib/facter/resolvers/uptime_resolver.rb
919
+ - lib/facter/resolvers/ssh.rb
920
+ - lib/facter/resolvers/suse_release.rb
921
+ - lib/facter/resolvers/sw_vers.rb
922
+ - lib/facter/resolvers/timezone.rb
923
+ - lib/facter/resolvers/uname.rb
924
+ - lib/facter/resolvers/uptime.rb
925
925
  - lib/facter/resolvers/virt_what.rb
926
926
  - lib/facter/resolvers/vmware.rb
927
927
  - lib/facter/resolvers/windows/aio_agent_version.rb
928
- - lib/facter/resolvers/windows/dmi_bios_resolver.rb
929
- - lib/facter/resolvers/windows/dmi_computersystem_resolver.rb
928
+ - lib/facter/resolvers/windows/dmi_bios.rb
929
+ - lib/facter/resolvers/windows/dmi_computersystem.rb
930
930
  - lib/facter/resolvers/windows/ffi/ffi.rb
931
931
  - lib/facter/resolvers/windows/ffi/hardware_ffi.rb
932
932
  - lib/facter/resolvers/windows/ffi/identity_ffi.rb
@@ -939,21 +939,21 @@ files:
939
939
  - lib/facter/resolvers/windows/ffi/performance_information.rb
940
940
  - lib/facter/resolvers/windows/ffi/system32_ffi.rb
941
941
  - lib/facter/resolvers/windows/ffi/system_info.rb
942
- - lib/facter/resolvers/windows/fips_resolver.rb
943
- - lib/facter/resolvers/windows/hardware_architecture_resolver.rb
944
- - lib/facter/resolvers/windows/identity_resolver.rb
945
- - lib/facter/resolvers/windows/kernel_resolver.rb
946
- - lib/facter/resolvers/windows/memory_resolver.rb
947
- - lib/facter/resolvers/windows/netkvm_resolver.rb
948
- - lib/facter/resolvers/windows/networking_resolver.rb
949
- - lib/facter/resolvers/windows/processors_resolver.rb
950
- - lib/facter/resolvers/windows/product_release_resolver.rb
942
+ - lib/facter/resolvers/windows/fips.rb
943
+ - lib/facter/resolvers/windows/hardware_architecture.rb
944
+ - lib/facter/resolvers/windows/identity.rb
945
+ - lib/facter/resolvers/windows/kernel.rb
946
+ - lib/facter/resolvers/windows/memory.rb
947
+ - lib/facter/resolvers/windows/netkvm.rb
948
+ - lib/facter/resolvers/windows/networking.rb
949
+ - lib/facter/resolvers/windows/processors.rb
950
+ - lib/facter/resolvers/windows/product_release.rb
951
951
  - lib/facter/resolvers/windows/ssh.rb
952
- - lib/facter/resolvers/windows/system32_resolver.rb
953
- - lib/facter/resolvers/windows/uptime_resolver.rb
954
- - lib/facter/resolvers/windows/virtualization_resolver.rb
955
- - lib/facter/resolvers/windows/win_os_description_resolver.rb
956
- - lib/facter/resolvers/wpar_resolver.rb
952
+ - lib/facter/resolvers/windows/system32.rb
953
+ - lib/facter/resolvers/windows/uptime.rb
954
+ - lib/facter/resolvers/windows/virtualization.rb
955
+ - lib/facter/resolvers/windows/win_os_description.rb
956
+ - lib/facter/resolvers/wpar.rb
957
957
  - lib/facter/resolvers/xen.rb
958
958
  - lib/facter/resolvers/zfs.rb
959
959
  - lib/facter/resolvers/zpool.rb
@@ -973,7 +973,6 @@ files:
973
973
  - lib/facter/util/resolvers/filesystem_helper.rb
974
974
  - lib/facter/util/resolvers/fingerprint.rb
975
975
  - lib/facter/util/resolvers/http.rb
976
- - lib/facter/util/resolvers/networking.rb
977
976
  - lib/facter/util/resolvers/networking/dhcp.rb
978
977
  - lib/facter/util/resolvers/networking/networking.rb
979
978
  - lib/facter/util/resolvers/networking/primary_interface.rb
@@ -1,258 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Facter
4
- module Resolvers
5
- class NetworkingLinux < BaseResolver
6
- init_resolver
7
-
8
- DIRS = ['/var/lib/dhclient/', '/var/lib/dhcp/', '/var/lib/dhcp3/', '/var/lib/NetworkManager/', '/var/db/'].freeze
9
- ROUTE_TYPES = %w[anycast
10
- unicast
11
- broadcast
12
- local
13
- nat
14
- unreachable
15
- prohibit
16
- blackhole
17
- throw].freeze
18
-
19
- class << self
20
- private
21
-
22
- def post_resolve(fact_name)
23
- @fact_list.fetch(fact_name) { retrieve_network_info(fact_name) }
24
-
25
- @fact_list[fact_name]
26
- end
27
-
28
- def retrieve_network_info(fact_name)
29
- mtu_and_indexes = interfaces_mtu_and_index
30
- retrieve_interface_info(mtu_and_indexes)
31
- add_info_from_routing_table
32
- retrieve_primary_interface
33
- Facter::Util::Resolvers::Networking.expand_main_bindings(@fact_list)
34
- @fact_list[fact_name]
35
- end
36
-
37
- def interfaces_mtu_and_index
38
- mtu_and_indexes = {}
39
- output = Facter::Core::Execution.execute("ip link show", logger: log)
40
- output.each_line do |line|
41
- next unless line.include?('mtu')
42
-
43
- mtu = line.match(/mtu (\d+)/)&.captures&.first&.to_i
44
- index_tokens = line.split(':')
45
- index = index_tokens[0].strip
46
- # vlans are displayed as <vlan_name>@<physical_interface>
47
- name = index_tokens[1].split('@').first.strip
48
- mtu_and_indexes[name] = [index, mtu]
49
- end
50
- mtu_and_indexes
51
- end
52
-
53
- def retrieve_interface_info(mtu_and_indexes)
54
- require 'socket'
55
- interfaces = {}
56
- Socket.getifaddrs.each do |interface|
57
- interfaces[interface.name] = {} if interfaces[interface.name].nil?
58
-
59
- if interfaces[interface.name][:mac].nil?
60
- mac = extract_mac_address(interface)
61
- interfaces[interface.name][:mac] = mac if mac
62
- end
63
-
64
- if interfaces[interface.name][:mtu].nil?
65
- mtu = mtu_and_indexes.dig(interface.name, 1)
66
- interfaces[interface.name][:mtu] = mtu unless mtu.nil?
67
- end
68
-
69
- if !interface.addr.nil? && !interface.netmask.nil?
70
- begin
71
- # ipv6 ips are retrieved as <ip>%<interface_name>
72
- ip = interface.addr.ip_address.split('%').first if interface.addr.ip?
73
- netmask = interface.netmask.ip_address
74
- add_binding(interfaces, interface.name, ip, netmask, interface.addr.ipv4?)
75
- rescue SocketError => e
76
- end
77
- end
78
- find_dhcp!(interface.name, mtu_and_indexes, interfaces)
79
- end
80
-
81
- @fact_list[:interfaces] = interfaces
82
- end
83
-
84
- def extract_mac_address(interface)
85
- mac = get_bonded_interface_mac(interface.name)
86
- begin
87
- if mac.nil?
88
- if Socket.const_defined? :PF_LINK
89
- mac = interface.addr&.getnameinfo&.first #sometimes it returns localhost, ip but mac also
90
- elsif Socket.const_defined? :PF_PACKET
91
- return if interface.addr.nil? || interface.addr.inspect_sockaddr.nil?
92
-
93
- mac = interface.addr&.inspect_sockaddr[/hwaddr=([\h:]+)/, 1]
94
- end
95
- end
96
- rescue StandardError => e
97
- log.debug("Could not read mac, got #{e}")
98
- end
99
- mac if !mac.nil? && mac != '00:00:00:00:00:00' && mac =~ /^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/
100
- end
101
-
102
- def get_bonded_interface_mac(interface_name)
103
- master = get_bond_master(interface_name)
104
- return unless master
105
-
106
- output = Facter::Util::FileHelper.safe_read("/proc/net/bonding/#{master}", nil)
107
- return unless output
108
-
109
- right_block = false
110
- output.each_line do |line|
111
- if line.strip == "Slave Interface: #{interface_name}"
112
- right_block = true
113
- elsif line.include? 'Slave Interface'
114
- right_block = false
115
- end
116
- return Regexp.last_match(1) if right_block && line =~ /Permanent HW addr: (\S*)/
117
- end
118
- end
119
-
120
- def get_bond_master(interface_name)
121
- content = Facter::Core::Execution.execute("ip link show #{interface_name}", logger: log)
122
- master = content.match(/master (\S*) /)
123
- return master[1] if master
124
-
125
- nil
126
- end
127
-
128
- def add_binding(interfaces, name, ip, netmask, ip_v4_type)
129
- binding = Facter::Util::Resolvers::Networking.build_binding(ip, netmask)
130
- return if binding.nil?
131
-
132
- log.debug("Adding to interface #{name}, binding:\n#{binding}")
133
- binding_key = ip_v4_type == true ? :bindings : :bindings6
134
- interfaces[name][binding_key] = [] if interfaces[name][binding_key].nil?
135
- interfaces[name][binding_key] << binding
136
- end
137
-
138
- def add_info_from_routing_table
139
- routes4, routes6 = read_routing_table
140
- compare_ips(routes4, :bindings)
141
- compare_ips(routes6, :bindings6)
142
- end
143
-
144
-
145
- def read_routing_table
146
- ipv4_output = Facter::Core::Execution.execute('ip route show', logger: log)
147
- ipv6_output = Facter::Core::Execution.execute('ip -6 route show', logger: log)
148
- routes4 = parse_routes(ipv4_output, 'ipv4')
149
- routes6 = parse_routes(ipv6_output, 'ipv6')
150
- [routes4, routes6]
151
- end
152
-
153
- def parse_routes(output, family)
154
- routes = []
155
- output.each_line do |line|
156
- parts = line.split(' ').compact
157
- next if parts.include?('linkdown')
158
-
159
- route_type = parts[0]
160
- parts.delete_at(0) if ROUTE_TYPES.include?(route_type)
161
- next if family == 'ipv6' && !parts[0].include?(':')
162
-
163
- route = construct_route(parts)
164
- routes << route unless route[:ip].nil?
165
- end
166
- routes.uniq
167
- end
168
-
169
- def construct_route(parts)
170
- route = {}
171
- dev_index = parts.find_index { |elem| elem == 'dev' }
172
- src_index = parts.find_index { |elem| elem == 'src' }
173
- route[:interface] = parts[dev_index + 1] if dev_index
174
- route[:ip] = parts[src_index + 1] if src_index
175
- route
176
- end
177
-
178
- def compare_ips(routes, binding_key)
179
- routes.each do |route|
180
- # TODO we should simplify this
181
- if @fact_list[:interfaces].key?(route[:interface])
182
- if @fact_list[:interfaces][route[:interface]][binding_key].nil?
183
- @fact_list[:interfaces][route[:interface]][binding_key] = [{ address: route[:ip] }]
184
- elsif @fact_list[:interfaces][route[:interface]][binding_key].none? { |binding| binding[:address] == route[:ip] }
185
- @fact_list[:interfaces][route[:interface]][binding_key] << { address: route[:ip] }
186
- end
187
- end
188
- end
189
- end
190
-
191
- def find_dhcp!(interface_name, interface_indexes, interfaces)
192
- return if !interfaces[interface_name] || interfaces[interface_name][:dhcp]
193
-
194
- log.debug("Get DHCP for interface #{interface_name}")
195
- unless interface_indexes[interface_name].nil?
196
- index = interface_indexes[interface_name][0]
197
- file_content = Facter::Util::FileHelper.safe_read("/run/systemd/netif/leases/#{index}", nil)
198
- dhcp = file_content.match(/SERVER_ADDRESS=(.*)/) if file_content
199
- if dhcp
200
- interfaces[interface_name][:dhcp] = dhcp[1]
201
- else
202
- alternate_dhcp = retrieve_from_other_directories(interface_name)
203
- interfaces[interface_name][:dhcp] = alternate_dhcp if alternate_dhcp
204
- end
205
- end
206
- return unless interfaces[interface_name][:dhcp].nil?
207
-
208
- output = Facter::Core::Execution.execute("dhcpcd -U #{interface_name}", logger: log)
209
- result = output.match(/dhcp_server_identifier='(.*)'/)&.captures&.first
210
- interfaces[interface_name][:dhcp] = result if result
211
- end
212
-
213
- def retrieve_from_other_directories(interface_name)
214
- DIRS.each do |dir|
215
- next unless File.readable?(dir)
216
-
217
- lease_files = Dir.entries(dir).select { |file| file =~ /dhclient.*\.lease/ }
218
- next if lease_files.empty?
219
-
220
- lease_files.select do |file|
221
- content = Facter::Util::FileHelper.safe_read("#{dir}#{file}", nil)
222
- next unless content =~ /interface.*#{interface_name}/
223
-
224
- dhcp = content.match(/dhcp-server-identifier ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/)
225
- return dhcp[1] if dhcp
226
- end
227
- end
228
- return unless File.readable?('/var/lib/NetworkManager/')
229
-
230
- search_internal_leases(interface_name)
231
- end
232
-
233
- def search_internal_leases(interface_name)
234
- files = Dir.entries('/var/lib/NetworkManager/').reject { |dir| dir =~ /^\.+$/ }
235
- lease_file = files.find { |file| file =~ /internal.*#{interface_name}\.lease/ }
236
- return unless lease_file
237
-
238
- dhcp = Facter::Util::FileHelper.safe_read("/var/lib/NetworkManager/#{lease_file}", nil)
239
-
240
- return unless dhcp
241
-
242
- dhcp = dhcp.match(/SERVER_ADDRESS=(.*)/)
243
- dhcp[1] if dhcp
244
- end
245
-
246
- def retrieve_primary_interface
247
- primary_helper = Facter::Util::Resolvers::Networking::PrimaryInterface
248
- primary_interface = primary_helper.read_from_proc_route
249
- primary_interface ||= primary_helper.read_from_ip_route
250
- primary_interface ||= primary_helper.find_in_interfaces(@fact_list[:interfaces])
251
-
252
- @fact_list[:primary_interface] = primary_interface
253
- end
254
-
255
- end
256
- end
257
- end
258
- end