rest-ftp-daemon 0.306.4 → 0.400.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -1
  3. data/Gemfile.lock +3 -3
  4. data/config.ru +5 -11
  5. data/lib/rest-ftp-daemon/api/dashboard.rb +2 -2
  6. data/lib/rest-ftp-daemon/api/debug.rb +1 -1
  7. data/lib/rest-ftp-daemon/api/jobs.rb +5 -5
  8. data/lib/rest-ftp-daemon/api/root.rb +0 -11
  9. data/lib/rest-ftp-daemon/api/status.rb +3 -13
  10. data/lib/rest-ftp-daemon/counters.rb +17 -8
  11. data/lib/rest-ftp-daemon/exceptions.rb +0 -1
  12. data/lib/rest-ftp-daemon/helpers/views.rb +18 -0
  13. data/lib/rest-ftp-daemon/job.rb +4 -4
  14. data/lib/rest-ftp-daemon/job_queue.rb +8 -5
  15. data/lib/rest-ftp-daemon/metrics.rb +5 -15
  16. data/lib/rest-ftp-daemon/static/images/{logo_newrelic.png → feature_newrelic.png} +0 -0
  17. data/lib/rest-ftp-daemon/static/images/{reload.png → feature_reload.png} +0 -0
  18. data/lib/rest-ftp-daemon/views/dashboard_counters.haml +1 -1
  19. data/lib/rest-ftp-daemon/views/dashboard_footer.haml +7 -11
  20. data/lib/rest-ftp-daemon/views/dashboard_header.haml +2 -2
  21. data/lib/rest-ftp-daemon/views/dashboard_jobs.haml +2 -2
  22. data/lib/rest-ftp-daemon/views/dashboard_rates.haml +1 -1
  23. data/lib/rest-ftp-daemon/views/dashboard_workers.haml +2 -5
  24. data/lib/rest-ftp-daemon/worker_pool.rb +6 -4
  25. data/lib/rest-ftp-daemon/workers/conchita.rb +3 -3
  26. data/lib/rest-ftp-daemon/workers/reporter.rb +0 -2
  27. data/lib/rest-ftp-daemon/workers/transfer.rb +3 -3
  28. data/rest-ftp-daemon.gemspec +3 -3
  29. metadata +7 -9
  30. data/lib/rest-ftp-daemon/static/images/logo_newrelic.fw.png +0 -0
  31. data/lib/rest-ftp-daemon/static/images/logo_newrelic_full.png +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0d15b2a4f1323d3b3ff66469ae5355fb791d650c
4
- data.tar.gz: 21d956bad2aff427c072a155888625b3ec4d47c5
3
+ metadata.gz: 0ddc0fb0b76fb6590512af92bcff70b63b03d770
4
+ data.tar.gz: e43a27f7cc877d49bc965493aedd7a97cad1ff3a
5
5
  SHA512:
6
- metadata.gz: 2d5574f7d1fdab3fbba01799a82e31e40bb4ba80c50bcd5ae5b1512186559c4f0cad9344622bd6a8d8bee3a0843d528b30eaa265194c70788b394d941a52fd60
7
- data.tar.gz: 8b1197ca349561e3d1f7c667a170360b7ec74a84d8aeaf408a1f9d088cf3cef6389862a59fc8283754e5af8d48cdc715adc8314ad653bbb611abdc60f42f561c
6
+ metadata.gz: 0b39316f2dc7892f5b77fb27a6e7f9b46df8dbb43be7382218ca25d49681114be8d4e5b99ef8e59e341d18da62302322b1431bb789a8dbc11b15bdbdf241f53e
7
+ data.tar.gz: b2a2e0a9c4f1a1737ce42e8e767c8ae3ffa19dfa30e12b63ebde9fd9492aa4f835436ed797c2fd93557392f5122a0f6a62255da738bd759faf57efa34ea9515a
data/.rubocop.yml CHANGED
@@ -412,7 +412,7 @@ Style/FormatString:
412
412
 
413
413
  # Built-in global variables are allowed by default.
414
414
  Style/GlobalVars:
415
- AllowedVariables: ["$queue", "$pool"]
415
+ AllowedVariables: ["$pool"]
416
416
 
417
417
  # `MinBodyLength` defines the number of lines of the a body of an if / unless
418
418
  # needs to have to trigger this cop
