Method: Cnvrg::Files#upload_multiple_files

Defined in:
lib/cnvrg/files.rb

#upload_multiple_files(files_list, commit_sha1, progress: nil) ⇒ Object



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/cnvrg/files.rb', line 80

def upload_multiple_files(files_list, commit_sha1, progress: nil)
  #open files on the server.
  Cnvrg::Logger.log_info("Uploading project files")
  return if files_list.blank?
  if Cnvrg::Helpers.server_version < 1
    Cnvrg::Logger.log_info("Upload files to older server..")
    return self.upload_files_old(files_list, commit_sha1, progress: progress)
  end
  files_list = files_list.map{|x| [x,self.parse_file(x)]}.to_h
  resp = Cnvrg::API.request(@base_resource + "upload_files", 'POST', {files: files_list, commit: commit_sha1})
  unless Cnvrg::CLI.is_response_success(resp, false)
    raise SignalException.new("Cant upload files to the server.")
  end
  # resolve bucket
  res = resp['result']
  files = res['files']

  #upload files
  blob_ids = Parallel.map(files.keys, self.get_upload_options) do |file|
    begin
      Cnvrg::Helpers.try_until_success{self.upload_single_file(files[file].merge(files_list[file]))}
    rescue => e
      Cnvrg::CLI.log_message("Failed to upload #{file}: #{e.message}", 'red')
      Cnvrg::Logger.log_error(e)
      Cnvrg::Logger.log_method(bind: binding)
      raise e
    end
    progress.progress += 1 if progress.present?
    files[file]["bv_id"]
  end

  #save files on the server.
  resp = Cnvrg::API.request(@base_resource + "upload_files_save", 'POST', {blob_ids: blob_ids, commit: commit_sha1})
  unless Cnvrg::CLI.is_response_success(resp, false)
    raise SignalException.new("Cant save uploaded files to the server.")
  end
end