class PuppetMetadata::OperatingSystem

An abstraction layer over operating systems. Mostly to determine End Of Life dates.

@see endoflife.software/operating-systems

Constants

EOL_DATES

The EOL dates for the various operating systems @see .eol_date

Public Class Methods

eol?(operatingsystem, release, at = nil) click to toggle source

Return whether the given operating system release is EOL at the given date

@param [String] operatingsystem

The operating system

@param [String] release

The major version of the operating system

@return [Boolean]

The EOL date for the given operating system release. Nil is returned
when the either when the OS, the release or the EOL date is unknown
# File lib/puppet_metadata/operatingsystem.rb, line 145
def self.eol?(operatingsystem, release, at = nil)
  date = eol_date(operatingsystem, release)
  date && date < (at || Date.today)
end
eol_date(operatingsystem, release) click to toggle source

Return the EOL date for the given operating system release @param [String] operatingsystem

The operating system

@param [String] release

The major version of the operating system

@return [optional, Date]

The EOL date for the given operating system release. Nil is returned
when the either when the OS, the release or the EOL date is unknown
# File lib/puppet_metadata/operatingsystem.rb, line 127
def self.eol_date(operatingsystem, release)
  releases = EOL_DATES[operatingsystem]
  return unless releases
  date = releases[release]
  return unless date
  Date.parse(date)
end
latest_release(operatingsystem) click to toggle source

Return the latest known release for a given operating system @param [String] operatingsystem The operating system @return [optional, String]

The latest major release for the given operating system, if any is
known
# File lib/puppet_metadata/operatingsystem.rb, line 155
def self.latest_release(operatingsystem)
  releases = EOL_DATES[operatingsystem]
  releases&.keys&.max_by { |release| Gem::Version.new(release) }
end