data/Gemfile.lock CHANGED
@@ -1,10 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rest-ftp-daemon (0.306.4)
4
+ rest-ftp-daemon (0.400.0)
5
5
  activesupport (~> 4.2)
6
6
  api-auth
7
- bmc-daemon-lib (~> 0.3.1)
7
+ bmc-daemon-lib (~> 0.3.3)
8
8
  double-bag-ftps
9
9
  facter
10
10
  get_process_mem
@@ -38,7 +38,7 @@ GEM
38
38
  descendants_tracker (~> 0.0.4)
39
39
  ice_nine (~> 0.11.0)
40
40
  thread_safe (~> 0.3, >= 0.3.1)
41
- bmc-daemon-lib (0.3.2)
41
+ bmc-daemon-lib (0.3.3)
42
42
  chamber (~> 2.9)
43
43
  builder (3.2.2)
44
44
  chamber (2.9.0)
data/config.ru CHANGED
@@ -4,16 +4,6 @@ load_path_libs = File.expand_path "lib", File.dirname(__FILE__)
4
4
  $LOAD_PATH.unshift(load_path_libs) unless $LOAD_PATH.include?(load_path_libs)
5
5
  require "rest-ftp-daemon"
6
6
 
7
- # Create global queue
8
- $queue = RestFtpDaemon::JobQueue.new
9
-
10
- # Create global counters
11
- $counters = RestFtpDaemon::Counters.new
12
-
13
- # Initialize workers
14
- $pool = RestFtpDaemon::WorkerPool.new
15
- $pool.start!
16
-
17
7
  # Rack authent
18
8
  unless Conf[:adminpwd].nil?
19
9
  use Rack::Auth::Basic, "Restricted Area" do |username, password|
@@ -30,5 +20,9 @@ unless Conf.app_env == "production"
30
20
  # use Rack::MiniProfiler
31
21
  end
32
22
 
33
- # Launch the main daemon
23
+
24
+ # Initialize workers
25
+ RestFtpDaemon::WorkerPool.instance.start_em_all
26
+
27
+ # Launch the API
34
28
  run RestFtpDaemon::API::Root
@@ -33,11 +33,11 @@ module RestFtpDaemon
33
33
  @page = params["page"].to_i
34
34
 
35
35
  # Get jobs for this view, order jobs by their weights
36
- jobs_with_status = $queue.jobs_with_status(filter).reverse
36
+ jobs_with_status = RestFtpDaemon::JobQueue.instance.jobs_with_status(filter).reverse
37
37
 
38
38
  # Provide queue only if no filtering set
39
39
  if filter.empty?
40
- @jobs_queued = $queue.jobs_queued
40
+ @jobs_queued = RestFtpDaemon::JobQueue.instance.jobs_queued
41
41
  else
42
42
  @jobs_queued = []
43
43
  end
@@ -14,7 +14,7 @@ module RestFtpDaemon
14
14
  def debug_encodings
15
15
  # Encodings
16
16
  encodings = {}
17
- jobs = $queue.jobs
17
+ jobs = RestFtpDaemon::JobQueue.instance.jobs
18
18
 
19
19
  jobs.each do |job|
20
20
  # here = out[job.id] = {}
@@ -13,7 +13,7 @@ module RestFtpDaemon
13
13
  begin
14
14
  # Get job to display
15
15
  raise RestFtpDaemon::JobNotFound if params[:id].nil?
16
- job = $queue.find_by_id(params[:id]) || $queue.find_by_id(params[:id], true)
16
+ job = RestFtpDaemon::JobQueue.instance.find_by_id(params[:id]) || RestFtpDaemon::JobQueue.instance.find_by_id(params[:id], true)
17
17
  raise RestFtpDaemon::JobNotFound if job.nil?
18
18
 
19
19
  rescue RestFtpDaemon::JobNotFound => exception
@@ -35,7 +35,7 @@ module RestFtpDaemon
35
35
  get "/" do
36
36
  begin
37
37
  # Get jobs to display
38
- jobs = $queue.jobs
38
+ jobs = RestFtpDaemon::JobQueue.instance.jobs
39
39
 
40
40
  rescue StandardError => exception
41
41
  log_error "Exception: #{exception.message}"
@@ -73,14 +73,14 @@ module RestFtpDaemon
73
73
  # log_debug params.to_json
74
74
  begin
