cnvrg 0.6.1 → 0.6.2

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
  SHA1:
3
- metadata.gz: 42022fa13f8fd836b23c053f1fb307c7187603dd
4
- data.tar.gz: 6fe9747627cf95a833a5efe4f3b93a35457b0cc5
3
+ metadata.gz: f4256d8fe0490792ce6c903208f55fb334c090fb
4
+ data.tar.gz: 90297a245a2df22569c0f1b11135d09d35f7d1e8
5
5
  SHA512:
6
- metadata.gz: 4e9037eb3b8536c4a6c54493beb6c9826de49a90cacab42586ea113bd7d067825d6289f4335e1f45bbb02e7b0df9935aca7314e7fce110522d88fa070d406935
7
- data.tar.gz: 0183b26af7ec67875fc47a3c1f4455c10a1c42e6cc33a2958456f65c174230fd17e7ce421bce0547b48ef89cc3893eb3a54e21e1d1f492d1cb2a17219c88eab1
6
+ metadata.gz: 0abffec7afcb1f5ed6cbbf764cea7826e2aa267e3f5e7f80ba18b5c3338604f4bdb36ad10e8009438b2d2ae437406feed79d4273a7b8f9cfb76f7b2fac43befc
7
+ data.tar.gz: 8ba624643cbb0772f9fb08880ddb285012a936feb31fae3ef3ca9b0059fcc95da94801e68838a273c82f357e98c42682db96fb94488b295f0a40663ff629c249
@@ -105,6 +105,36 @@ module Cnvrg
105
105
  else
106
106
  response
107
107
  end
108
+ when 'POST_JSON'
109
+ conn.options.timeout = 4200
110
+ conn.options.open_timeout =4200
111
+ conn.headers['Content-Type'] = "application/json"
112
+ new_data = JSON.dump(data)
113
+
114
+ retries = 0
115
+ success = false
116
+
117
+ while !success and retries < 20
118
+ begin
119
+ response = conn.post "#{resource}", new_data
120
+ success = true
121
+
122
+ rescue => e
123
+ sleep(5)
124
+ retries +=1
125
+ end
126
+ end
127
+ if !success
128
+ return false
129
+ end
130
+ if response.to_hash[:status] == 404
131
+ return false
132
+ end
133
+ if parse_request == true
134
+ JSON.parse(response.body)
135
+ else
136
+ response
137
+ end
108
138
  when 'POST_FILE'
109
139
  conn = Faraday.new do |fr|
110
140
  fr.headers['Auth-Token'] = @pass
@@ -842,20 +842,18 @@ module Cnvrg
842
842
  :progress_mark => '=',
843
843
  :format => "%b>>%i| %p%% %t",
844
844
  :starting_at => 0,
845
+ :total => files_count,
845
846
  :autofinish => true)
846
847
  while files['keys'].length > 0
847
- @files.download_multiple_files_s3(files, dataset_home)
848
+ @files.download_multiple_files_s3(files, dataset_home, progressbar: progressbar)
848
849
  downloaded_files += files['keys'].length
849
- progressbar.progress = (downloaded_files * 100 / files_count)
850
850
  files = @files.get_clone_chunk(commit: commit, latest_id: files['latest'])
851
851
  end
852
852
  if downloaded_files == files_count
853
853
  Dataset.verify_cnvrgignore_exist(dataset_name, false)
854
854
  @dataset = Dataset.new(dataset_home)
855
- @dataset.write_idx(nil, commit)
855
+ @dataset.write_idx(nil, commit) #nil means, generate idx
856
856
  log_message("#{check} Clone finished successfully", Thor::Shell::Color::GREEN)
857
- else
858
- log_message(result.msg, result.msg_color)
859
857
  end
860
858
  else
861
859
  log_message("Error: Couldn't create directory: #{dataset_name}", Thor::Shell::Color::RED)
@@ -1938,10 +1936,12 @@ module Cnvrg
1938
1936
  method_option :tags, :type => :boolean, :aliases => ["--tags"], :desc => "upload file tags", :default => false
1939
1937
  method_option :parallel, :type => :numeric, :aliases => ["-p", "--parallel"], :desc => "uparallel upload at the same time", :default => 15
1940
1938
  def upload_data_new(new_branch, verbose,sync,force, tags, chunk_size)
