rest-ftp-daemon 0.424.3 → 0.430.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9480cfd13b9f090b1489a853b4c75fca72584032
4
- data.tar.gz: 1d5609890a874c6b8004058fbc0d29a504352cb0
3
+ metadata.gz: e891f3c30c8f698eaec3f92b7bb7ac49da5bee21
4
+ data.tar.gz: 48aa70fa0ca68c9c521736f7167ad8fe638cf264
5
5
  SHA512:
6
- metadata.gz: 09b7e9a5c3c89d81385f47b1b90a469cde743a84d416e1ec7b3ed6d3289564a9dcef8713a2b49af960f0d22b4473f7a2aa2e9638cad12f5ee6d24fa24327116a
7
- data.tar.gz: 2183569a5b06e7e89475f4f4b509fd1566827ccab7997cc85ccfd4067b79639783cdd83c1f76076962ee3c0e031f6bee151fa3a846d54d0cab441c71beb527a2
6
+ metadata.gz: 3aa33cbc8a12a1a0850a199e7ca4f79b1f68c7e4920989ca38de06e97b3b98205761f5d5aeab1f59dce5b874bfab5a6cb99ffed08bc668ae512d9843448f533d
7
+ data.tar.gz: ce099ad49bbca8d97b333a09bd03eff8a98f123086741a8aae0e1eee41652dc07875a9992b925b0314011552fc3f1a6468b273ca53d4df8200cb3115d7fd1a2b
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
1
  source "http://rubygems.org"
2
2
 
3
3
  gemspec
4
- # gem 'bmc-daemon-lib', :path => '../bmc-daemon-lib'
4
+ #gem 'bmc-daemon-lib', :path => '../bmc-daemon-lib'
@@ -1,11 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rest-ftp-daemon (0.424.3)
4
+ rest-ftp-daemon (0.430.0)
5
5
  activesupport (~> 4.2)
6
6
  api-auth
7
7
  aws-sdk-resources (~> 2)
8
- bmc-daemon-lib (~> 0.3.8)
8
+ bmc-daemon-lib (~> 0.3.10)
9
9
  double-bag-ftps
10
10
  facter
11
11
  get_process_mem
@@ -47,7 +47,7 @@ GEM
47
47
  descendants_tracker (~> 0.0.4)
48
48
  ice_nine (~> 0.11.0)
49
49
  thread_safe (~> 0.3, >= 0.3.1)
50
- bmc-daemon-lib (0.3.8)
50
+ bmc-daemon-lib (0.3.10)
51
51
  chamber (~> 2.9)
52
52
  builder (3.2.2)
53
53
  chamber (2.9.1)
@@ -163,7 +163,7 @@ GEM
163
163
  ruby-progressbar (~> 1.4)
164
164
  ruby-progressbar (1.8.1)
165
165
  slop (3.6.0)
166
- streamio-ffmpeg (2.1.0)
166
+ streamio-ffmpeg (3.0.0)
167
167
  multi_json (~> 1.8)
168
168
  sys-cpu (0.7.2)
169
169
  ffi
data/config.ru CHANGED
@@ -1,10 +1,12 @@
1
1
  # Load gem files
2
- # load_path_libs = File.expand_path(File.join(File.dirname(__FILE__), "lib"))
2
+ Conf.log :init, "rackup: project code"
3
+
3
4
  load_path_libs = File.expand_path "lib", File.dirname(__FILE__)
4
5
  $LOAD_PATH.unshift(load_path_libs) unless $LOAD_PATH.include?(load_path_libs)
5
6
  require "rest-ftp-daemon"
6
7
 
7
8
  # Rack authent
9
+ Conf.log :init, "rackup: rack setup"
8
10
  unless Conf[:adminpwd].nil?
9
11
  use Rack::Auth::Basic, "Restricted Area" do |username, password|
10
12
  [username, password] == ["admin", Conf[:adminpwd]]
@@ -21,14 +23,12 @@ use Rack::Static, root: "#{Conf.app_libs}/static/", urls: [
21
23
  MOUNT_SWAGGER_UI,
22
24
  ]
23
25
 
24
- # Rack reloader and mini-profiler
25
- unless Conf.app_env == "production"
26
+ # Rack reloader
27
+ if Conf.app_env == "development"
26
28
  # use Rack::Reloader, 1
