cnvrg 1.11.6 → 1.11.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6f3169f1879068224c90bee508cc59f70ea0511ddf035121f68fa3903a179cb6
4
- data.tar.gz: '008d3c425851891ecc80363c141636c54a9ed3abcc3fa80083f5ef190a7bcba8'
3
+ metadata.gz: 1402d0759d20d1c1d9182cebc35fe5539c14a8a1bb2c4eeddf791f43ff768082
4
+ data.tar.gz: 4146973b1a98ea3d26af0efb96ee481093e29fe9fce6fb88c54a539b34e5c0cf
5
5
  SHA512:
6
- metadata.gz: a3b9ad00997260f78fbdd3b492676847d85102ba2e87d6c54d64a8f0703250e87f01cd0346b797355f1206ff0b2c5dd2c1e2b70bbb50ec03dac2ff1a6f2a4c61
7
- data.tar.gz: 87beff960a61713abab357b95e890c6e247fc3605f2cea7fed5767d259a728448a3bdfcd2e810833b4632f9794efc3e043e773ff600d47abf6d49d4792bc9953
6
+ metadata.gz: 53951eb4b7f82322640e75fdeae5ece07bb7189cc5b81257a9a78fd1398ab04c43ef0ed2784c1963f8d53dd983f874f2ed1ccc0ac4953ffced37deb75953d679
7
+ data.tar.gz: 8a046e229d0d14a2d36cb896c467aff3599e98b0e1cfb93e96fb72e80342751a47df4e1a90a57ff62e09ed92f1720afb783fe354dd34a5e06767e98c5bd8bdb6
@@ -972,6 +972,7 @@ module Cnvrg
972
972
 
973
973
  if Dataset.blank_clone(owner, dataset_name, dataset_slug)
974
974
  dataset = Dataset.new(dataset_home)
975
+ downloader = dataset.get_storage_client
975
976
  log_message("Cloning #{dataset_name}", Thor::Shell::Color::BLUE)