1941
- commit = invoke :start_commit_data,[], :new_branch=> new_branch, :direct=>false, :force =>force
1939
+ commit = invoke :start_commit_data,[], :new_branch=> new_branch, :direct=>false, :force =>force, :chunk_size => chunk_size
1942
1940
  upload_res = invoke :upload_data_files,[commit],:new_branch=>new_branch, :verbose =>verbose, :force =>force, :sync =>sync, :chunk_size => chunk_size
1943
- invoke :end_commit_data,[commit] , :new_branch=>new_branch, :force =>force, :success => upload_res
1944
-
1941
+ if !upload_res
1942
+ return
1943
+ end
1944
+ invoke :end_commit_data,[commit, success: upload_res] , :new_branch=>new_branch, :force =>force
1945
1945
  if tags
1946
1946
  log_message('Uploading Tags', Thor::Shell::Color::BLUE)
1947
1947
  dataset_dir = is_cnvrg_dir(Dir.pwd)
@@ -1970,6 +1970,7 @@ module Cnvrg
1970
1970
  method_option :new_branch, :type => :boolean, :aliases => ["-nb"], :desc => "create new branch of commits"
1971
1971
  method_option :direct, :type => :boolean, :aliases => ["-d","--direct"], :desc => "was called directed", :default => true
1972
1972
  method_option :force, :type => :boolean, :aliases => ["-f","--force"], :default => false
1973
+ method_option :chunk_size, :type => :numeric, :aliases => ["-ch"], :default => 0
1973
1974
 
1974
1975
  def start_commit_data()
1975
1976
  begin
@@ -1979,30 +1980,38 @@ module Cnvrg
1979
1980
  direct = options[:direct]
1980
1981
  new_branch = options["new_branch"] || false
1981
1982
  force = options["force"] || false
1983
+ chunk_size = options["chunk_size"] || false
1982
1984
  commit_sha1 = nil
1983
1985
  @dataset = Dataset.new(dataset_dir)
1984
1986
  @files = Cnvrg::Datafiles.new(@dataset.owner, @dataset.slug)
1985
- next_commit = @dataset.get_next_commit() #if there was a partial commit..
1986
- if next_commit.present? #keep from existing commit.
1987
- resp = @files.get_commit(next_commit)
1988
- if resp["result"]["status"].eql? "new"
1989
- resp = @files.start_commit(new_branch,force)
1990
- commit_sha1 = resp["result"]["commit_sha1"]
1991
- @dataset.set_next_commit(commit_sha1)
1992
- else
1993
- commit_sha1 = resp["result"]["commit_sha1"]
1994
- end
1995
- else
1996
- resp = @files.start_commit(new_branch,force)
1997
- commit_sha1 = resp["result"]["commit_sha1"]
1998
- @dataset.set_next_commit(commit_sha1)
1987
+ next_commit = @dataset.get_next_commit #if there was a partial commit..
1988
+ chunks = (@dataset.list_all_files.length.to_f / chunk_size).ceil
1989
+ resp = @files.start_commit(new_branch, force, chunks: chunks, current_commit: next_commit || @dataset.last_local_commit)
1990
+ if !resp['result']['can_commit']
1991
+ log_message("Cant upload files because a new version of this dataset exists, please download it or upload with --force", Thor::Shell::Color::RED)
1992
+ exit(1)
1999
1993
  end
1994
+ # if next_commit.present? #keep from existing commit.
1995
+ # resp = @files.get_commit(next_commit)
1996
+ # if resp["result"]["status"].eql? "new"
1997
+ # resp = @files.start_commit(new_branch,force, chunks: chunks)
1998
+ # commit_sha1 = resp["result"]["commit_sha1"]
1999
+ # @dataset.set_next_commit(commit_sha1)
2000
+ # else
2001
+ # commit_sha1 = resp["result"]["commit_sha1"]
2002
+ # end
2003
+ # else
2004
+ # resp = @files.start_commit(new_branch,force, chunks: chunks)
2005
+ # commit_sha1 = resp["result"]["commit_sha1"]
2006
+ # @dataset.set_next_commit(commit_sha1)
2007
+ # end
2008
+ commit_sha1 = resp["result"]["commit_sha1"]
2009
+ @dataset.set_next_commit(commit_sha1)
2000
2010
  if direct
2001
2011
  puts commit_sha1
2002
2012
  end
2003
2013
  return commit_sha1
2004
2014
  rescue => e
2005
- puts e
2006
2015
  if commit_sha1.present?
2007
2016
  @dataset.set_next_commit(commit_sha1)
2008
2017
  end
@@ -2018,9 +2027,8 @@ module Cnvrg
2018
2027
  desc 'end_commit', 'start data commit'
2019
2028
  method_option :new_branch, :type => :boolean, :aliases => ["-nb"], :desc => "create new branch of commits"
2020
2029
  method_option :force, :type => :boolean, :aliases => ["-f","--force"], :default => false
2021
- method_option :success, :type => :boolean, :default => true, :hide=>true
2022
2030
 
2023
- def end_commit_data(commit)
2031
+ def end_commit_data(commit, success: true)
2024
2032
  begin
2025
2033
  verify_logged_in(true)
2026
2034
  log_start(__method__, args, options)
@@ -2028,21 +2036,14 @@ module Cnvrg
2028
2036
  @dataset = Dataset.new(dataset_dir)
2029
2037
  @files = Cnvrg::Datafiles.new(@dataset.owner, @dataset.slug)
2030
2038
  force = options["force"] || false
2031
- resp = @files.end_commit(commit, force, options[:success])
2032
- if (resp and resp["result"])
2033
- if !options[:success]
2034
- @dataset.set_next_commit(resp["result"]["commit_sha1"])
2035
- @dataset.remove_next_commit
2036
- else
2037
- check = Helpers.checkmark
2038
- @dataset.set_next_commit(commit)
2039
- @dataset.remove_next_commit
2040
- log_message("#{check} Data files were updated successfully", Thor::Shell::Color::GREEN)
2041
- end
2042
-
2043
- end
2044
-
2045
2039
 
2040
+ resp = @files.end_commit(commit, force, success: success)
2041
+ if (resp and resp["result"])
2042
+ check = Helpers.checkmark
2043
+ @dataset.set_next_commit(commit)
2044
+ @dataset.remove_next_commit
2045
+ log_message("#{check} Data files were updated successfully", Thor::Shell::Color::GREEN)
2046
+ end
2046
2047
  rescue => e
2047
2048
  puts e
2048
2049
  rescue SignalException
@@ -2105,49 +2106,47 @@ module Cnvrg
2105
2106
  dataset_dir = is_cnvrg_dir(Dir.pwd)
2106
2107
  @dataset = Dataset.new(dataset_dir)
2107
2108
  @files = Cnvrg::Datafiles.new(@dataset.owner, @dataset.slug)
2108
- next_commit = @dataset.get_next_commit()
2109
- if new_commit.blank? and next_commit.blank?
2109
+ new_commit ||= @dataset.get_next_commit()
2110
+ if new_commit.blank?
2110
2111
  log_message("You must specify commit, run start_commit to create new commit", Thor::Shell::Color::RED)
2111
- exit(1)
2112
+ return false
2112
2113
  end
2113
-
2114
2114
  force = options[:force] || false
2115
2115
  chunk_size = options[:chunk_size]
2116
2116
  chunk_size = [chunk_size, 1].max
2117
2117
  new_branch = options["new_branch"] || false
2118
+ new_tree = {}
2118
2119
  force = options["force"] || false
2119
2120
  parallel_threads = options["parallel"] || ParallelThreads
2120
- new_tree = {}
2121
+ all_files = @dataset.list_all_files
2121
2122
  progressbar = ProgressBar.create(:title => "Upload Progress",
2122
2123
  :progress_mark => '=',
2123
2124
  :format => "%b>>%i| %p%% %t",
2124
2125
  :starting_at => 0,
2126
+ :total => all_files.length,
2125
2127
  :autofinish => true)
2126
- all_files = @dataset.list_all_files
2127
- files_count = all_files.count
2128
- finished_chunks = 0
2129
2128
  files_uploaded = 0
2130
- chunked_files = all_files.each_slice(chunk_size)
2131
- chunked_files.each_with_index do |list_files,i|
2132
- log_message("generating chunk #{i} / #{chunked_files.size}", Thor::Shell::Color::BLUE, false)
2129
+ all_files.each_slice(chunk_size).each do |list_files|
2133
2130
  temp_tree = @dataset.generate_chunked_idx(list_files, threads: parallel_threads)
2131
+ upload_resp = @files.upload_multiple_files(new_commit, temp_tree, threads: parallel_threads, force: force, new_branch: new_branch, progressbar: progressbar)
2132
+
2133
+ if upload_resp.is_a? Cnvrg::Result
2134
+ log_message(upload_resp.msg, upload_resp.msg_color)
2135
+
2136
+ return false
2137
+
2138
+ else
2139
+ files_uploaded += upload_resp
2140
+ end
2134
2141
 
2135
- log_message("uploading chunk #{i} / #{chunked_files.size}", Thor::Shell::Color::BLUE, false)
2136
- files_uploaded += @files.upload_multiple_files(next_commit, temp_tree, threads: parallel_threads, force: force)
2137
2142
  temp_tree.each do |k,v|
2138
- if v.present?
2139
- new_tree[k] = {sha1: v.try(:fetch, :sha1, nil), commit_time: nil}
2140
- else
2141
- new_tree[k] = nil
2142
- end
2143
+ new_tree[k] = (v.present?) ? {sha1: v.try(:fetch, :sha1, nil), commit_time: nil} : nil
2143
2144
  end
2144
- @dataset.write_idx(new_tree, next_commit)
2145
- finished_chunks += 1
2146
- progressbar.progress = [(finished_chunks * chunk_size*100) / files_count, 100].min
2145
+ @dataset.write_idx(new_tree, new_commit)
2147
2146
  end
2148
2147
  return files_uploaded > 0
2149
2148
  rescue Exception => e
2150
- log_error(e)
2149
+ puts e
2151
2150
  return false
2152
2151
  end
2153
2152
 
@@ -2387,8 +2386,8 @@ module Cnvrg
2387
2386
  if git_output_dir.ends_with? "/"
2388
2387
  git_output_dir = git_output_dir[0..-2]
2389
2388
  end
2390
- spec_files_to_upload = Dir.glob("#{git_output_dir}/**/*", File::FNM_DOTMATCH).flatten
2391
- spec_files_to_upload = spec_files_to_upload.select{|x| !x.ends_with? "/."}
2389
+ list = @project.generate_output_dir(output_dir)
2390
+ spec_files_to_upload = list
2392
2391
  if spec_files_to_upload.blank?
2393
2392
  log_message("#{check} Project is up to date", Thor::Shell::Color::GREEN, (((options["sync"] or sync) and !direct) ? false : true))
2394
2393
  return true
@@ -2398,6 +2397,7 @@ module Cnvrg
2398
2397
  end
2399
2398
 
2400
2399
 
2400
+
2401
2401
  if ignore.nil? or ignore.empty?
2402
2402
  ignore = ignore_list
2403
2403
  end
@@ -2416,6 +2416,7 @@ module Cnvrg
2416
2416
 
2417
2417
  result = @project.compare_idx(new_branch, force: force, deploy: options["deploy"],in_exp:in_exp, specific_files: spec_files_to_upload)
2418
2418
  commit = result["result"]["commit"]
2419
+
2419
2420
  if !link
2420
2421
  if (result["result"]["new_version_exist"] and !force) or ((commit != @project.last_local_commit and !@project.last_local_commit.nil? and !result["result"]["tree"]["updated_on_server"].empty?) and !force)
2421
2422
  log_message("Remote server has an updated version, please run `cnvrg download` first, or alternatively: `cnvrg sync`", Thor::Shell::Color::BLUE)
@@ -2445,7 +2446,7 @@ module Cnvrg
2445
2446
  log_message("Syncing files", Thor::Shell::Color::BLUE, ((options["sync"] or sync)) ? false : true)
2446
2447
  end
2447
2448
  # Start commit
2448
- if in_exp
2449
+ if in_exp || (job_slug.present? and job_type.present?)
2449
2450
  exp_start_commit = @project.last_local_commit
2450
2451
  else
2451
2452
  exp_start_commit = nil
@@ -2799,6 +2800,8 @@ module Cnvrg
2799
2800
  log_message("#{check} Downloaded changes successfully", Thor::Shell::Color::GREEN, ((sync or options["sync"]) ? false : true))
2800
2801
  end
2801
2802
  return true
2803
+ else
2804
+ @dataset.update_idx_with_commit!(commit_to_download)
2802
2805
  end
2803
2806
  rescue => e
2804
2807
  log_message("Error occurred, \nAborting", Thor::Shell::Color::BLUE)
@@ -2811,7 +2814,7 @@ module Cnvrg
2811
2814
  end
2812
2815
 
2813
2816
  desc 'download in git project', 'Download other files', :hide =>true
2814
- def download_in_git(commit_sha1)
2817
+ def download_in_git(*commit_sha1)
2815
2818
  begin
2816
2819
  verify_logged_in(true)
2817
2820
  log_start(__method__, args, options)
@@ -2826,7 +2829,11 @@ module Cnvrg
2826
2829
  end
2827
2830
 
2828
2831
  begin
2829
- download_result = @files.download_multiple_files_s3(files, project_home)
2832
+ if files["keys"].blank?
2833
+ log_message("No New files to download", Thor::Shell::Color::GREEN)
2834
+ return
2835
+ end
2836
+ download_result = @files.download_multpile_files_s3(files, project_home)
2830
2837
  if download_result
2831
2838
  log_message("Done.\nDownloaded finished successfully", Thor::Shell::Color::GREEN)
2832
2839
  else
@@ -2836,7 +2843,6 @@ module Cnvrg
2836
2843
 
2837
2844
  rescue => e
2838
2845
  log_error(e)
2839
- puts e.backtrace
2840
2846
  log_message("Error while trying to download ", Thor::Shell::Color::RED)
2841
2847
  return
2842
2848
  end
@@ -2850,6 +2856,8 @@ module Cnvrg
2850
2856
  method_option :verbose, :type => :boolean, :aliases => ["-v"], :default => false
2851
2857
  method_option :sync, :type => :boolean, :aliases => ["-s"], :default => false
2852
2858
  method_option :ignore, :type => :string, :aliases => ["-i"], :desc => "ignore following files", :default => ""
2859
+ method_option :git, :type => :boolean, :aliases => ["--git"], :desc => "download from git projects' commits", :default => false
2860
+ method_option :commit, :type => :string, :aliases => ["-c", "--commit"], :desc => "download a specific commit", :default => nil
2853
2861
 
2854
2862
  def download(sync = false, ignore_list = "", in_exp=false)
2855
2863
  begin
@@ -2858,6 +2866,11 @@ module Cnvrg
2858
2866
  project_home = get_project_home
2859
2867
  @project = Project.new(project_home)
2860
2868
  @files = Cnvrg::Files.new(@project.owner, @project.slug)
2869
+ git = options["git"]
2870
+ commit = options["commit"]
2871
+ if git or @project.is_git
2872
+ return download_in_git(commit)
2873
+ end
2861
2874
  ignore = options[:ignore] || ""
2862
2875
  if ignore.nil? or ignore.empty?
2863
2876
  ignore = ignore_list
@@ -3236,7 +3249,7 @@ module Cnvrg
3236
3249
  if run_download
3237
3250
  invoke :download, [true, "", in_exp ], :new_branch => options["new_branch"], :verbose => options["verbose"], :sync => true
3238
3251
  end
3239
- invoke :upload, [false, true, direct, "",options['exp_slug'] ], :new_branch => options["new_branch"], :verbose => options["verbose"], :sync => true,
3252
+ invoke :upload, [false, true, direct, "",in_exp,options[:force], options["output_dir"],job_type, job_slug ], :new_branch => options["new_branch"], :verbose => options["verbose"], :sync => true,
3240
3253
  :ignore => options[:ignore], :force => options[:force], :message => options[:message], :deploy => options["deploy"], :return_id => options["return_id"],
3241
3254
  :files => options["files"], :output_dir => options["output_dir"], :job_slug => job_slug, :job_type => job_type
3242
3255
 
@@ -20,12 +20,13 @@ module Cnvrg
20
20
  @base_resource = "users/#{owner}/datasets/#{dataset_slug}/"
21
21
  end
22
22
 
23
- def upload_multiple_files(commit_sha1, tree, threads: ParallelThreads, force: false, new_branch: false)
23
+ def upload_multiple_files(commit_sha1, tree, threads: ParallelThreads, force: false, new_branch: false, progressbar: nil)
24
24
  random_file_name = (0...8).map { (65 + rand(26)).chr }.join #needed to create a file for post_file..
25
25
  # each file have: {sha1: sha1, file_name: file_name, file_size: file_size, content_type: content_type, absolute_path, relative_path}
26
26
 
27
- #this call should also implement compare_idx...
28
- upload_resp = Cnvrg::API.request(@base_resource + "upload_files", 'POST', {commit_sha1: commit_sha1, tree: tree, force: force, is_branch: new_branch})
27
+ #this call should also implement compare_idx...
28
+ begin
29
+ upload_resp = Cnvrg::API.request(@base_resource + "upload_files", 'POST_JSON', {commit_sha1: commit_sha1, tree: tree, force: force, is_branch: new_branch})
29
30
  return Cnvrg::Result.new(false, "Failed to upload files") unless Cnvrg::CLI.is_response_success(upload_resp, false)
30
31
  results = upload_resp['result'].with_indifferent_access
31
32
  props = Cnvrg::Helpers.get_s3_props(results)
@@ -34,11 +35,20 @@ module Cnvrg
34
35
  upload_options = props[:upload_options]
35
36
  s3_bucket = Aws::S3::Resource.new(client: client).bucket(bucket)
36
37
  files = results['files']
38
+ progressbar.progress += tree.keys.length - files.length if progressbar.present?
37
39
  Parallel.map((files.keys), {in_threads: threads}) do |k|
38
40
  o = tree[k].merge(files[k])
39
41
  upload_single_file(o, s3_bucket, upload_options)
42
+ progressbar.progress += 1 if progressbar.present?
40
43
  end
44
+ blob_ids = files.values.map{|f| f['bv_id']}
45
+ dirs = tree.keys.select{|k| tree[k].nil? }
46
+ upload_resp = Cnvrg::API.request(@base_resource + "upload_files_save", "POST", {commit: commit_sha1, blob_ids: blob_ids, dirs: dirs})
41
47
  return files.keys.length
48
+ rescue => e
49
+ return Cnvrg::Result.new(false, "Failed to upload files")
50
+ end
51
+
42
52
  end
43
53
 
44
54
  def upload_single_file(file, s3_bucket, upload_options={})
@@ -734,10 +744,10 @@ module Cnvrg
734
744
  Cnvrg::CLI.is_response_success(response, true)
735
745
  return response
736
746
  end
737
- def start_commit(new_branch,force=false,delete_commit=nil)
747
+ def start_commit(new_branch,force=false,delete_commit=nil, chunks: 0, current_commit: nil)
738
748
  begin
739
749
  response = Cnvrg::API.request("#{base_resource}/commit/start", 'POST', {dataset_slug: @dataset_slug, new_branch: new_branch,force:force,
740
- username: @owner,delete_commit:delete_commit})
750
+ username: @owner,current_commit:current_commit, total_chunks: chunks})
741
751
  Cnvrg::CLI.is_response_success(response, true)
742
752
  return response
743
753
  rescue => e
@@ -746,9 +756,9 @@ module Cnvrg
746
756
 
747
757
  end
748
758
 
749
- def end_commit(commit_sha1,force, is_success)
759
+ def end_commit(commit_sha1,force, success: true)
750
760
  begin
751
- response = Cnvrg::API.request("#{base_resource}/commit/end", 'POST', {commit_sha1: commit_sha1,force:force, success:is_success})
761
+ response = Cnvrg::API.request("#{base_resource}/commit/end", 'POST', {commit_sha1: commit_sha1,force:force, success: success})
752
762
  Cnvrg::CLI.is_response_success(response, true)
753
763
  return response
754
764
  rescue => e
@@ -828,7 +838,7 @@ module Cnvrg
828
838
 
829
839
  end
830
840
 
831
- def download_multiple_files_s3(files, project_home, conflict: false)
841
+ def download_multiple_files_s3(files, project_home, conflict: false, progressbar: nil)
832
842
  begin
833
843
  props = Cnvrg::Helpers.get_s3_props(files)
834
844
  client = props[:client]
@@ -841,11 +851,11 @@ module Cnvrg
841
851
  isolation: true
842
852
  }
843
853
  Parallel.map(files["keys"], parallel_options) do |f|
844
-
845
854
  file_path = f["name"]
855
+ progressbar.progress += 1 if progressbar.present?
846
856
  if file_path.end_with? "/"
847
857
  # dir
848
- if download_dir(file_path, file_path)
858
+ if download_dir(project_home, file_path)
849
859
  download_succ_count += 1
850
860
  else
851
861
  return Cnvrg::Result.new(false,"Could not create directory: #{file_path}")
@@ -857,6 +867,8 @@ module Cnvrg
857
867
  file_key = Cnvrg::Helpers.decrypt(key,iv, f["path"])
858
868
  resp = false
859
869
  file_path = "#{file_path}.conflict" if conflict
870
+ dirname = File.dirname file_path
871
+ download_dir(project_home, dirname) unless dirname.eql? "."
860
872
  File.open(project_home+"/"+file_path, 'w+') do |file|
861
873
  resp = client.get_object({bucket:bucket,
862
874
  key:file_key}, target: file)
@@ -27,6 +27,9 @@ module Cnvrg
27
27
  end
28
28
 
29
29
  def last_local_commit
30
+ if !File.exist? "#{self.local_path}/.cnvrg/idx.yml"
31
+ return nil
32
+ end
30
33
  idx = YAML.load_file(@local_path + "/.cnvrg/idx.yml")
31
34
  return idx[:commit]
32
35
  end
@@ -488,7 +491,6 @@ module Cnvrg
488
491
  end
489
492
  idx_hash = YAML.load_file("#{self.local_path}/.cnvrg/idx.yml")
490
493
  return idx_hash[:next_commit]
491
-
492
494
  end
493
495
  def remove_next_commit()
494
496
  if !File.exist? "#{self.local_path}/.cnvrg/idx.yml"
@@ -501,6 +503,13 @@ module Cnvrg
501
503
  File.open("#{self.local_path}/.cnvrg/idx.yml", 'w') { |f| f.write idx.to_yaml }
502
504
 
503
505
 
506
+ end
507
+ def get_current_commit()
508
+ if !File.exist? "#{self.local_path}/.cnvrg/idx.yml"
509
+ return nil
510
+ end
511
+ idx_hash = YAML.load_file("#{self.local_path}/.cnvrg/idx.yml")
512
+ return idx_hash[:commit]
504
513
  end
505
514
  def list_files(commit, json)
506
515
  response = Cnvrg::API.request("users/#{self.owner}/datasets/#{self.slug}/list", 'GET', {commit_sha1:commit, as_json:json})
@@ -141,7 +141,7 @@ module Cnvrg
141
141
  restart = false
142
142
  #TODO: remove this later
143
143
  fall_number = rand(1..20)
144
- if fall_number == 5
144
+ if [5,15].include? fall_number
145
145
  return true
146
146
  else
147
147
  return false
@@ -196,6 +196,7 @@ parameters:
196
196
 
197
197
  def decrypt(key,iv,str)
198
198
  begin
199
+
199
200
  cipher = OpenSSL::Cipher.new("aes-256-cbc").decrypt
200
201
  cipher.key = key
201
202
  cipher.iv = Base64.decode64 iv.encode('ascii-8bit')
@@ -262,7 +263,7 @@ parameters:
262
263
  :http_open_timeout => 60, :retry_limit => 20)
263
264
  use_accelerate_endpoint = true
264
265
  else
265
- endpoint = Cnvrg::Helpers.decrypt(key,iv, files["endpoint_url"])
266
+ endpoint = Cnvrg::Helpers.decrypt(key,iv, files["endpoint"])
266
267
  client = Aws::S3::Client.new(
267
268
  :access_key_id =>access,
268
269
  :secret_access_key => secret,
@@ -317,6 +317,22 @@ module Cnvrg
317
317
  config = YAML.load_file(@working_dir+"/.cnvrg/config.yml")
318
318
  new_config = config.except(:new_branch)
319
319
  File.open(@working_dir+"/.cnvrg/config.yml", "w+") { |f| f.write new_config.to_yaml }
320
+ end
321
+ def generate_output_dir(output_dir)
322
+ upload_list = []
323
+ list = Dir.glob("#{output_dir}/**/*", File::FNM_DOTMATCH)
324
+ Parallel.map(list, in_threads: IDXParallelThreads) do |e|
325
+ next if e.end_with? "/."
326
+ if File.directory? e
327
+
328
+ upload_list << e+"/"
329
+ else
330
+ upload_list << e
331
+ end
332
+ end
333
+ upload_list << output_dir + "/"
334
+ return upload_list
335
+
320
336
  end
321
337
 
322
338
  def generate_idx(deploy:false)
@@ -1,4 +1,4 @@
1
1
  module Cnvrg
2
- VERSION = '0.6.1'
2
+ VERSION = '0.6.2'
3
3
  end
4
4
 
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: 0.6.1
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yochay Ettun
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-08-02 00:00:00.000000000 Z
12
+ date: 2018-08-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler