cnvrg 0.3.9 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e7730f2e06b22172c2321f5a96469aa47b4d5896
4
- data.tar.gz: fbfb6ed5621d075252fe01e4844c16fa995fc263
3
+ metadata.gz: d1d1df0dbab52f8c30f1a3e149f04ce2736b7f1c
4
+ data.tar.gz: 6ee10285e341bffd5436c79bdd3d6036fc355b02
5
5
  SHA512:
6
- metadata.gz: b2be5b074fccb4a67ce8966fe88d42a2cb083538025a0ea5532d8bad267ac259e329b20486f0fb615f1e6a9352dcacf78edcee42ea69f84f795aaa2a2b156cc7
7
- data.tar.gz: 251fdf65e5f29230edea5b295d061fb8fc1d51fefdf537a27df7773d1c76dd613f63a55a9947a6923439e00a8c1d1f0ba10c4f35b89e6101f1196317cf21d4ba
6
+ metadata.gz: 2416fe3163e8160c1c5c8d9c93e77ccbd4ba388f9bc5ffceb4876c54fb509a5dac7acbb99b81c528717759aa2216d301aaf5eca1fca7a00989538a6428d8d22a
7
+ data.tar.gz: 100b34a24b210d0ad3de434c79108d02d8aa954b9102d9c33f137674c7906bd23d011929a16d4c46e6d6abadc2ef2b308cd9a390f2beee1f01003aa28f460c8d
@@ -45,6 +45,8 @@ Gem::Specification.new do |spec|
45
45
  spec.add_runtime_dependency 'ruby-progressbar'
46
46
  spec.add_runtime_dependency 'net-ssh'
47
47
  spec.add_runtime_dependency 'down'
48
+ spec.add_runtime_dependency 'faraday_middleware-request-retry'
49
+
48
50
 
49
51
 
50
52
 
@@ -3,6 +3,8 @@ require 'faraday'
3
3
  require 'json'
4
4
  require 'fileutils'
5
5
  require 'cnvrg/helpers'
6
+ require 'faraday_middleware-request-retry'
7
+ require 'logger'
6
8
 
7
9
  module Cnvrg
8
10
  class API
@@ -52,9 +54,24 @@ module Cnvrg
52
54
  end
53
55
  conn.headers['Auth-Token'] = @pass
54
56
  conn.headers['User-Agent'] = "#{Cnvrg::API::USER_AGENT}"
57
+ conn.options.timeout = 420
58
+ conn.options.open_timeout =420
55
59
  case method
56
- when 'GET'
60
+ when 'GET'
61
+ retries = 0
62
+ success = false
63
+ while !success and retries < 20
64
+ begin
57
65
  response = conn.get "#{resource}", data
66
+ success = true
67
+ rescue => e
68
+ sleep(5)
69
+ retries +=1
70
+ end
71
+ end
72
+ if !success
73
+ return false
74
+ end
58
75
  if response.to_hash[:status] == 404
59
76
  return false
60
77
  end
@@ -66,8 +83,21 @@ module Cnvrg
66
83
  when 'POST'
67
84
  conn.options.timeout = 420
68
85
  conn.options.open_timeout =420
69
- response = conn.post "#{resource}", data
70
-
86
+ retries = 0
87
+ success = false
88
+ while !success and retries < 20
89
+ begin
90
+ response = conn.post "#{resource}", data
91
+ success = true
92
+
93
+ rescue => e
94
+ sleep(5)
95
+ retries +=1
96
+ end
97
+ end
98
+ if !success
99
+ return false
100
+ end
71
101
  if response.to_hash[:status] == 404
72
102
  return false
73
103
  end
@@ -136,7 +166,7 @@ module Cnvrg
136
166
  else
137
167
  end
138
168
  rescue => e
139
- puts e
169
+ puts e
140
170
  return nil
141
171
  rescue SignalException
142
172
  return false
@@ -36,6 +36,8 @@ require 'pathname'
36
36
  require 'enumerator'
37
37
  require 'ruby-progressbar'
38
38
  require 'open3'
39
+
40
+
39
41
  class Thor
40
42
  module Base
41
43
  def initialize(args = [], local_options = {}, config = {})
@@ -1515,7 +1517,6 @@ module Cnvrg
1515
1517
  @project = Project.new(project_dir)
1516
1518
  result = @project.list_commits()
1517
1519
  list = result["result"]["list"]
