mcrain 0.2.2 → 0.2.3

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: 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