27
- # use Rack::MiniProfiler
28
29
  end
29
30
 
30
- # Initialize workers
31
- RestFtpDaemon::WorkerPool.instance.start_em_all
32
-
33
31
  # Launch the API
32
+ Conf.log :init, "rackup: start endpoint"
34
33
  run RestFtpDaemon::API::Root
34
+
@@ -55,10 +55,12 @@ newrelic:
55
55
  # app_name: "rftpd-bigbusiness-dev" # app_name used for naming app (used as-is if provided)
56
56
  prefix: "rftpd" # app prefix to build app_name
57
57
  # platform: "bigbusiness" # app platform to build app_name
58
+ enabled: true
58
59
 
59
60
  rollbar:
60
61
  debug: false
61
62
  # token: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
63
+ enabled: true
62
64
 
63
65
  logs:
64
66
  path: "/tmp/"
@@ -27,7 +27,11 @@ module RestFtpDaemon
27
27
 
28
28
  def build_dashboard filter = ''
29
29
  # Initialize Facter
30
- Facter.loadfacts
30
+ begin
31
+ Facter.loadfacts
32
+ rescue StandardError => exception
33
+ log_error "dashboard/build: #{exception.inspect}"
34
+ end
31
35
 
32
36
  # Detect QS filters
33
37
  @filter = filter.to_s
@@ -5,26 +5,21 @@ module RestFtpDaemon
5
5
  class Jobs < Grape::API
6
6
  include BmcDaemonLib
7
7
 
8
-
9
8
  ### EXCEPTIONS HANDLERS
10
9
  rescue_from RestFtpDaemon::JobNotFound do |exception|
11
10
  exception_error :api_job_not_found, 404, exception
12
11
  end
13
12
  rescue_from JSON::ParserError do |exception|
14
- exception_error :api_job_not_found, 404, exception
15
-
16
- log_error "JSON::ParserError: #{exception.message}"
17
- error!({error: :api_parse_error, message: exception.message}, 422)
13
+ exception_error :api_parse_error, 422, exception
18
14
  end
19
15
  rescue_from RestFtpDaemon::QueueCantCreateJob do |exception|
20
16
  exception_error :api_cant_create_job, 422, exception
21
- error!({error: :api_cant_create_job, message: exception.message}, 422)
22
17
  end
23
- rescue_from RestFtpDaemonException do |exception|
24
- exception_error exception_to_error(exception), 500, exception
25
- Rollbar.error exception
18
+ rescue_from RestFtpDaemon::UnresolvedTokens do |exception|
19
+ exception_error :api_unresolved_tokens, 422, exception
26
20
  end
27
21
 
22
+
28
23
  ### ENDPOINTS
