kitchen-transport-docker 0.0.2
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 +7 -0
- data/.gitignore +3 -0
- data/Gemfile +3 -0
- data/README.md +17 -0
- data/Rakefile +3 -0
- data/kitchen-transport-docker.gemspec +25 -0
- data/lib/kitchen-transport-docker.rb +3 -0
- data/lib/kitchen-transport-docker/version.rb +3 -0
- data/lib/kitchen/transport/dockercp.rb +49 -0
- metadata +94 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 4c863044af03ce03ba44c822709482d97677a0ca
|
|
4
|
+
data.tar.gz: 5cd54185f9119492dfbcc484b9dc4f3d3d1eda88
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 80c3a29e31e77bb6787aac634087963c138bf2aa713dae1957e2c4983eb2f805f715693f2278b24f5904709ed07062a3e1cc1e262104442d5c1f2b9e326d0977
|
|
7
|
+
data.tar.gz: 959d4af052595fb1b26f2aab79dc8a0a14872c99c0c92229bcdb12b0644f410d65b708ad991e6316ab5cf6128543f48a0205d77a5e3c1ccf48cd087f7188b7f2
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
kitchen-transport-docker
|
|
2
|
+
============
|
|
3
|
+
|
|
4
|
+
If you run test-kitchen using docker, speed up your tests by using docker cp instead of an SSH-based transport.
|
|
5
|
+
|
|
6
|
+
kitchen-transport-docker uses the kitchen ssh transport for everything but uploading files. For that, it uses docker cp.
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
Quick Start
|
|
10
|
+
-----------
|
|
11
|
+
|
|
12
|
+
Run `chef gem install kitchen-transport-docker` and then set your transport to `dockercp`:
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
transport:
|
|
16
|
+
name: dockercp
|
|
17
|
+
```
|
data/Rakefile
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
+
require 'kitchen-transport-docker/version'
|
|
5
|
+
|
|
6
|
+
Gem::Specification.new do |spec|
|
|
7
|
+
spec.name = 'kitchen-transport-docker'
|
|
8
|
+
spec.version = KitchenTransportDocker::VERSION
|
|
9
|
+
spec.authors = ['Dale Hamel']
|
|
10
|
+
spec.email = ['dale.hamel@srvthe.net']
|
|
11
|
+
spec.description = %q{Faster file transfer with docker copy}
|
|
12
|
+
spec.summary = spec.description
|
|
13
|
+
spec.homepage = 'https://github.com/dalehamel/kitchen-transport-docker'
|
|
14
|
+
spec.license = 'Apache 2.0'
|
|
15
|
+
|
|
16
|
+
spec.files = `git ls-files`.split($/)
|
|
17
|
+
spec.executables = []
|
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
19
|
+
spec.require_paths = ['lib']
|
|
20
|
+
|
|
21
|
+
spec.add_dependency 'test-kitchen', '>= 1.0.0'
|
|
22
|
+
|
|
23
|
+
spec.add_development_dependency 'bundler'
|
|
24
|
+
spec.add_development_dependency 'rake'
|
|
25
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
require 'benchmark'
|
|
2
|
+
require 'json'
|
|
3
|
+
|
|
4
|
+
require 'kitchen/transport/ssh'
|
|
5
|
+
|
|
6
|
+
# Inspired by kitchen-sync
|
|
7
|
+
module Kitchen
|
|
8
|
+
module Transport
|
|
9
|
+
class Dockercp < Ssh
|
|
10
|
+
|
|
11
|
+
# Copy-pasta from Ssh#create_new_connection because I need the SFTP
|
|
12
|
+
# connection class.
|
|
13
|
+
# Tracked in https://github.com/test-kitchen/test-kitchen/pull/726
|
|
14
|
+
def create_new_connection(options, &block)
|
|
15
|
+
if @connection
|
|
16
|
+
logger.debug("[SSH] shutting previous connection #{@connection}")
|
|
17
|
+
@connection.close
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
@connection_options = options
|
|
21
|
+
@connection = self.class::Connection.new(options.merge(instance: instance), &block)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
class Connection < Ssh::Connection
|
|
25
|
+
|
|
26
|
+
def initialize(opts)
|
|
27
|
+
@instance = opts.delete(:instance)
|
|
28
|
+
@container_name = @instance.driver.send(:config)[:instance_name]
|
|
29
|
+
super
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def upload(locals, remote)
|
|
33
|
+
puts "Upload"
|
|
34
|
+
Array(locals).each do |local|
|
|
35
|
+
full_remote = File.join(remote, File.basename(local))
|
|
36
|
+
options = {
|
|
37
|
+
recursive: File.directory?(local),
|
|
38
|
+
purge: File.basename(local) != 'cache',
|
|
39
|
+
}
|
|
40
|
+
time = Benchmark.realtime do
|
|
41
|
+
system("docker cp #{local} #{@container_name}:#{full_remote}")
|
|
42
|
+
end
|
|
43
|
+
logger.info("[Docker CP] Time taken to upload #{local} to #{@container_name}:#{full_remote}: %.2f sec" % time)
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: kitchen-transport-docker
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.2
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Dale Hamel
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2016-07-06 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: test-kitchen
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ">="
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: 1.0.0
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - ">="
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: 1.0.0
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: bundler
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - ">="
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '0'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - ">="
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: rake
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - ">="
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '0'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ">="
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
55
|
+
description: Faster file transfer with docker copy
|
|
56
|
+
email:
|
|
57
|
+
- dale.hamel@srvthe.net
|
|
58
|
+
executables: []
|
|
59
|
+
extensions: []
|
|
60
|
+
extra_rdoc_files: []
|
|
61
|
+
files:
|
|
62
|
+
- ".gitignore"
|
|
63
|
+
- Gemfile
|
|
64
|
+
- README.md
|
|
65
|
+
- Rakefile
|
|
66
|
+
- kitchen-transport-docker.gemspec
|
|
67
|
+
- lib/kitchen-transport-docker.rb
|
|
68
|
+
- lib/kitchen-transport-docker/version.rb
|
|
69
|
+
- lib/kitchen/transport/dockercp.rb
|
|
70
|
+
homepage: https://github.com/dalehamel/kitchen-transport-docker
|
|
71
|
+
licenses:
|
|
72
|
+
- Apache 2.0
|
|
73
|
+
metadata: {}
|
|
74
|
+
post_install_message:
|
|
75
|
+
rdoc_options: []
|
|
76
|
+
require_paths:
|
|
77
|
+
- lib
|
|
78
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - ">="
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0'
|
|
83
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
84
|
+
requirements:
|
|
85
|
+
- - ">="
|
|
86
|
+
- !ruby/object:Gem::Version
|
|
87
|
+
version: '0'
|
|
88
|
+
requirements: []
|
|
89
|
+
rubyforge_project:
|
|
90
|
+
rubygems_version: 2.5.1
|
|
91
|
+
signing_key:
|
|
92
|
+
specification_version: 4
|
|
93
|
+
summary: Faster file transfer with docker copy
|
|
94
|
+
test_files: []
|