kitchen-lxc 0.0.1 → 0.1.0
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/LICENSE.txt +1 -1
- data/README.md +32 -7
- data/kitchen-lxc.gemspec +6 -6
- data/lib/kitchen/driver/lxc.rb +9 -7
- data/test/lxc_driver_tests.rb +5 -4
- metadata +31 -17
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9b48bbd0c4877b4b20f9d4ba3a96210d484810aa
|
|
4
|
+
data.tar.gz: 0012088b2a49f1a0abd894727b8c951985cf29b2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 865ecb374db59a9b18301e9134cc14cb54989ddd1df6565d7cd55b88370200d60d780ec97d5e04c2d3ef986914cbd78167ce64bf439ea57f1d9c0eb498dac2e7
|
|
7
|
+
data.tar.gz: 8f0e81d162ce7775afe5bb8687d240e349818e47e8ba80b3caf78c18bc114c8e494a86cd2d461b3200b20d62a032de34b7e934a7afa66c851eb522ee805a6057
|
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
|
@@ -3,10 +3,9 @@
|
|
|
3
3
|
The LXC driver for the Chef convergence integration test harness,
|
|
4
4
|
[Test Kitchen](https://github.com/test-kitchen).
|
|
5
5
|
|
|
6
|
-
Kitchen LXC
|
|
7
|
-
run a test suite.
|
|
6
|
+
Kitchen LXC uses ephemeral containers to run a test suite.
|
|
8
7
|
|
|
9
|
-
You may want to use the
|
|
8
|
+
You may want to use this instead of the
|
|
10
9
|
[Docker driver](https://github.com/portertech/kitchen-docker).
|
|
11
10
|
|
|
12
11
|
## Installation
|
|
@@ -23,8 +22,8 @@ And then execute:
|
|
|
23
22
|
|
|
24
23
|
### Configuration
|
|
25
24
|
|
|
26
|
-
####
|
|
27
|
-
The base LXC container
|
|
25
|
+
#### lxc_directory
|
|
26
|
+
The base LXC container directory on the host.
|
|
28
27
|
|
|
29
28
|
#### username
|
|
30
29
|
The username used to login to the container.
|
|
@@ -41,6 +40,29 @@ The SSH port used to login to the container.
|
|
|
41
40
|
|
|
42
41
|
Defaults to 22.
|
|
43
42
|
|
|
43
|
+
### System layout
|
|
44
|
+
|
|
45
|
+
This driver will map the platform name to a container name
|
|
46
|
+
with the defined lxc directory. The name is munged with a
|
|
47
|
+
simple gsub regex:
|
|
48
|
+
|
|
49
|
+
```ruby
|
|
50
|
+
name.gsub(/[_\-.]/, '')
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
and it will then look for container names that start with
|
|
54
|
+
the updated platform name. So, if the platform name is
|
|
55
|
+
'ubuntu', and the host system has 'ubuntu_1204' and 'ubuntu_1404',
|
|
56
|
+
the container used will be 'ubuntu_1204'
|
|
57
|
+
|
|
58
|
+
### System setup
|
|
59
|
+
|
|
60
|
+
An easy way to setup the host machine is to use the `vagabond` cookbook.
|
|
61
|
+
It will provide you with a collection of platforms including ubuntu,
|
|
62
|
+
centos, and debian. Just copy the `/opt/hw-lxc-config/id_rsa` to the
|
|
63
|
+
user's default key. This will remove the need to futz with user/pass
|
|
64
|
+
configuration.
|
|
65
|
+
|
|
44
66
|
### Example
|
|
45
67
|
|
|
46
68
|
`.kitchen.local.yml`
|
|
@@ -50,9 +72,8 @@ Defaults to 22.
|
|
|
50
72
|
driver_plugin: lxc
|
|
51
73
|
|
|
52
74
|
platforms:
|
|
53
|
-
- name:
|
|
75
|
+
- name: ubuntu
|
|
54
76
|
driver_config:
|
|
55
|
-
base_container: ubuntu_1204 # your base container name
|
|
56
77
|
username: kitchen # defaults to "root"
|
|
57
78
|
password: kitchen # defaults to "root"
|
|
58
79
|
```
|
|
@@ -73,6 +94,10 @@ Instance Driver Provisioner Last Action
|
|
|
73
94
|
default-ubuntu_1204 Lxc Chef Solo <Not Created>
|
|
74
95
|
```
|
|
75
96
|
|
|
97
|
+
## Note
|
|
98
|
+
|
|
99
|
+
Tests are failing right now. They'll be fixed soon!
|
|
100
|
+
|
|
76
101
|
## Contributing
|
|
77
102
|
|
|
78
103
|
1. Fork it
|
data/kitchen-lxc.gemspec
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
Gem::Specification.new do |gem|
|
|
2
2
|
gem.name = "kitchen-lxc"
|
|
3
|
-
gem.version = "0.0
|
|
4
|
-
gem.authors = ["Sean Porter"]
|
|
5
|
-
gem.email = ["portertech@gmail.com"]
|
|
3
|
+
gem.version = "0.1.0"
|
|
4
|
+
gem.authors = ["Sean Porter", "Chris Roberts"]
|
|
5
|
+
gem.email = ["portertech@gmail.com", "code@chrisroberts.org"]
|
|
6
6
|
gem.description = "LXC driver for Test Kitchen"
|
|
7
7
|
gem.summary = "LXC driver for Test Kitchen"
|
|
8
|
-
gem.homepage = "https://github.com/
|
|
8
|
+
gem.homepage = "https://github.com/chrisroberts/kitchen-lxc"
|
|
9
9
|
gem.license = "MIT"
|
|
10
10
|
gem.has_rdoc = false
|
|
11
11
|
|
|
12
|
-
gem.add_dependency("test-kitchen",
|
|
13
|
-
gem.add_dependency("elecksee",
|
|
12
|
+
gem.add_dependency("test-kitchen", '~> 1.2', '>= 1.2.1')
|
|
13
|
+
gem.add_dependency("elecksee", '~> 1.0', '>= 1.0.22')
|
|
14
14
|
|
|
15
15
|
gem.add_development_dependency("rake")
|
|
16
16
|
|
data/lib/kitchen/driver/lxc.rb
CHANGED
|
@@ -13,13 +13,17 @@ module Kitchen
|
|
|
13
13
|
default_config :username, "root" # most LXC templates use this
|
|
14
14
|
default_config :password, "root" # most LXC templates use this
|
|
15
15
|
|
|
16
|
-
default_config :original do |driver|
|
|
17
|
-
driver[:base_container]
|
|
18
|
-
end
|
|
19
|
-
|
|
20
16
|
no_parallel_for :create
|
|
21
17
|
|
|
22
18
|
def create(state)
|
|
19
|
+
name = instance.platform.name.gsub(/[_\-.]/, '')
|
|
20
|
+
names = Dir.glob(instance.driver.fetch(:lxc_directory, '/var/lib/lxc/*')).map do |path|
|
|
21
|
+
if(File.directory?(path))
|
|
22
|
+
File.basename(path)
|
|
23
|
+
end
|
|
24
|
+
end.compact.sort
|
|
25
|
+
config[:original] = names.detect{|n| n.start_with?(name)}
|
|
26
|
+
|
|
23
27
|
container = ::Lxc::Ephemeral.new(config.to_hash)
|
|
24
28
|
container.create!
|
|
25
29
|
|
|
@@ -35,13 +39,11 @@ module Kitchen
|
|
|
35
39
|
def destroy(state)
|
|
36
40
|
if state[:container_name]
|
|
37
41
|
lxc = ::Lxc.new(state[:container_name])
|
|
38
|
-
lxc.
|
|
42
|
+
lxc.stop
|
|
39
43
|
end
|
|
40
44
|
end
|
|
41
45
|
|
|
42
46
|
end
|
|
43
47
|
|
|
44
|
-
class LXC < Lxc; end
|
|
45
|
-
|
|
46
48
|
end
|
|
47
49
|
end
|
data/test/lxc_driver_tests.rb
CHANGED
|
@@ -1,24 +1,25 @@
|
|
|
1
1
|
require "minitest/spec"
|
|
2
2
|
require "minitest/autorun"
|
|
3
3
|
require "stringio"
|
|
4
|
+
require 'ostruct'
|
|
4
5
|
|
|
5
6
|
require File.join(File.dirname(__FILE__), "..", "lib", "kitchen", "driver", "lxc")
|
|
6
7
|
|
|
7
8
|
describe Kitchen::Driver::Lxc do
|
|
8
9
|
|
|
9
10
|
before do
|
|
10
|
-
@base_container = ENV["BASE_CONTAINER"]
|
|
11
|
-
raise "You must set BASE_CONTAINER" unless @base_container
|
|
12
11
|
driver_options = {
|
|
13
12
|
:kitchen_root => File.dirname(__FILE__),
|
|
14
|
-
:base_container => @base_container
|
|
15
13
|
}
|
|
16
14
|
@logger_output = StringIO.new
|
|
17
15
|
instance_options = {
|
|
18
16
|
:logger => Kitchen::Logger.new(:stdout => @logger_output),
|
|
19
17
|
:suite => Kitchen::Suite.new(:name => "test", :run_list => Array.new),
|
|
20
18
|
:platform => Kitchen::Platform.new(:name => @base_container),
|
|
21
|
-
:driver => Kitchen::Driver::Lxc.new(driver_options)
|
|
19
|
+
:driver => Kitchen::Driver::Lxc.new(driver_options),
|
|
20
|
+
:provisioner => Kitchen::Provisioner::Base.new,
|
|
21
|
+
:busser => Object.new,
|
|
22
|
+
:state_file => Kitchen::StateFile.new('default', OpenStruct.new(:name => 'ubuntu'))#Kitchen::Busser
|
|
22
23
|
}
|
|
23
24
|
@instance = Kitchen::Instance.new(instance_options)
|
|
24
25
|
end
|
metadata
CHANGED
|
@@ -1,65 +1,79 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: kitchen-lxc
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0
|
|
4
|
+
version: 0.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Sean Porter
|
|
8
|
+
- Chris Roberts
|
|
8
9
|
autorequire:
|
|
9
10
|
bindir: bin
|
|
10
11
|
cert_chain: []
|
|
11
|
-
date:
|
|
12
|
+
date: 2014-10-03 00:00:00.000000000 Z
|
|
12
13
|
dependencies:
|
|
13
14
|
- !ruby/object:Gem::Dependency
|
|
14
15
|
name: test-kitchen
|
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
|
16
17
|
requirements:
|
|
17
|
-
- -
|
|
18
|
+
- - "~>"
|
|
18
19
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 1.
|
|
20
|
+
version: '1.2'
|
|
21
|
+
- - ">="
|
|
22
|
+
- !ruby/object:Gem::Version
|
|
23
|
+
version: 1.2.1
|
|
20
24
|
type: :runtime
|
|
21
25
|
prerelease: false
|
|
22
26
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
27
|
requirements:
|
|
24
|
-
- -
|
|
28
|
+
- - "~>"
|
|
29
|
+
- !ruby/object:Gem::Version
|
|
30
|
+
version: '1.2'
|
|
31
|
+
- - ">="
|
|
25
32
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: 1.
|
|
33
|
+
version: 1.2.1
|
|
27
34
|
- !ruby/object:Gem::Dependency
|
|
28
35
|
name: elecksee
|
|
29
36
|
requirement: !ruby/object:Gem::Requirement
|
|
30
37
|
requirements:
|
|
31
|
-
- -
|
|
38
|
+
- - "~>"
|
|
32
39
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: 1.0
|
|
40
|
+
version: '1.0'
|
|
41
|
+
- - ">="
|
|
42
|
+
- !ruby/object:Gem::Version
|
|
43
|
+
version: 1.0.22
|
|
34
44
|
type: :runtime
|
|
35
45
|
prerelease: false
|
|
36
46
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
47
|
requirements:
|
|
38
|
-
- -
|
|
48
|
+
- - "~>"
|
|
49
|
+
- !ruby/object:Gem::Version
|
|
50
|
+
version: '1.0'
|
|
51
|
+
- - ">="
|
|
39
52
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: 1.0.
|
|
53
|
+
version: 1.0.22
|
|
41
54
|
- !ruby/object:Gem::Dependency
|
|
42
55
|
name: rake
|
|
43
56
|
requirement: !ruby/object:Gem::Requirement
|
|
44
57
|
requirements:
|
|
45
|
-
- -
|
|
58
|
+
- - ">="
|
|
46
59
|
- !ruby/object:Gem::Version
|
|
47
60
|
version: '0'
|
|
48
61
|
type: :development
|
|
49
62
|
prerelease: false
|
|
50
63
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
64
|
requirements:
|
|
52
|
-
- -
|
|
65
|
+
- - ">="
|
|
53
66
|
- !ruby/object:Gem::Version
|
|
54
67
|
version: '0'
|
|
55
68
|
description: LXC driver for Test Kitchen
|
|
56
69
|
email:
|
|
57
70
|
- portertech@gmail.com
|
|
71
|
+
- code@chrisroberts.org
|
|
58
72
|
executables: []
|
|
59
73
|
extensions: []
|
|
60
74
|
extra_rdoc_files: []
|
|
61
75
|
files:
|
|
62
|
-
- .gitignore
|
|
76
|
+
- ".gitignore"
|
|
63
77
|
- Gemfile
|
|
64
78
|
- LICENSE.txt
|
|
65
79
|
- README.md
|
|
@@ -67,7 +81,7 @@ files:
|
|
|
67
81
|
- kitchen-lxc.gemspec
|
|
68
82
|
- lib/kitchen/driver/lxc.rb
|
|
69
83
|
- test/lxc_driver_tests.rb
|
|
70
|
-
homepage: https://github.com/
|
|
84
|
+
homepage: https://github.com/chrisroberts/kitchen-lxc
|
|
71
85
|
licenses:
|
|
72
86
|
- MIT
|
|
73
87
|
metadata: {}
|
|
@@ -77,17 +91,17 @@ require_paths:
|
|
|
77
91
|
- lib
|
|
78
92
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
79
93
|
requirements:
|
|
80
|
-
- -
|
|
94
|
+
- - ">="
|
|
81
95
|
- !ruby/object:Gem::Version
|
|
82
96
|
version: '0'
|
|
83
97
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
84
98
|
requirements:
|
|
85
|
-
- -
|
|
99
|
+
- - ">="
|
|
86
100
|
- !ruby/object:Gem::Version
|
|
87
101
|
version: '0'
|
|
88
102
|
requirements: []
|
|
89
103
|
rubyforge_project:
|
|
90
|
-
rubygems_version: 2.
|
|
104
|
+
rubygems_version: 2.2.2
|
|
91
105
|
signing_key:
|
|
92
106
|
specification_version: 4
|
|
93
107
|
summary: LXC driver for Test Kitchen
|