Module: ForemanMaintain::Concerns::OsFacts
- Included in:
- SystemHelpers
- Defined in:
- lib/foreman_maintain/concerns/os_facts.rb
Constant Summary collapse
- OS_RELEASE_FILE =
'/etc/os-release'.freeze
- FALLBACK_OS_RELEASE_FILE =
'/usr/lib/os-release'.freeze
Instance Method Summary collapse
- #debian? ⇒ Boolean
- #el7? ⇒ Boolean
- #el8? ⇒ Boolean
- #el? ⇒ Boolean
- #el_major_version ⇒ Object
- #facts ⇒ Object
- #os_id ⇒ Object
- #os_id_like_list ⇒ Object
- #os_release_file ⇒ Object
- #os_version_id ⇒ Object
Instance Method Details
#debian? ⇒ Boolean
53 54 55 |
# File 'lib/foreman_maintain/concerns/os_facts.rb', line 53 def debian? File.exist?('/etc/debian_version') end |
#el7? ⇒ Boolean
57 58 59 |
# File 'lib/foreman_maintain/concerns/os_facts.rb', line 57 def el7? el_major_version == 7 end |
#el8? ⇒ Boolean
61 62 63 |
# File 'lib/foreman_maintain/concerns/os_facts.rb', line 61 def el8? el_major_version == 8 end |
#el? ⇒ Boolean
49 50 51 |
# File 'lib/foreman_maintain/concerns/os_facts.rb', line 49 def el? File.exist?('/etc/redhat-release') end |
#el_major_version ⇒ Object
65 66 67 |
# File 'lib/foreman_maintain/concerns/os_facts.rb', line 65 def el_major_version return os_version_id.to_i if el? end |
#facts ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/foreman_maintain/concerns/os_facts.rb', line 19 def facts unless defined?(@facts) @facts = {} regex = /^(["'])(.*)(\1)$/ File.open(os_release_file) do |file| file.readlines.each do |line| line.strip! # drop any whitespace, including newlines from start and end of the line next if line.start_with?('#') # ignore comments # split at most into 2 items, if the value ever contains an = key, value = line.split('=', 2) next unless key && value @facts[key] = value.gsub(regex, '\2').delete('\\') end end end @facts end |
#os_id ⇒ Object
41 42 43 |
# File 'lib/foreman_maintain/concerns/os_facts.rb', line 41 def os_id facts.fetch('ID') end |
#os_id_like_list ⇒ Object
45 46 47 |
# File 'lib/foreman_maintain/concerns/os_facts.rb', line 45 def os_id_like_list facts.fetch('ID_LIKE', '').split end |
#os_release_file ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/foreman_maintain/concerns/os_facts.rb', line 7 def os_release_file if File.file?(OS_RELEASE_FILE) return OS_RELEASE_FILE elsif File.file?(FALLBACK_OS_RELEASE_FILE) return FALLBACK_OS_RELEASE_FILE else puts "The #{OS_RELEASE_FILE} and #{FALLBACK_OS_RELEASE_FILE} files are missing! "\ "Can't continue the execution without Operating System's facts!" exit 1 end end |
#os_version_id ⇒ Object
37 38 39 |
# File 'lib/foreman_maintain/concerns/os_facts.rb', line 37 def os_version_id facts.fetch('VERSION_ID') end |