75
75
  # Create a new job
76
- job_id = $queue.generate_id
76
+ job_id = RestFtpDaemon::JobQueue.instance.generate_id
77
77
  job = Job.new(job_id, params)
78
78
 
79
79
  # And push it to the queue
80
- $queue.push job
80
+ RestFtpDaemon::JobQueue.instance.push job
81
81
 
82
82
  # Increment a counter
83
- $counters.increment :jobs, :received
83
+ RestFtpDaemon::Counters.instance.increment :jobs, :received
84
84
 
85
85
  rescue JSON::ParserError => exception
86
86
  log_error "JSON::ParserError: #{exception.message}"
@@ -44,19 +44,8 @@ module RestFtpDaemon
44
44
  ### INITIALIZATION
45
45
  def initialize
46
46
  super
47
-
48
- # Check that Queue and Pool are available
49
- unless $pool.is_a? RestFtpDaemon::WorkerPool
50
- log_error "Metrics.sample: invalid WorkerPool"
51
- raise RestFtpDaemon::MissingPool
52
- end
53
- unless $queue.is_a? RestFtpDaemon::JobQueue
54
- log_error "Metrics.sample: invalid JobQueue"
55
- raise RestFtpDaemon::MissingQueue
56
- end
57
47
  end
58
48
 
59
-
60
49
  ### ENDPOINTS
61
50
  get "/" do
62
51
  redirect dashboard_url()
@@ -10,18 +10,8 @@ module RestFtpDaemon
10
10
  get "/" do
11
11
  status 200
12
12
 
13
- # Check that Queue and Pool are available
14
- unless true
15
- log_error "Status API: invalid WorkerPool"
16
- return status 501
17
- end
18
- unless $queue.is_a? RestFtpDaemon::JobQueue
19
- log_error "Status API: invalid JobQueue"
20
- return status 501
21
- end
22
-
23
13
  # Get counters
24
- counters = $counters.stats.dup
14
+ counters = RestFtpDaemon::Counters.instance.stats
25
15
 
26
16
  # Amend counters with legacy attributes
27
17
  if counters[:jobs].is_a? Hash
@@ -38,13 +28,13 @@ module RestFtpDaemon
38
28
  version: Conf.app_ver,
39
29
  started: Conf.app_started,
40
30
  hostname: `hostname`.to_s.chomp,
41
- jobs_count: $queue.jobs_count,
31
+ jobs_count: RestFtpDaemon::JobQueue.instance.jobs_count,
42
32
 
43
33
  metrics: Metrics.sample,
44
34
 
45
35
  counters: counters,
46
36
 
47
- workers: $pool.worker_variables,
37
+ workers: RestFtpDaemon::WorkerPool.instance.worker_variables,
48
38
 
49
39
  }
50
40
  end
@@ -1,31 +1,36 @@
1
- # Queue that stores all the Jobs waiting to be processed or fully processed
1
+ require 'singleton'
2
2
 
3
+ # Queue that stores all the Jobs waiting to be processed or fully processed
3
4
  module RestFtpDaemon
4
5
  class Counters
5
-
6
- # Class options
7
- attr_reader :stats
6
+ include Singleton
8
7
 
9
8
  def initialize
9
+ # Initialize values
10
10
  @stats = {}
11
- @mutex_stats = Mutex.new
11
+
12
+ # Create mutex
13
+ @mutex = Mutex.new
14
+
15
+
16
+ set :system, :started_at, Time.now
12
17
  end
13
18
 
14
19
  def set group, name, value
15
- @mutex_stats.synchronize do
20
+ @mutex.synchronize do
16
21
  @stats[group] ||= {}
17
22
  @stats[group][name] = value
18
23
  end
19
24
  end
20
25
 
21
26
  def get group, name
22
- @mutex_stats.synchronize do
27
+ @mutex.synchronize do
23
28
  @stats[group][name] if @stats[group].is_a? Hash
24
29
  end
25
30
  end
26
31
 
27
32
  def add group, name, value
28
- @mutex_stats.synchronize do
33
+ @mutex.synchronize do
29
34
  @stats[group] ||= {}
30
35
  @stats[group][name] ||= 0
31
36
  @stats[group][name] += value
@@ -36,5 +41,9 @@ module RestFtpDaemon
36
41
  add group, name, 1
37
42
  end
38
43
 
44
+ def stats
45
+ return @stats.dup
46
+ end
47
+
39
48
  end
40
49
  end
@@ -4,7 +4,6 @@ module RestFtpDaemon
4
4
 
5
5
  class DummyException < RestFtpDaemonException; end
6
6
 
7
- class MissingQueue < RestFtpDaemonException; end
8
7
  class MissingPool < RestFtpDaemonException; end
9
8
  class InvalidWorkerNumber < RestFtpDaemonException; end
10
9
 
@@ -1,6 +1,24 @@
1
1
  module RestFtpDaemon
2
2
  module ViewsHelper
3
3
 
4
+ def dashboard_feature name, enabled, message_on = "enabled", message_of = "disabled"
5
+ # Build classes
6
+ class_status = enabled ? 'enabled' : 'disabled'
7
+ classes = "btn btn-default feature-#{class_status}"
8
+
9
+ # Build title
10
+ title_status = enabled ? message_on : message_of
11
+ title = "#{name}: #{title_status}"
12
+
13
+ return sprintf(
14
+ '<div class="%s" title="%s"><img src="/images/feature_%s.png" height="14" alt="%s"/></div>',
15
+ classes,
16
+ title,
17
+ name,
18
+ title
19
+ )
20
+ end
21
+
4
22
  def dashboard_job_url job
5
23
  "#{MOUNT_JOBS}/#{job.id}" if job.respond_to? :id
6
24
  end
@@ -491,8 +491,8 @@ module RestFtpDaemon
491
491
  @finished_at = Time.now
492
492
 
493
493
  # Update counters
494
- $counters.increment :jobs, :finished
495
- $counters.add :data, :transferred, @transfer_total
494
+ RestFtpDaemon::Counters.instance.increment :jobs, :finished
495
+ RestFtpDaemon::Counters.instance.add :data, :transferred, @transfer_total
496
496
  end
497
497
 
498
498
  def remote_push source, target
@@ -658,8 +658,8 @@ module RestFtpDaemon
658
658
  end
659
659
 
660
660
  # Increment counter for this error
661
- $counters.increment :errors, error
662
- $counters.increment :jobs, :failed
661
+ RestFtpDaemon::Counters.instance.increment :errors, error
662
+ RestFtpDaemon::Counters.instance.increment :jobs, :failed
663
663
 
664
664
  # Prepare notification if signal given
665
665
  return unless event
@@ -1,7 +1,10 @@
1
- module RestFtpDaemon
1
+ require 'singleton'
2
2
 
3
- # Queue that stores all the Jobs waiting to be processed or fully processed
3
+ # Queue that stores all the Jobs waiting to be processed or fully processed
4
+ module RestFtpDaemon
4
5
  class JobQueue
6
+ include Singleton
7
+
5
8
  include BmcDaemonLib::LoggerHelper
6
9
  include ::NewRelic::Agent::Instrumentation::ControllerInstrumentation
7
10
  include CommonHelpers
@@ -11,23 +14,23 @@ module RestFtpDaemon
11
14
  attr_reader :jobs
12
15
 
13
16
  def initialize
14
- # Instance variables
17
+ # Initialize values
15
18
  @queues = {}
16
19
  @waitings = {}
17
20
  @jobs = []
21
+ @last_id = 0
18
22
 
19
23
  @queues.taint # enable tainted communication
20
24
  @waitings.taint
21
25
  taint
22
26
 
23
- # Global mutex for the queue
27
+ # Create mutex
24
28
  @mutex = Mutex.new
25
29
 
26
30
  # Logger
27
31
  @logger = BmcDaemonLib::LoggerPool.instance.get :queue
28
32
 
29
33
  # Identifiers generator
30
- @last_id = 0
31
34
  @prefix = identifier JOB_IDENT_LEN
32
35
  log_info "JobQueue initialized (prefix: #{@prefix})"
33
36
  end
@@ -2,10 +2,6 @@ module RestFtpDaemon
2
2
  class Metrics
3
3
 
4
4
  def self.sample
5
- # Check validity of globals
6
- return unless $pool.is_a? RestFtpDaemon::WorkerPool
7
- return unless $queue.is_a? RestFtpDaemon::JobQueue
8
-
9
5
  # Prepare external deps
10
6
  mem = GetProcessMem.new
11
7
 
@@ -16,10 +12,10 @@ module RestFtpDaemon
16
12
  memory: mem.bytes.to_i,
