Class: AmpelExtase::JenkinsWarningStateObserver

Inherits:
Object
  • Object
show all
Defined in:
lib/ampel_extase/jenkins_warning_state_observer.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(observers) ⇒ JenkinsWarningStateObserver

Returns a new instance of JenkinsWarningStateObserver.



14
15
16
# File 'lib/ampel_extase/jenkins_warning_state_observer.rb', line 14

def initialize(observers)
  @observers = observers
end

Class Method Details

.for_urls(*jenkins_urls) ⇒ Object



4
5
6
7
8
9
10
11
12
# File 'lib/ampel_extase/jenkins_warning_state_observer.rb', line 4

def self.for_urls(*jenkins_urls)
  if urls = jenkins_urls.full?
    new urls.map { |jenkins_url|
      AmpelExtase::JenkinsStateObserver.for_url(jenkins_url)
    }
  else
    Tins::NULL
  end
end

Instance Method Details

#checkObject



18
19
20
# File 'lib/ampel_extase/jenkins_warning_state_observer.rb', line 18

def check
  @observers.each(&:check)
end

#expired?(duration) ⇒ Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/ampel_extase/jenkins_warning_state_observer.rb', line 39

def expired?(duration)
  Time.now - last_failure_at > duration
end

#last_failure_atObject



34
35
36
37
# File 'lib/ampel_extase/jenkins_warning_state_observer.rb', line 34

def last_failure_at
  @observers.reject { |o| o.build_state.success? }.
    map(&:state_changed_at).max || Time.at(0)
end

#on_state_change(duration, &block) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
# File 'lib/ampel_extase/jenkins_warning_state_observer.rb', line 22

def on_state_change(duration, &block)
  @observers.each do |observer|
    observer.on_state_change do |state|
      if %w[ FAILURE ABORTED ].include?(state.last_result)
        block.(state)
        return
      end
    end
  end
  self
end