rest-ftp-daemon 0.423.3 → 0.424.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.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +30 -0
  3. data/Gemfile.lock +9 -8
  4. data/README.md +1 -5
  5. data/bin/rest-ftp-daemon +11 -5
  6. data/defaults.yml +16 -10
  7. data/lib/rest-ftp-daemon.rb +14 -10
  8. data/lib/rest-ftp-daemon/api/jobs.rb +42 -18
  9. data/lib/rest-ftp-daemon/api/root.rb +5 -1
  10. data/lib/rest-ftp-daemon/constants.rb +0 -1
  11. data/lib/rest-ftp-daemon/{api/entities → entities}/job.rb +0 -0
  12. data/lib/rest-ftp-daemon/{api/entities → entities}/location.rb +0 -0
  13. data/lib/rest-ftp-daemon/{api/entities → entities}/options.rb +0 -0
  14. data/lib/rest-ftp-daemon/exceptions.rb +1 -0
  15. data/lib/rest-ftp-daemon/helpers/views.rb +7 -2
  16. data/lib/rest-ftp-daemon/initialize.rb +3 -0
  17. data/lib/rest-ftp-daemon/job.rb +3 -0
  18. data/lib/rest-ftp-daemon/jobs/transfer.rb +4 -4
  19. data/lib/rest-ftp-daemon/location.rb +5 -0
  20. data/lib/rest-ftp-daemon/remote/base.rb +76 -0
  21. data/lib/rest-ftp-daemon/remote/ftp.rb +144 -0
  22. data/lib/rest-ftp-daemon/remote/s3.rb +78 -0
  23. data/lib/rest-ftp-daemon/remote/sftp.rb +147 -0
  24. data/lib/rest-ftp-daemon/static/images/feature_reload.png +0 -0
  25. data/lib/rest-ftp-daemon/static/images/feature_rollbar.png +0 -0
  26. data/lib/rest-ftp-daemon/static/swagger/css/print.css +2 -2
  27. data/lib/rest-ftp-daemon/static/swagger/css/screen.css +2 -2
  28. data/lib/rest-ftp-daemon/views/dashboard_footer.haml +3 -2
  29. data/lib/rest-ftp-daemon/views/dashboard_jobs.haml +3 -3
  30. data/lib/rest-ftp-daemon/views/dashboard_table.haml +5 -4
  31. data/lib/rest-ftp-daemon/workers/reporter.rb +2 -2
  32. data/rest-ftp-daemon.gemspec +4 -7
  33. metadata +28 -25
  34. data/lib/rest-ftp-daemon/remote.rb +0 -74
  35. data/lib/rest-ftp-daemon/remote_ftp.rb +0 -142
  36. data/lib/rest-ftp-daemon/remote_s3.rb +0 -76
  37. data/lib/rest-ftp-daemon/remote_sftp.rb +0 -145
@@ -508,7 +508,7 @@
508
508
  clear: both;
509
509
  }
510
510
  .swagger-section .swagger-ui-wrap .body-textarea {
511
- width: 300px;
511
+ width: 200px;
512
512
  height: 100px;
513
513
  border: 1px solid #aaa;
514
514
  }
@@ -534,7 +534,7 @@
534
534
  font-weight: bold!important;
535
535
  }
536
536
  .swagger-section .swagger-ui-wrap input.parameter {
537
- width: 300px;
537
+ width: 200px;
538
538
  border: 1px solid #aaa;
539
539
  }
540
540
  .swagger-section .swagger-ui-wrap h1 {
@@ -508,7 +508,7 @@
508
508
  clear: both;
509
509
  }
510
510
  .swagger-section .swagger-ui-wrap .body-textarea {
511
- width: 300px;
511
+ width: 200px;
512
512
  height: 100px;
513
513
  border: 1px solid #aaa;
514
514
  }
@@ -534,7 +534,7 @@
534
534
  font-weight: bold!important;
535
535
  }
536
536
  .swagger-section .swagger-ui-wrap input.parameter {
537
- width: 300px;
537
+ width: 200px;
538
538
  border: 1px solid #aaa;
539
539
  }