17
13
  threads: Thread.list.count,
18
14
  },
19
- jobs_by_status: $queue.jobs_by_status,
20
- rate_by_pool: $queue.rate_by(:pool),
21
- rate_by_targethost: $queue.rate_by(:targethost),
22
- queued_by_pool: $queue.queued_by_pool,
15
+ jobs_by_status: RestFtpDaemon::JobQueue.instance.jobs_by_status,
16
+ rate_by_pool: RestFtpDaemon::JobQueue.instance.rate_by(:pool),
17
+ rate_by_targethost: RestFtpDaemon::JobQueue.instance.rate_by(:targethost),
18
+ queued_by_pool: RestFtpDaemon::JobQueue.instance.queued_by_pool,
23
19
  workers_by_status: self.workers_count_by_status,
24
20
  }
25
21
  end
@@ -31,13 +27,7 @@ module RestFtpDaemon
31
27
  # Init
32
28
  counts = {}
33
29
 
34
- # Check validity of globals
35
- unless $pool.is_a? RestFtpDaemon::WorkerPool
36
- log_error "Metrics.workers_count_by_status: invalid WorkerPool"
37
- return counts
38
- end
39
-
40
- $pool.worker_variables.group_by do |wid, vars|
30
+ RestFtpDaemon::WorkerPool.instance.worker_variables.group_by do |wid, vars|
41
31
  vars[:status]
42
32
  end.each do |status, workers|
43
33
  counts[status] = workers.count
@@ -11,7 +11,7 @@
11
11
 
12
12
  %tbody
13
13
 
14
- - $counters.stats.each do |group, values|
14
+ - RestFtpDaemon::Counters.instance.stats.each do |group, values|
15
15
  - if values.is_a? Enumerable
16
16
  - values.each do |name, value|
17
17
  %tr
@@ -1,7 +1,5 @@
1
1
  -# coding: utf-8
2
2
  - info_procs = (Facter.value :processorcount).to_i
3
- - newrelic_class = Conf.newrelic_enabled? ? 'feature-enabled' : 'feature-disabled'
4
- - reload_class = Conf[:allow_reload] ? 'feature-enabled' : 'feature-disabled'
5
3
 
6
4
  .footer-signature.pull-left
7
5
 
@@ -11,23 +9,21 @@
11
9
 
12
10
  &middot;
13
11
  %a{href: "http://github.com/bmedici/rest-ftp-daemon/"} GitHub
12
+
14
13
  &middot;
15
14
  %a{href: "http://refactorcop.com/bmedici/rest-ftp-daemon/"} RefactorCop
16
15
 
17
16
 
18
17
  .footer-indicators.pull-right
19
18
 
19
+ .btn-group.btn-group-sm
20
+ .btn.btn-default.btn-info Host
21
+ .btn.btn-default= Conf.host
22
+
20
23
  .btn-group.btn-group-sm
21
24
  .btn.btn-default.btn-info Features
22
- .btn.btn-default{class: newrelic_class}
23
- %img{src: "/images/logo_newrelic.png", height: "14", title: "NewRelic"}
24
- .btn.btn-default{class: reload_class}
25
- %img{src: "/images/reload.png", height: "14", title: "Configuration is hot-reloadable (allow_relaod)"}
26
-
27
- - if Conf.host
28
- .btn-group.btn-group-sm
29
- .btn.btn-default.btn-info Host
30
- .btn.btn-default= Conf.host
25
+ = dashboard_feature :reload, Conf[:allow_reload], "configuration is hot-reloadable", "configuration changes at startup only"
26
+ = dashboard_feature :newrelic, Conf.newrelic_enabled?, "active (license found)", "disabled"
31
27
 
32
28
  .btn-group.btn-group-sm
33
29
  .btn.btn-default.btn-info IP
@@ -2,8 +2,8 @@
2
2
  - info_procs = (Facter.value :processorcount).to_i
3
3
  - info_load = Sys::CPU.load_avg.first.to_f
4
4
  - info_norm = info_procs.zero? ? "N/A" : (100 * info_load / info_procs).round(1)
5
- - info_trans = $counters.get :data, :transferred
6
- - info_processed = $counters.get :jobs, :processed
5
+ - info_trans = RestFtpDaemon::Counters.instance.get :data, :transferred
6
+ - info_processed = RestFtpDaemon::Counters.instance.get :jobs, :processed
7
7
  - mem = GetProcessMem.new
8
8
 
9
9
 
@@ -1,6 +1,6 @@
1
1
  -# coding: utf-8
2
- - jobs_by_status = $queue.jobs_by_status
3
- - counts_all = $queue.jobs_count
2
+ - jobs_by_status = RestFtpDaemon::JobQueue.instance.jobs_by_status
3
+ - counts_all = RestFtpDaemon::JobQueue.instance.jobs_count
4
4
  - jobs = @paginate.subset
5
5
 
6
6
  .btn-group.btn-group-xs.filters
@@ -7,7 +7,7 @@
7
7
 
8
8
 
9
9
  - groups.each do |group_by, group_title|
10
- - rates_by_status = $queue.rate_by(group_by)
10
+ - rates_by_status = RestFtpDaemon::JobQueue.instance.rate_by(group_by)
11
11
 
12
12
  %table.table.table-striped.table-hover.table-condensed
13
13
 
@@ -1,8 +1,5 @@
1
1
  -# coding: utf-8
2
-
3
- - unless $pool.is_a? RestFtpDaemon::WorkerPool
4
- - log_error "Dashboard: invalid WorkerPool"
5
- - variables = $pool.worker_variables
2
+ - variables = RestFtpDaemon::WorkerPool.instance.worker_variables
6
3
 
7
4
  %h2 Worker status
8
5
 
@@ -19,7 +16,7 @@
19
16
  %tbody
20
17
  - variables.each do |wid, vars|
21
18
  - status = vars[:status]
22
- - alive = $pool.worker_alive? wid
19
+ - alive = RestFtpDaemon::WorkerPool.instance.worker_alive? wid
23
20
  - trclass = WORKER_STYLES[status]
24
21
 
25
22
  - unless alive
@@ -1,7 +1,10 @@
1
- module RestFtpDaemon
1
+ require 'singleton'
2
2
 
3
- # Handles a pool of Worker objects
3
+ # Handles a pool of Worker objects
4
+ module RestFtpDaemon
4
5
  class WorkerPool
6
+ include Singleton
7
+
5
8
  include BmcDaemonLib::LoggerHelper
6
9
  include ::NewRelic::Agent::Instrumentation::ControllerInstrumentation
7
10
 
@@ -22,7 +25,7 @@ module RestFtpDaemon
22
25
  @seqno = 0
23
26
  end
24
27
 
25
- def start!
28
+ def start_em_all
26
29
  # Read configuration or initialize with empty hash
27
30
  pools = Conf.at[:pools]
28
31
  pools = {} unless pools.is_a? Hash
@@ -50,7 +53,6 @@ module RestFtpDaemon
50
53
  log_error "EXCEPTION: #{ex.message}", ex.backtrace
51
54
  end
52
55
 
53
-
54
56
  def worker_variables
55
57
  vars = {}
56
58
  @workers.collect do |wid, worker|
@@ -25,9 +25,9 @@ module RestFtpDaemon
25
25
  worker_status WORKER_STATUS_CLEANING
26
26
 
27
27
  # Cleanup queues according to configured max-age
28
- $queue.expire JOB_STATUS_FINISHED, maxage(JOB_STATUS_FINISHED), @config[:debug]
29
- $queue.expire JOB_STATUS_FAILED, maxage(JOB_STATUS_FAILED), @config[:debug]
30
- $queue.expire JOB_STATUS_QUEUED, maxage(JOB_STATUS_QUEUED), @config[:debug]
28
+ RestFtpDaemon::JobQueue.instance.expire JOB_STATUS_FINISHED, maxage(JOB_STATUS_FINISHED), @config[:debug]
29
+ RestFtpDaemon::JobQueue.instance.expire JOB_STATUS_FAILED, maxage(JOB_STATUS_FAILED), @config[:debug]
30
+ RestFtpDaemon::JobQueue.instance.expire JOB_STATUS_QUEUED, maxage(JOB_STATUS_QUEUED), @config[:debug]
31
31
 
32
32
  # Force garbage collector
33
33
  GC.start if @config["garbage_collector"]
@@ -14,8 +14,6 @@ module RestFtpDaemon
14
14
 
15
15
  # Check that everything is OK
16
16
  return "invalid timer" unless @config[:timer].to_i > 0