976
977
  parallel_options = {
977
978
  :progress => {
@@ -994,15 +995,20 @@ module Cnvrg
994
995
  relative_path_dir = relative_path_dir.join("/")
995
996
  abs_path = dataset_home + "/" + relative_path_dir
996
997
  abs_path = dataset_home if flatten
998
+ fullpath = abs_path + "/" + file_name
997
999
 
998
1000
  begin
999
- FileUtils.mkdir_p(abs_path) unless File.exist? (abs_path + "/" + file_name)
1001
+ FileUtils.mkdir_p(abs_path) unless File.exist? (fullpath)
1000
1002
  rescue
1001
1003
  log_message("Could not create directory: #{abs_path}", Thor::Shell::Color::RED)
1002
1004
  exit(1)
1003
1005
  end
1004
1006
  begin
1005
- File.write "#{abs_path}/#{file_name}", open(f["url"]).read unless File.exist? (abs_path + "/" + file_name)
1007
+ unless File.exist?(fullpath)
1008
+ downloader.safe_operation("#{abs_path}/#{file_name}") do
1009
+ File.open(fullpath, "w") { |f| f.write open(f["url"]).read }
1010
+ end
1011
+ end
1006
1012
  rescue => e
1007
1013
  log_message("Could not download file: #{f["fullpath"]}", Thor::Shell::Color::RED)
1008
1014
  exit(1)
@@ -1338,7 +1338,7 @@ module Cnvrg
1338
1338
  # Cnvrg::Logger.log_info("Trying to download #{local_path} but its already exists, skipping..")
1339
1339
  # next
1340
1340
  # end
1341
- resp = @downloader.download(storage_path, local_path)
1341
+ resp = @downloader.safe_download(storage_path, local_path)
1342
1342
  Cnvrg::Logger.log_info("Download #{local_path} success resp: #{resp}")
1343
1343
  rescue => e
1344
1344
  Cnvrg::Logger.log_error(e)
@@ -30,10 +30,14 @@ module Cnvrg
30
30
  file.gsub(prefix, '').gsub(/^\/*/, '')
31
31
  end
32
32
 
33
- def download(storage_path, local_path)
33
+ def download(storage_path, local_path, decrypt: true)
34
34
  ### need to be implemented..
35
35
  end
36
36
 
37
+ def safe_download(storage_path, local_path, decrypt: true)
38
+ safe_operation(local_path) { self.download(storage_path, local_path, decrypt: decrypt) }
39
+ end
40
+
37
41
  def upload(storage_path, local_path)
38
42
  ### need to be implemented..
39
43
  end
@@ -51,17 +55,34 @@ module Cnvrg
51
55
  end
52
56
 
53
57
  def safe_upload(storage_path, local_path)
58
+ safe_operation(local_path) { self.upload(storage_path, local_path) }
59
+ end
60
+
61
+ def self.factory(params)
62
+ params = params.as_json
63
+ case params["storage"]
64
+ when 's3', 'minio'
65
+ return Cnvrg::Downloader::Clients::S3Client.new(sts_path: params["path_sts"], access_key: params["sts_a"], secret: params["sts_s"], session_token: params["sts_st"], region: params["region"], bucket: params["bucket"], encryption: params["encryption"], endpoint: params["endpoint"], storage: params["storage"])
66
+ when 'azure'
67
+ azure_params = params.symbolize_keys.slice(*[:storage_account_name, :storage_access_key, :container, :sts])
68
+ return Cnvrg::Downloader::Clients::AzureClient.new(**azure_params)
69
+ when 'gcp'
70
+ return Cnvrg::Downloader::Clients::GcpClient.new(project_id: params["project_id"], credentials: params["credentials"], bucket_name: params["bucket_name"], sts: params["sts"])
71
+ end
72
+ end
73
+
74
+ def safe_operation(local_path)
54
75
  n = 1
55
76
  error = nil
56
77
  while n <= RETRIES
57
78
  begin
58
- self.upload(storage_path, local_path)
79
+ yield
59
80
  error = nil
60
81
  break
61
82
  rescue => e
62
83
  backoff_time_seconds = backoff_time(n)
63
84
 
64
- message = "Got error: #{e.class.name} with message: #{e.message} while uploading a single file: #{local_path}, retry: #{n} of: #{RETRIES}"
85
+ message = "Got error: #{e.class.name} with message: #{e.message} while uploading / downloading a single file: #{local_path}, retry: #{n} of: #{RETRIES}"
65
86
  if n < RETRIES
66
87
  message += ", next retry in: #{backoff_time_seconds} seconds"
67
88
  else
@@ -79,19 +100,6 @@ module Cnvrg
79
100
  true
80
101
  end
81
102
 
82
- def self.factory(params)
83
- params = params.as_json
84
- case params["storage"]
85
- when 's3', 'minio'
86
- return Cnvrg::Downloader::Clients::S3Client.new(sts_path: params["path_sts"], access_key: params["sts_a"], secret: params["sts_s"], session_token: params["sts_st"], region: params["region"], bucket: params["bucket"], encryption: params["encryption"], endpoint: params["endpoint"], storage: params["storage"])
87
- when 'azure'
88
- azure_params = params.symbolize_keys.slice(*[:storage_account_name, :storage_access_key, :container, :sts])
89
- return Cnvrg::Downloader::Clients::AzureClient.new(**azure_params)
90
- when 'gcp'
91
- return Cnvrg::Downloader::Clients::GcpClient.new(project_id: params["project_id"], credentials: params["credentials"], bucket_name: params["bucket_name"], sts: params["sts"])
92
- end
93
- end
94
-
95
103
  private
96
104
 
97
105
  def random_number_milliseconds
@@ -31,7 +31,7 @@ module Cnvrg
31
31
  @tempfile = t
32
32
  end
33
33
 
34
- def download(storage_path, local_path)
34
+ def download(storage_path, local_path, decrypt: true)
35
35
  prepare_download(local_path)
36
36
  file = @bucket.file(decrypt(storage_path))
37
37
  file.download local_path
@@ -789,7 +789,7 @@ module Cnvrg
789
789
  end
790
790
  local_path = project_home+"/"+file_path
791
791
  storage_path = f["path"]
792
- @client.download(storage_path, local_path)
792
+ @client.safe_download(storage_path, local_path)
793
793
  progress.progress += 1 if progress.present?
794
794
  download_succ_count += 1
795
795
  rescue => e
@@ -962,7 +962,7 @@ module Cnvrg
962
962
 
963
963
  def download_file(file_path: '', key: '', iv: '', bucket: '', path: '', client: nil)
964
964
  local_path = @project_home+"/"+file_path
965
- @client.download(path, local_path)
965
+ @client.safe_download(path, local_path)
966
966
  end
967
967
 
968
968
  def delete(file)
@@ -34,7 +34,7 @@ module Cnvrg
34
34
  @element.get_clone_chunk(commit: commit, chunk_size: params[:limit], offset: params[:offset])
35
35
  end
36
36
  action = Proc.new do |storage, local|
37
- @client.download(storage, local)
37
+ @client.safe_download(storage, local)
38
38
  end
39
39
 
40
40
  @stats = @element.get_stats
@@ -1,3 +1,3 @@
1
1
  module Cnvrg
2
- VERSION = '1.11.6'
2
+ VERSION = '1.11.7'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cnvrg
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.11.6
4
+ version: 1.11.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yochay Ettun
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2020-11-17 00:00:00.000000000 Z
13
+ date: 2020-11-18 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler