cnvrg 1.6.0.7 → 1.6.0.8

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: 74e632845d8a6f6ca39492119e8efa15f90aaa76f66737336da95ef24b89b873
4
- data.tar.gz: 79a573e7bb4dcb63dadb89dba6c5bba7c16473e8fcc688ad27c64ff1c0b58dcc
3
+ metadata.gz: 319b1e08fd56c2a26834b3a2e2fc94565e2abad1d0244c72e4e45c11a8cc7d3d
4
+ data.tar.gz: 60edde88d619c8aae0afded8314c2688545712445718e99576a7ec20222d795e
5
5
  SHA512:
6
- metadata.gz: 6308aba4c811a524e84ffa9d1a9519af3fe74561ac1adb20b9ad4db8d78ab91b834549f37a29c258f5775bf59d46328fd956ced36c9877ccf2c678d4641643bd
7
- data.tar.gz: a4e5526fa519c995833b52d8ba5147a1cda9373f634dff60aa6435422a6486c7b599f0a27427a68d20166c5dc81f2aa54badc686186baec26483a3fff41f08bc
6
+ metadata.gz: 9dc2c22f8c1f4c696c0580f2ab2c3122d57061a95591bff13403a2e93412f6268b50a23119ba5ccbaa0830bd8f87474490be50ccf6d128c378b39d4a1cffaca3
7
+ data.tar.gz: 4628fee3352fb89fb639ed3aef3e76ce2cadff9c916d153a940416d25ac81f8e700b2891cca6682c95e9526342c089ef631f2c16d9df9ca84cc4faccaac70e28
@@ -2888,7 +2888,8 @@ module Cnvrg
2888
2888
  method_option :email_notification, :type => :boolean, :aliases => ["-en", "--email_notification"], :default => false
2889
2889
  method_option :upload_output, :type => :string, :aliases => ["-uo", "--upload_output"], :default => ""
2890
2890
  method_option :commit, :type => :string, :aliases => ["-c", "--commit"], :default => ""
2891
- method_option :schedule, :type => :string, :aliases => ["-s", "--schedule"], :default => ""
2891
+ method_option :schedule, :type => :string, :aliases => ["--schedule"], :default => ""
2892
+ method_option :recurring, :type => :string, :aliases => ["--recurring"], :default => ""
2892
2893
  method_option :image, :type => :string, :aliases => ["--image"], :default => nil
2893
2894
  method_option :grid, :type => :string, :aliases => ["-g", "--grid"], :default => ""
2894
2895
  method_option :data, :type => :string, :aliases => ["-d", "--data"], :default => ""
@@ -2922,6 +2923,7 @@ module Cnvrg
2922
2923
  upload_output = options["upload_output"]
2923
2924
  local = options["local"]
2924
2925
  schedule = options["schedule"]
2926
+ recurring = options["recurring"]
2925
2927
  image = options["image"] || nil
2926
2928
  grid = options["grid"]
2927
2929
  data = options["data"]
@@ -2982,7 +2984,7 @@ module Cnvrg
2982
2984
  options["machine"] => !options["machine"].blank? }
2983
2985
  instance_type = get_instance_type(instances)
2984
2986
  invoke :exec_remote, [cmd], :sync_before => sync_before, :sync_after => sync_after, :title => title, :machine_type => instance_type,
2985
- :schedule => schedule, :log => log, :email_notification => email_notification, :upload_output => upload_output, :commit => commit,
2987
+ :schedule => schedule, :recurring => recurring, :log => log, :email_notification => email_notification, :upload_output => upload_output, :commit => commit,
2986
2988
  :image => image, :grid => grid, :data => data, :data_commit => data_commit, :ignore => ignore, :force => force, :sync_before_terminate => sync_before_terminate,
2987
2989
  :max_time => max_time,
2988
2990
  :periodic_sync => periodic_sync, :dataset_only_tree=> dataset_only_tree,
