Class: ForemanThemeSatellite::Lifecycle

Inherits:
Object
  • Object
show all
Defined in:
app/services/foreman_theme_satellite/lifecycle.rb

Class Method Summary collapse

Class Method Details

.lifecycle_data(version) ⇒ Object

rubocop:disable Metrics/AbcSize



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'app/services/foreman_theme_satellite/lifecycle.rb', line 5

def lifecycle_data(version)
   = ::ForemanThemeSatellite::LIFECYCLE_METADATA_PATH

  parsed = Foreman::Version.new(version)
  lifecycle_data = { current_version: version, short_version: "#{parsed.major}.#{parsed.minor}" }

  return lifecycle_data unless File.exist?()

  yaml = YAML.load_file()
  raise "Unexpected lifecycle metadata file version '#{yaml['version']}'" unless yaml['version'] == '1'

  eol = yaml['releases'].fetch(lifecycle_data[:short_version], {})['end_of_life']
  lifecycle_data[:end_of_life] = Time.find_zone('UTC').parse(eol) if eol
  lifecycle_data[:status] = if lifecycle_data[:end_of_life].nil?
                              nil
                            elsif lifecycle_data[:end_of_life] < Time.zone.now
                              'danger'
                            elsif lifecycle_data[:end_of_life] < 6.months.after
                              'warning'
                            end

  lifecycle_data
end