11require 'travis/scheduler/helper/context'
22require 'travis/scheduler/helper/logging'
3+ require 'travis/scheduler/model/settings'
34
45module Travis
56 module Scheduler
@@ -8,7 +9,6 @@ class ByQueue < Struct.new(:context, :reports, :owners, :job, :selected, :state,
89 include Helper ::Context
910
1011 def enqueue?
11- return true unless enabled?
1212 return true unless queue == ENV [ 'BY_QUEUE_NAME' ]
1313 result = current < max
1414 report ( max ) if result
@@ -17,39 +17,47 @@ def enqueue?
1717
1818 private
1919
20- def enabled?
21- config [ owners . key ] || ENV [ 'BY_QUEUE_DEFAULT' ]
20+ def queue
21+ job . queue ||= Queue . new ( job , context . config , nil ) . select
2222 end
2323
2424 def current
2525 state . running_by_queue ( job . queue ) + selected . select { |j | j . queue == queue } . size
2626 end
2727
2828 def max
29- config . fetch ( owners . key , default ) . to_i
29+ by_config || by_setting || default
3030 end
3131
32- def queue
33- job . queue ||= Queue . new ( job , context . config , nil ) . select
32+ def by_config
33+ config [ owners . key ] . to_i if config . key? ( owners . key )
3434 end
3535
36- def repo
37- job . repository
36+ def by_setting
37+ # p settings[:by_queue_enabled].enabled?
38+ settings [ :by_queue_enabled ] . enabled? && settings [ :by_queue ] . value
3839 end
3940
40- def report ( value )
41- reports << MSGS [ :max ] % [ owners . to_s , "queue #{ job . queue } " , value ]
42- value
41+ def repo
42+ job . repository
4343 end
4444
4545 def default
46- ENV [ 'BY_QUEUE_DEFAULT' ] . to_i
46+ ENV . fetch ( 'BY_QUEUE_DEFAULT' , 2 ) . to_i
4747 end
4848
49- # TODO make this a repo setting at some point?
5049 def config
5150 @config ||= ENV [ 'BY_QUEUE_LIMIT' ] . to_s . split ( ',' ) . map { |pair | pair . split ( '=' ) } . to_h
5251 end
52+
53+ def settings
54+ @settings ||= Model ::Settings . new ( owners )
55+ end
56+
57+ def report ( value )
58+ reports << MSGS [ :max ] % [ owners . to_s , "queue #{ job . queue } " , value ]
59+ value
60+ end
5361 end
5462 end
5563 end
0 commit comments