rest-ftp-daemon 0.231.1 → 0.240.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +3 -2
- data/bin/rest-ftp-daemon +3 -2
- data/lib/rest-ftp-daemon/api/root.rb +15 -2
- data/lib/rest-ftp-daemon/constants.rb +1 -1
- data/lib/rest-ftp-daemon/job.rb +13 -3
- data/lib/rest-ftp-daemon/job_queue.rb +8 -10
- data/lib/rest-ftp-daemon/notification.rb +1 -1
- data/lib/rest-ftp-daemon/paginate.rb +1 -1
- data/lib/rest-ftp-daemon/remote_sftp.rb +7 -1
- data/lib/rest-ftp-daemon/settings.rb +2 -2
- data/lib/rest-ftp-daemon/static/css/main.css +8 -5
- data/lib/rest-ftp-daemon/views/dashboard_jobs.haml +5 -3
- data/lib/rest-ftp-daemon/views/dashboard_table.haml +12 -3
- data/lib/rest-ftp-daemon/worker.rb +7 -3
- data/lib/rest-ftp-daemon/worker_conchita.rb +1 -1
- data/lib/rest-ftp-daemon/worker_job.rb +46 -17
- data/lib/rest-ftp-daemon/worker_pool.rb +3 -5
- data/rest-ftp-daemon.gemspec +1 -0
- data/rest-ftp-daemon.yml.sample +14 -8
- data/spec/spec_helper.rb +7 -1
- data/spec/support/config.yml +8 -8
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d93647c6c82dc619334ae8f906604f0b3472def0
|
4
|
+
data.tar.gz: 00175925d0ffe1d63c3f8b6f21a79985f02ebbb5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 08ec5e3fe94b08fd1caa9cae780e32a5ddff96736ce8dcee10d0da70356b36adc3b60bee52c825eac97f3a1704c4aab450c7d778b710eb42477ac2c74ef5defc
|
7
|
+
data.tar.gz: 3479a4a57c9396f39bf8cb5a50b061a1887b5bd2e565621f856976dc7b55b4a51a0c4b078cde8e216c41e81aa91f40cae6b0ee10091f550a725281530012c43f
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rest-ftp-daemon (0.
|
4
|
+
rest-ftp-daemon (0.240.0)
|
5
5
|
double-bag-ftps
|
6
6
|
facter
|
7
7
|
get_process_mem
|
@@ -10,6 +10,7 @@ PATH
|
|
10
10
|
haml
|
11
11
|
json
|
12
12
|
net-sftp
|
13
|
+
net-ssh (~> 2.10.1.rc1)
|
13
14
|
newrelic_rpm
|
14
15
|
settingslogic
|
15
16
|
sys-cpu
|
@@ -84,7 +85,7 @@ GEM
|
|
84
85
|
multi_xml (0.5.5)
|
85
86
|
net-sftp (2.1.2)
|
86
87
|
net-ssh (>= 2.6.5)
|
87
|
-
net-ssh (2.
|
88
|
+
net-ssh (2.10.1.rc1)
|
88
89
|
newrelic_rpm (3.13.0.299)
|
89
90
|
parser (2.2.2.6)
|
90
91
|
ast (>= 1.1, < 3.0)
|
data/bin/rest-ftp-daemon
CHANGED
@@ -45,7 +45,6 @@ parser = OptionParser.new do |opts|
|
|
45
45
|
end
|
46
46
|
|
47
47
|
|
48
|
-
|
49
48
|
# Parse options and check compliance
|
50
49
|
begin
|
51
50
|
parser.order!(ARGV)
|
@@ -60,6 +59,7 @@ end
|
|
60
59
|
# Load config, and merge options from ARGV into settings
|
61
60
|
# FIXME: file configuration detection could reside in settings.rb
|
62
61
|
APP_CONF ||= DEFAULT_CONFIG_PATH
|
62
|
+
APP_ENV ||= "production"
|
63
63
|
abort "EXITING: cannot read configuration file: #{APP_CONF}" unless File.exist? APP_CONF
|
64
64
|
begin
|
65
65
|
# Import settings
|
@@ -92,12 +92,13 @@ end
|
|
92
92
|
|
93
93
|
|
94
94
|
# ARGV: build final
|
95
|
+
thin_logs = Settings.at(:logs, :thin)
|
95
96
|
argv = []
|
96
97
|
argv << ["-e", Settings.namespace]
|
97
98
|
argv << ["-p", Settings.port.to_s] if Settings.port
|
98
99
|
argv << ["--pid", Settings.pidfile]
|
99
100
|
argv << ["--tag", "'#{APP_NAME}/#{Settings.namespace}'"]
|
100
|
-
argv << ["--log",
|
101
|
+
argv << ["--log", thin_logs] unless !thin_logs
|
101
102
|
argv << ["--daemonize"] if [1, true].include? Settings.daemonize
|
102
103
|
|
103
104
|
|
@@ -29,7 +29,7 @@ module RestFtpDaemon
|
|
29
29
|
|
30
30
|
# Check that Queue and Pool are available
|
31
31
|
raise RestFtpDaemon::MissingQueue unless defined? $queue
|
32
|
-
raise RestFtpDaemon::
|
32
|
+
raise RestFtpDaemon::MissingPool unless defined? $pool
|
33
33
|
end
|
34
34
|
|
35
35
|
|
@@ -63,7 +63,7 @@ module RestFtpDaemon
|
|
63
63
|
|
64
64
|
status 200
|
65
65
|
return {
|
66
|
-
hostname: `hostname`.chomp,
|
66
|
+
hostname: `hostname`.to_s.chomp,
|
67
67
|
version: APP_VER,
|
68
68
|
started: APP_STARTED,
|
69
69
|
uptime: (Time.now - APP_STARTED).round(1),
|
@@ -88,6 +88,19 @@ module RestFtpDaemon
|
|
88
88
|
return Helpers.get_censored_config
|
89
89
|
end
|
90
90
|
|
91
|
+
# Server config
|
92
|
+
post "/config/reload" do
|
93
|
+
log_info "POST /config/reload"
|
94
|
+
|
95
|
+
if Settings.at(:debug, :allow_reload)==true
|
96
|
+
Settings.reload!
|
97
|
+
status 200
|
98
|
+
return Helpers.get_censored_config
|
99
|
+
else
|
100
|
+
status 403
|
101
|
+
return "Config reload not permitted"
|
102
|
+
end
|
103
|
+
end
|
91
104
|
|
92
105
|
end
|
93
106
|
end
|
data/lib/rest-ftp-daemon/job.rb
CHANGED
@@ -16,6 +16,7 @@ module RestFtpDaemon
|
|
16
16
|
attr_reader :id
|
17
17
|
attr_reader :error
|
18
18
|
attr_reader :status
|
19
|
+
attr_reader :runs
|
19
20
|
|
20
21
|
attr_reader :queued_at
|
21
22
|
attr_reader :updated_at
|
@@ -40,6 +41,7 @@ module RestFtpDaemon
|
|
40
41
|
@finished_at = nil
|
41
42
|
@error = nil
|
42
43
|
@status = nil
|
44
|
+
@runs = 0
|
43
45
|
@wid = nil
|
44
46
|
|
45
47
|
# Logger
|
@@ -146,6 +148,9 @@ module RestFtpDaemon
|
|
146
148
|
rescue Net::SFTP::StatusException => exception
|
147
149
|
return oops :ended, exception, :sftp_exception
|
148
150
|
|
151
|
+
rescue Net::SSH::AuthenticationFailed => exception
|
152
|
+
return oops :ended, exception, :sftp_auth_failed
|
153
|
+
|
149
154
|
rescue Errno::EMFILE => exception
|
150
155
|
return oops :ended, exception, :too_many_open_files
|
151
156
|
|
@@ -186,7 +191,11 @@ module RestFtpDaemon
|
|
186
191
|
end
|
187
192
|
|
188
193
|
def weight
|
189
|
-
@weight = [
|
194
|
+
@weight = [
|
195
|
+
- @runs.to_i,
|
196
|
+
+ @priority.to_i,
|
197
|
+
- @queued_at.to_i
|
198
|
+
]
|
190
199
|
end
|
191
200
|
|
192
201
|
def exectime
|
@@ -207,13 +216,13 @@ module RestFtpDaemon
|
|
207
216
|
oops :ended, exception, :timeout
|
208
217
|
end
|
209
218
|
|
210
|
-
protected
|
211
|
-
|
212
219
|
def age
|
213
220
|
return nil if @queued_at.nil?
|
214
221
|
(Time.now - @queued_at).round(2)
|
215
222
|
end
|
216
223
|
|
224
|
+
protected
|
225
|
+
|
217
226
|
def set attribute, value
|
218
227
|
@mutex.synchronize do
|
219
228
|
@params || {}
|
@@ -259,6 +268,7 @@ module RestFtpDaemon
|
|
259
268
|
def prepare
|
260
269
|
# Update job status
|
261
270
|
newstatus :prepare
|
271
|
+
@runs += 1
|
262
272
|
|
263
273
|
# Init
|
264
274
|
@source_method = :file
|
@@ -81,10 +81,6 @@ module RestFtpDaemon
|
|
81
81
|
statuses
|
82
82
|
end
|
83
83
|
|
84
|
-
def jobs # change for accessor
|
85
|
-
@jobs
|
86
|
-
end
|
87
|
-
|
88
84
|
def jobs_count
|
89
85
|
@jobs.length
|
90
86
|
end
|
@@ -106,17 +102,18 @@ module RestFtpDaemon
|
|
106
102
|
@jobs.reverse.find { |item| item.id == id }
|
107
103
|
end
|
108
104
|
|
105
|
+
|
109
106
|
def push job
|
110
107
|
# Check that item responds to "priorty" method
|
111
108
|
raise "JobQueue.push: job should respond to priority method" unless job.respond_to? :priority
|
112
109
|
raise "JobQueue.push: job should respond to id method" unless job.respond_to? :id
|
113
110
|
|
114
111
|
@mutex.synchronize do
|
115
|
-
#
|
116
|
-
@
|
112
|
+
# Store the job into the global jobs list, if not already inside
|
113
|
+
@jobs.push(job) unless @jobs.include?(job)
|
117
114
|
|
118
|
-
#
|
119
|
-
@
|
115
|
+
# Push job into the queue, if not already inside
|
116
|
+
@queue.push(job) unless @queue.include?(job)
|
120
117
|
|
121
118
|
# Inform the job that it's been queued
|
122
119
|
job.set_queued if job.respond_to? :set_queued
|
@@ -133,8 +130,9 @@ module RestFtpDaemon
|
|
133
130
|
end
|
134
131
|
end
|
135
132
|
end
|
136
|
-
alias <<
|
137
|
-
alias enq
|
133
|
+
alias << push
|
134
|
+
alias enq push
|
135
|
+
alias requeue push
|
138
136
|
|
139
137
|
def pop non_block=false
|
140
138
|
@mutex.synchronize do
|
@@ -24,7 +24,13 @@ module RestFtpDaemon
|
|
24
24
|
verbosity = @debug ? Logger::INFO : false
|
25
25
|
|
26
26
|
# Connect remote server
|
27
|
-
@sftp = Net::SFTP.start(@url.host, @url.user
|
27
|
+
@sftp = Net::SFTP.start(@url.host.to_s, @url.user.to_s,
|
28
|
+
password: @url.password.to_s,
|
29
|
+
verbose: verbosity,
|
30
|
+
port: @url.port,
|
31
|
+
non_interactive: true,
|
32
|
+
#timeout: 3
|
33
|
+
)
|
28
34
|
end
|
29
35
|
|
30
36
|
def present? target
|
@@ -3,7 +3,7 @@ require "settingslogic"
|
|
3
3
|
# Configuration class
|
4
4
|
class Settings < Settingslogic
|
5
5
|
# Read configuration
|
6
|
-
namespace
|
6
|
+
namespace APP_ENV
|
7
7
|
source File.exist?(APP_CONF) ? APP_CONF : Hash.new
|
8
8
|
suppress_errors true
|
9
9
|
|
@@ -23,7 +23,7 @@ class Settings < Settingslogic
|
|
23
23
|
|
24
24
|
def init_defaults
|
25
25
|
# Init host if missing
|
26
|
-
Settings["host"] ||= `hostname`.chomp.split(".").first
|
26
|
+
Settings["host"] ||= `hostname`.to_s.chomp.split(".").first
|
27
27
|
|
28
28
|
# Init PID file name if missing
|
29
29
|
Settings["pidfile"] ||= "/tmp/#{APP_NICK}-#{Settings['host']}-#{Settings['port']}.pid"
|
@@ -21,8 +21,8 @@ body, table tr td, .fixed {
|
|
21
21
|
|
22
22
|
.label {
|
23
23
|
font-size: 1em;
|
24
|
-
padding:
|
25
|
-
margin-bottom: 1px
|
24
|
+
padding: 2px 3px 2px 3px;
|
25
|
+
margin-bottom: 1px;
|
26
26
|
font-weight: normal;
|
27
27
|
display: inline-block;
|
28
28
|
font-family: sans-serif;
|
@@ -68,9 +68,6 @@ a.class {
|
|
68
68
|
}
|
69
69
|
|
70
70
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
71
|
/* Header styles
|
75
72
|
-------------------------------------------------- */
|
76
73
|
.header-indicators {
|
@@ -80,6 +77,12 @@ a.class {
|
|
80
77
|
}
|
81
78
|
|
82
79
|
|
80
|
+
.paginate {
|
81
|
+
padding-left: 7px !important;
|
82
|
+
padding-right: 7px !important;
|
83
|
+
}
|
84
|
+
|
85
|
+
|
83
86
|
/* Footer styles
|
84
87
|
-------------------------------------------------- */
|
85
88
|
html {
|
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
.row
|
6
6
|
|
7
|
-
.col-md-
|
7
|
+
.col-md-4
|
8
8
|
.btn-group.btn-group-sm
|
9
9
|
- klass = @only.empty? ? "btn-info" : ""
|
10
10
|
%a.btn.btn-default{href: "?only=", class: klass}
|
@@ -15,7 +15,7 @@
|
|
15
15
|
%a.btn.btn-default{href: "?only=#{status}", class: klass}
|
16
16
|
#{status} (#{count})
|
17
17
|
|
18
|
-
.col-md-
|
18
|
+
.col-md-8
|
19
19
|
.btn-group.btn-group-sm
|
20
20
|
= @paginate.browser
|
21
21
|
|
@@ -38,7 +38,9 @@
|
|
38
38
|
%th{"min-width" => 120} error
|
39
39
|
%th.text-right size
|
40
40
|
%th.text-right bitrate
|
41
|
-
%th
|
41
|
+
%th W
|
42
|
+
%th P
|
43
|
+
%th R
|
42
44
|
|
43
45
|
- unless @queue.empty?
|
44
46
|
%tbody.jobs
|
@@ -63,13 +63,22 @@
|
|
63
63
|
= Helpers.format_bytes(bitrate, "bps")
|
64
64
|
|
65
65
|
%td
|
66
|
-
- unless job.priority.nil?
|
67
|
-
.label.label-default.flag.worker-label= job.priority
|
68
|
-
|
69
66
|
- unless job.wid.nil?
|
70
67
|
.label.label-warning.flag.worker-label= job.wid
|
71
68
|
|
69
|
+
%td
|
70
|
+
- unless job.priority.nil?
|
71
|
+
.label.label-default.flag.worker-label= job.priority
|
72
|
+
|
73
|
+
%td
|
74
|
+
- unless job.runs.nil? || job.runs.zero?
|
75
|
+
.label.label-info.flag.worker-label= job.runs
|
72
76
|
|
77
|
+
-#%td
|
78
|
+
- unless job.priority.nil?
|
79
|
+
.label.label-default.flag.worker-label= job.priority
|
73
80
|
|
81
|
+
- unless job.wid.nil?
|
82
|
+
.label.label-warning.flag.worker-label= job.wid
|
74
83
|
|
75
84
|
|
@@ -26,7 +26,7 @@ module RestFtpDaemon
|
|
26
26
|
def log_context
|
27
27
|
{
|
28
28
|
wid: @wid,
|
29
|
-
|
29
|
+
jid: Thread.current.thread_variable_get(:jid),
|
30
30
|
}
|
31
31
|
end
|
32
32
|
|
@@ -41,7 +41,7 @@ module RestFtpDaemon
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
-
def worker_status status,
|
44
|
+
def worker_status status, job = nil
|
45
45
|
# Update thread variables
|
46
46
|
Thread.current.thread_variable_set :status, status
|
47
47
|
Thread.current.thread_variable_set :updted_at, Time.now
|
@@ -50,7 +50,11 @@ module RestFtpDaemon
|
|
50
50
|
return unless @log_worker_status_changes
|
51
51
|
|
52
52
|
# Log this status change
|
53
|
-
|
53
|
+
if job.is_a?(Job)
|
54
|
+
log_info "#{status} - job[#{job.id}] status[#{job.status}] error[#{job.error}]"
|
55
|
+
else
|
56
|
+
log_info "#{status}"
|
57
|
+
end
|
54
58
|
end
|
55
59
|
|
56
60
|
def worker_jid jid
|
@@ -16,13 +16,50 @@ module RestFtpDaemon
|
|
16
16
|
protected
|
17
17
|
|
18
18
|
def work
|
19
|
-
# Wait for a job to
|
19
|
+
# Wait for a job to be available in the queue
|
20
20
|
worker_status WORKER_STATUS_WAITING
|
21
|
-
#log_info "waiting"
|
22
21
|
job = $queue.pop
|
23
22
|
|
24
|
-
#
|
25
|
-
|
23
|
+
# Work on this job
|
24
|
+
work_on_job(job)
|
25
|
+
|
26
|
+
# Clean job status and sleep for 1s
|
27
|
+
job.wid = nil
|
28
|
+
sleep 1
|
29
|
+
|
30
|
+
# If job status requires a retry, just restack it
|
31
|
+
on_errors = Settings.at(:retry, :on_errors)
|
32
|
+
max_age = Settings.at(:retry, :max_age)
|
33
|
+
max_runs = Settings.at(:retry, :max_runs)
|
34
|
+
|
35
|
+
if !job.error
|
36
|
+
#log_info "job succeeded"
|
37
|
+
|
38
|
+
elsif !(on_errors.is_a?(Enumerable) && on_errors.include?(job.error.to_s))
|
39
|
+
log_error "not retrying: error not eligible"
|
40
|
+
|
41
|
+
elsif max_age && (job.age >= max_age)
|
42
|
+
log_error "not retrying: too old (max_age: #{max_age})"
|
43
|
+
|
44
|
+
elsif max_runs && (job.runs >= max_runs)
|
45
|
+
log_error "not retrying: too many runs (max_runs: #{max_runs})"
|
46
|
+
|
47
|
+
else
|
48
|
+
log_info "retrying job: requeued"
|
49
|
+
$queue.requeue job
|
50
|
+
end
|
51
|
+
|
52
|
+
# Clean worker status
|
53
|
+
worker_jid nil
|
54
|
+
|
55
|
+
rescue StandardError => ex
|
56
|
+
log_error "WORKER UNHANDLED EXCEPTION: #{ex.message}", ex.backtrace
|
57
|
+
worker_status WORKER_STATUS_CRASHED
|
58
|
+
end
|
59
|
+
|
60
|
+
def work_on_job job
|
61
|
+
# Prepare job and worker for processing
|
62
|
+
worker_status WORKER_STATUS_RUNNING, job
|
26
63
|
worker_jid job.id
|
27
64
|
job.wid = Thread.current.thread_variable_get :wid
|
28
65
|
|
@@ -32,9 +69,7 @@ module RestFtpDaemon
|
|
32
69
|
end
|
33
70
|
|
34
71
|
# Processing done
|
35
|
-
worker_status WORKER_STATUS_FINISHED,
|
36
|
-
worker_jid nil
|
37
|
-
job.wid = nil
|
72
|
+
worker_status WORKER_STATUS_FINISHED, job
|
38
73
|
|
39
74
|
# Increment total processed jobs count
|
40
75
|
$queue.counter_inc :jobs_processed
|
@@ -42,24 +77,18 @@ module RestFtpDaemon
|
|
42
77
|
rescue RestFtpDaemon::JobTimeout => ex
|
43
78
|
log_error "JOB TIMED OUT", ex.backtrace
|
44
79
|
worker_status WORKER_STATUS_TIMEOUT
|
45
|
-
worker_jid nil
|
46
|
-
job.wid = nil
|
47
80
|
|
81
|
+
# Inform the job
|
48
82
|
job.oops_you_stop_now ex unless job.nil?
|
49
|
-
sleep 1
|
50
83
|
|
51
84
|
rescue StandardError => ex
|
52
|
-
log_error "JOB
|
85
|
+
log_error "JOB UNHANDLED EXCEPTION: #{ex.message}", ex.backtrace
|
53
86
|
worker_status WORKER_STATUS_CRASHED
|
54
|
-
job.oops_after_crash ex unless job.nil?
|
55
|
-
sleep 1
|
56
87
|
|
57
|
-
|
58
|
-
|
59
|
-
job.wid = nil
|
88
|
+
# Inform the job
|
89
|
+
job.oops_after_crash ex unless job.nil?
|
60
90
|
end
|
61
91
|
|
62
|
-
|
63
92
|
if Settings.newrelic_enabled?
|
64
93
|
add_transaction_tracer :work, category: :task
|
65
94
|
end
|
@@ -71,7 +71,7 @@ module RestFtpDaemon
|
|
71
71
|
@conchita = create_conchita_thread
|
72
72
|
|
73
73
|
rescue StandardError => ex
|
74
|
-
log_error "
|
74
|
+
log_error "UNHANDLED EXCEPTION: #{ex.message}", ex.backtrace
|
75
75
|
end
|
76
76
|
|
77
77
|
def create_worker_thread wid
|
@@ -80,7 +80,7 @@ module RestFtpDaemon
|
|
80
80
|
worker = JobWorker.new wid
|
81
81
|
log_info "JobWorker [#{wid}]: #{worker}"
|
82
82
|
rescue StandardError => ex
|
83
|
-
log_error "EXCEPTION: #{ex.message}"
|
83
|
+
log_error "JobWorker EXCEPTION: #{ex.message}"
|
84
84
|
end
|
85
85
|
end
|
86
86
|
end
|
@@ -91,13 +91,11 @@ module RestFtpDaemon
|
|
91
91
|
worker = ConchitaWorker.new :conchita
|
92
92
|
log_info "ConchitaWorker: #{worker}"
|
93
93
|
rescue StandardError => ex
|
94
|
-
log_error "EXCEPTION: #{ex.message}"
|
94
|
+
log_error "ConchitaWorker EXCEPTION: #{ex.message}"
|
95
95
|
end
|
96
96
|
end
|
97
97
|
end
|
98
98
|
|
99
|
-
|
100
|
-
|
101
99
|
if Settings.newrelic_enabled?
|
102
100
|
add_transaction_tracer :create_conchita_thread, category: :task
|
103
101
|
add_transaction_tracer :create_worker_thread, category: :task
|
data/rest-ftp-daemon.gemspec
CHANGED
@@ -39,6 +39,7 @@ Gem::Specification.new do |spec|
|
|
39
39
|
spec.add_runtime_dependency "settingslogic"
|
40
40
|
spec.add_runtime_dependency "haml"
|
41
41
|
spec.add_runtime_dependency "json"
|
42
|
+
spec.add_runtime_dependency "net-ssh", "~> 2.10.1.rc1"
|
42
43
|
spec.add_runtime_dependency "net-sftp"
|
43
44
|
spec.add_runtime_dependency "double-bag-ftps"
|
44
45
|
spec.add_runtime_dependency "facter"
|
data/rest-ftp-daemon.yml.sample
CHANGED
@@ -7,11 +7,16 @@ defaults: &defaults
|
|
7
7
|
#host: "myhost"
|
8
8
|
|
9
9
|
transfer:
|
10
|
-
notify_after_sec: 5 # wait at least X seconds between HTTP notifications
|
11
|
-
mkdir: true # build directory tree if missing
|
12
|
-
tempfile: true # transfer to temporary file, rename after sucessful transfer
|
13
|
-
overwrite: false # overwrite any target file with the same name
|
14
|
-
timeout: 1800 # jobs running for longer than X seconds will be killed
|
10
|
+
# notify_after_sec: 5 # wait at least X seconds between HTTP notifications
|
11
|
+
# mkdir: true # build directory tree if missing
|
12
|
+
# tempfile: true # transfer to temporary file, rename after sucessful transfer
|
13
|
+
# overwrite: false # overwrite any target file with the same name
|
14
|
+
# timeout: 1800 # jobs running for longer than X seconds will be killed
|
15
|
+
|
16
|
+
retry:
|
17
|
+
# on_errors: ["net_temp_error", "conn_reset_by_peer", "conn_timed_out", "conn_refused"]
|
18
|
+
# max_runs: 5
|
19
|
+
# max_age: 1800
|
15
20
|
|
16
21
|
conchita:
|
17
22
|
# timer: 60
|
@@ -26,9 +31,10 @@ defaults: &defaults
|
|
26
31
|
app_name: "rftpd-bigbusiness-dev" # nickname used for naming app
|
27
32
|
|
28
33
|
debug:
|
29
|
-
ftp: false
|
30
|
-
sftp: false
|
31
|
-
conchita: false
|
34
|
+
# ftp: false
|
35
|
+
# sftp: false
|
36
|
+
# conchita: false
|
37
|
+
# allow_reload: false
|
32
38
|
|
33
39
|
logs:
|
34
40
|
thin: "/var/log/rftpd-environment-thin.log"
|
data/spec/spec_helper.rb
CHANGED
@@ -57,10 +57,16 @@ RSpec.configure do |config|
|
|
57
57
|
|
58
58
|
config.before :suite do
|
59
59
|
call_server(:start)
|
60
|
-
|
60
|
+
puts
|
61
|
+
puts ">> waiting for server to bootup"
|
62
|
+
puts
|
63
|
+
sleep 5
|
61
64
|
end
|
62
65
|
|
63
66
|
config.after :suite do
|
67
|
+
puts
|
68
|
+
puts ">> shutting sown server"
|
69
|
+
puts
|
64
70
|
call_server(:stop)
|
65
71
|
end
|
66
72
|
end
|
data/spec/support/config.yml
CHANGED
@@ -3,7 +3,7 @@ test:
|
|
3
3
|
port: 5678
|
4
4
|
workers: 2
|
5
5
|
adminpwd: "admin"
|
6
|
-
host:
|
6
|
+
host: local
|
7
7
|
|
8
8
|
transfer:
|
9
9
|
notify_after_sec: 5
|
@@ -16,10 +16,10 @@ test:
|
|
16
16
|
ftp: false
|
17
17
|
|
18
18
|
logs:
|
19
|
-
thin: "
|
20
|
-
queue: "
|
21
|
-
api: "
|
22
|
-
workers: "
|
23
|
-
jobs: "
|
24
|
-
notify: "
|
25
|
-
newrelic: "/
|
19
|
+
thin: "/tmp/rftpd-tests-thin.log"
|
20
|
+
queue: "/tmp/rftpd-tests-core.log"
|
21
|
+
api: "/tmp/rftpd-tests-core.log"
|
22
|
+
workers: "/tmp/rftpd-tests-work.log"
|
23
|
+
jobs: "/tmp/rftpd-tests-work.log"
|
24
|
+
notify: "/tmp/rftpd-tests-work.log"
|
25
|
+
newrelic: "/tmp/rftpd-tests-newrelic.log"
|
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.
|
4
|
+
version: 0.240.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: 2015-08-
|
11
|
+
date: 2015-08-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -178,6 +178,20 @@ dependencies:
|
|
178
178
|
- - ">="
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: '0'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: net-ssh
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - "~>"
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: 2.10.1.rc1
|
188
|
+
type: :runtime
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - "~>"
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: 2.10.1.rc1
|
181
195
|
- !ruby/object:Gem::Dependency
|
182
196
|
name: net-sftp
|
183
197
|
requirement: !ruby/object:Gem::Requirement
|