cnvrg 1.2.6 → 1.2.7

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
  SHA256:
3
- metadata.gz: 8e33d716e3fce0ef29d6684c29dec59f6edd04173d0330343d0510ec11bd087a
4
- data.tar.gz: 9a019b36e6611ffd4b627c7fb9b9edecbde44be360f26034b668c52da804da8d
3
+ metadata.gz: f7319668db1dc7e8257aa9f6067fc43b91dd559f4e73c1c5d84c6e0a6c4ec30b
4
+ data.tar.gz: 3958b12ea50a32fa38ebc0c41a3e0b019199fe3f6a4f0f3ebcbe43b839fa25c1
5
5
  SHA512:
6
- metadata.gz: ad76658b08c85dcab2cade07327e5e6c7f4843e9eecbc6d2c768d4e3d166723e2f007d8260d83fd6d2f3cabbb25daf85bf7b247fe7b0bd45445f8af7cae2b141
7
- data.tar.gz: 22da11b1b04ec3e55fbb9a3586651783411daa1fc1c5d06548890f71770b0e152740589b883394f84172f3e5d0f0519001abaa4416031bfa0856cd553be685c3
6
+ metadata.gz: cb413f91c9968b93ec5e1b05be0a2deff6f5aaa5e097b9eda6e02311a36e6b14d8dba34a8385c0e1abc5193810fbaa1a0902f49537ffb79e2a7745117448233c
7
+ data.tar.gz: 5a4d02fc1920d0fda7e0d5b7dfab5793ee31e6adc8b9fc2e60adc5e55213284dcc3bb3cb1c1974b1da0541da9fd8a86eb94d4c3f1c3f0a82543ec43fd4dcd080
@@ -150,7 +150,7 @@ module Cnvrg
150
150
  IP = "localhost"
151
151
  PORT = 7654
152
152
 
153
- ParallelThreads ||= 15
153
+ ParallelThreads ||= Cnvrg::Helpers.parallel_threads
154
154
  ParallelProcesses ||= Parallel.processor_count
155
155
 
156
156
  class << self
@@ -451,19 +451,44 @@ module Cnvrg
451
451
 
452
452
  desc 'auth', "hidden..", hide: true
453
453
  def auth
454
- @token = ENV['CNVRG_TOKEN']
455
- owner = ENV['CNVRG_OWNER']
456
- user = ENV['CNVRG_USER']
457
- api = ENV['CNVRG_API']
458
- @email = ENV['CNVRG_EMAIL']
454
+ token = ENV['CNVRG_TOKEN'] || exit(1)
455
+ owner = ENV['CNVRG_OWNER'] || exit(1)
456
+ user = ENV['CNVRG_USER'] || exit(1)
457
+ api = ENV['CNVRG_API'] || exit(1)
458
+ email = ENV['CNVRG_EMAIL'] || exit(1)
459
459
 
460
460
  netrc = Netrc.read
461
- netrc[Cnvrg::Helpers.netrc_domain] = @email, @token
461
+ netrc[Cnvrg::Helpers.netrc_domain] = email, token
462
462
  netrc.save
463
463
 
464
464
  set_owner(owner, user, api)
465
465
  end
466
466
 
467
+ desc 'check_spot', "hidden..", hide: true
468
+ def check_spot
469
+ log_start(__method__, args, options)
470
+ project_home = get_project_home
471
+ @project = Project.new(project_home)
472
+
473
+ log_message('Checking Spot Instance Status', Thor::Shell::Color::YELLOW)
474
+ will_terminate = @project.spot_will_terminate
475
+ if not will_terminate
476
+ log_message("Not spot termination detected", Thor::Shell::Color::YELLOW)
477
+ return
478
+ end
479
+ job_type, job_id = ENV['CNVRG_JOB_TYPE'], ENV['CNVRG_JOB_ID']
480
+ machine_activity = @project.get_machine_activity
481
+
482
+ sync_force = job_type == "NotebookSession" ? false : true
483
+ upload(false, false, true, '', true, sync_force , ENV['CNVRG_OUTPUT_DIR'], job_type, job_id)
484
+ log_message('Spot instance is going to be terminated', Thor::Shell::Color::YELLOW)
485
+ res = nil
486
+ while res.blank?
487
+ res = @project.send_restart_request(job_type: job_type, job_id: job_id, ma_id: machine_activity)
488
+ sleep(10)
489
+ end
490
+ end
491
+
467
492
 