1518
-
1519
1520
  print_table(list)
1520
1521
 
1521
1522
  end
@@ -1557,6 +1558,8 @@ module Cnvrg
1557
1558
  project_home = Dir.pwd
1558
1559
  else
1559
1560
  if (Dir.exists? project_name)
1561
+ # project_name = "#{project_name}_#{rand(1 .. 5000000000)}"
1562
+ # puts project_name
1560
1563
  log_message("Error: Conflict with dir #{project_name}", Thor::Shell::Color::RED)
1561
1564
  if no? "Sync to repository anyway? (current data might lost)", Thor::Shell::Color::YELLOW
1562
1565
  log_message("Remove dir in order to clone #{project_name}", Thor::Shell::Color::RED)
@@ -1620,7 +1623,6 @@ module Cnvrg
1620
1623
  :autofinish => true
1621
1624
  },
1622
1625
  in_processes: ParallelProcesses,
1623
- in_thread: ParallelThreads
1624
1626
  }
1625
1627
  begin
1626
1628
  is_success = true
@@ -2152,7 +2154,7 @@ module Cnvrg
2152
2154
  method_option :deploy, :type => :boolean, :aliases => ["-d", "--deploy"], :default => false
2153
2155
  method_option :return_id, :type => :boolean, :aliases => ["-r", "--return_id"], :default => false
2154
2156
 
2155
- def upload(link = false, sync = false, direct = false, ignore_list = "")
2157
+ def upload(link = false, sync = false, direct = false, ignore_list = "", in_exp = false)
2156
2158
 
2157
2159
  begin
2158
2160
  verify_logged_in(true)
@@ -2184,20 +2186,12 @@ module Cnvrg
2184
2186
  end
2185
2187
  new_branch = options["new_branch"] || false
2186
2188
 
2187
- if options["sync"] or sync
2188
- new_branch_exp = @project.get_new_branch
2189
- if new_branch_exp
2190
- new_branch = new_branch_exp
2191
- end
2192
- end
2193
-
2194
- result = @project.compare_idx(new_branch, force: force, deploy: options["deploy"])
2189
+ result = @project.compare_idx(new_branch, force: force, deploy: options["deploy"],in_exp:in_exp)
2195
2190
  commit = result["result"]["commit"]
2196
2191
  if !link
2197
- if ((commit != @project.last_local_commit and !@project.last_local_commit.nil? and !result["result"]["tree"]["updated_on_server"].empty?) and !force)
2198
-
2192
+ 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)
2199
2193
  log_message("Remote server has an updated version, please run `cnvrg download` first, or alternatively: `cnvrg sync`", Thor::Shell::Color::BLUE)
2200
- exit(1)
2194
+ return false
2201
2195
  end
2202
2196
 
2203
2197
  log_message("Comparing local changes with remote version:", Thor::Shell::Color::BLUE, (options["verbose"]))
@@ -2236,7 +2230,12 @@ module Cnvrg
2236
2230
 
2237
2231
  end
2238
2232
  # Start commit
2239
- commit_sha1 = @files.start_commit(new_branch, force: force)["result"]["commit_sha1"]
2233
+ if in_exp
2234
+ exp_start_commit = @project.last_local_commit
2235
+ else
2236
+ exp_start_commit = nil
2237
+ end
2238
+ commit_sha1 = @files.start_commit(new_branch, force: force, exp_start_commit:exp_start_commit)["result"]["commit_sha1"]
2240
2239
 
2241
2240
  # upload / update
2242
2241
  begin
@@ -2296,7 +2295,7 @@ module Cnvrg
2296
2295
  log_message("Couldn't upload, Rolling Back all changes.", Thor::Shell::Color::RED)
2297
2296
  @files.rollback_commit(commit_sha1)
2298
2297
 
2299
- exit(1)
2298
+ return false
2300
2299
  end
2301
2300
  end
2302
2301
 
@@ -2336,7 +2335,7 @@ module Cnvrg
2336
2335
  log_message("Couldn't upload, Rolling Back all changes.", Thor::Shell::Color::RED)
2337
2336
  @files.rollback_commit(commit_sha1)
2338
2337
 
2339
- exit(1)
2338
+ return false
2340
2339
 
2341
2340
  end
2342
2341
 
@@ -2351,12 +2350,12 @@ module Cnvrg
2351
2350
  rescue SignalException
2352
2351
  @files.rollback_commit(commit_sha1)
2353
2352
  say "User aborted, Rolling Back all changes.", Thor::Shell::Color::RED
2354
- exit(0)
2353
+ return false
2355
2354
  rescue => e
2356
2355
  @files.rollback_commit(commit_sha1)
2357
2356
  log_message("Exception while trying to upload, Rolling back", Thor::Shell::Color::RED)
2358
2357
  log_error(e)
2359
- exit(0)
2358
+ return false
2360
2359
  end
2361
2360
  if !result["deleted"].nil? and !result["deleted"].empty?
2362
2361
  update_count += result["deleted"].size
@@ -2374,7 +2373,7 @@ module Cnvrg
2374
2373
  @files.rollback_commit(commit_sha1)
2375
2374
  log_message("Couldn't commit updates, Rolling Back all changes.", Thor::Shell::Color::RED)
2376
2375
  log_error(e)
2377
- exit(1)
2376
+ return false
2378
2377
 
2379
2378
  end
2380
2379
  image = is_project_with_docker(Dir.pwd)
@@ -2405,13 +2404,15 @@ module Cnvrg
2405
2404
  'commit_sha1' => res["result"]["commit_id"]
2406
2405
  }
2407
2406
  puts JSON[print_res]
2408
- exit(0)
2407
+ return JSON[print_res]
2409
2408
  end
2410
2409
  if (options["sync"] or sync) and direct
2411
2410
  log_message("#{check} Syncing project completed successfully", Thor::Shell::Color::GREEN)
2411
+ return true
2412
2412
 
2413
2413
  else
2414
2414
  log_message("#{check} Changes were updated successfully", Thor::Shell::Color::GREEN)
2415
+ return true
2415
2416
 
2416
2417
  end
2417
2418
 
@@ -2429,6 +2430,7 @@ module Cnvrg
2429
2430
  log_message("Error: couldn't commit changes, Rolling Back all changes.", Thor::Shell::Color::RED)
2430
2431
 
2431
2432
  end
2433
+ return false
2432
2434
  end
2433
2435
  else
2434
2436
  @files.rollback_commit(commit_sha1)
@@ -2442,7 +2444,7 @@ module Cnvrg
2442
2444
  else
2443
2445
  log_message("Error: uploaded only: #{update_count} / #{update_total}, \n Rolling back", Thor::Shell::Color::RED)
2444
2446
  end
2445
-
2447
+ return false
2446
2448
 
2447
2449
  end
2448
2450
  rescue => e
@@ -2451,14 +2453,14 @@ module Cnvrg
2451
2453
  log_error(e)
2452
2454
  @files.rollback_commit(commit_sha1) unless commit_sha1.nil?
2453
2455
  puts e.message
2456
+ return false
2454
2457
 
2455
- exit(1)
2456
2458
  rescue SignalException
2457
2459
 
2458
2460
  say "\nAborting", Thor::Shell::Color::BLUE
2459
2461
  say "\nRolling back all changes", Thor::Shell::Color::BLUE
2460
2462
  @files.rollback_commit(commit_sha1) unless commit_sha1.nil?
2461
- exit(1)
2463
+ return false
2462
2464
  end
2463
2465
 
2464
2466
  end
@@ -2700,7 +2702,7 @@ module Cnvrg
2700
2702
  method_option :sync, :type => :boolean, :aliases => ["-s"], :default => false
2701
2703
  method_option :ignore, :type => :string, :aliases => ["-i"], :desc => "ignore following files", :default => ""
2702
2704
 
2703
- def download(sync = false, ignore_list = "")
2705
+ def download(sync = false, ignore_list = "", in_exp=false)
2704
2706
  begin
2705
2707
  verify_logged_in(true)
2706
2708
  log_start(__method__, args, options)
@@ -2723,12 +2725,14 @@ module Cnvrg
2723
2725
  log_message("Couldn't append new ignore files to .cnvrgignore", Thor::Shell::Color::YELLOW)
2724
2726
  end
2725
2727
  new_branch = options["new_branch"] || false
2726
- res = @project.compare_idx(new_branch)["result"]
2727
-
2728
+ res = @project.compare_idx(new_branch, commit: nil, in_exp: in_exp)["result"]
2728
2729
  result = res["tree"]
2729
2730
 
2730
2731
  commit = res["commit"]
2731
2732
  if result["updated_on_server"].empty? and result["conflicts"].empty? and result["deleted"].empty?
2733
+ if !@project.last_local_commit.eql? commit
2734
+ @project.update_idx_with_commit!(commit)
2735
+ end
2732
2736
  log_message("Project is up to date", Thor::Shell::Color::GREEN, ((options["sync"] or sync) ? false : true))
2733
2737
  return true
2734
2738
  end
@@ -3079,15 +3083,17 @@ module Cnvrg
3079
3083
  method_option :message, :type => :string, :aliases => ["-m", "--message"], :default => ""
3080
3084
  method_option :return_id, :type => :boolean, :aliases => ["-r", "--return_id"], :default => false
3081
3085
  method_option :deploy, :type => :boolean, :aliases => ["-d", "--deploy"], :default => false
3086
+ method_option :in_exp, :type => :boolean, :aliases => ["-e", "--in_exp"], :default => false
3087
+
3082
3088
  def sync(direct = true)
3083
3089
  verify_logged_in(true) if direct
3084
3090
  log_start(__method__, args, options)
3085
3091
  log_message('Checking for new updates from remote version', Thor::Shell::Color::BLUE, options["verbose"])
3086
3092
  log_message('Syncing project', Thor::Shell::Color::BLUE, !options["verbose"])
3087
3093
  if !options[:force]
3088
- invoke :download, [], :new_branch => options["new_branch"], :verbose => options["verbose"], :sync => true
3094
+ invoke :download, [true, "", options["in_exp"] ], :new_branch => options["new_branch"], :verbose => options["verbose"], :sync => true
3089
3095
  end
3090
- invoke :upload, [link = false, sync = true, direct = direct], :new_branch => options["new_branch"], :verbose => options["verbose"], :sync => true,
3096
+ invoke :upload, [false, true, direct, "",options["in_exp"] ], :new_branch => options["new_branch"], :verbose => options["verbose"], :sync => true,
3091
3097
  :ignore => options[:ignore], :force => options[:force], :message => options[:message], :deploy => options["deploy"], :return_id => options["return_id"]
3092
3098
 
3093
3099
 
@@ -3121,7 +3127,6 @@ module Cnvrg
3121
3127
  method_option :max_time, :type => :string, :aliases => [ "--max_time"], :default => nil
3122
3128
  method_option :dataset_only_tree, :type => :boolean, :aliases => [ "--dataset_only_tree"], :default => false
3123
3129
 
3124
-
3125
3130
  def run(*cmd)
3126
3131
  verify_logged_in(true)
3127
3132
  log_start(__method__, args, options)
@@ -3185,16 +3190,6 @@ module Cnvrg
3185
3190
  return
3186
3191
  end
3187
3192
 
3188
- # if local
3189
- #
3190
- # else
3191
-
3192
-
3193
- # invoke :exec_remote, [cmd_to_exec.split(" ")], :sync_before => sync_before, :sync_after => sync_after, :title => title, :machine_type => instance_type,
3194
- # :schedule => schedule, :log => log, :email_notification => email_notification, :upload_output => upload_output, :commit => commit,
3195
- # :image => image, :grid => grid, :data => data, :data_commit => data_commit, :ignore => ignore
3196
- # return
3197
- # end
3198
3193
  end
3199
3194
 
3200
3195
  desc '', '', :hide => true
@@ -3224,7 +3219,6 @@ module Cnvrg
3224
3219
  working_dir = is_cnvrg_dir
3225
3220
  script_path = get_cmd_path_in_dir(working_dir, Dir.pwd)
3226
3221
 
3227
-
3228
3222
  sync_before = options["sync_before"]
3229
3223
  sync_after = options["sync_after"]
3230
3224
  print_log = options["log"]
@@ -3434,6 +3428,8 @@ module Cnvrg
3434
3428
  exp_success = false
3435
3429
  log_message("The process exited!", Thor::Shell::Color::RED)
3436
3430
  rescue => e
3431
+ sleep(20) # end cycle
3432
+
3437
3433
  res = @exp.end(log, 1, start_commit, cpu_average, memory_average)
3438
3434
 
3439
3435
  log_message("Error occurred,aborting", Thor::Shell::Color::RED)
@@ -3448,38 +3444,34 @@ module Cnvrg
3448
3444
  if $?.exitstatus != 0
3449
3445
  exp_success = false
3450
3446
  end
3451
- if !exp_success
3452
- if !Cnvrg::Helpers.internet_connection?
3453
- wait_offline = agree "Seems like you're offline, wait until you're back online?", Thor::Shell::Color::YELLOW
3454
- if wait_offline
3455
- log_message("Waiting until your'e online..", Thor::Shell::Color::BLUE)
3456
- while !Cnvrg::Helpers.internet_connection?
3457
- end
3458
- exit_status = 0
3459
- else
3460
- log_message("Experiment has failed, your'e computer is offline", Thor::Shell::Color::RED)
3461
- exit(0)
3462
- end
3463
- else
3464
- end_commit = @project.last_local_commit
3465
- res = @exp.end(log, exit_status, end_commit, cpu_average, memory_average)
3466
- log_message("Experiment has failed, look at the log for more details or run cnvrg exec --log", Thor::Shell::Color::RED)
3467
- exit(0)
3468
- end
3469
3447
 
3470
- end
3471
- if sync_after
3448
+ if sync_after
3472
3449
  # Sync after run
3473
- download(sync = true, ignore_list = ignore)
3474
- upload(link = false, sync = true, direct = false, ignore_list = ignore)
3450
+ upload_res_count = 0
3451
+ upload_res = false
3452
+ while !upload_res and upload_res_count <5
3475
3453
 
3476
- end
3454
+ upload_res = upload(false, true, false, ignore, true)
3455
+ upload_res_count +=1
3456
+ end
3457
+ # download(sync = true, ignore_list = ignore)
3458
+ # upload(link = false, sync = true, direct = false, ignore_list = ignore)
3459
+
3460
+ end
3477
3461
  end_commit = @project.last_local_commit
3478
- sleep(7) # end cycle
3479
3462
 
3480
- res = @exp.end(log, exit_status, end_commit, cpu_average, memory_average)
3481
- check = Helpers.checkmark()
3482
- log_message("#{check} Done. Experiment's results were updated!", Thor::Shell::Color::GREEN)
3463
+ sleep(30) # end cycle
3464
+ res = @exp.end(log, exit_status, end_commit, cpu_average, memory_average)
3465
+
3466
+
3467
+ if !exp_success
3468
+
3469
+ log_message("Experiment has failed, look at the log for more details or run cnvrg exec --log", Thor::Shell::Color::RED)
3470
+ else
3471
+ check = Helpers.checkmark()
3472
+ log_message("#{check} Done. Experiment's results were updated!", Thor::Shell::Color::GREEN)
3473
+ end
3474
+
3483
3475
  rescue => e
3484
3476
  if container
3485
3477
  container.stop()
@@ -3495,6 +3487,8 @@ module Cnvrg
3495
3487
 
3496
3488
  }
3497
3489
  log << cur_log
3490
+ sleep(20) # end cycle
3491
+
3498
3492
  res = @exp.end(log, "-1", end_commit, cpu_average, memory_average)
3499
3493
 
3500
3494
  end
@@ -3510,6 +3504,7 @@ module Cnvrg
3510
3504
  rescue SignalException
3511
3505
  exit_status = -1
3512
3506
  end_commit = @project.last_local_commit
3507
+ sleep(20) # end cycle
3513
3508
 
3514
3509
  res = @exp.end(log, exit_status, end_commit, cpu_average, memory_average)
3515
3510
  if container
@@ -3629,7 +3624,22 @@ module Cnvrg
3629
3624
  else
3630
3625
  image_slug = image.image_slug
3631
3626
  end
3632
- invoke :sync, [false], :force => force if sync_before
3627
+ forced_commit = nil
3628
+ if sync_before
3629
+ if force
3630
+ sync_result = invoke :sync, [false], :force => force, :return_id=> true
3631
+ begin
3632
+ forced_commit = JSON(sync_result)["commit_sha1"]
3633
+ rescue
3634
+ forced_commit = nil
3635
+ end
3636
+ else
3637
+ sync_result = invoke :sync, [false], :force => false
3638
+ end
3639
+
3640
+
3641
+
3642
+ end
3633
3643
 
3634
3644
 
3635
3645
  if command.include? "'"
@@ -3648,6 +3658,9 @@ module Cnvrg
3648
3658
  end
3649
3659
  log_message("Running remote experiment", Thor::Shell::Color::BLUE)
3650
3660
  exp = Experiment.new(project.owner, project.slug)
3661
+ if forced_commit and (commit_to_run.nil? or commit_to_run.empty?)
3662
+ commit_to_run = forced_commit
3663
+ end
3651
3664
  res = exp.exec_remote(command, commit_to_run, instance_type, image_slug, schedule, local_timestamp, grid, path_to_cmd, data, data_commit,
3652
3665
  periodic_sync, sync_before_terminate, max_time, ds_sync_options)
3653
3666
  if Cnvrg::CLI.is_response_success(res)
@@ -3701,6 +3714,7 @@ module Cnvrg
3701
3714
  rescue SignalException
3702
3715
  exit_status = -1
3703
3716
  end_commit = project.last_local_commit
3717
+ sleep(20) # end cycle
3704
3718
 
3705
3719
  res = @exp.end(log, exit_status, end_commit, "", "")
3706
3720
  say "\nAborting"
@@ -3816,6 +3830,7 @@ module Cnvrg
3816
3830
  rescue SignalException
3817
3831
  exit_status = -1
3818
3832
  end_commit = project.last_local_commit
3833
+ sleep(20) # end cycle
3819
3834
 
3820
3835
  res = @exp.end(log, exit_status, end_commit, "", "")
3821
3836
  say "\nAborting"
@@ -5638,14 +5653,7 @@ module Cnvrg
5638
5653
  end
5639
5654
 
5640
5655
  def calc_output_log_time(log_count)
5641
- if log_count <= 20
5642
- return 5
5643
- elsif log_count <= 100
5644
- return 10
5645
- else
5646
- return 15
5647
- end
5648
-
5656
+ return 10
5649
5657
  end
5650
5658
 
5651
5659
  def log_start(command, args = "", options = {})
@@ -167,7 +167,6 @@ module Cnvrg
167
167
  dpkg: dpkg,
168
168
  py2: libraries,
169
169
  py3: libraries,
170
-
171
170
  bash_history: bash,
172
171
  commit_message: message,
173
172
  is_base: is_base})
@@ -242,13 +241,25 @@ module Cnvrg
242
241
  begin
243
242
  sts_path = upload_resp["result"]["path_sts"]
244
243
 
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
249
- end
250
- home_dir = File.expand_path('~')
244
+ retries = 0
245
+ success= false
246
+ while !success and retries < 20
247
+ begin
248
+ if !Helpers.is_verify_ssl
249
+ body = open(sts_path, {ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE}).read
250
+ else
251
+ body = open(sts_path).read
252
+ end
253
+ success = true
254
+ rescue => e
255
+ retries +=1
256
+ sleep(5)
251
257
 
258
+ end
259
+ end
260
+ if !success
261
+ return false
262
+ end
252
263
  split = body.split("\n")
253
264
  key = split[0]
254
265
  iv = split[1]
@@ -380,10 +391,24 @@ module Cnvrg
380
391
 
381
392
  absolute_path += ".conflict" if conflict
382
393
  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
394
+ retries = 0
395
+ success= false
396
+ while !success and retries < 20
397
+ begin
398
+ if !Helpers.is_verify_ssl
399
+ body = open(sts_path, {ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE}).read
400
+ else
401
+ body = open(sts_path).read
402
+ end
403
+ success = true
404
+ rescue => e
405
+ retries +=1
406
+ sleep(5)
407
+
408
+ end
409
+ end
410
+ if !success
411
+ return false
387
412
  end
388
413
  split = body.split("\n")
389
414
  key = split[0]
@@ -256,12 +256,25 @@ module Cnvrg
256
256
  begin
257
257
  sts_path = upload_resp["result"]["path_sts"]
258
258
 
259
- if !Helpers.is_verify_ssl
260
- body = open(sts_path, {ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE}).read
261
- else
262
- body = open(sts_path).read
263
- end
259
+ retries = 0
260
+ success= false
261
+ while !success and retries < 20
262
+ begin
263
+ if !Helpers.is_verify_ssl
264
+ body = open(sts_path, {ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE}).read
265
+ else
266
+ body = open(sts_path).read
267
+ end
268
+ success = true
269
+ rescue => e
270
+ retries +=1
271
+ sleep(5)
264
272
 
273
+ end
274
+ end
275
+ if !success
276
+ return false
277
+ end
265
278
  split = body.split("\n")
266
279
  key = split[0]
267
280
  iv = split[1]
@@ -303,7 +316,6 @@ module Cnvrg
303
316
 
304
317
  rescue => e
305
318
  puts e
306
- puts e.backtrace
307
319
  return false
308
320
  rescue SignalException
309
321
  return false
@@ -373,11 +385,26 @@ module Cnvrg
373
385
 
374
386
  absolute_path += ".conflict" if conflict
375
387
  sts_path = download_resp["result"]["path_sts"]
376
- if !Helpers.is_verify_ssl
377
- body = open(sts_path, {ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE}).read
378
- else
379
- body = open(sts_path).read
388
+ retries = 0
389
+ success= false
390
+ while !success and retries < 20
391
+ begin
392
+ if !Helpers.is_verify_ssl
393
+ body = open(sts_path, {ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE}).read
394
+ else
395
+ body = open(sts_path).read
396
+ end
397
+ success = true
398
+ rescue => e
399
+ retries +=1
400
+ sleep(5)
401
+
402
+ end
403
+ end
404
+ if !success
405
+ return false
380
406
  end
407
+
381
408
  split = body.split("\n")
382
409
  key = split[0]
383
410
  iv = split[1]
@@ -418,8 +445,8 @@ module Cnvrg
418
445
  end
419
446
 
420
447
  rescue => e
421
- puts e
422
- return false
448
+ puts e.message
449
+ return false
423
450
 
424
451
  end
425
452
  end
@@ -544,10 +571,10 @@ module Cnvrg
544
571
  return true
545
572
 
546
573
  end
547
- def start_commit(new_branch,force:false)
574
+ def start_commit(new_branch,force:false, exp_start_commit:nil)
548
575
 
549
576
  response = Cnvrg::API.request("#{base_resource}/commit/start", 'POST', {project_slug: @project_slug, new_branch: new_branch,force:force,
550
- username: @owner})
577
+ username: @owner, exp_start_commit:exp_start_commit})
551
578
  Cnvrg::CLI.is_response_success(response,false)
552
579
  return response
553
580
  end
@@ -356,8 +356,12 @@ module Cnvrg
356
356
  return response
357
357
  end
358
358
 
359
- def compare_idx(new_branch, commit:last_local_commit,force:false, deploy: false)
360
- local_idx = self.generate_idx(deploy: deploy)
359
+ def compare_idx(new_branch, commit:last_local_commit,force:false, deploy: false, in_exp:false)
360
+ if commit.nil?
361
+ local_idx = YAML.load_file("#{self.local_path}/.cnvrg/idx.yml")
362
+ else
363
+ local_idx = self.generate_idx(deploy: deploy)
364
+ end
361
365
  ignore_list = self.send_ignore_list()
362
366
  if force
363
367
  added = []
@@ -365,7 +369,6 @@ module Cnvrg
365
369
  added << local_idx[:tree].keys
366
370
  added.flatten!
367
371
  end
368
-
369
372
  response ={"result"=> {"commit"=>nil,"tree"=> {"added"=> added,
370
373
  "updated_on_server"=> [],
371
374
  "updated_on_local"=> [],
@@ -375,7 +378,7 @@ module Cnvrg
375
378
 
376
379
  end
377
380
  response = Cnvrg::API.request("users/#{self.owner}/projects/#{self.slug}/status", 'POST', {idx: local_idx, new_branch: new_branch,
378
- current_commit: commit,ignore:ignore_list, force:force})
381
+ current_commit: commit,ignore:ignore_list, force:force,in_exp:in_exp})
379
382
  CLI.is_response_success(response,false)
380
383
  return response
381
384
  end
@@ -1,4 +1,4 @@
1
1
  module Cnvrg
2
- VERSION = '0.3.9'
2
+ VERSION = '0.4.0'
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.3.9
4
+ version: 0.4.0
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-04-21 00:00:00.000000000 Z
12
+ date: 2018-05-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -385,6 +385,20 @@ dependencies:
385
385
  - - ">="
386
386
  - !ruby/object:Gem::Version
387
387
  version: '0'
388
+ - !ruby/object:Gem::Dependency
389
+ name: faraday_middleware-request-retry
390
+ requirement: !ruby/object:Gem::Requirement
391
+ requirements:
392
+ - - ">="
393
+ - !ruby/object:Gem::Version
394
+ version: '0'
395
+ type: :runtime
396
+ prerelease: false
397
+ version_requirements: !ruby/object:Gem::Requirement
398
+ requirements:
399
+ - - ">="
400
+ - !ruby/object:Gem::Version
401
+ version: '0'
388
402
  description: A CLI tool for interacting with cnvrg.io.
389
403
  email:
390
404
  - info@cnvrg.io