cnvrg 0.0.15000 → 0.0.142561

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 209fd646618556d6e2a6ed54778d95ba9d9fb5ae
4
- data.tar.gz: 8c7df0eea5f08eaec0a8d50326f20d3fbcfbb47d
3
+ metadata.gz: d2a92149e9b565661704f3f91438b28c89976475
4
+ data.tar.gz: 9f5c2dc4a71823c9b5657fd941361e33305d06f6
5
5
  SHA512:
6
- metadata.gz: 77dd8ba073bcc0ec65d6dc4a70845ae32a3a779f8b1b340dcbaeee4336676db5d1a928b38a23eb619df396c413a613c69378f9deb114e7567e8ebab58607c79d
7
- data.tar.gz: c876d3596e5287e6d28d6f972f777188b1f2b92c8001aaa178da2db31a3fb254edf8827addb128b4e4ab4dd5c5eeafed481362e2c02af3e0081e7f4278553b09
6
+ metadata.gz: 0aace663fb6460ade819c6676fb96b11cbbb286340e0b2599b6be6bb6d1ae5f3e6098270b9f37976cae7ec743b6381f46dd1e1054cb4f56e71d249cbb875f43b
7
+ data.tar.gz: 47dd9900f83b208196690862ceba2511643fbf84fc2d1daa6a23b66c51c63279aa9766bcaee9811b72af9b4f44e605e7fa34e5b0e450bcbe67f4e62a7480c173
data/cnvrg.gemspec CHANGED
@@ -40,8 +40,6 @@ Gem::Specification.new do |spec|
40
40
  spec.add_runtime_dependency 'rubyzip', '~> 1.2'
41
41
  spec.add_runtime_dependency 'activesupport', '~> 5.0'
42
42
  spec.add_runtime_dependency 'ruby-progressbar'
43
- spec.add_runtime_dependency 'net-ssh'
44
-
45
43
 
46
44
 
47
45
 
data/lib/cnvrg.rb CHANGED
@@ -3,5 +3,6 @@ require 'cnvrg/version'
3
3
  require 'cnvrg/cli'
4
4
  require 'thor'
5
5
 
6
+
6
7
  module Cnvrg
7
8
  end
data/lib/cnvrg/Images.rb CHANGED
@@ -1,8 +1,6 @@
1
1
  require 'fileutils'
2
2
  require 'cnvrg/files'
3
3
  require 'docker'
4
- require 'net/ssh'
5
-
6
4
 
7
5
  module Cnvrg
8
6
  class Images
@@ -95,73 +93,6 @@ module Cnvrg
95
93
 
96
94
 
97
95
  end
98
- def self.create_new_custom_image(type,owner,image_name,is_public,is_base,image_extend,python3)
99
- response = Cnvrg::API.request("users/#{owner}/images/custom", 'POST', {instance_type:type,image_name:image_name,is_public:is_public,
100
- is_base:is_base,image_extend:image_extend,
101
- python3:python3})
102
- return response
103
- end
104
- def self.revoke_custom_new_image(owner,slug)
105
- response = Cnvrg::API.request("users/#{owner}/images/#{slug}/revoke_image", 'GET')
106
- return response
107
- end
108
- def self.commit_custom_image(owner,slug)
109
- response = Cnvrg::API.request("users/#{owner}/images/#{slug}/commit_custom_image", 'GET')
110
- return response
111
- end
112
- def self.ssh_to_machine(resp)
113
-
114
- sts_path = resp["result"]["sts_path"]
115
-
116
- uri = URI.parse(sts_path)
117
-
118
- http_object = Net::HTTP.new(uri.host, uri.port)
119
- http_object.use_ssl = true if uri.scheme == 'https'
120
- request = Net::HTTP::Get.new(sts_path)
121
-
122
- body = ""
123
- http_object.start do |http|
124
- response = http.request request
125
- body = response.read_body
126
- end
127
-
128
- URLcrypt::key = [body].pack('H*')
129
-
130
- ip = URLcrypt.decrypt(resp["result"]["machine_i"])
131
-
132
- user = URLcrypt.decrypt(resp["result"]["machine_u"])
133
- key = URLcrypt.decrypt(resp["result"]["machine_k"])
134
- tempssh = Tempfile.new "sshkey"
135
- tempssh.write open(key).read
136
- tempssh.rewind
137
- key_path = tempssh.path
138
- count = 0
139
- while count < 5
140
-
141
- begin
142
- ssh = Net::SSH.start(ip, user=user, :keys => key_path, :timeout => 10)
143
- if !ssh.nil?
144
- return ssh
145
- else
146
- count+=1
147
- sleep(2)
148
-
149
- end
150
- rescue
151
- count+=1
152
- sleep(2)
153
-
154
-
155
- end
156
- end
157
- if tempssh
158
- tempssh.close
159
- tempssh.unlink
160
- end
161
- return false
162
- end
163
-
164
-
165
96
 
