facter 4.0.49 → 4.0.50

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 (143) hide show
  1. checksums.yaml +4 -4
  2. data/lib/facter/config.rb +20 -7
  3. data/lib/facter/custom_facts/core/execution/base.rb +3 -2
  4. data/lib/facter/custom_facts/core/execution/popen3.rb +47 -0
  5. data/lib/facter/custom_facts/util/fact.rb +2 -2
  6. data/lib/facter/facts/alpine/os/release.rb +29 -0
  7. data/lib/facter/facts/amzn/os/release.rb +29 -0
  8. data/lib/facter/facts/devuan/os/distro/release.rb +36 -0
  9. data/lib/facter/facts/devuan/os/release.rb +29 -0
  10. data/lib/facter/facts/gentoo/os/release.rb +29 -0
  11. data/lib/facter/facts/linuxmint/os/name.rb +18 -0
  12. data/lib/facter/facts/linuxmint/os/release.rb +35 -0
  13. data/lib/facter/facts/mageia/os/release.rb +36 -0
  14. data/lib/facter/facts/meego/os/release.rb +29 -0
  15. data/lib/facter/facts/oel/os/release.rb +29 -0
  16. data/lib/facter/facts/ol/os/release.rb +29 -0
  17. data/lib/facter/facts/openwrt/os/release.rb +35 -0
  18. data/lib/facter/facts/ovs/os/release.rb +29 -0
  19. data/lib/facter/facts/photon/os/release.rb +45 -0
  20. data/lib/facter/facts/rhel/os/release.rb +1 -8
  21. data/lib/facter/facts/slackware/os/release.rb +35 -0
  22. data/lib/facter/framework/config/config_reader.rb +7 -0
  23. data/lib/facter/framework/config/fact_groups.rb +3 -0
  24. data/lib/facter/framework/core/fact_loaders/external_fact_loader.rb +0 -4
  25. data/lib/facter/framework/core/fact_loaders/fact_loader.rb +2 -0
  26. data/lib/facter/framework/detector/os_detector.rb +7 -0
  27. data/lib/facter/resolvers/aio_agent_version.rb +1 -1
  28. data/lib/facter/resolvers/aix/architecture.rb +1 -1
  29. data/lib/facter/resolvers/aix/disks.rb +1 -1
  30. data/lib/facter/resolvers/aix/ffi/ffi.rb +63 -0
  31. data/lib/facter/resolvers/aix/ffi/ffi_helper.rb +146 -20
  32. data/lib/facter/resolvers/aix/ffi/structs.rb +69 -0
  33. data/lib/facter/resolvers/aix/filesystem.rb +1 -1
  34. data/lib/facter/resolvers/aix/hardware.rb +1 -1
  35. data/lib/facter/resolvers/aix/load_averages.rb +2 -2
  36. data/lib/facter/resolvers/aix/memory.rb +1 -1
  37. data/lib/facter/resolvers/aix/mountpoints.rb +1 -1
  38. data/lib/facter/resolvers/aix/networking.rb +9 -16
  39. data/lib/facter/resolvers/aix/nim.rb +1 -1
  40. data/lib/facter/resolvers/aix/os_level.rb +1 -1
  41. data/lib/facter/resolvers/aix/partitions.rb +1 -1
  42. data/lib/facter/resolvers/aix/processors.rb +1 -1
  43. data/lib/facter/resolvers/aix/serialnumber.rb +1 -1
  44. data/lib/facter/resolvers/augeas.rb +1 -1
  45. data/lib/facter/resolvers/base_resolver.rb +4 -4
  46. data/lib/facter/resolvers/bsd/processors.rb +1 -1
  47. data/lib/facter/resolvers/cloud.rb +1 -1
  48. data/lib/facter/resolvers/containers.rb +1 -1
  49. data/lib/facter/resolvers/debian_version.rb +1 -1
  50. data/lib/facter/resolvers/disk.rb +1 -1
  51. data/lib/facter/resolvers/dmi.rb +1 -1
  52. data/lib/facter/resolvers/dmi_decode.rb +1 -1
  53. data/lib/facter/resolvers/ec2.rb +1 -1
  54. data/lib/facter/resolvers/eos_release.rb +1 -1
  55. data/lib/facter/resolvers/facterversion.rb +1 -1
  56. data/lib/facter/resolvers/filesystems.rb +1 -1
  57. data/lib/facter/resolvers/fips_enabled.rb +1 -1
  58. data/lib/facter/resolvers/freebsd/dmi.rb +1 -1
  59. data/lib/facter/resolvers/freebsd/freebsd_version.rb +1 -1
  60. data/lib/facter/resolvers/freebsd/geom.rb +1 -1
  61. data/lib/facter/resolvers/freebsd/processors.rb +1 -1
  62. data/lib/facter/resolvers/freebsd/swap_memory.rb +1 -1
  63. data/lib/facter/resolvers/freebsd/system_memory.rb +1 -1
  64. data/lib/facter/resolvers/freebsd/virtual.rb +1 -1
  65. data/lib/facter/resolvers/gce.rb +1 -1
  66. data/lib/facter/resolvers/hostname.rb +1 -1
  67. data/lib/facter/resolvers/identity.rb +1 -1
  68. data/lib/facter/resolvers/linux/docker_uptime.rb +1 -1
  69. data/lib/facter/resolvers/linux/load_averages.rb +1 -1
  70. data/lib/facter/resolvers/load_averages.rb +1 -1
  71. data/lib/facter/resolvers/lpar.rb +1 -1
  72. data/lib/facter/resolvers/lsb_release.rb +1 -1
  73. data/lib/facter/resolvers/lspci.rb +1 -1
  74. data/lib/facter/resolvers/macosx/dmi.rb +1 -1
  75. data/lib/facter/resolvers/macosx/filesystems.rb +1 -1
  76. data/lib/facter/resolvers/macosx/load_averages.rb +1 -1
  77. data/lib/facter/resolvers/macosx/mountpoints.rb +1 -1
  78. data/lib/facter/resolvers/macosx/processor.rb +1 -1
  79. data/lib/facter/resolvers/macosx/swap_memory.rb +1 -1
  80. data/lib/facter/resolvers/macosx/system_memory.rb +1 -1
  81. data/lib/facter/resolvers/macosx/system_profiler.rb +1 -1
  82. data/lib/facter/resolvers/memory.rb +1 -1
  83. data/lib/facter/resolvers/mountpoints.rb +1 -1
  84. data/lib/facter/resolvers/networking.rb +1 -1
  85. data/lib/facter/resolvers/networking_linux.rb +1 -1
  86. data/lib/facter/resolvers/open_vz.rb +1 -1
  87. data/lib/facter/resolvers/os_release.rb +1 -1
  88. data/lib/facter/resolvers/partitions.rb +1 -1
  89. data/lib/facter/resolvers/path.rb +1 -1
  90. data/lib/facter/resolvers/processors.rb +1 -1
  91. data/lib/facter/resolvers/redhat_release.rb +1 -1
  92. data/lib/facter/resolvers/release_from_first_line.rb +41 -0
  93. data/lib/facter/resolvers/ruby.rb +1 -1
  94. data/lib/facter/resolvers/selinux.rb +1 -1
  95. data/lib/facter/resolvers/solaris/disks.rb +1 -1
  96. data/lib/facter/resolvers/solaris/dmi.rb +1 -1
  97. data/lib/facter/resolvers/solaris/dmi_sparc.rb +1 -1
  98. data/lib/facter/resolvers/solaris/filesystems.rb +1 -1
  99. data/lib/facter/resolvers/solaris/ipaddress.rb +1 -1
  100. data/lib/facter/resolvers/solaris/ldom.rb +1 -1
  101. data/lib/facter/resolvers/solaris/memory.rb +1 -1
  102. data/lib/facter/resolvers/solaris/mountpoints.rb +1 -1
  103. data/lib/facter/resolvers/solaris/networking.rb +1 -1
  104. data/lib/facter/resolvers/solaris/os_release.rb +1 -1
  105. data/lib/facter/resolvers/solaris/processors.rb +1 -1
  106. data/lib/facter/resolvers/solaris/zone.rb +1 -1
  107. data/lib/facter/resolvers/solaris/zone_name.rb +1 -1
  108. data/lib/facter/resolvers/specific_release_file.rb +35 -0
  109. data/lib/facter/resolvers/ssh.rb +1 -1
  110. data/lib/facter/resolvers/suse_release.rb +1 -1
  111. data/lib/facter/resolvers/sw_vers.rb +1 -1
  112. data/lib/facter/resolvers/timezone.rb +1 -1
  113. data/lib/facter/resolvers/uname.rb +1 -1
  114. data/lib/facter/resolvers/uptime.rb +1 -1
  115. data/lib/facter/resolvers/virt_what.rb +1 -1
  116. data/lib/facter/resolvers/vmware.rb +1 -1
  117. data/lib/facter/resolvers/windows/aio_agent_version.rb +1 -1
  118. data/lib/facter/resolvers/windows/dmi_bios.rb +1 -1
  119. data/lib/facter/resolvers/windows/dmi_computersystem.rb +1 -1
  120. data/lib/facter/resolvers/windows/ffi/network_utils.rb +1 -2
  121. data/lib/facter/resolvers/windows/fips.rb +1 -1
  122. data/lib/facter/resolvers/windows/hardware_architecture.rb +1 -1
  123. data/lib/facter/resolvers/windows/identity.rb +1 -1
  124. data/lib/facter/resolvers/windows/kernel.rb +1 -1
  125. data/lib/facter/resolvers/windows/memory.rb +1 -1
  126. data/lib/facter/resolvers/windows/netkvm.rb +1 -1
  127. data/lib/facter/resolvers/windows/networking.rb +8 -4
  128. data/lib/facter/resolvers/windows/processors.rb +1 -1
  129. data/lib/facter/resolvers/windows/product_release.rb +1 -1
  130. data/lib/facter/resolvers/windows/ssh.rb +1 -1
  131. data/lib/facter/resolvers/windows/system32.rb +1 -1
  132. data/lib/facter/resolvers/windows/uptime.rb +1 -1
  133. data/lib/facter/resolvers/windows/virtualization.rb +1 -1
  134. data/lib/facter/resolvers/windows/win_os_description.rb +1 -1
  135. data/lib/facter/resolvers/wpar.rb +1 -1
  136. data/lib/facter/resolvers/xen.rb +1 -1
  137. data/lib/facter/resolvers/zfs.rb +1 -1
  138. data/lib/facter/resolvers/zpool.rb +1 -1
  139. data/lib/facter/util/facts/facts_utils.rb +17 -0
  140. data/lib/facter/util/facts/unit_converter.rb +11 -4
  141. data/lib/facter/util/utils.rb +0 -4
  142. data/lib/facter/version.rb +1 -1
  143. metadata +22 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 338a079461e5036ff9a33dd608e9b4f0e7472ec68c0351f73bea25a8a5fe0bf9
4
- data.tar.gz: b1c9387025dca95f2b5c767885c8747d14569e80f3cb8eb4d6c49ac227b9c145
3
+ metadata.gz: c40ef2043f777620f54c82fc1ee3e746a9b881b74771b3e6ed693773e2ae2e57
4
+ data.tar.gz: d6f1f89339c820f37f0a37b07ae42085a231468ce759c9d1a92b0fc7963e7f9e
5
5
  SHA512:
6
- metadata.gz: 844740e483fa5e3b60e6e12459625c064a505200cc76aba2aece98ccf21f04a855ed3961889eedbdff6e0bf6ac4e22b0ca0685a8738e6605deecae185bad08ff
7
- data.tar.gz: 967d8b83f3e511c319c918eb305bb31929bb6d631e877774ec1332e8f394413ed8111d11d9fafb0bd3423a739eb324163d44feab34db1f5d6735f2b690dd8de4
6
+ metadata.gz: 91d8d74575aeff6e4b31445a362019fd8f2200f888478b3e2c019a5ccf740b1f9a8590f3edde89f69a66af3bca778d3ab6b73b658c04853122507633221066e3
7
+ data.tar.gz: e6cf614befcb67eea1ac89c35a22532c04e40225a87b1d81a6dbf00d227ff55f29630a8637239daf44e4f4ab5de13cb5c9c29b4b612358a8063ee36985d243f8
data/lib/facter/config.rb CHANGED
@@ -7,10 +7,13 @@ module Facter
7
7
  {
8
8
  'Linux' => [
9
9
  {
10
- 'Debian' => %w[
11
- Elementary
12
- Ubuntu
13
- Raspbian
10
+ 'Debian' => [
11
+ 'Elementary',
12
+ { 'Ubuntu' => [
13
+ 'Linuxmint'
14
+ ] },
15
+ 'Raspbian',
16
+ 'Devuan'
14
17
  ]
15
18
  },
16
19
  {
@@ -20,13 +23,23 @@ module Facter
20
23
  Centos
21
24
  Ol
22
25
  Scientific
26
+ Meego
27
+ Oel
28
+ Ovs
23
29
  ]
24
30
  },
25
31
  {
26
- 'Sles' => [
27
- 'Opensuse'
32
+ 'Sles' => %w[
33
+ Opensuse
34
+ Sled
28
35
  ]
29
- }
36
+ },
37
+ 'Gentoo',
38
+ 'Alpine',
39
+ 'Photon',
40
+ 'Slackware',
41
+ 'Mageia',
42
+ 'Openwrt'
30
43
  ]
31
44
  },
