cnvrg 0.3.2 → 0.3.5
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/lib/cnvrg/cli.rb +2853 -2766
- data/lib/cnvrg/experiment.rb +35 -4
- data/lib/cnvrg/project.rb +8 -3
- data/lib/cnvrg/version.rb +1 -1
- metadata +2 -2
data/lib/cnvrg/experiment.rb
CHANGED
@@ -1,22 +1,28 @@
|
|
1
|
+
require 'net/http'
|
1
2
|
module Cnvrg
|
2
3
|
class Experiment
|
3
4
|
attr_reader :slug
|
5
|
+
attr_reader :sync_before_terminate
|
6
|
+
attr_reader :sync_delay_time
|
4
7
|
|
5
8
|
def initialize(owner, project_slug)
|
6
9
|
@project_slug = project_slug
|
7
10
|
@owner = owner
|
8
11
|
@base_resource = "users/#{owner}/projects/#{project_slug}/"
|
9
12
|
@slug = nil
|
13
|
+
@sync_before_terminate = nil
|
14
|
+
@sync_delay_time = nil
|
10
15
|
end
|
11
16
|
|
12
|
-
def start(input, platform, machine_name, start_commit, name, email_notification, machine_activity,script_path)
|
17
|
+
def start(input, platform, machine_name, start_commit, name, email_notification, machine_activity,script_path,sync_before_terminate, periodic_sync)
|
18
|
+
|
13
19
|
res = Cnvrg::API.request(@base_resource + "experiment/start", 'POST',
|
14
|
-
{input: input, platform: platform, machine_name: machine_name, start_commit: start_commit,
|
20
|
+
{input: input, platform: platform, machine_name: machine_name, start_commit: start_commit,sync_before_terminate:sync_before_terminate, periodic_sync:periodic_sync,
|
15
21
|
title: name, email_notification: email_notification, machine_activity: machine_activity,script_path:script_path})
|
16
22
|
Cnvrg::CLI.is_response_success(res,false)
|
17
|
-
|
18
23
|
@slug = res.to_h["result"].to_h["slug"]
|
19
|
-
|
24
|
+
@sync_before_terminate = res.to_h["result"].to_h["sync_before_terminate"]
|
25
|
+
@sync_delay_time = res.to_h["result"].to_h["sync_delay_time"]
|
20
26
|
return res
|
21
27
|
|
22
28
|
end
|
@@ -113,5 +119,30 @@ module Cnvrg
|
|
113
119
|
|
114
120
|
end
|
115
121
|
end
|
122
|
+
|
123
|
+
def restart_spot_instance
|
124
|
+
restart = false
|
125
|
+
begin
|
126
|
+
url = URI.parse('http://169.254.169.254/latest/meta-data/spot/termination-time')
|
127
|
+
req = Net::HTTP::Get.new(url.to_s)
|
128
|
+
res = Net::HTTP.start(url.host, url.port) {|http|
|
129
|
+
http.request(req)
|
130
|
+
}
|
131
|
+
unless res.body.include? "404"
|
132
|
+
restart = true
|
133
|
+
end
|
134
|
+
if res.body.include? "Empty reply from server"
|
135
|
+
restart = false
|
136
|
+
end
|
137
|
+
rescue
|
138
|
+
end
|
139
|
+
|
140
|
+
return restart
|
141
|
+
|
142
|
+
end
|
143
|
+
|
144
|
+
def send_restart_request()
|
145
|
+
response = Cnvrg::API.request(@base_resource + "experiment/check_spot_instance", 'POST', {exp_slug: @slug})
|
146
|
+
end
|
116
147
|
end
|
117
148
|
end
|
data/lib/cnvrg/project.rb
CHANGED
@@ -312,7 +312,7 @@ module Cnvrg
|
|
312
312
|
File.open(@working_dir+"/.cnvrg/config.yml", "w+") { |f| f.write new_config.to_yaml }
|
313
313
|
end
|
314
314
|
|
315
|
-
def generate_idx
|
315
|
+
def generate_idx(deploy:false)
|
316
316
|
if File.exists? "#{self.local_path}/.cnvrg/idx.yml"
|
317
317
|
old_idx = YAML.load_file("#{self.local_path}/.cnvrg/idx.yml")
|
318
318
|
else
|
@@ -322,6 +322,11 @@ module Cnvrg
|
|
322
322
|
tree_idx = Hash.new(0)
|
323
323
|
list = Dir.glob("#{self.local_path}/**/*", File::FNM_DOTMATCH).reject { |x| (x =~ /\/\.{1,2}$/) or (x =~ /^#{self.local_path}\/\.cnvrg\/*/) or (x =~/^#{self.local_path}\/\.cnvrgignore.conflict*/) and not (x =~/^#{self.local_path}\/\.cnvrgignore/) }
|
324
324
|
list_ignore = self.get_ignore_list()
|
325
|
+
if deploy
|
326
|
+
list_ignore << ["main.py","main.pyc", "__init__.py", "uwsgi.ini"]
|
327
|
+
list_ignore.flatten!
|
328
|
+
end
|
329
|
+
|
325
330
|
Parallel.map(list, in_threads: IDXParallelThreads) do |e|
|
326
331
|
label = e.gsub(self.local_path + "/", "")
|
327
332
|
ignore_label = label.gsub("/","//")
|
@@ -357,8 +362,8 @@ module Cnvrg
|
|
357
362
|
return response
|
358
363
|
end
|
359
364
|
|
360
|
-
def compare_idx(new_branch, commit:last_local_commit,force:false)
|
361
|
-
local_idx = self.generate_idx
|
365
|
+
def compare_idx(new_branch, commit:last_local_commit,force:false, deploy: false)
|
366
|
+
local_idx = self.generate_idx(deploy: deploy)
|
362
367
|
ignore_list = self.send_ignore_list()
|
363
368
|
if force
|
364
369
|
added = []
|
data/lib/cnvrg/version.rb
CHANGED
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.
|
4
|
+
version: 0.3.5
|
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-
|
12
|
+
date: 2018-03-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|