cnvrg 0.5.6 → 0.5.8

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: 07964bc246a5f5139d9e726200e40d318a54eaec
4
- data.tar.gz: f313dce679b50991e1440f668b8db27b1433bca8
3
+ metadata.gz: 5e3a5bae5049d633360023ea911ceeb97ed85696
4
+ data.tar.gz: 1f3b1959efd5784162d3d715b2b671188907297f
5
5
  SHA512:
6
- metadata.gz: 56a184f578f4817a3f7471b3263d948575d7b685139748614793e1dad14f20419645279616c0bcffb43eaee31e7ce4d20ca7090ee080ade8167cfed668d80dca
7
- data.tar.gz: d6dfd7f259df3aaaf55ccd4e93662e9d5b4f9ad184f138b14c605d09a3faed498d6d1f0dd3765ced81d966303bc5f696ba0bd262c8110809e3295d8a175e85f1
6
+ metadata.gz: 85643c72891b74c4282ce4991f8c7e572c1f21af287cb8883707ce1fbd34368a935e2508ac83610148f1caff3e86d1febd351dd0e129625da1a66e5ecf183414
7
+ data.tar.gz: ac285e4ddc22e20f4c7a811b59e82757e82f8686eaaae5d029a0aa2997bcb987283b1655a46dc7e87d1a44682cee4b504dcba99337064834ade2d80a60c8de04
@@ -815,96 +815,49 @@ module Cnvrg
815
815
  Cnvrg::CLI.is_response_success(response,true)
816
816
  dataset_name = response["result"]["name"]
817
817
  dataset_home = Dir.pwd+"/"+dataset_name
818
-
819
-
820
818
  if (Dir.exists? dataset_name)
821
819
  log_message("Error: Conflict with dir #{dataset_name}", Thor::Shell::Color::RED)
822
820
  if no? "Sync to repository anyway? (current data might lost)", Thor::Shell::Color::YELLOW
823
821
  log_message("Remove dir in order to clone #{dataset_name}", Thor::Shell::Color::RED)
824
822
  exit(1)
825
823
  end
826
-
827
824
  end
828
825
  check = Helpers.checkmark
829
-
830
826
  if Dataset.clone(owner, dataset_name, slug)
831
827
  log_message("Cloning #{dataset_name}", Thor::Shell::Color::BLUE)
832
828
  @files = Cnvrg::Datafiles.new(owner, slug)
833
-
834
- successful_changes = []
835
829
  log_message("Downloading files", Thor::Shell::Color::BLUE)
836
- if not(query.nil? or query.empty?)
837
- @files.download_list_files_in_query(response["result"]["list_files"],dataset_home)
830
+ # if not(query.nil? or query.empty?)
831
+ # @files.download_list_files_in_query(response["result"]["list_files"],dataset_home)
838
832
 
839
- log_message("#{check} Clone finished successfully", Thor::Shell::Color::GREEN)
840
- return
833
+ # log_message("#{check} Clone finished successfully", Thor::Shell::Color::GREEN)
834
+ # return
841
835
 
842
- end
836
+ # end
843
837
  commit = response["result"]["commit"]
844
- idx = {commit: response["result"]["commit"], tree: response["result"]["tree"]}
845
- File.open(dataset_home + "/.cnvrg/idx.yml", "w+") {|f| f.write idx.to_yaml}
846
- if !response["result"]["tree"].nil?
847
- parallel_options = {
848
- :progress => {
849
- :title => "Download Progress",
850
- :progress_mark => '=',
851
- :format => "%b>>%i| %p%% %t",
852
- :starting_at => 0,
853
- :total => response["result"]["tree"].size,
854
- :autofinish => true
855
- },
856
- in_threads: ParallelThreads
857
- }
858
- begin
859
- is_success = true
860
-
861
- Parallel.map((response["result"]["tree"]), parallel_options) do |f|
862
-
863
- relative_path = f[0].gsub(/^#{dataset_home}/, "")
864
- if f[0].end_with? "/"
865
- # dir
866
- if @files.download_dir(dataset_home, relative_path)
867
- successful_changes << relative_path
868
- else
869
- is_success =false
870
- log_message("Could not create directory: #{f[0]}", Thor::Shell::Color::RED)
871
- raise Parallel::Kill
872
- end
873
- else
874
- # blob
875
- if !only_tree
876
-
877
- if @files.download_file_s3(f[0], relative_path, dataset_home, false, commit_sha1=commit)
878
- successful_changes << relative_path
879
- else
880
- is_success =false
881
- log_message("Could not download file: #{f[0]}", Thor::Shell::Color::RED)
882
- raise Parallel::Kill
883
- end
884
- end
885
- end
886
- end
887
- rescue Interrupt
888
- is_success =false
889
- log_message("Couldn't download", Thor::Shell::Color::RED)
890
-
891
- exit(1)
892
- end
893
-
894
-
895
- end
896
- successful_changes = response["result"]["tree"]
897
- if !successful_changes.nil? and is_success
838
+ files_count = response["result"]["file_count"]
839
+ files = @files.get_clone_chunk(commit: commit)
840
+ downloaded_files = 0
841
+ progressbar = ProgressBar.create(:title => "Download Progress",
842
+ :progress_mark => '=',
843
+ :format => "%b>>%i| %p%% %t",
844
+ :starting_at => 0,
845
+ :autofinish => true)
846
+ while files['keys'].length > 0
847
+ @files.download_multiple_files_s3(files, dataset_home)
848
+ downloaded_files += files['keys'].length
849
+ progressbar.progress = (downloaded_files * 100 / files_count)
850
+ files = @files.get_clone_chunk(commit: commit, latest_id: files['latest'])
851
+ end
852
+ if downloaded_files == files_count
898
853
  Dataset.verify_cnvrgignore_exist(dataset_name, false)
899
-
854
+ @dataset = Dataset.new(dataset_home)
855
+ @dataset.write_idx(nil, commit)
900
856
  log_message("#{check} Clone finished successfully", Thor::Shell::Color::GREEN)
901
857
  else
902
- log_message("Couldn't download some files", Thor::Shell::Color::RED)
903
-
858
+ log_message(result.msg, result.msg_color)
904
859
  end
905
-
906
860
  else
907
-
908
861
  log_message("Error: Couldn't create directory: #{dataset_name}", Thor::Shell::Color::RED)
909
862
  exit(1)
910
863
  end
@@ -1965,15 +1918,16 @@ module Cnvrg
1965
1918
  method_option :commit, :type => :string, :aliases => ["-c"], :desc => "download specified commit", :default => nil
1966
1919
  method_option :all_files, :type => :boolean, :aliases => ["--all"], :desc => "download specified commit", :default => true
1967
1920
  method_option :parallel, :type => :numeric, :aliases => ["-p", "--parallel"], :desc => "uparallel upload at the same time", :default => 15
1921
+ method_option :init, :type => :boolean, :aliases => ["--initial"], :desc => "initial sync", :default => false
1968
1922
 
1969
- def sync_data_new(new_branch, force, verbose, commit, all_files, tags,parallel)
1923
+ def sync_data_new(new_branch, force, verbose, commit, all_files, tags ,parallel, chunk_size, init)
1970
1924
  verify_logged_in(true)
1971
1925
  log_start(__method__, args, options)
1972
1926
  log_message('Syncing dataset', Thor::Shell::Color::BLUE, !options["verbose"])
1973
- if !options[:force]
1927
+ if !force and !init
1974
1928
  invoke :download_data_new,[verbose,true, commit, all_files], :new_branch=>new_branch, :direct=>false, :force =>force
1975
1929
  end
1976
- invoke :upload_data_new,[new_branch, verbose,true,force, tags], :new_branch=>new_branch,
1930
+ invoke :upload_data_new,[new_branch, verbose,true,force, tags, chunk_size], :new_branch=>new_branch,
1977
1931
  :direct=>false, :force =>force, :sync =>true, :tags =>tags, :parallel => parallel
1978
1932
 
1979
1933
  end
@@ -1984,14 +1938,11 @@ module Cnvrg
1984
1938
  method_option :sync, :type => :boolean, :aliases => ["-s","--sync"], :default => false
1985
1939
  method_option :tags, :type => :boolean, :aliases => ["--tags"], :desc => "upload file tags", :default => false
1986
1940
  method_option :parallel, :type => :numeric, :aliases => ["-p", "--parallel"], :desc => "uparallel upload at the same time", :default => 15
1987
-
1988
- def upload_data_new(new_branch, verbose,sync,force, tags)
1941
+ def upload_data_new(new_branch, verbose,sync,force, tags, chunk_size)
1989
1942
  commit = invoke :start_commit_data,[], :new_branch=> new_branch, :direct=>false, :force =>force
1990
- upload_res = invoke :upload_data_files,[commit],:new_branch=>new_branch, :verbose =>verbose,
1991
- :force =>force, :sync =>sync,:parallel => options[:parallel]
1992
- if upload_res
1993
- invoke :end_commit_data,[commit] , :new_branch=>new_branch, :force =>force
1994
- end
1943
+ upload_res = invoke :upload_data_files,[commit],:new_branch=>new_branch, :verbose =>verbose, :force =>force, :sync =>sync, :chunk_size => chunk_size
1944
+ invoke :end_commit_data,[commit] , :new_branch=>new_branch, :force =>force, :success => upload_res
1945
+
1995
1946
  if tags
1996
1947
  log_message('Uploading Tags', Thor::Shell::Color::BLUE)
1997
1948
  dataset_dir = is_cnvrg_dir(Dir.pwd)
@@ -2032,25 +1983,19 @@ module Cnvrg
2032
1983
  commit_sha1 = nil
2033
1984
  @dataset = Dataset.new(dataset_dir)
2034
1985
  @files = Cnvrg::Datafiles.new(@dataset.owner, @dataset.slug)
2035
- next_commit = @dataset.get_next_commit()
2036
- if !next_commit.nil? and !next_commit.empty?
1986
+ next_commit = @dataset.get_next_commit() #if there was a partial commit..
1987
+ if next_commit.present? #keep from existing commit.
2037
1988
  resp = @files.get_commit(next_commit)
2038
1989
  if resp["result"]["status"].eql? "new"
2039
1990
  resp = @files.start_commit(new_branch,force)
2040
1991
  commit_sha1 = resp["result"]["commit_sha1"]
2041
-
2042
1992
  @dataset.set_next_commit(commit_sha1)
2043
-
2044
1993
  else
2045
-
2046
- commit_sha1 = resp["result"]["commit_sha1"]
2047
-
1994
+ commit_sha1 = resp["result"]["commit_sha1"]
2048
1995
  end
2049
1996
  else
2050
-
2051
1997
  resp = @files.start_commit(new_branch,force)
2052
1998
  commit_sha1 = resp["result"]["commit_sha1"]
2053
-
2054
1999
  @dataset.set_next_commit(commit_sha1)
2055
2000
  end
2056
2001
  if direct
@@ -2059,16 +2004,14 @@ module Cnvrg
2059
2004
  return commit_sha1
2060
2005
  rescue => e
2061
2006
  puts e
2062
- if !commit_sha1.nil?
2007
+ if commit_sha1.present?
2063
2008
  @dataset.set_next_commit(commit_sha1)
2064
2009
  end
2065
2010
  rescue SignalException
2066
2011
  log_message("Aborting..", Thor::Shell::Color::YELLOW)
2067
- if !commit_sha1.nil?
2068
-
2012
+ if commit_sha1.present?
2069
2013
  @dataset.set_next_commit(commit_sha1)
2070
2014
  end
2071
-
2072
2015
  exit(1)
2073
2016
  end
2074
2017
 
@@ -2076,6 +2019,7 @@ module Cnvrg
2076
2019
  desc 'end_commit', 'start data commit'
2077
2020
  method_option :new_branch, :type => :boolean, :aliases => ["-nb"], :desc => "create new branch of commits"
2078
2021
  method_option :force, :type => :boolean, :aliases => ["-f","--force"], :default => false
2022
+ method_option :success, :type => :boolean, :default => true, :hide=>true
2079
2023
 
2080
2024
  def end_commit_data(commit)
2081
2025
  begin
@@ -2085,12 +2029,18 @@ module Cnvrg
2085
2029
  @dataset = Dataset.new(dataset_dir)
2086
2030
  @files = Cnvrg::Datafiles.new(@dataset.owner, @dataset.slug)
2087
2031
  force = options["force"] || false
2088
-
2089
- resp = @files.end_commit(commit, force)
2032
+ resp = @files.end_commit(commit, force, options[:success])
2090
2033
  if (resp and resp["result"])
2091
- check = Helpers.checkmark()
2092
- @dataset.remove_next_commit()
2093
- log_message("#{check} Data files were updated successfully", Thor::Shell::Color::GREEN)
2034
+ if !options[:success]
2035
+ @dataset.set_next_commit(resp["result"]["commit_sha1"])
2036
+ @dataset.remove_next_commit
2037
+ else
2038
+ check = Helpers.checkmark
2039
+ @dataset.set_next_commit(commit)
2040
+ @dataset.remove_next_commit
2041
+ log_message("#{check} Data files were updated successfully", Thor::Shell::Color::GREEN)
2042
+ end
2043
+
2094
2044
  end
2095
2045
 
2096
2046
 
@@ -2144,6 +2094,7 @@ module Cnvrg
2144
2094
  method_option :sync, :type => :boolean, :aliases => ["-s"], :default => false
2145
2095
  method_option :force, :type => :boolean, :aliases => ["-f","--force"], :default => false
2146
2096
  method_option :tags, :type => :string, :aliases => ["--tags"], :desc => "upload file tags", :default => ""
2097
+ method_option :chunk_size, :type => :numeric, :aliases => ["--chunk"], :desc => "upload file tags", :default => 1000
2147
2098
  # method_option :tags_yml, :type => :boolean, :aliases => ["--file_tag_yml"], :default => false
2148
2099
  method_option :parallel, :type => :numeric, :aliases => ["-p", "--parallel"], :desc => "uparallel upload at the same time", :default => 15
2149
2100
 
@@ -2153,219 +2104,242 @@ module Cnvrg
2153
2104
  verify_logged_in(true)
2154
2105
  log_start(__method__, args, options)
2155
2106
  dataset_dir = is_cnvrg_dir(Dir.pwd)
2156
-
2157
2107
  @dataset = Dataset.new(dataset_dir)
2158
2108
  @files = Cnvrg::Datafiles.new(@dataset.owner, @dataset.slug)
2159
2109
  next_commit = @dataset.get_next_commit()
2160
-
2161
-
2162
- if (new_commit.nil? or new_commit.empty?) and next_commit.nil?
2110
+ if new_commit.blank? and next_commit.blank?
2163
2111
  log_message("You must specify commit, run start_commit to create new commit", Thor::Shell::Color::RED)
2164
2112
  exit(1)
2165
2113
  end
2166
2114
 
2167
2115
  force = options[:force] || false
2168
- parallel_threads = options["parallel"] || ParallelThreads
2116
+ chunk_size = options[:chunk_size]
2117
+ chunk_size = [chunk_size, 1].max
2169
2118
  new_branch = options["new_branch"] || false
2170
- log_message("Checking dataset", Thor::Shell::Color::BLUE) unless options[:sync]
2171
- local_idx = @dataset.generate_idx(true)
2172
- result = @dataset.compare_idx(new_branch, commit=@dataset.last_local_commit, local_idx= local_idx, force=force, next_commit= next_commit)
2173
-
2174
- commit_sha1 = result["result"]["commit"]
2175
- if commit_sha1 != @dataset.last_local_commit and !@dataset.last_local_commit.nil? and !result["result"]["tree"]["updated_on_server"].empty?
2176
- @dataset.remove_next_commit()
2177
- @files.delete_commit(next_commit)
2178
- log_message("Remote server has an updated version, please run `cnvrg data download` first or cnvrg data upload --new_branch", Thor::Shell::Color::BLUE)
2179
- exit(1)
2180
- end
2181
- check = Helpers.checkmark()
2119
+ force = options["force"] || false
2120
+ parallel_threads = options["parallel"] || ParallelThreads
2121
+ new_tree = {}
2122
+ progressbar = ProgressBar.create(:title => "Upload Progress",
2123
+ :progress_mark => '=',
2124
+ :format => "%b>>%i| %p%% %t",
2125
+ :starting_at => 0,
2126
+ :autofinish => true)
2127
+ all_files = @dataset.list_all_files
2128
+ files_count = all_files.count
2129
+ finished_chunks = 0
2130
+ files_uploaded = 0
2131
+ all_files.each_slice(chunk_size).each do |list_files|
2132
+ temp_tree = @dataset.generate_chunked_idx(list_files, threads: parallel_threads)
2133
+ files_uploaded += @files.upload_multiple_files(next_commit, temp_tree, threads: parallel_threads, force: force)
2134
+ new_tree = new_tree.merge(temp_tree.map{|k,v| [k.gsub('./', ''), {sha1: v[:sha1], commit_time: nil}]}.to_h)
2135
+ @dataset.write_idx(new_tree, next_commit)
2136
+ finished_chunks += 1
2137
+ progressbar.progress = [(finished_chunks * chunk_size*100) / files_count, 100].min
2138
+ end
2139
+ return files_uploaded > 0
2140
+ rescue Exception => e
2141
+ return false
2142
+ end
2182
2143
 
2144
+ # local_idx = @dataset.generate_idx
2145
+ # result = @dataset.compare_idx(new_branch, commit=@dataset.last_local_commit, local_idx= local_idx, force=force, next_commit= next_commit)
2183
2146
 
2184
- commit_time = result["result"]["commit_time"]
2185
- already_uploaded = result["result"]["uploaded"]
2186
- dirs_uploaded = []
2187
- files_uploaded = []
2188
- files_uploaded_names = []
2189
- if !already_uploaded.nil? and !already_uploaded.empty?
2147
+ # commit_sha1 = result["result"]["commit"]
2148
+ # if commit_sha1 != @dataset.last_local_commit and !@dataset.last_local_commit.nil? and !result["result"]["tree"]["updated_on_server"].empty?
2149
+ # @dataset.remove_next_commit()
2150
+ # @files.delete_commit(next_commit)
2151
+ # log_message("Remote server has an updated version, please run `cnvrg data download` first or cnvrg data upload --new_branch", Thor::Shell::Color::BLUE)
2152
+ # exit(1)
2153
+ # end
2154
+ # check = Helpers.checkmark()
2190
2155
 
2191
- dirs_uploaded = already_uploaded["dirs"]
2192
- files_uploaded = already_uploaded["blobs"]
2193
- if !files_uploaded.nil? and !files_uploaded.empty?
2194
- files_uploaded_names = already_uploaded["blobs"].keys
2195
- end
2196
2156
 
2197
- end
2157
+ # commit_time = result["result"]["commit_time"]
2158
+ # already_uploaded = result["result"]["uploaded"]
2159
+ # dirs_uploaded = []
2160
+ # files_uploaded = []
2161
+ # files_uploaded_names = []
2162
+ # if !already_uploaded.nil? and !already_uploaded.empty?
2198
2163
 
2199
- result = result["result"]["tree"]
2200
- if result["added"].empty? and result["updated_on_local"].empty? and result["deleted"].empty?
2201
- @files.delete_commit(next_commit)
2164
+ # dirs_uploaded = already_uploaded["dirs"]
2165
+ # files_uploaded = already_uploaded["blobs"]
2166
+ # if !files_uploaded.nil? and !files_uploaded.empty?
2167
+ # files_uploaded_names = already_uploaded["blobs"].keys
2168
+ # end
2202
2169
 
2203
- log_message("#{check} Dataset is up to date", Thor::Shell::Color::GREEN, true)
2204
- return false
2205
- end
2206
- log_message("Creating new commit for dataset: #{@dataset.slug}", Thor::Shell::Color::BLUE) unless options[:sync]
2170
+ # end
2207
2171
 
2172
+ # result = result["result"]["tree"]
2173
+ # if result["added"].empty? and result["updated_on_local"].empty? and result["deleted"].empty?
2174
+ # @files.delete_commit(next_commit)
2208
2175
 
2209
- # upload / update
2210
- begin
2211
- parallel_options = {
2212
- :progress => {
2213
- :title => "Upload Progress",
2214
- :progress_mark => '=',
2215
- :format => "%b>>%i| %p%% %t",
2216
- :starting_at => 0,
2217
- :total => (result["added"] + result["updated_on_local"]).size,
2218
- :autofinish => true
2219
- },
2220
- in_threads: parallel_threads.to_i,
2221
- isolation: true
2222
- }
2223
- successful_updates = []
2224
- update_count =0
2225
- update_total = (result["added"] + result["updated_on_local"] + result["deleted"]).size
2176
+ # log_message("#{check} Dataset is up to date", Thor::Shell::Color::GREEN, true)
2177
+ # return false
2178
+ # end
2179
+ # log_message("Creating new commit for dataset: #{@dataset.slug}", Thor::Shell::Color::BLUE) unless options[:sync]
2226
2180
 
2227
- if (result["added"] + result["updated_on_local"]).size > 0
2228
- begin
2229
- upload_result = Parallel.map((result["added"] + result["updated_on_local"]), parallel_options) do |f|
2230
- absolute_path = "#{@dataset.local_path}/#{f}"
2231
- relative_path = f.gsub(/^#{@dataset.local_path + "/"}/, "")
2232
- if File.directory?(absolute_path)
2233
- if dirs_uploaded.include? f
2234
- #Already uploaded and didn't finish commit
2235
- log_message("Already uploaded dir: #{f}", Thor::Shell::Color::BLUE, options["verbose"])
2236
2181
 
2237
- next
2238
- end
2239
- log_message("uploading dir: #{f}", Thor::Shell::Color::BLUE, options["verbose"])
2182
+ # # upload / update
2183
+ # begin
2240
2184
 
2241
- resDir = @files.create_dir(absolute_path, relative_path, commit_sha1)
2242
- if resDir
2243
- update_count += 1
2244
- successful_updates<< relative_path
2245
- else
2246
- log_message("Failed to upload directory: #{ relative_path }", Thor::Shell::Color::RED)
2185
+ # parallel_options = {
2186
+ # :progress => {
2187
+ # :title => "Upload Progress",
2188
+ # :progress_mark => '=',
2189
+ # :format => "%b>>%i| %p%% %t",
2190
+ # :starting_at => 0,
2191
+ # :total => (result["added"] + result["updated_on_local"]).size,
2192
+ # :autofinish => true
2193
+ # },
2194
+ # in_threads: ParallelThreads,
2195
+ # isolation: true
2196
+ # }
2197
+ # successful_updates = []
2198
+ # update_count =0
2199
+ # update_total = (result["added"] + result["updated_on_local"] + result["deleted"]).size
2247
2200
 
2248
- raise Parallel::Kill
2249
- end
2201
+ # if (result["added"] + result["updated_on_local"]).size > 0
2202
+ # begin
2203
+ # upload_result = Parallel.map((result["added"] + result["updated_on_local"]), parallel_options) do |f|
2204
+ # absolute_path = "#{@dataset.local_path}/#{f}"
2205
+ # relative_path = f.gsub(/^#{@dataset.local_path + "/"}/, "")
2206
+ # if File.directory?(absolute_path)
2207
+ # if dirs_uploaded.include? f
2208
+ # #Already uploaded and didn't finish commit
2209
+ # log_message("Already uploaded dir: #{f}", Thor::Shell::Color::BLUE, options["verbose"])
2250
2210
 
2251
- else
2252
- if files_uploaded_names.include? f
2253
- log_message("Already uploaded file: #{f}", Thor::Shell::Color::BLUE, options["verbose"])
2211
+ # next
2212
+ # end
2213
+ # log_message("uploading dir: #{f}", Thor::Shell::Color::BLUE, options["verbose"])
2254
2214
 
2255
- next
2256
- end
2257
- log_message("uploading: #{f}", Thor::Shell::Color::BLUE, options["verbose"])
2215
+ # resDir = @files.create_dir(absolute_path, relative_path, commit_sha1)
2216
+ # if resDir
2217
+ # update_count += 1
2218
+ # successful_updates<< relative_path
2219
+ # else
2220
+ # log_message("Failed to upload directory: #{ relative_path }", Thor::Shell::Color::RED)
2258
2221
 
2259
- res = @files.upload_file(absolute_path, relative_path, commit_sha1)
2260
- if res
2261
- update_count += 1
2222
+ # raise Parallel::Kill
2223
+ # end
2262
2224
 
2263
- successful_updates<< relative_path
2264
- else
2265
- log_message("Failed to upload: #{ File.basename(absolute_path) }", Thor::Shell::Color::RED)
2225
+ # else
2226
+ # if files_uploaded_names.include? f
2227
+ # log_message("Already uploaded file: #{f}", Thor::Shell::Color::BLUE, options["verbose"])
2266
2228
 
2267
- raise Parallel::Kill
2229
+ # next
2230
+ # end
2231
+ # log_message("uploading: #{f}", Thor::Shell::Color::BLUE, options["verbose"])
2268
2232
 
2269
- end
2270
- end
2271
- end
2272
- rescue SignalException
2273
- log_message("Exception while trying to upload, look at the log for more details", Thor::Shell::Color::RED)
2233
+ # res = @files.upload_file(absolute_path, relative_path, commit_sha1)
2234
+ # if res
2235
+ # update_count += 1
2274
2236
 
2237
+ # successful_updates<< relative_path
2238
+ # else
2239
+ # log_message("Failed to upload: #{ File.basename(absolute_path) }", Thor::Shell::Color::RED)
2275
2240
 
2276
- exit(1)
2277
- end
2278
- end
2241
+ # raise Parallel::Kill
2279
2242
 
2280
- end
2281
- successful_updates = upload_result.to_a + dirs_uploaded + files_uploaded_names
2282
- successful_deletions =[]
2243
+ # end
2244
+ # end
2245
+ # end
2246
+ # rescue SignalException
2247
+ # log_message("Exception while trying to upload, look at the log for more details", Thor::Shell::Color::RED)
2283
2248
 
2284
2249
 
2285
- # delete
2250
+ # exit(1)
2251
+ # end
2252
+ # end
2286
2253
 
2287
- deleted = update_deleted(result["deleted"])
2288
- begin
2254
+ # end
2255
+ # successful_updates = upload_result.to_a + dirs_uploaded + files_uploaded_names
2256
+ # successful_deletions =[]
2289
2257
 
2290
- deleted_result = Parallel.map(deleted, in_threads: ParallelThreads) do |f|
2291
2258
 
2292
- relative_path = f.gsub(/^#{@dataset.local_path + "/"}/, "")
2293
- if relative_path.end_with?("/")
2294
- log_message("deleting dir: #{f}", Thor::Shell::Color::RED, options["verbose"])
2259
+ # # delete
2295
2260
 
2296
- if @files.delete_dir(f, relative_path, commit_sha1)
2297
- successful_deletions << f
2298
- else
2299
- log_message("Failed to delete directory: #{ f }", Thor::Shell::Color::RED)
2300
- raise Parallel::Kill
2261
+ # deleted = update_deleted(result["deleted"])
2262
+ # begin
2301
2263
 
2302
- end
2303
- else
2304
- log_message("deleteing file: #{f}", Thor::Shell::Color::RED, options["verbose"])
2264
+ # deleted_result = Parallel.map(deleted, in_threads: ParallelThreads) do |f|
2305
2265
 
2306
- if @files.delete_file(f, relative_path, commit_sha1)
2307
- successful_deletions << f
2266
+ # relative_path = f.gsub(/^#{@dataset.local_path + "/"}/, "")
2267
+ # if relative_path.end_with?("/")
2268
+ # log_message("deleting dir: #{f}", Thor::Shell::Color::RED, options["verbose"])
2308
2269
 
2309
- else
2310
- log_message("Failed to delete file: #{ f }", Thor::Shell::Color::RED)
2311
- raise Parallel::Kill
2270
+ # if @files.delete_dir(f, relative_path, commit_sha1)
2271
+ # successful_deletions << f
2272
+ # else
2273
+ # log_message("Failed to delete directory: #{ f }", Thor::Shell::Color::RED)
2274
+ # raise Parallel::Kill
2312
2275
 
2276
+ # end
2277
+ # else
2278
+ # log_message("deleteing file: #{f}", Thor::Shell::Color::RED, options["verbose"])
2313
2279
 
2314
- end
2315
- end
2316
- end
2280
+ # if @files.delete_file(f, relative_path, commit_sha1)
2281
+ # successful_deletions << f
2317
2282
 
2283
+ # else
2284
+ # log_message("Failed to delete file: #{ f }", Thor::Shell::Color::RED)
2285
+ # raise Parallel::Kill
2318
2286
 
2319
- successful_deletions += successful_deletions.select { |x| not x.nil? }
2320
2287
 
2288
+ # end
2289
+ # end
2290
+ # end
2321
2291
 
2322
- successful_updates = successful_updates.select { |x| not x.nil? }
2323
2292
 
2324
- update_count = successful_updates.size
2293
+ # successful_deletions += successful_deletions.select { |x| not x.nil? }
2325
2294
 
2326
- rescue SignalException
2327
- say "User aborted", Thor::Shell::Color::RED
2328
- exit(0)
2329
- rescue => e
2330
- log_message("Exception while trying to upload, look at the log for more details", Thor::Shell::Color::RED)
2331
- log_error(e)
2332
- exit(0)
2333
- end
2334
- if !result["deleted"].nil? and !result["deleted"].empty?
2335
- update_count += result["deleted"].size
2336
- end
2337
2295
 
2338
- if update_count == update_total
2339
- begin
2340
- @dataset.update_idx_with_files_commits!((successful_deletions+successful_updates), commit_time)
2296
+ # successful_updates = successful_updates.select { |x| not x.nil? }
2341
2297
 
2342
- return true
2343
- rescue => e
2344
- log_message("Exception while trying to upload, look at the log for more details", Thor::Shell::Color::RED)
2298
+ # update_count = successful_updates.size
2345
2299
 
2346
- exit(1)
2300
+ # rescue SignalException
2301
+ # say "User aborted", Thor::Shell::Color::RED
2302
+ # exit(0)
2303
+ # rescue => e
2304
+ # log_message("Exception while trying to upload, look at the log for more details", Thor::Shell::Color::RED)
2305
+ # log_error(e)
2306
+ # exit(0)
2307
+ # end
2308
+ # if !result["deleted"].nil? and !result["deleted"].empty?
2309
+ # update_count += result["deleted"].size
2310
+ # end
2347
2311
 
2348
- end
2312
+ # if update_count == update_total
2313
+ # begin
2314
+ # @dataset.update_idx_with_files_commits!((successful_deletions+successful_updates), commit_time)
2349
2315
 
2350
- end
2351
- rescue => e
2316
+ # return true
2317
+ # rescue => e
2318
+ # log_message("Exception while trying to upload, look at the log for more details", Thor::Shell::Color::RED)
2352
2319
 
2353
- log_message("Exception while trying to upload, look at the log for more details", Thor::Shell::Color::RED)
2354
- log_error(e)
2320
+ # exit(1)
2355
2321
 
2356
- exit(1)
2357
- rescue SignalException
2322
+ # end
2358
2323
 
2359
- say "\nAborting", Thor::Shell::Color::BLUE
2360
- exit(1)
2361
- end
2324
+ # end
2325
+ # rescue => e
2326
+
2327
+ # log_message("Exception while trying to upload, look at the log for more details", Thor::Shell::Color::RED)
2328
+ # log_error(e)
2329
+
2330
+ # exit(1)
2331
+ # rescue SignalException
2332
+
2333
+ # say "\nAborting", Thor::Shell::Color::BLUE
2334
+ # exit(1)
2335
+ # end
2362
2336
 
2363
2337
  end
2364
2338
 
2365
2339
 
2366
2340
  desc 'upload', 'Upload updated files'
2367
2341
  method_option :ignore, :type => :string, :aliases => ["-i"], :desc => "ignore following files", :default => ""
2368
- method_option :new_branch, :type => :boolean, :aliases => ["-nb"], :desc => "create new branch of commits"
2342
+ method_option :new_branch, :type => :boolean, :aliases => ["-nb", "--new_branch"], :desc => "create new branch of commits"
2369
2343
  method_option :verbose, :type => :boolean, :aliases => ["-v"], :default => false
2370
2344
  method_option :sync, :type => :boolean, :aliases => ["-s"], :default => false
2371
2345
  method_option :force, :type => :boolean, :aliases => ["-f", "--force"], :default => false
@@ -2374,12 +2348,14 @@ module Cnvrg
2374
2348
  method_option :return_id, :type => :boolean, :aliases => ["-r", "--return_id"], :default => false
2375
2349
  method_option :files, :type => :string, :aliases => ["--files"], :default => nil
2376
2350
  method_option :output_dir, :type => :string, :aliases => ["--output_dir"], :default => nil
2351
+ method_option :job_slug, :type => :string, :aliases => ["--job"], :default => nil, :hide=>true
2352
+ method_option :job_type, :type => :string, :aliases => [ "--job_type"], :default => nil, :hide=>true
2377
2353
 
2378
- def upload(link = false, sync = false, direct = false, ignore_list = "", in_exp = false, force = false)
2354
+ def upload(link = false, sync = false, direct = false, ignore_list = "", in_exp = false, force = false,output_dir="output",job_type=nil,job_slug=nil )
2379
2355
  begin
2356
+ # we are passing "force" twice.. doesnt really make sense :\\
2380
2357
  verify_logged_in(true)
2381
2358
  log_start(__method__, args, options)
2382
-
2383
2359
  @project = Project.new(get_project_home)
2384
2360
  commit_msg = options["message"]
2385
2361
  if commit_msg.nil? or commit_msg.empty?
@@ -2388,18 +2364,24 @@ module Cnvrg
2388
2364
  return_id = options["return_id"]
2389
2365
  @files = Cnvrg::Files.new(@project.owner, @project.slug)
2390
2366
  ignore = options[:ignore] || ""
2391
- force = options[:force] || false
2367
+ force = options[:force] || force || false
2392
2368
  spec_files_to_upload = options["files"]
2369
+ check = Helpers.checkmark()
2370
+
2393
2371
  if !spec_files_to_upload.blank?
2394
2372
  spec_files_to_upload = spec_files_to_upload.split(",")
2395
2373
  end
2396
- git_output_dir = options["output_dir"]
2397
- if !git_output_dir.blank?
2374
+ git_output_dir = options["output_dir"] || output_dir
2375
+ if git_output_dir.present?
2398
2376
  if git_output_dir.ends_with? "/"
2399
2377
  git_output_dir = git_output_dir[0..-2]
2400
2378
  end
2401
2379
  spec_files_to_upload = Dir.glob("#{git_output_dir}/**/*", File::FNM_DOTMATCH).flatten
2402
2380
  spec_files_to_upload = spec_files_to_upload.select{|x| !x.ends_with? "/."}
2381
+ if spec_files_to_upload.blank?
2382
+ log_message("#{check} Project is up to date", Thor::Shell::Color::GREEN, (((options["sync"] or sync) and !direct) ? false : true))
2383
+ return true
2384
+ end
2403
2385
  force = true
2404
2386
  end
2405
2387
 
@@ -2431,7 +2413,7 @@ module Cnvrg
2431
2413
  end
2432
2414
  result = result["result"]["tree"]
2433
2415
 
2434
- check = Helpers.checkmark()
2416
+
2435
2417
  if result["added"].empty? and result["updated_on_local"].empty? and result["deleted"].empty?
2436
2418
  log_message("#{check} Project is up to date", Thor::Shell::Color::GREEN, (((options["sync"] or sync) and !direct) ? false : true))
2437
2419
  return true
@@ -2448,7 +2430,6 @@ module Cnvrg
2448
2430
  end
2449
2431
  else
2450
2432
  log_message("Syncing files", Thor::Shell::Color::BLUE, ((options["sync"] or sync)) ? false : true)
2451
-
2452
2433
  end
2453
2434
  # Start commit
2454
2435
  if in_exp
@@ -2456,8 +2437,10 @@ module Cnvrg
2456
2437
  else
2457
2438
  exp_start_commit = nil
2458
2439
  end
2459
- commit_sha1 = @files.start_commit(new_branch, force: force, exp_start_commit:exp_start_commit)["result"]["commit_sha1"]
2460
-
2440
+ job_type = options['job_type'] || job_type
2441
+ job_slug = options['job_slug'] || job_slug
2442
+ commit_sha1 = @files.start_commit(new_branch, force: force, exp_start_commit:exp_start_commit,
2443
+ job_type: job_type, job_slug: job_slug)["result"]["commit_sha1"]
2461
2444
  # upload / update
2462
2445
  begin
2463
2446
 
@@ -2753,8 +2736,8 @@ module Cnvrg
2753
2736
  method_option :commit, :type => :string, :aliases => ["-c"], :desc => "download specified commit", :default => ""
2754
2737
  method_option :all_files, :type => :boolean, :aliases => ["--all"], :desc => "download specified commit", :default => false
2755
2738
 
2739
+ def download_data_new(verbose=false, new_branch=false,sync=false, commit=nil,all_files=true)
2756
2740
  begin
2757
- def download_data_new(verbose=false,sync=false, commit=nil,all_files=true)
2758
2741
  verify_logged_in(true)
2759
2742
  log_start(__method__, args, options)
2760
2743
  dataset_dir = is_cnvrg_dir(Dir.pwd)
@@ -2763,23 +2746,14 @@ module Cnvrg
2763
2746
  commit_to_download = commit
2764
2747
  local_idx = @dataset.generate_idx
2765
2748
  all_files = all_files
2766
- if !commit_to_download.nil? and !commit_to_download.empty?
2767
- res = @dataset.compare_idx_download( commit=commit_to_download, local_idx= local_idx,all_files=all_files)
2768
- else
2769
- res = @dataset.compare_idx_download( commit=nil, local_idx= local_idx,all_files=all_files)
2770
-
2771
- end
2772
-
2749
+ res = @dataset.compare_idx_download(commit=commit_to_download.presence, local_idx= local_idx,all_files=all_files)
2773
2750
  result = res["result"]["tree"]
2774
-
2775
2751
  commit = res["result"]["commit"]
2776
2752
  if result["updated_on_server"].empty? and result["conflicts"].empty? and result["deleted"].empty?
2777
2753
  log_message("Dataset is up to date", Thor::Shell::Color::GREEN, ((options["sync"] or sync) ? false : true))
2778
2754
  return true
2779
2755
  end
2780
2756
  update_total = result["updated_on_server"].size + result["conflicts"].size + result["deleted"].size
2781
-
2782
-
2783
2757
  successful_changes = 0
2784
2758
  if update_total ==1
2785
2759
  log_message("Downloading #{update_total} file", Thor::Shell::Color::BLUE, !sync)
@@ -2790,112 +2764,20 @@ module Cnvrg
2790
2764
  log_message("Downloading #{update_total} files", Thor::Shell::Color::BLUE)
2791
2765
  else
2792
2766
  log_message("Syncing Dataset", Thor::Shell::Color::BLUE, !sync)
2793
-
2794
- end
2795
- parallel_options = {
2796
- :progress => {
2797
- :title => "Download Progress",
2798
- :progress_mark => '=',
2799
- :format => "%b>>%i| %p%% %t",
2800
- :starting_at => 0,
2801
- :total => result["updated_on_server"].size,
2802
- :autofinish => true
2803
- },
2804
- in_threads: ParallelThreads
2805
- }
2806
- conflicts = 0
2807
- if !result["conflicts"].empty?
2808
- begin
2809
-
2810
-
2811
- conflicts_result = Parallel.map(result["conflicts"], in_threads: ParallelThreads) do |f|
2812
-
2813
- relative_path = f.gsub(/^#{@dataset.local_path}/, "")
2814
- log_message("downloading: #{f}.conflict", Thor::Shell::Color::BLUE, verbose)
2815
-
2816
- if @files.download_file_s3(f, relative_path, dataset_dir, conflict=true, commit_sha1=commit)
2817
- conflicts +=1
2818
- else
2819
- log_message("Couldn't download: #{f}", Thor::Shell::Color::RED)
2820
- raise Parallel::Kill
2821
-
2822
- end
2823
- end
2824
- rescue Interrupt
2825
-
2826
- log_message("Failed to download files", Thor::Shell::Color::RED)
2827
-
2828
- exit(1)
2829
- end
2830
2767
  end
2831
-
2832
-
2833
- successful_changes += conflicts
2834
- downloads = 0
2835
- if !result["updated_on_server"].empty?
2836
-
2837
- updated_on_server_result = Parallel.map(result["updated_on_server"], parallel_options) do |f|
2838
- begin
2839
- relative_path = f.gsub(/^#{@dataset.local_path}/, "")
2840
- if f.end_with? "/"
2841
- # dir
2842
- if !all_files
2843
- log_message("downloading dir: #{f}", Thor::Shell::Color::BLUE, verbose)
2844
- if @files.download_dir(dataset_dir, relative_path)
2845
- downloads +=1
2846
- else
2847
- log_message("Couldn't create directory: #{f}", Thor::Shell::Color::RED)
2848
- raise Parallel::Kill
2849
-
2850
-
2851
- end
2852
- end
2853
-
2854
- else
2855
- # blob
2856
- log_message("downloading file: #{f}", Thor::Shell::Color::BLUE, verbose)
2857
-
2858
- if @files.download_file_s3(f, relative_path, dataset_dir,conflict=false, commit_sha1=commit)
2859
- downloads +=1
2860
-
2861
- else
2862
-
2863
- log_message("Couldn't download: #{f}", Thor::Shell::Color::RED)
2864
- raise Parallel::Kill
2865
-
2866
-
2867
- end
2868
- end
2869
- rescue Interrupt
2870
- log_message("Couldn't download", Thor::Shell::Color::RED)
2871
-
2872
- exit(1)
2873
-
2874
- end
2875
-
2876
- end
2877
- successful_changes += downloads
2878
-
2879
- end
2880
-
2768
+ update_res = @files.download_files_in_chunks(result["updated_on_server"]) if result["updated_on_server"].present?
2769
+ conflict_res = @files.download_files_in_chunks(result["conflicts"], conflict: true) if result["conflicts"].present?
2881
2770
  deleted = result["deleted"].to_a
2882
2771
  delete_res = @files.delete_commit_files_local(deleted)
2883
2772
  if !delete_res
2884
2773
  log_message("Couldn't delete #{deleted.join(" ")}", Thor::Shell::Color::RED)
2885
2774
  log_message("Couldn't download, Rolling Back all changes.", Thor::Shell::Color::RED)
2886
-
2887
2775
  exit(1)
2888
-
2889
2776
  end
2890
- successful_changes += deleted.size
2891
-
2892
-
2893
-
2894
- if update_total == successful_changes
2777
+ if [update_res.is_success?, delete_res.is_success?, (conflict_res.blank? or conflict_res.is_success?)].all?
2895
2778
  # update idx with latest commit
2896
2779
  @dataset.update_idx_with_commit!(commit)
2897
2780
  check = Helpers.checkmark()
2898
-
2899
2781
  if options["verbose"]
2900
2782
  log_message("#{check} Done, Downloaded:", Thor::Shell::Color::GREEN)
2901
2783
  log_message(successful_changes.join("\n"), Thor::Shell::Color::GREEN)
@@ -2904,10 +2786,8 @@ module Cnvrg
2904
2786
  log_message("#{check} Downloaded changes successfully", Thor::Shell::Color::GREEN, ((sync or options["sync"]) ? false : true))
2905
2787
  end
2906
2788
  return true
2907
-
2908
2789
  end
2909
2790
  rescue => e
2910
-
2911
2791
  log_message("Error occurred, \nAborting", Thor::Shell::Color::BLUE)
2912
2792
  log_error(e)
2913
2793
  exit(1)
@@ -2915,7 +2795,8 @@ module Cnvrg
2915
2795
  say "\nAborting", Thor::Shell::Color::BLUE
2916
2796
  exit(1)
2917
2797
  end
2918
- end
2798
+ end
2799
+
2919
2800
  desc 'download in git project', 'Download other files', :hide =>true
2920
2801
  def download_in_git(commit_sha1)
2921
2802
  begin
@@ -3322,27 +3203,33 @@ module Cnvrg
3322
3203
  method_option :message, :type => :string, :aliases => ["-m", "--message"], :default => ""
3323
3204
  method_option :return_id, :type => :boolean, :aliases => ["-r", "--return_id"], :default => false
3324
3205
  method_option :deploy, :type => :boolean, :aliases => ["-d", "--deploy"], :default => false
3325
- method_option :in_exp, :type => :boolean, :aliases => ["-e", "--in_exp"], :default => false
3206
+ method_option :in_exp, :type => :boolean, :aliases => ["-e", "--in_exp"], :default => false #deprecated..
3207
+ method_option :job_slug, :type => :string, :aliases => ["-j", "--job"], :default => nil
3208
+ method_option :job_type, :type => :string, :aliases => ["-jt", "--job_type"], :default => nil
3326
3209
  method_option :files, :type => :string, :aliases => ["--files"], :default => nil
3327
3210
  method_option :output_dir, :type => :string, :aliases => ["--output_dir"], :default => nil
3328
-
3329
-
3330
3211
  def sync(direct = true)
3331
3212
  verify_logged_in(true) if direct
3332
3213
  log_start(__method__, args, options)
3333
3214
  log_message('Checking for new updates from remote version', Thor::Shell::Color::BLUE, options["verbose"])
3334
3215
  log_message('Syncing project', Thor::Shell::Color::BLUE, !options["verbose"])
3335
- if !options[:force] and (options[:files].blank? or options[:output_dir].blank?)
3336
- invoke :download, [true, "", options["in_exp"] ], :new_branch => options["new_branch"], :verbose => options["verbose"], :sync => true
3216
+ job_slug = options['job_slug']
3217
+ job_type = options['job_type']
3218
+ in_exp = options["in_exp"] || (job_slug.present? and job_type.present?)
3219
+ run_download = true
3220
+ if options[:force] or options[:files].present? or options[:output_dir].present? or in_exp
3221
+ run_download =false
3222
+ end
3223
+ if run_download
3224
+ invoke :download, [true, "", in_exp ], :new_branch => options["new_branch"], :verbose => options["verbose"], :sync => true
3337
3225
  end
3338
- invoke :upload, [false, true, direct, "",options["in_exp"] ], :new_branch => options["new_branch"], :verbose => options["verbose"], :sync => true,
3226
+ invoke :upload, [false, true, direct, "",options['exp_slug'] ], :new_branch => options["new_branch"], :verbose => options["verbose"], :sync => true,
3339
3227
  :ignore => options[:ignore], :force => options[:force], :message => options[:message], :deploy => options["deploy"], :return_id => options["return_id"],
3340
- :files => options["files"], :output_dir => options["output_dir"]
3228
+ :files => options["files"], :output_dir => options["output_dir"], :job_slug => job_slug, :job_type => job_type
3341
3229
 
3342
3230
 
3343
3231
  end
3344
3232
 
3345
-
3346
3233
  desc 'run cmd', 'Runs an experiment'
3347
3234
  method_option :local, :type => :boolean, :aliases => ["-l", "--local"], :default => false
3348
3235
  method_option :small, :type => :boolean, :aliases => ["-sm", "--small"], :default => false
@@ -3487,10 +3374,8 @@ module Cnvrg
3487
3374
  force = options[:force]
3488
3375
  sync_before_terminate = options["sync_before_terminate"]
3489
3376
  periodic_sync = options["periodic_sync"]
3490
-
3491
-
3492
-
3493
3377
  email_notification = options["email_notification"]
3378
+ output_dir = options['output_dir'] || "output"
3494
3379
  project_home = get_project_home
3495
3380
  data_query = options["data_query"]
3496
3381
  @project = Project.new(project_home)
@@ -3506,6 +3391,7 @@ module Cnvrg
3506
3391
  if sync_before
3507
3392
  # Sync before run
3508
3393
  invoke :sync, [false], :new_branch => is_new_branch, :ignore => ignore, :force => force
3394
+
3509
3395
  end
3510
3396
  end
3511
3397
  #set image for the project
@@ -3578,10 +3464,9 @@ module Cnvrg
3578
3464
  if output_dir.blank?
3579
3465
  output_dir = "output"
3580
3466
  end
3581
- invoke :upload, [false, true, false, ignore, true, true], :output_dir => output_dir, :force=>true
3467
+ upload(false, false, true, ignore, true, true,output_dir,"Experiment",@exp.slug )
3582
3468
  else
3583
- upload_res = upload(false, true, false, ignore, true, true)
3584
-
3469
+ upload(false, false, true, ignore, true, true,nil,"Experiment",@exp.slug )
3585
3470
  end
3586
3471
  res = @exp.send_restart_request(@project.get_idx.try(:fetch, :commit))
3587
3472
  while !Cnvrg::CLI.is_response_success(res, false) do
@@ -3685,24 +3570,17 @@ module Cnvrg
3685
3570
 
3686
3571
  if sync_after
3687
3572
  # Sync after run
3688
- upload_res_count = 0
3689
- upload_res = false
3690
- while !upload_res and upload_res_count <5
3691
- if @project.is_git
3692
- if !upload_output.blank?
3693
- upload_output = upload_output.join(",")
3694
- invoke :upload, [false, true, false, ignore, true, true], :output_dir => upload_output, :force=>true
3695
- end
3696
-
3697
- else
3698
- upload_res = upload(false, true, false, ignore, true, false)
3699
-
3700
-
3573
+ if @project.is_git
3574
+ output_dir = output_dir || @exp.output_dir
3575
+ if output_dir.present?
3576
+ upload(false, false, true, ignore, true, true,output_dir,"Experiment",@exp.slug )
3577
+ # invoke :upload, [false, false, true, ignore, true, true], :output_dir => output_dir, :force=>true, :job_type=>'Experiment', :job_slug=>@exp.slug
3701
3578
  end
3702
- upload_res_count +=1
3579
+ else
3580
+ upload(false, false, true, ignore, true, true,nil,"Experiment",@exp.slug )
3581
+
3582
+ # invoke :upload, [false, false, true, ignore,true, true], :job_type=>'Experiment', :job_slug=>@exp.slug, :force=>true
3703
3583
  end
3704
- # download(sync = true, ignore_list = ignore)
3705
- # upload(link = false, sync = true, direct = false, ignore_list = ignore)
3706
3584
 
3707
3585
  end
3708
3586
  end_commit = @project.last_local_commit
@@ -3710,7 +3588,7 @@ module Cnvrg
3710
3588
  # log_thread.join
3711
3589
  stats_thread.join
3712
3590
 
3713
- res = @exp.end(log, exit_status, end_commit, cpu_average, memory_average)
3591
+ res = @exp.end(log, exit_status, end_commit, cpu_average, memory_average)
3714
3592
 
3715
3593
 
3716
3594
  if !exp_success
@@ -3865,6 +3743,7 @@ module Cnvrg
3865
3743
 
3866
3744
  end
3867
3745
  project = Project.new(working_dir)
3746
+
3868
3747
  if project.is_git and output_dir.blank?
3869
3748
  output_dir = "output"
3870
3749
  end