facter 4.0.49 → 4.0.50

Sign up to get free protection for your applications and to get access to all the features.
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