29
24
  desc "Read job with ID", http_codes: [
30
25
  { code: 200, message: "Here is the job you requested" },
@@ -23,18 +23,19 @@ module RestFtpDaemon
23
23
  Root.logger
24
24
  end
25
25
 
26
- def exception_error name, http_code, exception
26
+ def exception_error error, http_code, exception
27
27
  # Extract message lines
28
28
  lines = exception.message.lines.collect(&:strip).reject(&:empty?)
29
29
 
30
30
  # Log error to file
31
- log_error "#{http_code} [#{name}] #{lines.shift} ", lines
31
+ log_error "#{http_code} [#{error}] #{lines.shift} ", lines
32
32
 
33
33
  # Return error
34
34
  error!({
35
- error: name,
35
+ error: error,
36
36
  http_code: http_code,
37
- message: exception.message
37
+ class: exception.class.name,
38
+ message: exception.message,
38
39
  }, http_code)
39
40
  end
40
41
 
@@ -47,9 +48,9 @@ module RestFtpDaemon
47
48
 
48
49
  ## EXCEPTION HANDLERS
49
50
  rescue_from :all do |exception|
50
- Rollbar.error exception
51
+ Rollbar.error "#{exception.class.name}: #{exception.message}"
51
52
  #error!({error: :internal_server_error, message: exception.message}, 500)
52
- exception_error :internal_server_error, 500, exception
53
+ exception_error :api_unexpected_error, 500, exception
53
54
  end
54
55
 
55
56
 
@@ -1,7 +1,6 @@
1
1
  # Configuration defaults
2
2
  DEFAULT_POOL = "default"
3
3
  DEFAULT_SFTP_TIMEOUT = 600 # 10mn
4
- DEFAULT_FTP_CHUNK = 1024 # 1 MB
5
4
  DEFAULT_PAGE_SIZE = 50 # 50 lines
6
5
  DEFAULT_RETRY_AFTER = 10 # 10s
7
6
  TARGET_BLANK = "_blank"
@@ -10,14 +9,28 @@ TARGET_BLANK = "_blank"
10
9
  JOB_RANDOM_LEN = 8
11
10
  JOB_IDENT_LEN = 4
12
11
  JOB_TEMPFILE_LEN = 8
13
- JOB_UPDATE_INTERVAL = 1
12
+ JOB_FTP_CHUNKMB = 2048 # 2 MB
14
13
 
15
14
  JOB_FFMPEG_THREADS = 2
16
15
  JOB_FFMPEG_ATTRIBUTES = [:video_codec, :video_bitrate, :video_bitrate_tolerance, :frame_rate, :resolution, :aspect, :keyframe_interval, :x264_vprofile, :x264_preset, :audio_codec, :audio_bitrate, :audio_sample_rate, :audio_channels]
17
16
 
18
17
  # Internal job infos
19
- INFO_PROGRESS = :progress
20
- INFO_BITRATE = :bitrate
18
+ INFO_PARAMS = :params
19
+
20
+
21
+ INFO_ERROR_MESSAGE = :error_message
22
+ INFO_ERROR_EXCEPTION = :error_exception
23
+ INFO_ERROR_BACKTRACE = :error_backtrace
24
+ INFO_SOURCE_COUNT = :source_count
25
+ INFO_SOURCE_PROCESSED = :source_processed
26
+ INFO_SOURCE_CURRENT = :source_current
27
+ INFO_SOURCE_FILES = :source_files
28
+ INFO_TRANSFER_TOTAL = :transfer_total
29
+ INFO_TRANFER_SENT = :transfer_sent
30
+ INFO_TRANFER_PROGRESS = :progress
31
+ INFO_TRANFER_BITRATE = :bitrate
32
+ INFO_TARGET_FILES = :target_files
33
+
21
34
 
22
35
  # Constants: logger
23
36
  LOG_FORMAT_PROGNAME = "%d\t%s"
@@ -1,3 +1,13 @@
1
1
  # Init Rollbar and Newrelic
2
+ Conf.log :init, "init: Newrelic and Rollbar"
2
3
  Conf.prepare_newrelic
3
4
  Conf.prepare_rollbar
5
+
6
+ # Initialize Facter
7
+ Conf.log :init, "init: Facter"
8
+ Facter.loadfacts
9
+
10
+ # Initialize workers
11
+ Conf.log :init, "init: workers"
12
+ RestFtpDaemon::WorkerPool.instance.start_em_all
13
+
@@ -34,10 +34,6 @@ module RestFtpDaemon
34
34
  attr_reader :finished_at
35
35
 
36
36
  attr_reader :infos
37
- #attr_reader :config
38
-
39
- # delegate :type, :pool, :label, :priority,
40
- # to: :params
41
37
 
42
38
  # Define readers from imported fields
43
39
  IMPORTED.each do |field|
@@ -71,7 +67,7 @@ module RestFtpDaemon
71
67
  @logger = BmcDaemonLib::LoggerPool.instance.get :transfer
72
68
 
73
69
  # Import query params
74
- set_info :params, params
70
+ set_info INFO_PARAMS, params
75
71
  IMPORTED.each do |field|
76
72
  instance_variable_set "@#{field}", params[field]
77
73
  end
@@ -82,19 +78,11 @@ module RestFtpDaemon
82
78
  # Prepare sources/target
83
79
  raise RestFtpDaemon::AttributeMissing, "source" unless params[:source]
84
80
  @source_loc = Location.new(params[:source])
85
- #set_info :location_source, params[:source]
86
81
  log_info "Job.initialize source #{@source_loc.uri}"
87
82
 
88
83
  raise RestFtpDaemon::AttributeMissing, "target" unless params[:target]
89
84
  @target_loc = Location.new(params[:target])
90
- #set_info :location_target, params[:target]
91
85
  log_info "Job.initialize target #{@target_loc.uri}"
92
-
93
- # Handle exceptions
94
- # rescue RestFtpDaemon::UnresolvedTokens => exception
95
- # return oops :started, exception
96
- # rescue RestFtpDaemon::UnsupportedScheme => exception
97
- # return oops :started, exception
98
86
  end
99
87
 
100
88
  def reset
@@ -144,6 +132,7 @@ module RestFtpDaemon
144
132
  do_after
145
133
 
146
134
  rescue StandardError => exception
135
+ Rollbar.error "process: #{exception.class.name}: #{exception.message}"
147
136
  return oops current_signal, exception
148
137
 
149
138
  else
@@ -182,10 +171,12 @@ module RestFtpDaemon
182
171
  end
183
172
 
184
173
  def oops_after_crash exception
174
+ Rollbar.error "oops_after_crash: #{exception.class.name}: #{exception.message}"
185
175
  oops :ended, exception, "crashed"
186
176
  end
187
177
 
188
178
  def oops_you_stop_now exception
179
+ Rollbar.error "oops_you_stop_now: #{exception.class.name}: #{exception.message}"
189
180
  oops :ended, exception, "timeout"
190
181
  end
191
182
 
@@ -312,13 +303,13 @@ module RestFtpDaemon
312
303
  # Update job's internal status
313
304
  set_status JOB_STATUS_FAILED
314
305
  set_error error
315
- set_info :error_exception, exception.class.to_s
316
- set_info :error_message, exception.message
306
+ set_info INFO_ERROR_EXCEPTION, exception.class.to_s
307
+ set_info INFO_ERROR_MESSAGE, exception.message
317
308
 
318
309
  # Build status stack
319
310
  notif_status = nil
320
311
  if include_backtrace
321
- set_info :error_backtrace, exception.backtrace
312
+ set_info INFO_ERROR_BACKTRACE, exception.backtrace
322
313
  notif_status = {
323
314
  backtrace: exception.backtrace,
324
315
  }
@@ -102,7 +102,7 @@ module RestFtpDaemon
102
102
  next unless job.status == JOB_STATUS_UPLOADING
103
103
 
104
104
  # Extract current rate, next if not available
105
- rate = job.get_info INFO_BITRATE
105
+ rate = job.get_info INFO_TRANFER_BITRATE
106
106
  next if rate.nil?
107
107
 
108
108
  # Add its current rate
@@ -13,7 +13,7 @@ module RestFtpDaemon
13
13
 
14
14
  # Some init
15
15
  @transfer_sent = 0
16
- set_info :source_processed, 0
16
+ set_info INFO_SOURCE_PROCESSED, 0
17
17
 
18
18
  # Ensure source is FILE
19
19
  raise RestFtpDaemon::SourceNotSupported, @source_loc.scheme unless @source_loc.is? URI::FILE
@@ -33,8 +33,9 @@ module RestFtpDaemon
33
33
  log_info "JobTransfer.before target_method S3"
34
34
  @remote = Remote::RemoteS3.new @target_loc, log_prefix, @config[:debug_s3]
35
35
  else
36
- log_info "JobTransfer.before unknown scheme [#{@target_loc.scheme}]"
37
- raise RestFtpDaemon::TargetNotSupported, @target_loc.scheme
36
+ message = "unknown scheme [#{@target_loc.scheme}] [#{target_uri.class.name}]"
37
+ log_info "JobTransfer.before #{message}"
38
+ raise RestFtpDaemon::TargetNotSupported, message
38
39
  end
39
40
 
40
41
  # Plug this Job into @remote to allow it to log
@@ -48,8 +49,8 @@ module RestFtpDaemon
48
49
  # Scan local source files from disk
49
50
  set_status JOB_STATUS_CHECKING_SRC
50
51
  sources = @source_loc.scan_files
51
- set_info :source_count, sources.size
52
- set_info :source_files, sources.collect(&:name)
52
+ set_info INFO_SOURCE_COUNT, sources.size
53
+ set_info INFO_SOURCE_FILES, sources.collect(&:name)
53
54
  log_info "JobTransfer.work sources #{sources.collect(&:name)}"
54
55
  raise RestFtpDaemon::SourceNotFound if sources.empty?
55
56
 
@@ -66,7 +67,7 @@ module RestFtpDaemon
66
67
 
67
68
  # Compute total files size
68
69
  @transfer_total = sources.collect(&:size).sum
69
- set_info :transfer_total, @transfer_total
70
+ set_info INFO_TRANSFER_TOTAL, @transfer_total
70
71
 
71
72
  # Reset counters
72
73
  @last_data = 0
@@ -85,10 +86,10 @@ module RestFtpDaemon
85
86
 
86
87
  # Add it to transferred target names
87
88
  targets << target.name
88
- set_info :target_files, targets
89
+ set_info INFO_TARGET_FILES, targets
89
90
 
90
91
  # Update counters
91
- set_info :source_processed, source_processed += 1
92
+ set_info INFO_SOURCE_PROCESSED, source_processed += 1
92
93
  end
93
94
  end
94
95
 
@@ -116,7 +117,7 @@ module RestFtpDaemon
116
117
 
117
118
  # Use source filename if target path provided none (typically with multiple sources)
118
119
  log_info "JobTransfer.remote_upload [#{source.name}]: [#{source.path}] > [#{target.path}]"
119
- set_info :source_current, source.name
120
+ set_info INFO_SOURCE_CURRENT, source.name
120
121
 
121
122
  # Remove any existing version if present, or check if it's there
122
123
  if @overwrite
@@ -128,61 +129,60 @@ module RestFtpDaemon
128
129
 
129
130
  # Start transfer
130
131
  transfer_started_at = Time.now
131
- @progress_at = 0
132
- @notified_at = transfer_started_at
132
+ @last_notify_at = transfer_started_at
133
133
 
134
134
  # Start the transfer, update job status after each block transfer
135
135
  set_status JOB_STATUS_UPLOADING
136
136
  log_debug "JobTransfer.remote_upload source[#{source.path}] temp[#{@tempfile}]"
137
137
  @remote.upload source, target, @tempfile do |transferred, name|
138
-
139
138
  # Update transfer statistics
140
139
  update_progress transferred, name
141
-
142
- # Touch my worker status
143
- touch_job
144
140
  end
145
141
 
146
142
  # Compute final bitrate
147
143
  global_transfer_bitrate = get_bitrate @transfer_total, (Time.now - transfer_started_at)
148
- set_info INFO_BITRATE, global_transfer_bitrate.round(0)
144
+ set_info INFO_TRANFER_BITRATE, global_transfer_bitrate.round(0)
149
145
 
150
146
  # Done
151
- set_info :source_current, nil
147
+ set_info INFO_SOURCE_CURRENT, nil
152
148
  end
153
149
 
154
150
  def update_progress transferred, name = ""
155
151
  # Update counters
156
152
  @transfer_sent += transferred
157
- set_info :work_sent, @transfer_sent
153
+ set_info INFO_TRANFER_SENT, @transfer_sent
158
154
 
159
155
  # Update job info
160
156
  percent0 = (100.0 * @transfer_sent / @transfer_total).round(0)
161
- set_info INFO_PROGRESS, percent0
157
+ set_info INFO_TRANFER_PROGRESS, percent0
158
+
159
+ # Update bitrates
160
+ @current_bitrate = running_bitrate @transfer_sent
161
+ set_info INFO_TRANFER_BITRATE, @current_bitrate.round(0)
162
162
 
163
163
  # What's current time ?
164
164
  now = Time.now
165
165
 
166
- # Update job status
167
- update_progress_jobinfo now, percent0, name
168
-
169
166
  # Notify if requested
170
- update_progress_notify now, percent0, name
167
+ progress_notify now, percent0, name
168
+
169
+ # Touch my worker status
170
+ touch_job
171
171
  end
172
172
 
173
173
  private
174
174
 
175
- def update_progress_jobinfo now, percent0, name
175
+ def progress_notify now, percent0, name
176
176
  # No delay provided ?
177
- return if JOB_UPDATE_INTERVAL.to_f.zero?
177
+ return if @config[:notify_after].nil?
178
178
 
179
179
  # Still too early to notify again ?
180
- how_long_ago = (now.to_f - @progress_at.to_f)
181
- return unless how_long_ago > JOB_UPDATE_INTERVAL.to_f
180
+ how_long_ago = (now.to_f - @last_notify_at.to_f)
181
+ return unless how_long_ago > @config[:notify_after]
182
182
 
183
- # Update bitrates
184
- @current_bitrate = running_bitrate @transfer_sent
185
- set_info INFO_BITRATE, @current_bitrate.round(0)
183
+ # # Update bitrates
184
+ # @current_bitrate = running_bitrate @transfer_sent
185
+ # set_info INFO_TRANFER_BITRATE, @current_bitrate.round(0)
186
186
 
187
187
  # Log progress
188
188
  stack = [
@@ -193,18 +193,6 @@ module RestFtpDaemon
193
193
  stack2 = stack.map { |txt| ("%#{LOG_PIPE_LEN.to_i}s" % txt) }.join("\t")
194
194
  log_debug "progress #{stack2} \t#{name}"
195
195
 
196
- # Remember when we last did it
197
- @progress_at = now
198
- end
199
-
200
- def update_progress_notify now, percent0, name
201
- # No delay provided ?
202
- return if @config[:notify_after].nil?
203
-
204
- # Still too early to notify again ?
205
- how_long_ago = (now.to_f - @notified_at.to_f)
206
- return unless how_long_ago > @config[:notify_after]
207
-
208
196
  # Prepare and send notification
209
197
  client_notify :progress, status: {
210
198
  progress: percent0,
@@ -215,7 +203,7 @@ module RestFtpDaemon
215
203
  }
216
204
 
217
205
  # Remember when we last did it
218
- @notified_at = now
206
+ @last_notify_at = now
219
207
  end
220
208
 
221
209
  def get_bitrate delta_data, delta_time
@@ -44,20 +44,20 @@ module RestFtpDaemon
44
44
  FileUtils.mkdir_p @target_loc.dir
45
45
 
46
46
  # Do the work, for each file
47
- set_info :source_current, @source_loc.name
47
+ set_info INFO_SOURCE_CURRENT, @source_loc.name
48
48
  ffmpeg_command @source_loc, target_final
49
49
 
50
50
  # Done
51
- set_info :source_current, nil
51
+ set_info INFO_SOURCE_CURRENT, nil
52
52
  end
53
53
 
54
54
  def do_after
55
55
  # Done
56
- set_info :source_current, nil
56
+ set_info INFO_SOURCE_CURRENT, nil
57
57
  end
58
58
 
59
59
  def ffmpeg_command source, target
60
- set_info :source_current, source.name
60
+ set_info INFO_SOURCE_CURRENT, source.name
61
61
 
62
62
  # Read info about source file
63
63
  movie = FFMPEG::Movie.new(source.path)
@@ -81,7 +81,7 @@ module RestFtpDaemon
81
81
  # Build command
82
82
  movie.transcode(target.path, options) do |ffmpeg_progress|
83
83
  # set_info :work, :ffmpeg_progress, ffmpeg_progress
84
- set_info INFO_PROGRESS, (100.0 * ffmpeg_progress).round(1)
84
+ set_info INFO_TRANFER_PROGRESS, (100.0 * ffmpeg_progress).round(1)
85
85
  log_debug "progress #{ffmpeg_progress}"
86
86
  end
87
87
  end
@@ -1,7 +1,7 @@
1
1
  require "net/ftp"
2
2
  require "double_bag_ftps"
3
3
 
4
- # Handle FTP and FTPeS transfers for Remote class
4
+ # Handle FTP and FTPES transfers for Remote class
5
5
  module RestFtpDaemon
6
6
  module Remote
7
7
  class RemoteFTP < RemoteBase
@@ -20,7 +20,7 @@ module RestFtpDaemon
20
20
  @ftp.debug_mode = @debug
21
21
 
22
22
  # Config
23
- @chunk_size = DEFAULT_FTP_CHUNK.to_i * 1024
23
+ @chunk_size = JOB_FTP_CHUNKMB.to_i * 1024
24
24
 
25
25
  # Announce object
26
26
  log_debug "Remote::RemoteFTP.prepare chunk_size:#{@chunk_size}"
@@ -159,7 +159,7 @@ body {
159
159
  }
160
160
 
161
161
  .transfer-type {
162
- width: 30px;
162
+ width: 35px;
163
163
  }
164
164
 
165
165
 
@@ -18,10 +18,9 @@ module URI
18
18
  DEFAULT_PORT = 22
19
19
  end
20
20
 
21
-
22
- @@schemes["FTPS"] = FTPS
23
- @@schemes["FTPES"] = FTPES
24
- @@schemes["SFTP"] = SFTP
25
- @@schemes["S3"] = S3
26
- @@schemes["FILE"] = FILE
21
+ @@schemes["FTPS"] = FTPS
22
+ @@schemes["FTPES"] = FTPES
23
+ @@schemes["SFTP"] = SFTP
24
+ @@schemes["S3"] = S3
25
+ @@schemes["FILE"] = FILE
27
26
  end
@@ -29,8 +29,8 @@
29
29
 
30
30
  %thead
31
31
  %tr
32
- %th ID
33
- %th T
32
+ %th{title: "Job identifier"} ID
33
+ %th{title: "Job type"} T
34
34
  %th pool
35
35
  %th queued
36
36
  %th label
@@ -39,7 +39,7 @@
39
39
  %th.error status
40
40
  %th{"min-width" => 120} detail
41
41
  %th.text-right size
42
- %th.text-right rate
42
+ %th.text-right{title: "updated every #{JOB_FTP_CHUNKMB} MB block"} rate
43
43
  %th{title: "Worker ID"} W
44
44
  %th{title: "Priority"} P
45
45
  %th{title: "Runs count"} R
@@ -1,14 +1,14 @@
1
1
  -# coding: utf-8
2
2
  - jobs.each do |job|
3
- - work_progress = job.get_info(INFO_PROGRESS)
4
- - error_message = job.get_info(:error_message)
5
- - transfer_total = job.get_info(:transfer_total)
6
- - transfer_bitrate = job.get_info(:transfer_bitrate)
7
- - work_sent = job.get_info(:work_sent)
8
-
9
- - source_count = job.get_info(:source_count) || 0
10
- - source_processed = job.get_info(:source_processed) || 0
11
- - source_current = job.get_info(:source_current)
3
+ - error_message = job.get_info(INFO_ERROR_MESSAGE)
4
+ - work_progress = job.get_info(INFO_TRANFER_PROGRESS)
5
+ - transfer_total = job.get_info(INFO_TRANSFER_TOTAL)
6
+ - transfer_bitrate = job.get_info(INFO_TRANFER_BITRATE)
7
+ - work_sent = job.get_info(INFO_TRANFER_SENT)
8
+
9
+ - source_count = job.get_info(INFO_SOURCE_COUNT) || 0
10
+ - source_processed = job.get_info(INFO_SOURCE_PROCESSED) || 0
11
+ - source_current = job.get_info(INFO_SOURCE_CURRENT)
12
12
 
13
13
  - job_working = [JOB_STATUS_UPLOADING, JOB_STATUS_TRANSFORMING].include? job.status
14
14
 
@@ -2,7 +2,7 @@
2
2
  Gem::Specification.new do |spec|
3
3
 
4
4
  # Project version
5
- spec.version = "0.424.3"
5
+ spec.version = "0.430.0"
6
6
 
7
7
  # Project description
8
8
  spec.name = "rest-ftp-daemon"
@@ -31,7 +31,7 @@ Gem::Specification.new do |spec|
31
31
  spec.add_development_dependency "http"
32
32
 
33
33
  # Runtime dependencies
34
- spec.add_runtime_dependency "bmc-daemon-lib", "~> 0.3.8"
34
+ spec.add_runtime_dependency "bmc-daemon-lib", "~> 0.3.10"
35
35
  spec.add_runtime_dependency "json", "~> 1.8"
36
36
  spec.add_runtime_dependency "thin", "~> 1.7"
37
37
  spec.add_runtime_dependency "activesupport", "~> 4.2"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rest-ftp-daemon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.424.3
4
+ version: 0.430.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bruno MEDICI
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 0.3.8
103
+ version: 0.3.10
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.8
110
+ version: 0.3.10
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: json
113
113
  requirement: !ruby/object:Gem::Requirement