166
97
  def create_custom_image(new_image_name,working_dir,stored_commands)
167
98
 
data/lib/cnvrg/api.rb CHANGED
@@ -57,10 +57,7 @@ module Cnvrg
57
57
  else
58
58
  response
59
59
  end
60
- when 'POST'
61
- conn.options.timeout = 420
62
- conn.options.open_timeout =420
63
-
60
+ when 'POST'
64
61
  response = conn.post "#{endpoint_uri}/#{resource}", data
65
62
 
66
63
  if parse_request == true
@@ -73,12 +70,12 @@ module Cnvrg
73
70
  fr.headers['Auth-Token'] = @pass
74
71
  fr.headers['User-Agent'] = "#{Cnvrg::API::USER_AGENT}"
75
72
  fr.headers["Content-Type"] = "multipart/form-data"
76
-
73
+
77
74
  fr.request :multipart
78
75
  fr.request :url_encoded
79
76
  fr.adapter :net_http
80
77
  end
81
-
78
+
82
79
 
83
80
  # what if windows?
84
81
  # data[:file] = Faraday::UploadIO.new(data[:absolute_path], content_type)
@@ -107,7 +104,6 @@ module Cnvrg
107
104
  else
108
105
  end
109
106
  rescue => e
110
- puts e
111
107
  return nil
112
108
  end
113
109
 
data/lib/cnvrg/cli.rb CHANGED
@@ -21,7 +21,6 @@ require 'cnvrg/Images'
21
21
  require 'cnvrg/dataset'
22
22
  require 'cnvrg/datafiles'
23
23
  require 'cnvrg/data'
24
- require 'cnvrg/ssh'
25
24
  require 'etc'
26
25
  require 'logstash-logger'
27
26
  require 'cnvrg/job'
@@ -1155,9 +1154,8 @@ module Cnvrg
1155
1154
  method_option :ignore, :type => :array, :aliases => ["-i", "--i"], :desc => "ignore following files"
1156
1155
  method_option :verbose, :type => :boolean, :aliases => ["-v"], :default => false
1157
1156
  method_option :sync, :type => :boolean, :aliases => ["-s"], :default => false
1158
- method_option :no_compression, :type => :boolean, :aliases => ["-nc", "--no_compression"], :default => false
1159
1157
 
1160
- def upload_data_tar(ignore, verbose, sync,no_compression)
1158
+ def upload_data_tar(ignore, verbose, sync)
1161
1159
 
1162
1160
  begin
1163
1161
  verify_logged_in(true)
@@ -1227,7 +1225,7 @@ module Cnvrg
1227
1225
  tar_files_path = "#{home_dir}/.cnvrg/tmp/#{@dataset.slug}_#{commit_sha1}.txt"
1228
1226
  tar_files = (result["added"] + result["updated_on_local"]).join("\n")
1229
1227
  File.open(tar_files_path, 'w') { |f| f.write tar_files }
1230
- is_tar = create_tar(dataset_dir, tar_path, tar_files_path,no_compression)
1228
+ is_tar = create_tar(dataset_dir, tar_path, tar_files_path)
1231
1229
  if !is_tar
1232
1230
  say "ERROR: Couldn't compress data", Thor::Shell::Color::RED
1233
1231
  FileUtils.rm_rf([tar_path]) if File.exist? tar_path
@@ -3543,6 +3541,7 @@ module Cnvrg
3543
3541
  container.stop()
3544
3542
  end
3545
3543
  rescue SignalException
3544
+ log_End(-1)
3546
3545
  if container
3547
3546
  container.stop()
3548
3547
  end
@@ -3552,98 +3551,6 @@ module Cnvrg
3552
3551
 
3553
3552
  end
3554
3553
 
3555
- method_option :small, :type => :boolean, :aliases => ["-sm", "--small"], :default => false
3556
- method_option :medium, :type => :boolean, :aliases => ["-md", "--medium"], :default => false
3557
- method_option :large, :type => :boolean, :aliases => ["-lg", "--large"], :default => false
3558
- method_option :gpu, :type => :boolean, :aliases => ["--gpu"], :default => false
3559
- method_option :gpuxl, :type => :boolean, :aliases => ["--gpuxl"], :default => false
3560
- method_option :gpuxxl, :type => :boolean, :aliases => ["--gpuxxl"], :default => false
3561
- method_option :image, :type => :string, :aliases => ["-i","--image"], :default => ""
3562
- method_option :public, :type => :boolean, :aliases => ["-p","--public"], :default => false
3563
- method_option :base, :type => :boolean, :aliases => ["-b","--base"], :default => false
3564
- method_option :python3, :type => :boolean, :aliases => ["--python3"], :default => false
3565
-
3566
- desc 'create_custom_image', 'run commands inside containers', :hide=>true
3567
-
3568
- def create_custom_image(image_name)
3569
- begin
3570
- verify_logged_in(false)
3571
- log_start(__method__, args, options)
3572
- instances = {"small" => options["small"], "medium" => options["medium"], "large" => options["large"],
3573
- "gpu" => options["gpu"], "gpuxl" => options["gpuxl"], "gpuxxl" => options["gpuxxl"]}
3574
- instance_type = get_instance_type(instances)
3575
- image_extend = options["image"]
3576
- public = options["public"]
3577
- base = options["base"]
3578
- python3 = options["python3"]
3579
- owner = CLI.get_owner
3580
- checks = Helpers.checkmark()
3581
-
3582
- say "Creating machine for custom image, this may take a few moments...", Thor::Shell::Color::BLUE
3583
-
3584
- resp = Images.create_new_custom_image(instance_type,owner,image_name,public,base,image_extend,python3)
3585
- if Cnvrg::CLI.is_response_success(resp,false)
3586
- image_slug = resp["result"]["slug"]
3587
- container = resp["result"]["machine_c"]
3588
- say "#{checks} Created image and machine successfully", Thor::Shell::Color::GREEN
3589
- say "Connecting to machine", Thor::Shell::Color::BLUE
3590
- ssh = Ssh.new(resp)
3591
- if !ssh.is_ssh
3592
- say "Couldn't connect to machine,aborting", Thor::Shell::Color::RED
3593
- Images.revoke_custom_new_image(owner, image_slug)
3594
- log_end(-1,"Couldn't connect to machine,aborting")
3595
- end
3596
- say "run command until ctrl + c initiates", Thor::Shell::Color::BLUE
3597
- begin
3598
-
3599
- while true
3600
- command = ask("$>")
3601
- puts ssh.exec_command(command)
3602
- end
3603
-
3604
- rescue SignalException
3605
- say "Commiting Image..", Thor::Shell::Color::BLUE
3606
-
3607
- end
3608
- resp = Images.commit_custom_image(owner,image_slug)
3609
- if Cnvrg::CLI.is_response_success(resp,false)
3610
- say "#{checks} Image commited successfuly, email will be sent when image is ready", Thor::Shell::Color::GREEN
3611
- end
3612
- if ssh
3613
- ssh.close_ssh()
3614
- end
3615
-
3616
-
3617
-
3618
-
3619
-
3620
-
3621
-
3622
- end
3623
- rescue =>e
3624
- puts e
3625
- if image_slug
3626
- Images.revoke_custom_new_image(owner, image_slug)
3627
- end
3628
- if ssh
3629
- ssh.close_ssh()
3630
- end
3631
-
3632
-
3633
- rescue SignalException
3634
- if image_slug
3635
- Images.revoke_custom_new_image(owner, image_slug)
3636
- end
3637
- if ssh
3638
- ssh.close_ssh
3639
- end
3640
- say "\nAborting"
3641
- exit(1)
3642
- end
3643
-
3644
- end
3645
-
3646
-
3647
3554
  desc 'build', 'run commands inside containers'
3648
3555
  method_option :install, :type => :string, :aliases => ["--i"], :default => nil, :desc => "Install from the given instructions file"
3649
3556
 
@@ -5045,14 +4952,10 @@ module Cnvrg
5045
4952
  end
5046
4953
  end
5047
4954
 
5048
- def create_tar(path_in, path_out, tar_files,no_compression=false)
4955
+ def create_tar(path_in, path_out, tar_files)
5049
4956
  #The cd is meant for cases when running cnvrg data uplaod not in the main folder
5050
4957
  begin
5051
- if no_compression
5052
- `cd #{path_in} && tar -cf #{path_out} -T #{tar_files}`
5053
- else
5054
- `cd #{path_in} && tar -czf #{path_out} -T #{tar_files}`
5055
- end
4958
+ `cd #{path_in} && tar -czf #{path_out} -T #{tar_files}`
5056
4959
  rescue => e
5057
4960
  puts "Exception while compressing data: #{e.message}"
5058
4961
  end
data/lib/cnvrg/data.rb CHANGED
@@ -11,9 +11,7 @@ class SubCommandBase < Thor
11
11
  end
12
12
 
13
13
  module Cnvrg
14
-
15
14
  class Data < SubCommandBase
16
- class_option :no_compression, :type => :boolean, :aliases => ["-nc", "--no_compression"], :default => false
17
15
  desc "data init", "init data folder"
18
16
  method_option :public, :type => :boolean, :aliases => ["-p", "--public"], :default => false
19
17
  def init
@@ -25,15 +23,13 @@ module Cnvrg
25
23
  method_option :ignore, :type => :array, :aliases => ["-i", "--i"], :desc => "ignore following files"
26
24
  method_option :verbose, :type => :boolean, :aliases => ["-v"], :default => false
27
25
  method_option :sync, :type => :boolean, :aliases => ["-s"], :default => false
28
- method_option :no_compression, :type => :boolean, :aliases => ["-nc", "--no_compression"], :default => false
29
-
30
26
  def upload
31
27
  cli = Cnvrg::CLI.new()
32
28
  ignore = options["ignore"]
33
29
  verbose = options["verbose"]
34
30
  sync = options["sync"]
35
- no_compression = options["no_compression"]
36
- cli.upload_data_tar(ignore, verbose,sync,no_compression)
31
+
32
+ cli.upload_data_tar(ignore, verbose,sync)
37
33
  end
38
34
  desc 'data download', 'pull data'
39
35
  method_option :verbose, :type => :boolean, :aliases => ["-v"], :default => false
@@ -234,7 +234,7 @@ module Cnvrg
234
234
  def upload_large_files_s3(upload_resp, file_path)
235
235
  begin
236
236
  sts_path = upload_resp["result"]["path_sts"]
237
- # s4cmd_path = upload_resp["result"]["path_s4cmd"]
237
+ s4cmd_path = upload_resp["result"]["path_s4cmd"]
238
238
 
239
239
  uri = URI.parse(sts_path)
240
240
  http_object = Net::HTTP.new(uri.host, uri.port)
@@ -261,51 +261,51 @@ module Cnvrg
261
261
  # end
262
262
  #
263
263
  # end
264
- resp = false
265
264
 
266
265
  if !s4cmd_suc and !s4cmd_install_suc
267
266
  s3 = Aws::S3::Resource.new(
268
- :access_key_id => URLcrypt.decrypt(upload_resp["result"]["new_a"]),
269
- :secret_access_key => URLcrypt.decrypt(upload_resp["result"]["new_s"]),
267
+ :access_key_id => URLcrypt.decrypt(upload_resp["result"]["sts_a"]),
268
+ :secret_access_key => URLcrypt.decrypt(upload_resp["result"]["sts_s"]),
269
+ :session_token => URLcrypt.decrypt(upload_resp["result"]["sts_st"]),
270
270
  :region => URLcrypt.decrypt(upload_resp["result"]["region"]))
271
271
  resp = s3.bucket(URLcrypt.decrypt(upload_resp["result"]["bucket"])).
272
272
  object(upload_resp["result"]["path"]+"/"+File.basename(file_path)).
273
273
  upload_file(file_path,{:use_accelerate_endpoint=>true})
274
274
 
275
- # else
276
-
277
- # s4cmd_uri = URI.parse(s4cmd_path)
278
- # s4cmd_http_object = Net::HTTP.new(s4cmd_uri.host, s4cmd_uri.port)
279
- # s4cmd_http_object.use_ssl = true if s4cmd_uri.scheme == 'https'
280
- # s4cmd_request = Net::HTTP::Get.new(s4cmd_path)
281
- #
282
- # s4cmd_body = ""
283
- # s4cmd_http_object.start do |http|
284
- # response = http.request s4cmd_request
285
- # s4cmd_body = response.read_body
286
- # end
287
- #
288
- # s4cmd_new_body = s4cmd_body.gsub(" self.client = self.boto3.client('s3',
289
- # aws_access_key_id=aws_access_key_id,
290
- # aws_secret_access_key=aws_secret_access_key)"," self.client = self.boto3.client('s3',
291
- # aws_access_key_id='#{ URLcrypt.decrypt(upload_resp["result"]["sts_a"])}',
292
- # aws_secret_access_key='#{URLcrypt.decrypt(upload_resp["result"]["sts_s"])}',
293
- # aws_session_token='#{URLcrypt.decrypt(upload_resp["result"]["sts_st"])}')")
294
- #
295
- # tmp = Tempfile.new('s4cmd.py')
296
- # tmp << s4cmd_new_body
297
- # tmp.flush
298
- # tmp.close
299
- #
300
- # is_success = false
301
- # count = 0
302
- # while !is_success and count <3
303
- # 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`
304
- # is_success =$?.success?
305
- # count +=1
306
- #
307
- # end
308
- # resp= is_success
275
+ else
276
+
277
+ s4cmd_uri = URI.parse(s4cmd_path)
278
+ s4cmd_http_object = Net::HTTP.new(s4cmd_uri.host, s4cmd_uri.port)
279
+ s4cmd_http_object.use_ssl = true if s4cmd_uri.scheme == 'https'
280
+ s4cmd_request = Net::HTTP::Get.new(s4cmd_path)
281
+
282
+ s4cmd_body = ""
283
+ s4cmd_http_object.start do |http|
284
+ response = http.request s4cmd_request
285
+ s4cmd_body = response.read_body
286
+ end
287
+
288
+ s4cmd_new_body = s4cmd_body.gsub(" self.client = self.boto3.client('s3',
289
+ aws_access_key_id=aws_access_key_id,
290
+ aws_secret_access_key=aws_secret_access_key)"," self.client = self.boto3.client('s3',
291
+ aws_access_key_id='#{ URLcrypt.decrypt(upload_resp["result"]["sts_a"])}',
292
+ aws_secret_access_key='#{URLcrypt.decrypt(upload_resp["result"]["sts_s"])}',
293
+ aws_session_token='#{URLcrypt.decrypt(upload_resp["result"]["sts_st"])}')")
294
+
295
+ tmp = Tempfile.new('s4cmd.py')
296
+ tmp << s4cmd_new_body
297
+ tmp.flush
298
+ tmp.close
299
+
300
+ is_success = false
301
+ count = 0
302
+ while !is_success and count <3
303
+ 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`
304
+ is_success =$?.success?
305
+ count +=1
306
+
307
+ end
308
+ resp= is_success
309
309
 
310
310
  end
311
311
 
@@ -313,9 +313,9 @@ module Cnvrg
313
313
 
314
314
  rescue => e
315
315
  puts e.message
316
- # if File.exist? tmp
317
- # FileUtils.rm_rf [tmp]
318
- # end
316
+ if File.exist? tmp
317
+ FileUtils.rm_rf [tmp]
318
+ end
319
319
  return false
320
320
 
321
321
  end
data/lib/cnvrg/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Cnvrg
2
- VERSION = '0.0.15000'
2
+ VERSION = '0.0.142561'
3
3
 
4
4
  end
5
5
 
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.0.15000
4
+ version: 0.0.142561
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: 2017-07-16 00:00:00.000000000 Z
12
+ date: 2017-07-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -329,20 +329,6 @@ dependencies:
329
329
  - - ">="
330
330
  - !ruby/object:Gem::Version
331
331
  version: '0'
332
- - !ruby/object:Gem::Dependency
333
- name: net-ssh
334
- requirement: !ruby/object:Gem::Requirement
335
- requirements:
336
- - - ">="
337
- - !ruby/object:Gem::Version
338
- version: '0'
339
- type: :runtime
340
- prerelease: false
341
- version_requirements: !ruby/object:Gem::Requirement
342
- requirements:
343
- - - ">="
344
- - !ruby/object:Gem::Version
345
- version: '0'
346
332
  description: A CLI tool for interacting with cnvrg.io.
347
333
  email:
348
334
  - info@cnvrg.io
@@ -367,7 +353,6 @@ files:
367
353
  - lib/cnvrg/job.rb
368
354
  - lib/cnvrg/project.rb
369
355
  - lib/cnvrg/runner.rb
370
- - lib/cnvrg/ssh.rb
371
356
  - lib/cnvrg/version.rb
372
357
  homepage: https://cnvrg.io
373
358
  licenses: []
@@ -388,9 +373,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
388
373
  version: '0'
389
374
  requirements: []
390
375
  rubyforge_project:
391
- rubygems_version: 2.5.1
376
+ rubygems_version: 2.6.12
392
377
  signing_key:
393
378
  specification_version: 4
394
379
  summary: A CLI tool for interacting with cnvrg.io.
395
380
  test_files: []
396
- has_rdoc:
data/lib/cnvrg/ssh.rb DELETED
@@ -1,95 +0,0 @@
1
- require 'fileutils'
2
- require 'cnvrg/files'
3
- require 'docker'
4
- require 'net/ssh'
5
-
6
-
7
- module Cnvrg
8
- class Ssh
9
- attr_reader :is_ssh
10
-
11
-
12
- def initialize(resp)
13
- begin
14
- @is_ssh = false
15
- sts_path = resp["result"]["sts_path"]
16
-
17
- uri = URI.parse(sts_path)
18
-
19
- http_object = Net::HTTP.new(uri.host, uri.port)
20
- http_object.use_ssl = true if uri.scheme == 'https'
21
- request = Net::HTTP::Get.new(sts_path)
22
-
23
- body = ""
24
- http_object.start do |http|
25
- response = http.request request
26
- body = response.read_body
27
- end
28
-
29
- URLcrypt::key = [body].pack('H*')
30
- ip = URLcrypt.decrypt(resp["result"]["machine_i"])
31
-
32
- @user = URLcrypt.decrypt(resp["result"]["machine_u"])
33
- key = URLcrypt.decrypt(resp["result"]["machine_k"])
34
- @container = URLcrypt.decrypt(resp["result"]["machine_c"])
35
-
36
- tempssh = Tempfile.new "sshkey"
37
- tempssh.write open(key).read
38
- tempssh.rewind
39
- key_path = tempssh.path
40
- count = 0
41
- while count < 5
42
-
43
- begin
44
- @ssh = Net::SSH.start(ip, user=@user, :keys => key_path, :timeout => 10)
45
- if !@ssh.nil?
46
- @is_ssh = true
47
- return
48
- else
49
- count+=1
50
- sleep(2)
51
-
52
- end
53
- rescue
54
- count+=1
55
- sleep(2)
56
-
57
-
58
- end
59
- end
60
- if tempssh
61
- tempssh.close
62
- tempssh.unlink
63
- end
64
- return false
65
- rescue => e
66
-
67
- puts e
68
- end
69
- end
70
-
71
-
72
-
73
- def exec_command(command)
74
- exec_command = "sudo -i -u #{@user} cnvrg exec_container #{@container} \"#{command}\" "
75
- return @ssh.exec!(exec_command)
76
- end
77
-
78
-
79
- def close_ssh()
80
-
81
-
82
- begin
83
-
84
- @ssh.close
85
- rescue => e
86
-
87
- end
88
-
89
-
90
- end
91
- end
92
-
93
-
94
-
95
- end