@@ -3271,7 +3273,8 @@ module Cnvrg
3271
3273
  method_option :email_notification, :type => :boolean, :aliases => ["-en", "--email_notification"], :default => false
3272
3274
  method_option :upload_output, :type => :string, :aliases => ["-uo", "--upload_output"], :default => ""
3273
3275
  method_option :machine_type, :type => :string, :default => ""
3274
- method_option :schedule, :type => :string, :aliases => ["-s", "--schedule"], :default => ""
3276
+ method_option :schedule, :type => :string, :aliases => ["--schedule"], :default => ""
3277
+ method_option :recurring, :type => :string, :aliases => ["--recurring"], :default => ""
3275
3278
  method_option :commit, :type => :string, :aliases => ["-c, --commit"], :default => nil
3276
3279
  method_option :image, :type => :string, :aliases => ["-i", "--image"], :default => ""
3277
3280
  method_option :grid, :type => :string, :aliases => ["-g", "--grid"], :default => ""
@@ -3329,24 +3332,7 @@ module Cnvrg
3329
3332
  restart_if_stuck = options["restart_if_stuck"]
3330
3333
  instance_type = options["machine_type"] || nil
3331
3334
  schedule = options["schedule"] || ""
3332
- if schedule.start_with? 'in'
3333
- time = schedule.split(" ")
3334
-
3335
- local = Time.now.localtime
3336
- if time[2].downcase().start_with? "min"
3337
- new = local + (time[1].to_i * 60)
3338
- elsif time[2].downcase().start_with? "hours"
3339
- new = local + (time[1].to_i * 3600)
3340
- elsif time[2].downcase().start_with? "days"
3341
- new = local + (time[1].to_i * 3600 * 24)
3342
- else
3343
- log_message("Could not undersatnd when to schedule experiment", Thor::Shell::Color::RED)
3344
- exit(1)
3345
- end
3346
- new_time = new.to_s
3347
- new_time = new_time[0, new_time.size - 6] #remove timezone
3348
- schedule = "at #{new_time}"
3349
- end
3335
+ recurring = options["recurring"] || ""
3350
3336
  upload_output = options["upload_output"]
3351
3337
  time_to_upload = calc_output_time(upload_output)
3352
3338
  if time_to_upload == 0 or time_to_upload == -1
@@ -3364,7 +3350,7 @@ module Cnvrg
3364
3350
  git_branch = options["git_branch"]
3365
3351
  options_hash = Hash[options]
3366
3352
  local_folders_options = options["local_folders"]
3367
- options_hash.except!("schedule", "machine_type", "image", "upload_output", "grid", "data", "data_commit", "title",
3353
+ options_hash.except!("schedule", "recurring", "machine_type", "image", "upload_output", "grid", "data", "data_commit", "title",
3368
3354
  "local", "small", "medium", "large", "gpu", "gpuxl", "gpuxxl","max_time","dataset_only_tree",
3369
3355
  "data_query", "git_commit","git_branch", "restart_if_stuck","local_folders","output_dir", "commit", "datasets", "requirements", "prerun" )
3370
3356
  exec_options = options_hash.map {|x| "--#{x[0]}=#{x[1]}"}.flatten.join(" ")
@@ -3437,7 +3423,7 @@ module Cnvrg
3437
3423
 
3438
3424
  res = exp.exec_remote(command, commit_to_run, instance_type, image, schedule, local_timestamp, grid, path_to_cmd, data, data_commit,
3439
3425
  periodic_sync, sync_before_terminate, max_time, ds_sync_options,output_dir,
3440
- data_query, git_commit, git_branch, restart_if_stuck,local_folders_options, title, datasets, prerun: prerun, requirements: requirements)
3426
+ data_query, git_commit, git_branch, restart_if_stuck,local_folders_options, title, datasets, prerun: prerun, requirements: requirements, recurring: recurring)
3441
3427
  if Cnvrg::CLI.is_response_success(res)
3442
3428
  check = Helpers.checkmark()