468
493
  desc 'login', 'Authenticate with cnvrg.io platform'
469
494
 
@@ -7,7 +7,7 @@ require 'fileutils'
7
7
 
8
8
  module Cnvrg
9
9
  class Datafiles
10
- ParallelThreads ||= 15
10
+ ParallelThreads ||= Cnvrg::Helpers.parallel_threads
11
11
 
12
12
  LARGE_FILE=1024*1024*5
13
13
  MULTIPART_SPLIT=10000000
@@ -4,7 +4,7 @@ module Cnvrg
4
4
  attr_reader :slug, :owner, :title, :local_path, :working_dir
5
5
 
6
6
  RemoteURL ||= "https://cnvrg.io"
7
- IDXParallelThreads ||= 15
7
+ IDXParallelThreads ||= Cnvrg::Helpers.parallel_threads
8
8
  IDXParallelProcesses ||= Parallel.processor_count
9
9
 
10
10
  def initialize(project_home = '', dataset_url: '')
@@ -2,9 +2,15 @@ module Cnvrg
2
2
  module Helpers
3
3
 
4
4
  extend self
5
- ParallelThreads ||= 20
6
5
  def parallel_threads()
7
- return ParallelThreads
6
+ threads = ENV["CNVRG_PARALLEL_THREADS"].to_i
7
+
8
+
9
+ ### if empty, default will be 15 threads
10
+ threads = threads > 0 ? threads : 15
11
+
12
+ ### set max threads to be 100k
13
+ [threads, 100000].min
8
14
  end
9
15
  def checkmark
10
16
  checkmark = "\u2713"
@@ -4,7 +4,7 @@ module Cnvrg
4
4
  attr_reader :slug, :owner, :title, :local_path, :working_dir, :is_git, :is_branch, :machines
5
5
 
6
6
  RemoteURL ||= "https://cnvrg.io"
7
- IDXParallelThreads ||= 15
7
+ IDXParallelThreads ||= Cnvrg::Helpers.parallel_threads
8
8
 
9
9
 
10
10
  def initialize(project_home)
@@ -632,5 +632,52 @@ module Cnvrg
632
632
  end
633
633
 
634
634
 
635
+ def spot_will_terminate
636
+ restart = false
637
+ config = self.get_config
638
+ # logic that will prevent multiple restart calls
639
+ if config[:spot_taken]
640
+ return false
641
+ end
642
+ begin
643
+ url = URI.parse('http://169.254.169.254/latest/meta-data/spot/termination-time')
644
+ req = Net::HTTP::Get.new(url.to_s)
645
+ res = Net::HTTP.start(url.host, url.port) {|http|
646
+ http.request(req)
647
+ }
648
+ unless res.body.include? "404"
649
+ restart = true
650
+ end
651
+ if res.body.include? "Empty reply from server"
652
+ restart = false
653
+ end
654
+ rescue
655
+ restart = false
656
+ end
657
+
658
+ if restart
659
+ config[:spot_taken] = true
660
+ self.set_config(config)
661
+ end
662
+
663
+ return restart
664
+ end
665
+
666
+ def send_restart_request(job_id: nil, job_type: nil, ma_id: nil)
667
+ Cnvrg::API.request("#{base_resource}/spot_restart", 'POST', {job_type: job_type, job_id: job_id, machine_activity: ma_id})
668
+ end
669
+
670
+ def get_machine_activity
671
+ begin
672
+ machine_activity = File.open("#{@local_path}/.cnvrg/machine_activity", "rb").read
673
+ machine_activity = machine_activity.to_s.strip
674
+ ma_id = machine_activity.to_i
675
+ return ma_id
676
+ rescue
677
+ return nil
678
+ end
679
+ end
680
+
681
+
635
682
  end
636
683
  end
@@ -1,4 +1,4 @@
1
1
  module Cnvrg
2
- VERSION = '1.2.6'
2
+ VERSION = '1.2.7'
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: 1.2.6
4
+ version: 1.2.7
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: 2019-03-20 00:00:00.000000000 Z
12
+ date: 2019-03-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler