mcrain 0.2.2 → 0.2.3

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: fd68563f4ea83a5418e1106ae7e2b3985ad32868
4
- data.tar.gz: cb86a43b457ced1368d035f5135a431879bd55b1
3
+ metadata.gz: 7bd711b63ae1247796cdf3fb78912bf578bda379
4
+ data.tar.gz: f90930125af42815cc142baba7367e1a5e4c17f4
5
5
  SHA512:
6
- metadata.gz: caa302081b7135330540a07f646251b42819185b57ca13fe5e12dbeb9baab46da72f0d7a8ad6550200148fbc7c32f2946fefe24112f6a3598753e20eabb9d251
7
- data.tar.gz: a08e8f63163bb78283bda59e4c1a8d92b560890a005790dc53dc03ece3aca99a5310d7d578b35f498ed786cd82933b7dbf0b12206f9c298c7d2bfbd2fe87c644
6
+ metadata.gz: e36b0733ad2234c39c73a96bf11ffb4583e26b32c0ce8a93e8245084f6c81da8f745425437b7e7588ce1e3f2efb9c76f3506ba8435022535971a20f57915f0da
7
+ data.tar.gz: 6bb92a22b6e45df11ce6c4a10d4d56d98ee049e79df2a2c63249a10f47f768bbdc7ae209f5487f4e058100a832c55a81a9650f02467f2e33b3de14f9a80d87fa
data/lib/mcrain/base.rb CHANGED
@@ -82,7 +82,7 @@ module Mcrain
82
82
  rescue => e
83
83
  container.kill!
84
84
  end
85
- container.remove
85
+ container.remove unless ENV['MCRAIN_KEEP_CONTAINERS'] =~ /true|yes|on|1/i
86
86
  end
87
87
 
88
88
  end
@@ -3,8 +3,10 @@ require 'mcrain'
3
3
  require 'uri'
4
4
  require 'fileutils'
5
5
  require 'rbconfig'
6
+ require 'tmpdir'
6
7
 
7
8
  require 'net/scp'
9
+ require 'net/ssh'
8
10
  require 'docker'
9
11
 
10
12
  module Mcrain
@@ -31,7 +33,7 @@ module Mcrain
31
33
  end
32
34
 
33
35
  def setup_docker_options
34
- if RbConfig::CONFIG["host_os"] =~ /darwin/
36
+ if used?
35
37
  require 'docker'
36
38
  uri = URI.parse(ENV["DOCKER_HOST"])
37
39
  Excon.defaults[:ssl_verify_peer] = false
@@ -69,5 +71,70 @@ module Mcrain
69
71
  end
70
72
  end
71
73
 
74
+ BOOT2DOCKER_DOCKER_HOME = '/home/docker'.freeze
75
+
76
+ # return temporary dire for 2nd argument of Dir.mktmpdir
77
+ def tmpdir
78
+ used? ? File.join(BOOT2DOCKER_DOCKER_HOME, 'tmp', Dir.tmpdir) : Dir.tmpdir
79
+ end
80
+
81
+ def ssh_to_vm(&block)
82
+ host = used? ? URI.parse(ENV["DOCKER_HOST"]).host : "localhost"
83
+ Mcrain.logger.debug("connection STARTING to #{host} by SSH")
84
+ r = Net::SSH.start(host, "docker", :password => "tcuser", &block)
85
+ Mcrain.logger.debug("connection SUCCESS to #{host} by SSH")
86
+ return r
87
+ end
88
+
89
+ def mktmpdir(&block)
90
+ used? ? mktmpdir_ssh(&block) : mktmpdir_local(&block)
91
+ end
92
+
93
+ def mktmpdir_ssh(&block)
94
+ ssh_to_vm do |ssh|
95
+ return mktmpdir_remote(ssh, &block)
96
+ end
97
+ end
98
+
99
+ def mktmpdir_remote(ssh, &block)
100
+ Dir.mktmpdir do |orig_dir|
101
+ dir = File.join(BOOT2DOCKER_DOCKER_HOME, 'tmp', orig_dir)
102
+ cmd1 = "mkdir -p #{dir}"
103
+ Mcrain.logger.debug(cmd1)
104
+ ssh.exec! cmd1
105
+ if block_given?
106
+ begin
107
+ yield(dir)
108
+ ensure
109
+ begin
110
+ cmd2 = "rm -rf #{dir}"
111
+ Mcrain.logger.debug(cmd2)
112
+ ssh.exec! cmd2
113
+ rescue => e
114
+ Mcrain.logger.warn("[#{e.class}] #{e.message}")
115
+ end
116
+ end
117
+ end
118
+ return dir
119
+ end
120
+ end
121
+
122
+ def mktmpdir_local(*args)
123
+ r = Dir.mktmpdir(*args)
124
+ if block_given?
125
+ begin
126
+ yield(r)
127
+ ensure
128
+ Mcrain.logger.debug("removing #{r}")
129
+ begin
130
+ FileUtils.remove_entry_secure(r, true)
131
+ rescue => e
132
+ Mcrain.logger.warn("[#{e.class}] #{e.message}")
133
+ end
134
+ end
135
+ end
136
+ return r
137
+ end
138
+
72
139
  end
73
140
  end
@@ -1,3 +1,3 @@
1
1
  module Mcrain
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mcrain
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - akm