32
45
  {
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative 'popen3'
4
+
3
5
  module Facter
4
6
  module Core
5
7
  module Execution
@@ -70,8 +72,7 @@ module Facter
70
72
  opts = { 'LC_ALL' => 'C', 'LANG' => 'C' }
71
73
  require 'timeout'
72
74
  @log.debug("Executing command: #{command}")
73
- out, stderr = Open3.popen3(opts, command.to_s) do |_, stdout, stderr, wait_thr|
74
- pid = wait_thr.pid
75
+ out, stderr = Popen3.popen3e(opts, command.to_s) do |_, stdout, stderr, pid|
75
76
  stdout_messages = +''
76
77
  stderr_messages = +''
77
78
  out_reader = Thread.new { stdout.read }
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Because Open3 uses Process.detach the env $? is not set so
5
+ # this class reimplements Open3.popen3 with Process.wait instead.
6
+ # [FACT-2934] When calling Facter::Core::Execution, $? and $CHILD_STATUS
7
+ # ruby env variables should be set.
8
+ #
9
+
10
+ module Facter
11
+ module Core
12
+ module Execution
13
+ class Popen3
14
+ def self.popen_rune(cmd, opts, child_io, parent_io) # :nodoc:
15
+ pid = spawn(*cmd, opts)
16
+ child_io.each(&:close)
17
+ result = [*parent_io, pid]
18
+ if defined? yield
19
+ begin
20
+ return yield(*result)
21
+ ensure
22
+ parent_io.each(&:close)
23
+ Process.wait(pid)
24
+ end
25
+ end
26
+ result
27
+ end
28
+
29
+ def self.popen3e(*cmd, &block)
30
+ opts = if cmd.last.is_a? Hash
31
+ cmd.pop.dup
32
+ else
33
+ {}
34
+ end
35
+ in_r, in_w = IO.pipe
36
+ opts[:in] = in_r
37
+ in_w.sync = true
38
+ out_r, out_w = IO.pipe
39
+ opts[:out] = out_w
40
+ err_r, err_w = IO.pipe
41
+ opts[:err] = err_w
42
+ popen_rune(cmd, opts, [in_r, out_w, err_w], [in_w, out_r, err_r], &block)
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -37,7 +37,7 @@ module Facter
37
37
  def initialize(name, options = {})
38
38
  @name = name.to_s.downcase.intern
39
39
 
40
- @options = Facter::Utils.deep_copy(options)
40
+ @options = options.dup
41
41
  extract_ldapname_option!(options)
42
42
 
43
43
  @ldapname ||= @name.to_s
@@ -61,7 +61,7 @@ module Facter
61
61
  #
62
62
  # @api private
63
63
  def add(options = {}, &block)
64
- @options = Facter::Utils.deep_copy(@options.merge(options))
64
+ @options = @options.merge(options)
65
65
 
66
66
  @location = options[:file]
67
67
  @location ||= block.source_location if block_given?
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Alpine
5
+ module Os
6
+ class Release
7
+ FACT_NAME = 'os.release'
8
+ ALIASES = %w[operatingsystemmajrelease operatingsystemrelease].freeze
9
+
10
+ def call_the_resolver
11
+ version = determine_release_version
12
+
13
+ return Facter::ResolvedFact.new(FACT_NAME, nil) unless version
14
+
15
+ [Facter::ResolvedFact.new(FACT_NAME, version),
16
+ Facter::ResolvedFact.new(ALIASES.first, version['major'], :legacy),
17
+ Facter::ResolvedFact.new(ALIASES.last, version['full'], :legacy)]
18
+ end
19
+
20
+ def determine_release_version
21
+ version = Facter::Resolvers::SpecificReleaseFile.resolve(:release, release_file: '/etc/alpine-release')
22
+ version ||= Facter::Resolvers::OsRelease.resolve(:version_id)
23
+
24
+ Facter::Util::Facts.release_hash_from_string(version)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Amzn
5
+ module Os
6
+ class Release
7
+ FACT_NAME = 'os.release'
8
+ ALIASES = %w[operatingsystemmajrelease operatingsystemrelease].freeze
9
+
10
+ def call_the_resolver
11
+ version = determine_release_version
12
+
13
+ return Facter::ResolvedFact.new(FACT_NAME, nil) unless version
14
+
15
+ [Facter::ResolvedFact.new(FACT_NAME, version),
16
+ Facter::ResolvedFact.new(ALIASES.first, version['major'], :legacy),
17
+ Facter::ResolvedFact.new(ALIASES.last, version['full'], :legacy)]
18
+ end
19
+
20
+ def determine_release_version
21
+ version = Facter::Resolvers::ReleaseFromFirstLine.resolve(:release, release_file: '/etc/system-release')
22
+ version ||= Facter::Resolvers::OsRelease.resolve(:version_id)
23
+
24
+ Facter::Util::Facts.release_hash_from_string(version)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Devuan
5
+ module Os
6
+ module Distro
7
+ class Release
8
+ FACT_NAME = 'os.distro.release'
9
+ ALIASES = %w[lsbdistrelease lsbmajdistrelease lsbminordistrelease].freeze
10
+
11
+ def call_the_resolver
12
+ fact_value = Facter::Resolvers::LsbRelease.resolve(:release)
13
+ return Facter::ResolvedFact.new(FACT_NAME, nil) unless fact_value
14
+
15
+ release = construct_release(fact_value)
16
+
17
+ [Facter::ResolvedFact.new(FACT_NAME, release),
18
+ Facter::ResolvedFact.new(ALIASES[0], fact_value, :legacy),
19
+ Facter::ResolvedFact.new(ALIASES[1], release['major'], :legacy),
20
+ Facter::ResolvedFact.new(ALIASES[2], release['minor'], :legacy)]
21
+ end
22
+
23
+ def construct_release(version)
24
+ versions = version.split('.')
25
+
26
+ {}.tap do |release|
27
+ release['full'] = version
28
+ release['major'] = versions[0]
29
+ release['minor'] = versions[1] if versions[1]
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Devuan
5
+ module Os
6
+ class Release
7
+ FACT_NAME = 'os.release'
8
+ ALIASES = %w[operatingsystemmajrelease operatingsystemrelease].freeze
9
+
10
+ def call_the_resolver
11
+ version = determine_release_version
12
+
13
+ return Facter::ResolvedFact.new(FACT_NAME, nil) unless version
14
+
15
+ [Facter::ResolvedFact.new(FACT_NAME, version),
16
+ Facter::ResolvedFact.new(ALIASES.first, version['major'], :legacy),
17
+ Facter::ResolvedFact.new(ALIASES.last, version['full'], :legacy)]
18
+ end
19
+
20
+ def determine_release_version
21
+ version = Facter::Resolvers::SpecificReleaseFile.resolve(:release, release_file: '/etc/devuan_version')
22
+ version ||= Facter::Resolvers::OsRelease.resolve(:version_id)
23
+
24
+ Facter::Util::Facts.release_hash_from_string(version)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Gentoo
5
+ module Os
6
+ class Release
7
+ FACT_NAME = 'os.release'
8
+ ALIASES = %w[operatingsystemmajrelease operatingsystemrelease].freeze
9
+
10
+ def call_the_resolver
11
+ version = determine_release_version
12
+
13
+ return Facter::ResolvedFact.new(FACT_NAME, nil) unless version
14
+
15
+ [Facter::ResolvedFact.new(FACT_NAME, version),
16
+ Facter::ResolvedFact.new(ALIASES.first, version['major'], :legacy),
17
+ Facter::ResolvedFact.new(ALIASES.last, version['full'], :legacy)]
18
+ end
19
+
20
+ def determine_release_version
21
+ version = Facter::Resolvers::ReleaseFromFirstLine.resolve(:release, release_file: '/etc/gentoo-release')
22
+ version ||= Facter::Resolvers::OsRelease.resolve(:version_id)
23
+
24
+ Facter::Util::Facts.release_hash_from_string(version)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Linuxmint
5
+ module Os
6
+ class Name
7
+ FACT_NAME = 'os.name'
8
+ ALIASES = 'operatingsystem'
9
+
10
+ def call_the_resolver
11
+ fact_value = Facter::Resolvers::OsRelease.resolve(:id)&.capitalize
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
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Linuxmint
5
+ module Os
6
+ class Release
7
+ FACT_NAME = 'os.release'
8
+ ALIASES = %w[operatingsystemmajrelease operatingsystemrelease].freeze
9
+
10
+ def call_the_resolver
11
+ version = from_specific_file || from_os_release
12
+
13
+ return Facter::ResolvedFact.new(FACT_NAME, nil) unless version
14
+
15
+ [Facter::ResolvedFact.new(FACT_NAME, version),
16
+ Facter::ResolvedFact.new(ALIASES.first, version['major'], :legacy),
17
+ Facter::ResolvedFact.new(ALIASES.last, version['full'], :legacy)]
18
+ end
19
+
20
+ def from_specific_file
21
+ version = Facter::Resolvers::SpecificReleaseFile.resolve(:release,
22
+ { release_file: '/etc/linuxmint/info',
23
+ regex: /^RELEASE=(\d+)/ })
24
+ Facter::Util::Facts.release_hash_from_matchdata(version)
25
+ end
26
+
27
+ def from_os_release
28
+ version = Facter::Resolvers::OsRelease.resolve(:version_id)
29
+
30
+ Facter::Util::Facts.release_hash_from_string(version)
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Mageia
5
+ module Os
6
+ class Release
7
+ FACT_NAME = 'os.release'
8
+ ALIASES = %w[operatingsystemmajrelease operatingsystemrelease].freeze
9
+
10
+ def call_the_resolver
11
+ version = from_specific_file || from_os_release
12
+
13
+ return Facter::ResolvedFact.new(FACT_NAME, nil) unless version
14
+
15
+ [Facter::ResolvedFact.new(FACT_NAME, version),
16
+ Facter::ResolvedFact.new(ALIASES.first, version['major'], :legacy),
17
+ Facter::ResolvedFact.new(ALIASES.last, version['full'], :legacy)]
18
+ end
19
+
20
+ def from_specific_file
21
+ version = Facter::Resolvers::SpecificReleaseFile.resolve(:release,
22
+ { release_file: '/etc/mageia-release',
23
+ regex: /Mageia release ([0-9.]+)/ })
24
+
25
+ Facter::Util::Facts.release_hash_from_matchdata(version)
26
+ end
27
+
28
+ def from_os_release
29
+ version = Facter::Resolvers::OsRelease.resolve(:version_id)
30
+
31
+ Facter::Util::Facts.release_hash_from_string(version)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Meego
5
+ module Os
6
+ class Release
7
+ FACT_NAME = 'os.release'
8
+ ALIASES = %w[operatingsystemmajrelease operatingsystemrelease].freeze
9
+
10
+ def call_the_resolver
11
+ version = determine_release_version
12
+
13
+ return Facter::ResolvedFact.new(FACT_NAME, nil) unless version
14
+
15
+ [Facter::ResolvedFact.new(FACT_NAME, version),
16
+ Facter::ResolvedFact.new(ALIASES.first, version['major'], :legacy),
17
+ Facter::ResolvedFact.new(ALIASES.last, version['full'], :legacy)]
18
+ end
19
+
20
+ def determine_release_version
21
+ version = Facter::Resolvers::ReleaseFromFirstLine.resolve(:release, release_file: '/etc/meego-release')
22
+ version ||= Facter::Resolvers::OsRelease.resolve(:version_id)
23
+
24
+ Facter::Util::Facts.release_hash_from_string(version)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Oel
5
+ module Os
6
+ class Release
7
+ FACT_NAME = 'os.release'
8
+ ALIASES = %w[operatingsystemmajrelease operatingsystemrelease].freeze
9
+
10
+ def call_the_resolver
11
+ version = determine_release_version
12
+
13
+ return Facter::ResolvedFact.new(FACT_NAME, nil) unless version
14
+
15
+ [Facter::ResolvedFact.new(FACT_NAME, version),
16
+ Facter::ResolvedFact.new(ALIASES.first, version['major'], :legacy),
17
+ Facter::ResolvedFact.new(ALIASES.last, version['full'], :legacy)]
18
+ end
19
+
20
+ def determine_release_version
21
+ version = Facter::Resolvers::ReleaseFromFirstLine.resolve(:release, release_file: '/etc/enterprise-release')
22
+ version ||= Facter::Resolvers::OsRelease.resolve(:version_id)
23
+
24
+ Facter::Util::Facts.release_hash_from_string(version)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end