17
- # return "invalid WorkerPool" unless $pool.is_a? RestFtpDaemon::WorkerPool
18
- # return "invalid JobQueue" unless $queue.is_a? RestFtpDaemon::JobQueue
19
17
  return false
20
18
  end
21
19
 
@@ -32,7 +32,7 @@ module RestFtpDaemon
32
32
  def worker_process
33
33
  # Wait for a job to be available in the queue
34
34
  worker_status WORKER_STATUS_WAITING
35
- job = $queue.pop @pool
35
+ job = RestFtpDaemon::JobQueue.instance.pop @pool
36
36
 
37
37
  # Work on this job
38
38
  work_on_job(job)
@@ -64,7 +64,7 @@ module RestFtpDaemon
64
64
  log_info "retrying job: requeued after delay"
65
65
 
66
66
  # Now, requeue this job
67
- $queue.requeue job
67
+ RestFtpDaemon::JobQueue.instance.requeue job
68
68
  end
69
69
  end
70
70
 
@@ -83,7 +83,7 @@ module RestFtpDaemon
83
83
  worker_status WORKER_STATUS_FINISHED, job
84
84
 
85
85
  # Increment total processed jobs count
86
- $counters.increment :jobs, :processed
86
+ RestFtpDaemon::Counters.instance.increment :jobs, :processed
87
87
 
88
88
  rescue RestFtpDaemon::JobTimeout => ex
89
89
  log_error "JOB TIMED OUT", ex.backtrace
@@ -2,7 +2,7 @@
2
2
  Gem::Specification.new do |spec|
3
3
 
4
4
  # Project version
5
- spec.version = "0.306.4"
5
+ spec.version = "0.400.0"
6
6
 
7
7
  # Project description
8
8
  spec.name = "rest-ftp-daemon"
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
21
21
  reject{ |f| f =~ /^dashboard.+\.png/ }
22
22
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
23
23
  spec.require_paths = ["lib"]
24
- spec.required_ruby_version = ">= 2.2"
24
+ spec.required_ruby_version = ">= 2.2.2"
25
25
 
26
26
 
27
27
  # Development dependencies
@@ -33,7 +33,7 @@ Gem::Specification.new do |spec|
33
33
  spec.add_development_dependency "http"
34
34
 
35
35
  # Runtime dependencies
36
- spec.add_runtime_dependency "bmc-daemon-lib", "~> 0.3.1"
36
+ spec.add_runtime_dependency "bmc-daemon-lib", "~> 0.3.3"
37
37
  spec.add_runtime_dependency "json", "~> 1.8"
38
38
  spec.add_runtime_dependency "thin", "~> 1.7"
39
39
  spec.add_runtime_dependency "activesupport", "~> 4.2"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rest-ftp-daemon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.306.4
4
+ version: 0.400.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bruno MEDICI
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-18 00:00:00.000000000 Z
11
+ date: 2016-08-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 0.3.1
103
+ version: 0.3.3
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 0.3.1
110
+ version: 0.3.3
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: json
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -364,10 +364,8 @@ files:
364
364
  - lib/rest-ftp-daemon/remote_sftp.rb
365
365
  - lib/rest-ftp-daemon/static/css/bootstrap.css
366
366
  - lib/rest-ftp-daemon/static/css/main.css
367
- - lib/rest-ftp-daemon/static/images/logo_newrelic.fw.png
368
- - lib/rest-ftp-daemon/static/images/logo_newrelic.png
369
- - lib/rest-ftp-daemon/static/images/logo_newrelic_full.png
370
- - lib/rest-ftp-daemon/static/images/reload.png
367
+ - lib/rest-ftp-daemon/static/images/feature_newrelic.png
368
+ - lib/rest-ftp-daemon/static/images/feature_reload.png
371
369
  - lib/rest-ftp-daemon/uri.rb
372
370
  - lib/rest-ftp-daemon/views/dashboard.haml
373
371
  - lib/rest-ftp-daemon/views/dashboard_counters.haml
@@ -404,7 +402,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
404
402
  requirements:
405
403
  - - ">="
406
404
  - !ruby/object:Gem::Version
407
- version: '2.2'
405
+ version: 2.2.2
408
406
  required_rubygems_version: !ruby/object:Gem::Requirement
409
407
  requirements:
410
408
  - - ">="