cnvrg 0.3.6 → 0.3.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 +4 -4
- data/cnvrg.gemspec +1 -0
- data/lib/cnvrg/api.rb +26 -8
- data/lib/cnvrg/auth.rb +5 -0
- data/lib/cnvrg/cli.rb +964 -477
- data/lib/cnvrg/data.rb +42 -8
- data/lib/cnvrg/datafiles.rb +168 -145
- data/lib/cnvrg/dataset.rb +124 -17
- data/lib/cnvrg/experiment.rb +7 -4
- data/lib/cnvrg/files.rb +52 -67
- data/lib/cnvrg/helpers.rb +20 -0
- data/lib/cnvrg/project.rb +0 -6
- data/lib/cnvrg/version.rb +1 -1
- metadata +16 -2
data/lib/cnvrg/data.rb
CHANGED
@@ -22,35 +22,69 @@ module Cnvrg
|
|
22
22
|
cli.init_data(public)
|
23
23
|
end
|
24
24
|
desc "data upload", "upload data folder"
|
25
|
-
method_option :ignore, :type => :array, :aliases => ["-i", "--i"], :desc => "ignore following files"
|
26
25
|
method_option :verbose, :type => :boolean, :aliases => ["-v"], :default => false
|
27
|
-
method_option :
|
28
|
-
method_option :
|
26
|
+
method_option :new_branch, :type => :boolean, :aliases => ["-nb"], :desc => "create new branch of commits"
|
27
|
+
method_option :force, :type => :boolean, :aliases => ["-f","--force"], :default => false
|
28
|
+
method_option :sync, :type => :boolean, :aliases => ["-s","--sync"], :default => false
|
29
29
|
|
30
30
|
def upload
|
31
31
|
cli = Cnvrg::CLI.new()
|
32
|
-
ignore = options["ignore"]
|
33
32
|
verbose = options["verbose"]
|
34
33
|
sync = options["sync"]
|
35
|
-
|
36
|
-
|
34
|
+
force = options["force"]
|
35
|
+
new_branch = options["new_branch"]
|
36
|
+
cli.upload_data_new(new_branch, verbose,sync,force)
|
37
|
+
end
|
38
|
+
desc 'sync', 'sync_data_new'
|
39
|
+
method_option :new_branch, :type => :boolean, :aliases => ["-nb"], :desc => "create new branch of commits"
|
40
|
+
method_option :force, :type => :boolean, :aliases => ["-f","--force"], :default => false
|
41
|
+
method_option :verbose, :type => :boolean, :aliases => ["-v"], :default => false
|
42
|
+
method_option :commit, :type => :string, :aliases => ["-c"], :desc => "download specified commit", :default => nil
|
43
|
+
method_option :all_files, :type => :boolean, :aliases => ["--all"], :desc => "download specified commit", :default => true
|
44
|
+
|
45
|
+
def sync_data_new()
|
46
|
+
cli = Cnvrg::CLI.new()
|
47
|
+
force = options["force"]
|
48
|
+
new_branch = options["new_branch"]
|
49
|
+
verbose = options["verbose"]
|
50
|
+
commit = options["commit"]
|
51
|
+
all_files = options["all_files"]
|
52
|
+
|
53
|
+
cli.sync_data_new(new_branch, force, verbose,commit,all_files)
|
37
54
|
end
|
38
55
|
desc 'data download', 'pull data'
|
56
|
+
method_option :new_branch, :type => :boolean, :aliases => ["-nb"], :desc => "create new branch of commits", :default => false
|
39
57
|
method_option :verbose, :type => :boolean, :aliases => ["-v"], :default => false
|
40
58
|
method_option :sync, :type => :boolean, :aliases => ["-s"], :default => false
|
59
|
+
method_option :commit, :type => :string, :aliases => ["-c"], :desc => "download specified commit", :default => nil
|
60
|
+
method_option :all_files, :type => :boolean, :aliases => ["--all"], :desc => "download specified commit", :default => false
|
41
61
|
|
42
62
|
def download()
|
43
63
|
cli = Cnvrg::CLI.new()
|
44
64
|
verbose = options["verbose"]
|
45
65
|
sync = options["sync"]
|
66
|
+
new_branch = options["new_branch"]
|
67
|
+
commit = options["commit"]
|
68
|
+
all_files = options["all_files"]
|
46
69
|
|
47
|
-
cli.
|
70
|
+
cli.download_data_new(verbose,sync,new_branch, commit,all_files)
|
48
71
|
|
49
72
|
end
|
50
73
|
desc 'data clone', 'clone datset'
|
74
|
+
method_option :only_tree, :type => :boolean, :aliases => ["-t", "--tree"], :default => false
|
75
|
+
method_option :commit, :type => :string, :aliases => ["-c", "--commit"], :default => nil
|
51
76
|
def clone(dataset_url)
|
52
77
|
cli = Cnvrg::CLI.new()
|
53
|
-
|
78
|
+
only_tree =options[:only_tree]
|
79
|
+
commit =options[:commit]
|
80
|
+
|
81
|
+
cli.clone_data(dataset_url, only_tree=only_tree,commit=commit)
|
82
|
+
|
83
|
+
end
|
84
|
+
desc 'data delete', 'delete datset'
|
85
|
+
def delete(dataset_slug)
|
86
|
+
cli = Cnvrg::CLI.new()
|
87
|
+
cli.delete_data(dataset_slug)
|
54
88
|
|
55
89
|
end
|
56
90
|
desc 'data list', 'list of datasets'
|
data/lib/cnvrg/datafiles.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'mimemagic'
|
2
2
|
require 'aws-sdk'
|
3
3
|
require 'URLcrypt'
|
4
|
+
require "down"
|
5
|
+
|
4
6
|
module Cnvrg
|
5
7
|
class Datafiles
|
6
8
|
|
@@ -16,7 +18,6 @@ module Cnvrg
|
|
16
18
|
end
|
17
19
|
|
18
20
|
def upload_file(absolute_path, relative_path, commit_sha1)
|
19
|
-
|
20
21
|
file_name = File.basename relative_path
|
21
22
|
file_size = File.size(absolute_path).to_f
|
22
23
|
mime_type = MimeMagic.by_path(absolute_path)
|
@@ -26,22 +27,11 @@ module Cnvrg
|
|
26
27
|
commit_sha1: commit_sha1, file_name: file_name,
|
27
28
|
file_size: file_size, file_content_type: content_type, sha1: sha1})
|
28
29
|
if Cnvrg::CLI.is_response_success(upload_resp, false)
|
29
|
-
|
30
|
-
if file_size.to_f>= Cnvrg::Files::LARGE_FILE.to_f
|
31
|
-
s3_res = upload_large_files_s3(upload_resp, absolute_path)
|
32
|
-
else
|
33
|
-
s3_res = upload_small_files_s3(path, absolute_path, content_type)
|
34
|
-
end
|
35
|
-
if s3_res
|
36
|
-
Cnvrg::API.request(@base_resource + "update_s3", 'POST', {path: path, commit_id: upload_resp["result"]["commit_id"],
|
37
|
-
blob_id: upload_resp["result"]["id"]})
|
38
|
-
return true
|
39
|
-
end
|
40
|
-
end
|
41
|
-
return false
|
42
|
-
|
43
|
-
end
|
30
|
+
s3_res = upload_large_files_s3(upload_resp, absolute_path)
|
44
31
|
|
32
|
+
return s3_res
|
33
|
+
end
|
34
|
+
end
|
45
35
|
def upload_tar_file(absolute_path, relative_path, commit_sha1)
|
46
36
|
begin
|
47
37
|
file_name = File.basename relative_path
|
@@ -82,9 +72,9 @@ module Cnvrg
|
|
82
72
|
puts e.message
|
83
73
|
return false
|
84
74
|
end
|
85
|
-
|
86
75
|
end
|
87
76
|
|
77
|
+
|
88
78
|
def upload_log_file(absolute_path, relative_path, log_date)
|
89
79
|
file_name = File.basename relative_path
|
90
80
|
file_size = File.size(absolute_path).to_f
|
@@ -251,82 +241,59 @@ module Cnvrg
|
|
251
241
|
def upload_large_files_s3(upload_resp, file_path)
|
252
242
|
begin
|
253
243
|
sts_path = upload_resp["result"]["path_sts"]
|
254
|
-
# s4cmd_path = upload_resp["result"]["path_s4cmd"]
|
255
|
-
|
256
|
-
uri = URI.parse(sts_path)
|
257
|
-
http_object = Net::HTTP.new(uri.host, uri.port)
|
258
|
-
http_object.use_ssl = true if uri.scheme == 'https'
|
259
|
-
request = Net::HTTP::Get.new(sts_path)
|
260
244
|
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
body =
|
245
|
+
if !Helpers.is_verify_ssl
|
246
|
+
body = open(sts_path, {ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE}).read
|
247
|
+
else
|
248
|
+
body = open(sts_path).read
|
265
249
|
end
|
266
250
|
home_dir = File.expand_path('~')
|
267
|
-
log_file = "#{home_dir}/.cnvrg/tmp/upload_#{File.basename(file_path)}.log"
|
268
|
-
|
269
251
|
|
270
252
|
split = body.split("\n")
|
271
253
|
key = split[0]
|
272
254
|
iv = split[1]
|
255
|
+
is_s3 = upload_resp["result"]["is_s3"]
|
256
|
+
access = Cnvrg::Helpers.decrypt(key, iv, upload_resp["result"]["sts_a"])
|
273
257
|
|
274
|
-
|
275
|
-
|
276
|
-
secret = Cnvrg::Helpers.decrypt(key,iv, upload_resp["result"]["new_s"])
|
258
|
+
secret = Cnvrg::Helpers.decrypt(key,iv, upload_resp["result"]["sts_s"])
|
277
259
|
|
260
|
+
session = Cnvrg::Helpers.decrypt(key,iv, upload_resp["result"]["sts_st"])
|
278
261
|
region = Cnvrg::Helpers.decrypt(key,iv, upload_resp["result"]["region"])
|
279
262
|
|
280
263
|
bucket = Cnvrg::Helpers.decrypt(key,iv, upload_resp["result"]["bucket"])
|
281
264
|
|
265
|
+
if is_s3 or is_s3.nil?
|
266
|
+
|
267
|
+
use_accelerate_endpoint =true
|
268
|
+
client = Aws::S3::Client.new(
|
269
|
+
:access_key_id =>access,
|
270
|
+
:secret_access_key => secret,
|
271
|
+
:session_token => session,
|
272
|
+
:region => region,
|
273
|
+
:http_open_timeout => 60, :retry_limit => 20)
|
274
|
+
else
|
275
|
+
endpoint = Cnvrg::Helpers.decrypt(key,iv, upload_resp["result"]["endpoint"])
|
276
|
+
use_accelerate_endpoint = false
|
277
|
+
client = Aws::S3::Client.new(
|
278
|
+
:access_key_id =>access,
|
279
|
+
:secret_access_key => secret,
|
280
|
+
:region => region,
|
281
|
+
:endpoint=> endpoint,:force_path_style=> true,:ssl_verify_peer=>false,
|
282
|
+
:http_open_timeout => 60, :retry_limit => 20)
|
283
|
+
end
|
284
|
+
|
285
|
+
|
286
|
+
|
287
|
+
|
288
|
+
|
289
|
+
|
282
290
|
|
283
|
-
client = Aws::S3::Client.new(:access_key_id => access,
|
284
|
-
:secret_access_key =>secret,
|
285
|
-
:region => region,
|
286
|
-
:logger => Logger.new(log_file),
|
287
|
-
:http_open_timeout => 60, :retry_limit => 20,
|
288
|
-
:http_wire_trace => true)
|
289
291
|
s3 = Aws::S3::Resource.new(client: client)
|
290
292
|
|
291
293
|
resp = s3.bucket(bucket).
|
292
294
|
object(upload_resp["result"]["path"]+"/"+File.basename(file_path)).
|
293
|
-
upload_file(file_path, {:use_accelerate_endpoint =>
|
294
|
-
|
295
|
-
#
|
296
|
-
# s4cmd_uri = URI.parse(s4cmd_path)
|
297
|
-
# s4cmd_http_object = Net::HTTP.new(s4cmd_uri.host, s4cmd_uri.port)
|
298
|
-
# s4cmd_http_object.use_ssl = true if s4cmd_uri.scheme == 'https'
|
299
|
-
# s4cmd_request = Net::HTTP::Get.new(s4cmd_path)
|
300
|
-
#
|
301
|
-
# s4cmd_body = ""
|
302
|
-
# s4cmd_http_object.start do |http|
|
303
|
-
# response = http.request s4cmd_request
|
304
|
-
# s4cmd_body = response.read_body
|
305
|
-
# end
|
306
|
-
# s4cmd_new_body = s4cmd_body.gsub(" self.client = self.boto3.client('s3',
|
307
|
-
# aws_access_key_id=aws_access_key_id,
|
308
|
-
# aws_secret_access_key=aws_secret_access_key)", " self.client = self.boto3.client('s3',
|
309
|
-
# aws_access_key_id='#{ URLcrypt.decrypt(upload_resp["result"]["new_a"])}',
|
310
|
-
# aws_secret_access_key='#{URLcrypt.decrypt(upload_resp["result"]["new_s"])}')")
|
311
|
-
#
|
312
|
-
#
|
313
|
-
# tmp = Tempfile.new('s4cmd.py')
|
314
|
-
# tmp << s4cmd_new_body
|
315
|
-
# tmp.flush
|
316
|
-
# tmp.close
|
317
|
-
# #
|
318
|
-
# is_success = false
|
319
|
-
# count = 0
|
320
|
-
# while !is_success and count <3
|
321
|
-
# resp = `python #{tmp.path} --num-threads=8 --max-singlepart-upload-size=#{MULTIPART_SPLIT} put -f #{file_path} s3://#{URLcrypt.decrypt(upload_resp["result"]["bucket"])}/#{upload_resp["result"]["path"]+"/"+File.basename(file_path)} > /dev/null 2>&1 `
|
322
|
-
# is_success =$?.success?
|
323
|
-
# count +=1
|
324
|
-
#
|
325
|
-
# end
|
326
|
-
# resp= is_success
|
327
|
-
if resp == true
|
328
|
-
FileUtils.rm_rf(log_file)
|
329
|
-
end
|
295
|
+
upload_file(file_path, {:use_accelerate_endpoint => use_accelerate_endpoint,:server_side_encryption => 'AES256'})
|
296
|
+
|
330
297
|
|
331
298
|
return resp
|
332
299
|
|
@@ -380,60 +347,82 @@ module Cnvrg
|
|
380
347
|
|
381
348
|
def create_dir(absolute_path, relative_path, commit_sha1)
|
382
349
|
response = Cnvrg::API.request(@base_resource + "create_dir", 'POST', {absolute_path: absolute_path, relative_path: relative_path, commit_sha1: commit_sha1})
|
383
|
-
puts response
|
384
350
|
return Cnvrg::CLI.is_response_success(response, false)
|
385
351
|
end
|
386
352
|
|
387
|
-
|
353
|
+
|
354
|
+
def download_file_s3(absolute_path, relative_path, project_home, conflict=false, commit_sha1=nil, as_link=false)
|
388
355
|
begin
|
389
|
-
res = Cnvrg::API.request(@base_resource + "download_file", 'POST', {absolute_path: absolute_path, relative_path: relative_path, commit_sha1: commit_sha1})
|
356
|
+
res = Cnvrg::API.request(@base_resource + "download_file", 'POST', {absolute_path: absolute_path, relative_path: relative_path, commit_sha1: commit_sha1 ,new_version:true, as_link:as_link})
|
390
357
|
Cnvrg::CLI.is_response_success(res, false)
|
391
|
-
|
392
|
-
|
393
|
-
filename = download_resp["result"]["filename"]
|
394
|
-
|
395
|
-
absolute_path += ".conflict" if conflict
|
396
|
-
sts_path = download_resp["result"]["path_sts"]
|
397
|
-
uri = URI.parse(sts_path)
|
398
|
-
http_object = Net::HTTP.new(uri.host, uri.port)
|
399
|
-
http_object.use_ssl = true if uri.scheme == 'https'
|
400
|
-
request = Net::HTTP::Get.new(sts_path)
|
401
|
-
|
402
|
-
body = ""
|
403
|
-
http_object.start do |http|
|
404
|
-
response = http.request request
|
405
|
-
body = response.read_body
|
406
|
-
end
|
407
|
-
split = body.split("\n")
|
408
|
-
key = split[0]
|
409
|
-
iv = split[1]
|
410
|
-
|
411
|
-
access = Cnvrg::Helpers.decrypt(key, iv, download_resp["result"]["sts_a"])
|
358
|
+
if res["result"]
|
359
|
+
file_url = res["result"]["file_url"]
|
412
360
|
|
413
|
-
|
361
|
+
if as_link
|
362
|
+
return res["result"]
|
363
|
+
end
|
364
|
+
# begin
|
365
|
+
# if !Helpers.is_verify_ssl
|
366
|
+
# tempfile = Down.download(file_url,open_timeout: 60,ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE )
|
367
|
+
#
|
368
|
+
# else
|
369
|
+
# tempfile = Down.download(file_url,open_timeout: 60)
|
370
|
+
#
|
371
|
+
# end
|
372
|
+
#
|
373
|
+
# FileUtils.move(tempfile.path, project_home+"/"+ absolute_path)
|
374
|
+
# return true
|
375
|
+
# rescue
|
376
|
+
#
|
377
|
+
# end
|
378
|
+
download_resp = res
|
379
|
+
filename = download_resp["result"]["filename"]
|
380
|
+
|
381
|
+
absolute_path += ".conflict" if conflict
|
382
|
+
sts_path = download_resp["result"]["path_sts"]
|
383
|
+
if !Helpers.is_verify_ssl
|
384
|
+
body = open(sts_path, {ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE}).read
|
385
|
+
else
|
386
|
+
body = open(sts_path).read
|
387
|
+
end
|
388
|
+
split = body.split("\n")
|
389
|
+
key = split[0]
|
390
|
+
iv = split[1]
|
414
391
|
|
415
|
-
|
416
|
-
region = Cnvrg::Helpers.decrypt(key,iv, download_resp["result"]["region"])
|
392
|
+
access = Cnvrg::Helpers.decrypt(key, iv, download_resp["result"]["sts_a"])
|
417
393
|
|
418
|
-
|
419
|
-
key = Cnvrg::Helpers.decrypt(key,iv, download_resp["result"]["key"])
|
394
|
+
secret = Cnvrg::Helpers.decrypt(key,iv, download_resp["result"]["sts_s"])
|
420
395
|
|
396
|
+
session = Cnvrg::Helpers.decrypt(key,iv, download_resp["result"]["sts_st"])
|
397
|
+
region = Cnvrg::Helpers.decrypt(key,iv, download_resp["result"]["region"])
|
421
398
|
|
399
|
+
bucket = Cnvrg::Helpers.decrypt(key,iv, download_resp["result"]["bucket"])
|
400
|
+
file_key = Cnvrg::Helpers.decrypt(key,iv, download_resp["result"]["key"])
|
422
401
|
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
402
|
+
is_s3 = download_resp["result"]["is_s3"]
|
403
|
+
if is_s3 or is_s3.nil?
|
404
|
+
client = Aws::S3::Client.new(
|
405
|
+
:access_key_id =>access,
|
406
|
+
:secret_access_key => secret,
|
407
|
+
:session_token => session,
|
408
|
+
:region => region,
|
409
|
+
:http_open_timeout => 60, :retry_limit => 20)
|
410
|
+
else
|
411
|
+
endpoint = Cnvrg::Helpers.decrypt(key,iv, download_resp["result"]["endpoint_url"])
|
412
|
+
client = Aws::S3::Client.new(
|
413
|
+
:access_key_id =>access,
|
414
|
+
:secret_access_key => secret,
|
415
|
+
:region => region,
|
416
|
+
:endpoint=> endpoint,:force_path_style=> true,:ssl_verify_peer=>false,
|
417
|
+
:http_open_timeout => 60, :retry_limit => 20)
|
418
|
+
end
|
430
419
|
|
431
|
-
|
432
|
-
|
433
|
-
|
420
|
+
File.open(project_home+"/"+absolute_path, 'w+') do |file|
|
421
|
+
resp = client.get_object({bucket:bucket,
|
422
|
+
key:file_key}, target: file)
|
423
|
+
end
|
424
|
+
return true
|
434
425
|
end
|
435
|
-
return true
|
436
|
-
end
|
437
426
|
|
438
427
|
rescue => e
|
439
428
|
return false
|
@@ -450,15 +439,10 @@ module Cnvrg
|
|
450
439
|
filename = download_resp["result"]["filename"]
|
451
440
|
|
452
441
|
sts_path = download_resp["result"]["path_sts"]
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
body = ""
|
459
|
-
http_object.start do |http|
|
460
|
-
response = http.request request
|
461
|
-
body = response.read_body
|
442
|
+
if !Helpers.is_verify_ssl
|
443
|
+
body = open(sts_path, {ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE}).read
|
444
|
+
else
|
445
|
+
body = open(sts_path).read
|
462
446
|
end
|
463
447
|
split = body.split("\n")
|
464
448
|
key = split[0]
|
@@ -473,21 +457,30 @@ module Cnvrg
|
|
473
457
|
region = Cnvrg::Helpers.decrypt(key,iv, download_resp["result"]["region"])
|
474
458
|
|
475
459
|
bucket = Cnvrg::Helpers.decrypt(key,iv, download_resp["result"]["bucket"])
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
460
|
+
file_key = Cnvrg::Helpers.decrypt(key,iv, download_resp["result"]["key"])
|
461
|
+
|
462
|
+
is_s3 = download_resp["result"]["is_s3"]
|
463
|
+
if is_s3 or is_s3.nil?
|
464
|
+
client = Aws::S3::Client.new(
|
465
|
+
:access_key_id =>access,
|
466
|
+
:secret_access_key => secret,
|
467
|
+
:session_token => session,
|
468
|
+
:region => region,
|
469
|
+
:http_open_timeout => 60, :retry_limit => 20)
|
470
|
+
else
|
471
|
+
endpoint = Cnvrg::Helpers.decrypt(key,iv, download_resp["result"]["endpoint_url"])
|
472
|
+
client = Aws::S3::Client.new(
|
473
|
+
:access_key_id =>access,
|
474
|
+
:secret_access_key => secret,
|
475
|
+
:region => region,
|
476
|
+
:endpoint=> endpoint,:force_path_style=> true,:ssl_verify_peer=>false,
|
477
|
+
:http_open_timeout => 60, :retry_limit => 20)
|
478
|
+
end
|
486
479
|
|
487
480
|
|
488
481
|
File.open(dataset_home+"/"+filename, 'w+') do |file|
|
489
482
|
resp = client.get_object({bucket: bucket,
|
490
|
-
key:
|
483
|
+
key: file_key }, target: file)
|
491
484
|
end
|
492
485
|
return filename
|
493
486
|
end
|
@@ -518,6 +511,17 @@ module Cnvrg
|
|
518
511
|
end
|
519
512
|
return true
|
520
513
|
end
|
514
|
+
def delete_commit_files_local(deleted)
|
515
|
+
begin
|
516
|
+
FileUtils.rm_rf(deleted) unless (deleted.nil? or deleted.empty?)
|
517
|
+
return true
|
518
|
+
rescue => e
|
519
|
+
return false
|
520
|
+
end
|
521
|
+
|
522
|
+
return true
|
523
|
+
|
524
|
+
end
|
521
525
|
|
522
526
|
def download_dir(dataset_home, absolute_path)
|
523
527
|
FileUtils.mkdir_p("#{dataset_home}/#{absolute_path}")
|
@@ -551,18 +555,37 @@ module Cnvrg
|
|
551
555
|
return true
|
552
556
|
|
553
557
|
end
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
response = Cnvrg::API.request("#{base_resource}/commit/start", 'POST', {dataset_slug: @dataset_slug, new_branch: false,
|
558
|
-
username: @owner})
|
559
|
-
Cnvrg::CLI.is_response_success(response, false)
|
558
|
+
def delete_commit(commit_sha1)
|
559
|
+
response = Cnvrg::API.request("#{base_resource}/commit/#{commit_sha1}", 'DELETE')
|
560
|
+
Cnvrg::CLI.is_response_success(response, true)
|
560
561
|
return response
|
561
562
|
end
|
562
|
-
|
563
|
-
|
564
|
-
|
563
|
+
def get_commit(commit_sha1)
|
564
|
+
response = Cnvrg::API.request("#{base_resource}/commit/#{commit_sha1}", 'GET')
|
565
|
+
Cnvrg::CLI.is_response_success(response, true)
|
566
|
+
return response
|
567
|
+
end
|
568
|
+
def start_commit(new_branch,force=false,delete_commit=nil)
|
569
|
+
begin
|
570
|
+
response = Cnvrg::API.request("#{base_resource}/commit/start", 'POST', {dataset_slug: @dataset_slug, new_branch: new_branch,force:force,
|
571
|
+
username: @owner,delete_commit:delete_commit})
|
572
|
+
Cnvrg::CLI.is_response_success(response, true)
|
565
573
|
return response
|
574
|
+
rescue => e
|
575
|
+
return false
|
576
|
+
end
|
577
|
+
|
578
|
+
end
|
579
|
+
|
580
|
+
def end_commit(commit_sha1,force)
|
581
|
+
begin
|
582
|
+
response = Cnvrg::API.request("#{base_resource}/commit/end", 'POST', {commit_sha1: commit_sha1,force:force})
|
583
|
+
Cnvrg::CLI.is_response_success(response, true)
|
584
|
+
return response
|
585
|
+
rescue => e
|
586
|
+
return false
|
587
|
+
end
|
588
|
+
|
566
589
|
end
|
567
590
|
|
568
591
|
def end_commit_tar(commit_sha1, cur_idx)
|