3443
3429
  str = "#{check} Experiment's is on: #{Cnvrg::Helpers.remote_url}/#{project.owner}/projects/#{project.slug}/experiments/#{res["result"]["exp_url"]}"
@@ -5355,7 +5341,7 @@ module Cnvrg
5355
5341
  @image.update_image_activity(project.last_local_commit, nil)
5356
5342
  end
5357
5343
 
5358
- desc 'check_pod_restart', description: 'Check pod restart', hide: true
5344
+ desc 'check_pod_restart', 'Check pod restart', :hide => true
5359
5345
  def check_pod_restart
5360
5346
  Cnvrg::CLI.new.log_start(__method__, args, options)
5361
5347
  @project = Project.new(owner: ENV['CNVRG_OWNER'], slug: ENV['CNVRG_PROJECT'])
@@ -5486,6 +5472,10 @@ module Cnvrg
5486
5472
  end
5487
5473
 
5488
5474
  def self.log_message(message, type = Thor::Shell::Color::BLUE, to_print: true)
5475
+ if $LOG.blank?
5476
+ ### handle case when $LOG is not initialized
5477
+ CLI.new.log_handler
5478
+ end
5489
5479
  case type
5490
5480
  when Thor::Shell::Color::BLUE, 'blue', 'progress'
5491
5481
  color = Thor::Shell::Color::BLUE
@@ -5503,18 +5493,11 @@ module Cnvrg
5503
5493
  color = nil
5504
5494
  $LOG.info message: message, type: "unknown"
5505
5495
  end
5506
- say "#{color}#{message}" if to_print
5496
+ say "#{color}#{message}#{Thor::Shell::Color::CLEAR}" if to_print
5507
5497
  end
5508
5498
 
5509
5499
  def log_message(message, type=Thor::Shell::Color::GREEN, to_print = true)
5510
- if to_print
5511
- say message, type
5512
- end
5513
- begin
5514
- Cnvrg::Logger.log_info(message)
5515
- rescue => e
5516
- Cnvrg::Logger.log_error(e)
5517
- end
5500
+ CLI.log_message(message, type, to_print: to_print)
5518
5501
  end
5519
5502
 
5520
5503
  def log_error(e)
@@ -29,13 +29,27 @@ module Cnvrg
29
29
  cli.init_data(public, bucket: bucket)
30
30
  end
31
31
 
32
- desc "data link", "Set current directory as dataset directory"
33
- def link(dataset_slug=nil)
32
+ desc "data link DATASET_SLUG", "Set current directory as dataset directory"
33
+ def link(dataset=nil)
34
34
  begin
35
- raise Exception.new("Please enter dataset name") if dataset_slug.blank?
36
35
  cli = Cnvrg::CLI.new()
37
36
  cli.verify_logged_in(false)
38
37
  cli.log_start(__method__, args, options)
38
+
39
+ if dataset.include? "/"
40
+ ## this case is to support DATASET_URL expected example: domain.com/organization_name/datasets/dataset_name
41
+ url_parts = dataset.split("/")
42
+ dataset_index = Cnvrg::Helpers.look_for_in_path(dataset, "datasets")
43
+ dataset_slug = url_parts[dataset_index + 1]
44
+ owner = url_parts[dataset_index - 1]
45
+ raise Exception.new("Can't find all dataset information please check the URL") if dataset_slug.blank? or owner.blank?
46
+ else
47
+ ## this case is to support DATASET_SLUG expected example: dataset_name
48
+ # in this case it will take the organization from the config file
49
+ dataset_slug = dataset
50
+ raise Exception.new("Please enter dataset name or dataset full url") if dataset_slug.blank?
51
+ owner = CLI.get_owner
52
+ end
39
53
 
40
54
  config_validation = Dataset.validate_config
41
55
  if config_validation[:validation] == Data::ConfigValidation::SUCCESS
@@ -47,7 +61,6 @@ module Cnvrg
47
61
  end
48
62
 
49
63
  cli.log_message("Linking dataset: #{dataset_slug} to the current directory", Thor::Shell::Color::BLUE)
50
- owner = CLI.get_owner
51
64
  success = Dataset.link_dataset(owner: owner, slug: dataset_slug)
52
65
  if success
53
66
  cli.log_message("Dataset: #{dataset_slug} linked successfully to the current directory")
@@ -320,6 +320,12 @@ module Cnvrg
320
320
  return unless success
321
321
  result = response["result"]
322
322
 
323
+ sha1 = result["init_commit_sha1"]
324
+
325
+ # We need to write init IDX that contain init commit sha1 so the user will be able to doing actions on the dataset
326
+ # so it only relevant for new server
327
+ raise Exception.new("This feature is not available for your cnvrg version. Please contact support for more information") if sha1.blank? ## means this is old version of server
328
+
323
329
  config = {dataset_name: result["title"],
324
330
  dataset_slug: result["slug"],
325
331
  owner: owner}
@@ -332,10 +338,7 @@ module Cnvrg
332
338
  FileUtils.touch list_files
333
339
  File.open(".cnvrg/config.yml", "w+") {|f| f.write config.to_yaml}
334
340
 
335
- # Write init IDX that contain init commit sha1 so the user will be able to doing actions on the dataset
336
- # Relevant only for new server
337
341
  dataset = Dataset.new(Dir.pwd)
338
- sha1 = result["init_commit_sha1"]
339
342
  dataset.write_idx({}, sha1)
340
343
  true
341
344
  rescue => e
@@ -88,13 +88,13 @@ module Cnvrg
88
88
 
89
89
  end
90
90
 
91
- def exec_remote(command, commit_to_run, instance_type, image_slug,scheduling_query,local_timestamp, grid,path_to_cmd,data, data_commit,periodic_sync,
91
+ def exec_remote(command, commit_to_run, instance_type, image_slug,schedule,local_timestamp, grid,path_to_cmd,data, data_commit,periodic_sync,
92
92
  sync_before_terminate, max_time, ds_sync_options=0,output_dir=nil,data_query=nil,
93
- git_commit=nil, git_branch=nil, restart_if_stuck=nil, local_folders=nil,title=nil, datasets=nil, prerun: true, requirements: true)
93
+ git_commit=nil, git_branch=nil, restart_if_stuck=nil, local_folders=nil,title=nil, datasets=nil, prerun: true, requirements: true, recurring: nil)
94
94
  response = Cnvrg::API.request("users/#{@owner}/projects/#{@project_slug}/experiment/remote", 'POST', {command: command, image_slug: image_slug,
95
95
  commit_sha1: commit_to_run,
96
96
  instance_type: instance_type,
97
- scheduling_query:scheduling_query,
97
+ schedule:schedule,
98
98
  local_timestamp:local_timestamp,
99
99
  datasets: datasets,
100
100
  grid: grid,
@@ -104,7 +104,7 @@ module Cnvrg
104
104
  dataset_sync_options:ds_sync_options,output_dir:output_dir,
105
105
  dataset_query:data_query,git_commit:git_commit,git_branch:git_branch,
106
106
  restart_if_stuck:restart_if_stuck, local_folders: local_folders, title:title,
107
- prerun: prerun, requirements: requirements})
107
+ prerun: prerun, requirements: requirements, recurring: recurring})
108
108
 
109
109
  return response
110
110
  end
@@ -1,4 +1,4 @@
1
1
  module Cnvrg
2
- VERSION = '1.6.0.7'
2
+ VERSION = '1.6.0.8'
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.6.0.7
4
+ version: 1.6.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yochay Ettun
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2019-11-24 00:00:00.000000000 Z
13
+ date: 2019-12-01 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -476,7 +476,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
476
476
  - !ruby/object:Gem::Version
477
477
  version: '0'
478
478
  requirements: []
479
- rubygems_version: 3.0.3
479
+ rubygems_version: 3.0.4
480
480
  signing_key:
481
481
  specification_version: 4
482
482
  summary: A CLI tool for interacting with cnvrg.io.