540
540
  .swagger-section .swagger-ui-wrap h1 {
@@ -25,8 +25,9 @@
25
25
 
26
26
  .btn-group.btn-group-sm
27
27
  .btn.btn-default.btn-info Features
28
- = dashboard_feature :reload, Conf[:allow_reload], "configuration is hot-reloadable", "configuration changes at startup only"
29
- = dashboard_feature :newrelic, Conf.newrelic_enabled?, "active (license found)", "disabled"
28
+ = dashboard_feature :reload, Conf[:allow_reload], "ACTIVE (config is hot-reloadable)", "changes at startup only"
29
+ = dashboard_feature :newrelic, Conf.feature?(:newrelic), "ACTIVE (license found)", "disabled"
30
+ = dashboard_feature :rollbar, Conf.feature?(:rollbar), "ACTIVE (token found)", "disabled"
30
31
 
31
32
  .btn-group.btn-group-sm
32
33
  .btn.btn-default.btn-info IP
@@ -30,18 +30,18 @@
30
30
  %thead
31
31
  %tr
32
32
  %th ID
33
+ %th T
33
34
  %th pool
35
+ %th queued
34
36
  %th label
35
- %th type
36
37
  %th
37
38
  %th source
38
39
  %th
39
40
  %th target
40
- %th queued
41
41
  %th.error status
42
42
  %th{"min-width" => 120} detail
43
43
  %th.text-right size
44
- %th.text-right bitrate
44
+ %th.text-right rate
45
45
  %th{title: "Worker ID"} W
46
46
  %th{title: "Priority"} P
47
47
  %th{title: "Runs count"} R
@@ -19,15 +19,18 @@
19
19
  - trclass = "warning"
20
20
 
21
21
  %tr{class: trclass.to_s}
22
+
22
23
  %td
23
24
  %a{href: dashboard_job_url(job)}
24
25
  %b= job.id
25
26
 
27
+ %td= job_type job
28
+
26
29
  %td= job.pool
27
30
 
28
- %td= job.label
31
+ %td= datetime_short(job.queued_at)
29
32
 
30
- %td= job_type job
33
+ %td= job.label
31
34
 
32
35
  %td.text-right= location_label job.source_uri
33
36
  %td= token_highlight job.source
@@ -35,8 +38,6 @@
35
38
  %td.text-right= location_label job.target_uri
36
39
  %td= token_highlight job.target
37
40
 
38
- %td= datetime_short(job.queued_at)
39
-
40
41
  %td
41
42
  %span.push-status
42
43
  = job.status
@@ -10,7 +10,7 @@ module RestFtpDaemon
10
10
  config_section :reporter
11
11
 
12
12
  # Other configuration options
13
- @report_newrelic = Conf.newrelic_enabled?
13
+ @report_newrelic = Conf.feature?(:newrelic)
14
14
 
15
15
  # Check that everything is OK
16
16
  return "invalid timer" unless @config[:timer].to_i > 0
@@ -35,7 +35,7 @@ module RestFtpDaemon
35
35
 
36
36
  def do_metrics
37
37
  # What metrics to report?
38
- report_newrelic = Conf.newrelic_enabled?
38
+ report_newrelic = Conf.feature?(:newrelic)
39
39
 
40
40
  # Get common metrics and dump them to logs
41
41
  log_debug "begin metrics sample"
@@ -2,7 +2,7 @@
2
2
  Gem::Specification.new do |spec|
3
3
 
4
4
  # Project version
5
- spec.version = "0.423.3"
5
+ spec.version = "0.424.0"
6
6
 
7
7
  # Project description
8
8
  spec.name = "rest-ftp-daemon"
@@ -14,7 +14,6 @@ Gem::Specification.new do |spec|
14
14
  spec.licenses = ["MIT"]
15
15
  spec.date = Time.now.strftime("%Y-%m-%d")
16
16
 
17
-
18
17
  # List files and executables
19
18
  spec.files = `git ls-files -z`.
20
19
  split("\x0").
@@ -23,7 +22,6 @@ Gem::Specification.new do |spec|
23
22
  spec.require_paths = ["lib"]
24
23
  spec.required_ruby_version = ">= 2.2.2"
25
24
 
26
-
27
25
  # Development dependencies
28
26
  spec.add_development_dependency "bundler", "~> 1.6"
29
27
  spec.add_development_dependency "rake"
@@ -33,7 +31,7 @@ Gem::Specification.new do |spec|
33
31
  spec.add_development_dependency "http"
34
32
 
35
33
  # Runtime dependencies
36
- spec.add_runtime_dependency "bmc-daemon-lib", "~> 0.3.4"
34
+ spec.add_runtime_dependency "bmc-daemon-lib", "~> 0.3.8"
37
35
  spec.add_runtime_dependency "json", "~> 1.8"
38
36
  spec.add_runtime_dependency "thin", "~> 1.7"
39
37
  spec.add_runtime_dependency "activesupport", "~> 4.2"
@@ -44,20 +42,19 @@ Gem::Specification.new do |spec|
44
42
  spec.add_runtime_dependency "grape-swagger-entity"
45
43
  spec.add_runtime_dependency "grape-swagger-representable"
46
44
 
47
- spec.add_runtime_dependency "settingslogic"
48
45
  spec.add_runtime_dependency "rest-client", "~> 1.8"
49
46
  spec.add_runtime_dependency "api-auth"
50
47
  spec.add_runtime_dependency "haml"
51
48
  spec.add_runtime_dependency "facter"
52
49
  spec.add_runtime_dependency "sys-cpu"
53
50
  spec.add_runtime_dependency "get_process_mem"
54
- spec.add_runtime_dependency "newrelic_rpm"
55
51
 
52
+ spec.add_runtime_dependency "newrelic_rpm"
53
+ spec.add_runtime_dependency "rollbar"
56
54
 
57
55
  spec.add_runtime_dependency "net-sftp"
58
56
  spec.add_runtime_dependency "double-bag-ftps"
59
57
  spec.add_runtime_dependency "aws-sdk-resources", '~> 2'
60
-
61
58
  spec.add_runtime_dependency "streamio-ffmpeg"
62
59
 
63
60
  end
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.423.3
4
+ version: 0.424.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-09-06 00:00:00.000000000 Z
11
+ date: 2016-09-07 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.4
103
+ version: 0.3.8
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.4
110
+ version: 0.3.8
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: json
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -220,20 +220,6 @@ dependencies:
220
220
  - - ">="
221
221
  - !ruby/object:Gem::Version
222
222
  version: '0'
223
- - !ruby/object:Gem::Dependency
224
- name: settingslogic
225
- requirement: !ruby/object:Gem::Requirement
226
- requirements:
227
- - - ">="
228
- - !ruby/object:Gem::Version
229
- version: '0'
230
- type: :runtime
231
- prerelease: false
232
- version_requirements: !ruby/object:Gem::Requirement
233
- requirements:
234
- - - ">="
235
- - !ruby/object:Gem::Version
236
- version: '0'
237
223
  - !ruby/object:Gem::Dependency
238
224
  name: rest-client
239
225
  requirement: !ruby/object:Gem::Requirement
@@ -332,6 +318,20 @@ dependencies:
332
318
  - - ">="
333
319
  - !ruby/object:Gem::Version
334
320
  version: '0'
321
+ - !ruby/object:Gem::Dependency
322
+ name: rollbar
323
+ requirement: !ruby/object:Gem::Requirement
324
+ requirements:
325
+ - - ">="
326
+ - !ruby/object:Gem::Version
327
+ version: '0'
328
+ type: :runtime
329
+ prerelease: false
330
+ version_requirements: !ruby/object:Gem::Requirement
331
+ requirements:
332
+ - - ">="
333
+ - !ruby/object:Gem::Version
334
+ version: '0'
335
335
  - !ruby/object:Gem::Dependency
336
336
  name: net-sftp
337
337
  requirement: !ruby/object:Gem::Requirement
@@ -396,6 +396,7 @@ executables:
396
396
  extensions: []
397
397
  extra_rdoc_files: []
398
398
  files:
399
+ - ".codeclimate.yml"
399
400
  - ".gitignore"
400
401
  - ".rspec"
401
402
  - ".rubocop.yml"
@@ -412,9 +413,6 @@ files:
412
413
  - lib/rest-ftp-daemon/api/config.rb
413
414
  - lib/rest-ftp-daemon/api/dashboard.rb
414
415
  - lib/rest-ftp-daemon/api/debug.rb
415
- - lib/rest-ftp-daemon/api/entities/job.rb
416
- - lib/rest-ftp-daemon/api/entities/location.rb
417
- - lib/rest-ftp-daemon/api/entities/options.rb
418
416
  - lib/rest-ftp-daemon/api/jobs.rb
419
417
  - lib/rest-ftp-daemon/api/root-real.rb
420
418
  - lib/rest-ftp-daemon/api/root-test.rb
@@ -422,10 +420,14 @@ files:
422
420
  - lib/rest-ftp-daemon/api/status.rb
423
421
  - lib/rest-ftp-daemon/constants.rb
424
422
  - lib/rest-ftp-daemon/counters.rb
423
+ - lib/rest-ftp-daemon/entities/job.rb
424
+ - lib/rest-ftp-daemon/entities/location.rb
425
+ - lib/rest-ftp-daemon/entities/options.rb
425
426
  - lib/rest-ftp-daemon/exceptions.rb
426
427
  - lib/rest-ftp-daemon/helpers/api.rb
427
428
  - lib/rest-ftp-daemon/helpers/common.rb
428
429
  - lib/rest-ftp-daemon/helpers/views.rb
430
+ - lib/rest-ftp-daemon/initialize.rb
429
431
  - lib/rest-ftp-daemon/job.rb
430
432
  - lib/rest-ftp-daemon/job_queue.rb
431
433
  - lib/rest-ftp-daemon/jobs/dummy.rb
@@ -437,10 +439,10 @@ files:
437
439
  - lib/rest-ftp-daemon/metrics.rb
438
440
  - lib/rest-ftp-daemon/notification.rb
439
441
  - lib/rest-ftp-daemon/paginate.rb
440
- - lib/rest-ftp-daemon/remote.rb
441
- - lib/rest-ftp-daemon/remote_ftp.rb
442
- - lib/rest-ftp-daemon/remote_s3.rb
443
- - lib/rest-ftp-daemon/remote_sftp.rb
442
+ - lib/rest-ftp-daemon/remote/base.rb
443
+ - lib/rest-ftp-daemon/remote/ftp.rb
444
+ - lib/rest-ftp-daemon/remote/s3.rb
445
+ - lib/rest-ftp-daemon/remote/sftp.rb
444
446
  - lib/rest-ftp-daemon/static/config.json
445
447
  - lib/rest-ftp-daemon/static/css/bootstrap.min.css
446
448
  - lib/rest-ftp-daemon/static/css/bootstrap.old.css
@@ -452,6 +454,7 @@ files:
452
454
  - lib/rest-ftp-daemon/static/fonts/glyphicons-halflings-regular.woff2
453
455
  - lib/rest-ftp-daemon/static/images/feature_newrelic.png
454
456
  - lib/rest-ftp-daemon/static/images/feature_reload.png
457
+ - lib/rest-ftp-daemon/static/images/feature_rollbar.png
455
458
  - lib/rest-ftp-daemon/static/swagger.html
456
459
  - lib/rest-ftp-daemon/static/swagger/css/print.css
457
460
  - lib/rest-ftp-daemon/static/swagger/css/reset.css
@@ -1,74 +0,0 @@
1
- # Handles transfers for Job class
2
- module RestFtpDaemon
3
- class Remote
4
- include BmcDaemonLib::LoggerHelper
5
-
6
- # Class options
7
- attr_reader :logger
8
- attr_reader :log_prefix
9
- attr_accessor :job
10
-
11
- # Delegate set_info info to Job
12
- delegate :set_info, to: :job
13
-
14
- def initialize target, log_prefix, debug = false, ftpes = false
15
- # Init
16
- @target = target
17
- @ftpes = ftpes
18
- @debug = !!debug
19
-
20
- # Build and empty job to protect set_info delegation
21
- @job = Job.new(nil, {})
22
-
23
- # Logger
24
- @log_prefix = log_prefix || {}
25
- @logger = BmcDaemonLib::LoggerPool.instance.get :transfer
26
-
27
- # Annnounce object
28
- log_info "Remote.initialize debug[#{debug}] target[#{target.path}] "
29
-
30
- # Prepare real object
31
- prepare
32
- end
33
-
34
- def prepare
35
- end
36
-
37
- def connect
38
- # Debug mode ?
39
- return unless @debug
40
- puts
41
- puts "-------------------- SESSION STARTING -------------------------"
42
- puts "class\t #{myname}"
43
- puts "host\t #{@target.host}"
44
- puts "user\t #{@target.user}"
45
- puts "port\t #{@target.port}"
46
- puts "---------------------------------------------------------------"
47
- end
48
-
49
- def chdir_or_create directory, mkdir = false
50
- end
51
-
52
- def remove! target
53
- end
54
-
55
- def close
56
- # Debug mode ?
57
- return unless @debug
58
- puts "-------------------- SESSION CLOSING --------------------------"
59
- end
60
-
61
- private
62
-
63
- def extract_parent path
64
- return unless path.is_a? String
65
- m = path.match(/^(.*)\/([^\/]+)\/?$/)
66
- return m[1], m[2] unless m.nil?
67
- end
68
-
69
- def myname
70
- self.class.to_s
71
- end
72
-
73
- end
74
- end
@@ -1,142 +0,0 @@
1
- require "net/ftp"
2
- require "double_bag_ftps"
3
-
4
- # Handle FTP and FTPeS transfers for Remote class
5
- module RestFtpDaemon
6
- class RemoteFTP < Remote
7
-
8
- # Class options
9
- attr_reader :ftp
10
-
11
- def prepare
12
- # Create FTP object
13
- if @ftpes
14
- prepare_ftpes
15
- else
16
- prepare_ftp
17
- end
18
- @ftp.passive = true
19
- @ftp.debug_mode = @debug
20
-
21
- # Config
22
- @chunk_size = DEFAULT_FTP_CHUNK.to_i * 1024
23
-
24
- # Announce object
25
- log_debug "RemoteFTP.prepare chunk_size:#{@chunk_size}"
26
- end
27
-
28
- def connect
29
- super
30
-
31
- # Connect remote server
32
- @ftp.connect @target.host, @target.port
33
- @ftp.login @target.user, @target.password
34
- end
35
-
36
- def present? target
37
- size = @ftp.size target.path
38
- log_debug "RemoteFTP.present? [#{target.name}]"
39
-
40
- rescue Net::FTPPermError
41
- return false
42
- else
43
- return size
44
- end
45
-
46
- def remove! target
47
- @ftp.delete target.path
48
- rescue Net::FTPPermError
49
- log_debug "RemoteFTP.remove! [#{target.name}] not found"
50
- else
51
- log_debug "RemoteFTP.remove! [#{target.name}] removed"
52
- end
53
-
54
- def mkdir directory
55
- log_debug "RemoteFTP.mkdir [#{directory}]"
56
- @ftp.mkdir directory
57
-
58
- rescue StandardError => ex
59
- raise TargetPermissionError, ex.message
60
- end
61
-
62
- def chdir_or_create directory, mkdir = false
63
- # Init, extract my parent name and my own name
64
- log_debug "RemoteFTP.chdir_or_create mkdir[#{mkdir}] dir[#{directory}]"
65
- parent, current = extract_parent(directory)
66
-
67
- #dirname, _current = extract_parent(directory)
68
-
69
-
70
- # Access this directory
71
- begin
72
- @ftp.chdir "/#{directory}"
73
-
74
- rescue Net::FTPPermError => _e
75
- # If not allowed to create path, that's over, we're stuck
76
- return false unless mkdir
77
- chdir_or_create parent, mkdir
78
-
79
- # Now I was able to chdir into my parent, create the current directory
80
- mkdir current
81
-
82
- # Finally retry the chdir
83
- retry
84
- else
85
- return true
86
- end
87
- end
88
-
89
- def upload source, target, use_temp_name = false, &callback
90
- # Push init
91
- raise RestFtpDaemon::AssertionFailed, "upload/ftp" if @ftp.nil?
92
-
93
- # Temp file if needed
94
- dest = target.clone
95
- if use_temp_name
96
- dest.generate_temp_name!
97
- end
98
-
99
- # Move to the directory
100
- log_debug "RemoteFTP.upload chdir [#{dest.dir}]"
101
- @ftp.chdir "/#{dest.dir}"
102
-
103
- # Do the transfer
104
- log_debug "RemoteFTP.upload putbinaryfile [#{dest.name}]"
105
- @ftp.putbinaryfile source.path, dest.name, @chunk_size do |data|
106
- # Update job status after this block transfer
107
- yield data.bytesize, dest.name
108
- end
109
-
110
- # Move the file back to its original name
111
- if use_temp_name
112
- log_debug "RemoteFTP.upload rename [#{dest.name}] > [#{target.name}]"
113
- @ftp.rename dest.name, target.name
114
- end
115
- end
116
-
117
- def close
118
- # Close init
119
- super
120
-
121
- # Close FTP connexion and free up memory
122
- @ftp.close
123
- end
124
-
125
- def connected?
126
- !@ftp.welcome.nil?
127
- end
128
-
129
- private
130
-
131
- def prepare_ftp
132
- @ftp = Net::FTP.new
133
- end
134
-
135
- def prepare_ftpes
136
- @ftp = DoubleBagFTPS.new
137
- @ftp.ssl_context = DoubleBagFTPS.create_ssl_context(verify_mode: OpenSSL::SSL::VERIFY_NONE)
138
- @ftp.ftps_mode = DoubleBagFTPS::EXPLICIT
139
- end
140
-
141
- end
142
- end