vagrant-lxc 0.3.2 → 0.3.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 +4 -4
- data/.gitignore +3 -2
- data/.travis.yml +1 -1
- data/.vimrc +1 -1
- data/CHANGELOG.md +12 -0
- data/Gemfile.lock +1 -1
- data/Guardfile +2 -18
- data/README.md +34 -7
- data/boxes/{quantal64/download-ubuntu → ubuntu/download} +2 -21
- data/boxes/ubuntu/install-chef +14 -0
- data/boxes/ubuntu/install-puppet +12 -0
- data/boxes/{quantal64 → ubuntu}/lxc-template +2 -2
- data/boxes/{quantal64/metadata.json → ubuntu/metadata.json.template} +2 -2
- data/development/Vagrantfile +49 -10
- data/development/site.pp +2 -2
- data/example/Vagrantfile +13 -7
- data/lib/vagrant-lxc/action/clear_forwarded_ports.rb +1 -1
- data/lib/vagrant-lxc/action/forward_ports.rb +1 -1
- data/lib/vagrant-lxc/version.rb +1 -1
- data/spec/Vagrantfile +33 -0
- data/spec/acceptance/sanity_check_spec.rb +79 -0
- data/spec/acceptance/support/acceptance_example_group.rb +56 -0
- data/spec/acceptance/support/machine_ext.rb +13 -0
- data/spec/acceptance/support/test_ui.rb +22 -0
- data/spec/acceptance_helper.rb +21 -0
- data/spec/spec_helper.rb +2 -8
- data/spec/support/.gitkeep +0 -0
- data/spec/unit/action/clear_forwarded_ports_spec.rb +3 -3
- data/spec/unit/action/forward_ports_spec.rb +2 -2
- data/spec/{support → unit/support}/unit_example_group.rb +3 -0
- data/spec/unit_helper.rb +6 -0
- data/tasks/boxes.rake +74 -13
- data/tasks/spec.rake +6 -3
- metadata +23 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e016d9b9740eb13e9c7ea4a907b11b68985c4375
|
4
|
+
data.tar.gz: 87be64028dec8c58df5d0ae1620f4dc6eccaab57
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3cb85194a618d8f52280ae67bb87be6a02c8fe69089ec0eb9858dbe34fad8328a11fbf21cc97378a1cb5cbd810191639b944f86329ace4289eb9dfecf1965e48
|
7
|
+
data.tar.gz: 6aff2121764c2d6f9149c861949cd2148b429d3df03d7adf95c1fbf5499f878aa23ab34786b7f63c421f3f280d3a3c5fbb10d187d6cd90c712b9e35f77266e91
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/.vimrc
CHANGED
@@ -1 +1 @@
|
|
1
|
-
set wildignore+=*/boxes
|
1
|
+
set wildignore+=*/boxes/*/rootfs/*,*/boxes/*/partial/*
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
## [0.3.3](https://github.com/fgrehm/vagrant-lxc/compare/v0.3.2...v0.3.3) (April 23, 2013)
|
2
|
+
|
3
|
+
BUG FIXES:
|
4
|
+
|
5
|
+
- Properly kill `redir` child processes [#59][]
|
6
|
+
|
7
|
+
IMPROVEMENTS:
|
8
|
+
|
9
|
+
- Initial acceptance test suite
|
10
|
+
- New rake tasks for building Ubuntu precise and raring base amd64 boxes
|
11
|
+
|
1
12
|
## [0.3.2](https://github.com/fgrehm/vagrant-lxc/compare/v0.3.1...v0.3.2) (April 18, 2013)
|
2
13
|
|
3
14
|
- Do not display port forwarding message in case no forwarded ports were set
|
@@ -14,6 +25,7 @@ BACKWARDS INCOMPATIBILITIES:
|
|
14
25
|
- `start_opts` config was renamed to `customize`, please check the README for the expected parameters
|
15
26
|
- V1 boxes are no longer supported
|
16
27
|
- `target_rootfs_path` is no longer supported, just symlink `/var/lib/lxc` to the desired folder in case you want to point it to another partition
|
28
|
+
- Removed support for configuring private networks. It will come back at some point in the future but if you need it you should be able to set using `customize 'network.ipv4', '1.2.3.4'`
|
17
29
|
|
18
30
|
IMPROVEMENTS:
|
19
31
|
|
data/Gemfile.lock
CHANGED
data/Guardfile
CHANGED
@@ -1,6 +1,3 @@
|
|
1
|
-
# A sample Guardfile
|
2
|
-
# More info at https://github.com/guard/guard#readme
|
3
|
-
|
4
1
|
guard 'bundler' do
|
5
2
|
watch('Gemfile')
|
6
3
|
watch(/^.+\.gemspec/)
|
@@ -15,20 +12,7 @@ guard 'rspec' do
|
|
15
12
|
watch(%r{^spec/.+_spec\.rb$})
|
16
13
|
watch(%r{^lib/vagrant-lxc/(.+)\.rb$}) { |m| "spec/unit/#{m[1]}_spec.rb" }
|
17
14
|
watch('spec/unit_helper.rb') { "spec/unit" }
|
15
|
+
watch('spec/acceptance_helper.rb') { "spec/acceptance" }
|
18
16
|
watch('spec/spec_helper.rb') { "spec/" }
|
19
|
-
|
20
|
-
# Rails example
|
21
|
-
watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
22
|
-
watch(%r{^app/(.*)(\.erb|\.haml)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
|
23
|
-
watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
|
24
|
-
watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
|
25
|
-
watch('config/routes.rb') { "spec/routing" }
|
26
|
-
watch('app/controllers/application_controller.rb') { "spec/controllers" }
|
27
|
-
|
28
|
-
# Capybara features specs
|
29
|
-
watch(%r{^app/views/(.+)/.*\.(erb|haml)$}) { |m| "spec/features/#{m[1]}_spec.rb" }
|
30
|
-
|
31
|
-
# Turnip features and steps
|
32
|
-
watch(%r{^spec/acceptance/(.+)\.feature$})
|
33
|
-
watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' }
|
17
|
+
watch(%r{^spec/support/(.+)\.rb$}) { "spec/" }
|
34
18
|
end
|
data/README.md
CHANGED
@@ -8,7 +8,6 @@ Linux Containers support for Vagrant 1.1+
|
|
8
8
|
* Vagrant 1.1+ (1.1.3+ recommended)
|
9
9
|
* lxc 0.7.5+ (0.8.0-rc1+ recommended)
|
10
10
|
* redir (if you are planning to use port forwarding)
|
11
|
-
* arch command (uname -m) on PATH
|
12
11
|
* A Kernel [higher than 3.5.0-17.28](#help-im-unable-to-restart-containers)
|
13
12
|
|
14
13
|
On a clean Ubuntu 12.10 machine it means something like:
|
@@ -22,7 +21,7 @@ sudo dpkg -i /tmp/vagrant.deb
|
|
22
21
|
```
|
23
22
|
|
24
23
|
|
25
|
-
## What is currently supported?
|
24
|
+
## What is currently supported?
|
26
25
|
|
27
26
|
Pretty much everything you need from Vagrant:
|
28
27
|
|
@@ -40,8 +39,6 @@ and the [changelog](CHANGELOG.md) for most up to date information.*
|
|
40
39
|
|
41
40
|
* Does not detect forwarded ports collision, right now you are responsible for taking care of that
|
42
41
|
* A hell lot of `sudo`s (this will probably be like this until [user namespaces](http://s3hh.wordpress.com/2013/02/12/user-namespaces-lxc-meeting/) are supported)
|
43
|
-
* Only a [single ubuntu box supported](boxes)
|
44
|
-
* "[works on my machine](https://github.com/fgrehm/vagrant-lxc/issues/20)" (TM)
|
45
42
|
* [Does not tell you if dependencies are not met](https://github.com/fgrehm/vagrant-lxc/issues/11)
|
46
43
|
(will probably just throw up some random error)
|
47
44
|
* + bunch of other [core features](https://github.com/fgrehm/vagrant-lxc/issues?labels=core&milestone=&page=1&state=open)
|
@@ -56,16 +53,17 @@ vagrant plugin install vagrant-lxc
|
|
56
53
|
|
57
54
|
## Usage
|
58
55
|
|
59
|
-
After installing, add
|
56
|
+
After installing, add a [base box](#available-boxes) using any name you want, for example:
|
60
57
|
|
61
58
|
```
|
62
|
-
vagrant box add lxc-quantal64 http://dl.dropbox.com/u/13510779/lxc-
|
59
|
+
vagrant box add lxc-quantal64 http://dl.dropbox.com/u/13510779/lxc-quantal-amd64-2013-04-21.box
|
63
60
|
```
|
64
61
|
|
65
62
|
Make a Vagrantfile that looks like the following, filling in your information where necessary:
|
66
63
|
|
67
64
|
```ruby
|
68
65
|
Vagrant.configure("2") do |config|
|
66
|
+
# Change it to the name of the box you have just added
|
69
67
|
config.vm.box = "lxc-quantal64"
|
70
68
|
|
71
69
|
# You can omit this block if you don't need to override any container setting
|
@@ -83,6 +81,24 @@ And finally run `vagrant up --provider=lxc`.
|
|
83
81
|
If you are on a mac or window host and still want to try this plugin out, you
|
84
82
|
can use the [same Vagrant VirtualBox machine I use for development](#using-virtualbox-for-development).
|
85
83
|
|
84
|
+
### Available boxes
|
85
|
+
|
86
|
+
| LINK | DESCRIPTION |
|
87
|
+
| --- | --- |
|
88
|
+
| [lxc-raring-amd64-2013-04-21.box](http://dl.dropbox.com/u/13510779/lxc-raring-amd64-2013-04-21.box) | Ubuntu 13.04 Raring x86_64 (Puppet 3.1.1) |
|
89
|
+
| [lxc-quantal-amd64-2013-04-21.box](http://dl.dropbox.com/u/13510779/lxc-quantal-amd64-2013-04-21.box) | Ubuntu 12.10 Quantal x86_64 (Puppet 3.1.1 & Chef 11.4.0) |
|
90
|
+
| [lxc-precise-amd64-2013-04-21.box](http://dl.dropbox.com/u/13510779/lxc-precise-amd64-2013-04-21.box) | Ubuntu 12.04 Precise x86_64 (Puppet 3.1.1 & Chef 11.4.0) |
|
91
|
+
|
92
|
+
*Please note that I'm currently using only the quantal x86_64 on a daily basis,
|
93
|
+
and I've only done some basic testing with the others*
|
94
|
+
|
95
|
+
You can also build a clean box by providing `CHEF=0` and `PUPPET=0` to the available
|
96
|
+
[rake tasks](tasks/boxes.rake). For example:
|
97
|
+
|
98
|
+
```
|
99
|
+
CHEF=0 PUPPET=0 rake boxes:ubuntu:build:precise64
|
100
|
+
```
|
101
|
+
|
86
102
|
### Storing container's rootfs on a separate partition
|
87
103
|
|
88
104
|
Before the 0.3.0 version of this plugin, there used to be a support for specifying
|
@@ -104,7 +120,13 @@ If want to develop from your physical machine, just sing that same old song:
|
|
104
120
|
git clone git://github.com/fgrehm/vagrant-lxc.git
|
105
121
|
cd vagrant-lxc
|
106
122
|
bundle install
|
107
|
-
bundle exec rake # to run
|
123
|
+
bundle exec rake # to run unit specs
|
124
|
+
```
|
125
|
+
|
126
|
+
To run acceptance specs, you'll have to ssh into one of the [development boxes](development/Vagrantfile) and run:
|
127
|
+
|
128
|
+
```
|
129
|
+
bundle exec rake spec:acceptance
|
108
130
|
```
|
109
131
|
|
110
132
|
To build the provided quantal64 box:
|
@@ -179,6 +201,11 @@ and try to `vagrant reload` the dev box. If it still doesn't work,
|
|
179
201
|
please file a bug at the [issue tracker](https://github.com/fgrehm/vagrant-lxc/issues).
|
180
202
|
|
181
203
|
|
204
|
+
## Similar projects
|
205
|
+
|
206
|
+
* [vagabond](https://github.com/chrisroberts/vagabond) - "a tool integrated with Chef to build local nodes easily"
|
207
|
+
* [vagueant](https://github.com/neerolyte/vagueant) - "vaguely like Vagrant for linux containers (lxc)"
|
208
|
+
|
182
209
|
## Contributing
|
183
210
|
|
184
211
|
1. Fork it
|
@@ -3,7 +3,6 @@
|
|
3
3
|
# This is the code extracted from /usr/share/lxc/templates/lxc-ubuntu
|
4
4
|
# that comes with Ubuntu 12.10 which is responsible for downloading the
|
5
5
|
# rootfs files / packages
|
6
|
-
# It also installs puppet and chef on the container
|
7
6
|
|
8
7
|
set -e
|
9
8
|
|
@@ -92,8 +91,8 @@ EOF
|
|
92
91
|
}
|
93
92
|
|
94
93
|
declare cache=`readlink -f .` \
|
95
|
-
arch
|
96
|
-
release
|
94
|
+
arch=$1 \
|
95
|
+
release=$2
|
97
96
|
|
98
97
|
if [ -d "${cache}/rootfs" ]; then
|
99
98
|
echo 'The rootfs cache has been built already, please remove it if you want to update'
|
@@ -101,21 +100,3 @@ if [ -d "${cache}/rootfs" ]; then
|
|
101
100
|
fi
|
102
101
|
|
103
102
|
download_ubuntu $cache $arch $release
|
104
|
-
|
105
|
-
rootfs="${cache}/rootfs"
|
106
|
-
|
107
|
-
echo "installing puppet"
|
108
|
-
wget http://apt.puppetlabs.com/puppetlabs-release-precise.deb -O "${rootfs}/tmp/puppetlabs-release-${release}.deb"
|
109
|
-
chroot $rootfs dpkg -i "/tmp/puppetlabs-release-${release}.deb"
|
110
|
-
chroot $rootfs apt-get update
|
111
|
-
chroot $rootfs apt-get install puppet -y
|
112
|
-
|
113
|
-
echo "installing chef"
|
114
|
-
cat > $rootfs/tmp/install-chef.sh << EOF
|
115
|
-
#!/bin/sh
|
116
|
-
curl -L https://www.opscode.com/chef/install.sh -k | sudo bash
|
117
|
-
EOF
|
118
|
-
chmod +x $rootfs/tmp/install-chef.sh
|
119
|
-
chroot $rootfs /tmp/install-chef.sh
|
120
|
-
|
121
|
-
rm -rf $rootfs/tmp/*
|
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
cache=`readlink -f .`
|
4
|
+
rootfs="${cache}/rootfs"
|
5
|
+
|
6
|
+
echo "installing chef"
|
7
|
+
cat > $rootfs/tmp/install-chef.sh << EOF
|
8
|
+
#!/bin/sh
|
9
|
+
curl -L https://www.opscode.com/chef/install.sh -k | sudo bash
|
10
|
+
EOF
|
11
|
+
chmod +x $rootfs/tmp/install-chef.sh
|
12
|
+
chroot $rootfs /tmp/install-chef.sh
|
13
|
+
|
14
|
+
rm -rf $rootfs/tmp/*
|
@@ -0,0 +1,12 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
cache=`readlink -f .`
|
4
|
+
rootfs="${cache}/rootfs"
|
5
|
+
|
6
|
+
echo "installing puppet"
|
7
|
+
wget http://apt.puppetlabs.com/puppetlabs-release-stable.deb -O "${rootfs}/tmp/puppetlabs-release-stable.deb"
|
8
|
+
chroot $rootfs dpkg -i "/tmp/puppetlabs-release-stable.deb"
|
9
|
+
chroot $rootfs apt-get update
|
10
|
+
chroot $rootfs apt-get install puppet -y
|
11
|
+
|
12
|
+
rm -rf $rootfs/tmp/*
|
@@ -469,7 +469,7 @@ if [ -f /etc/lsb-release ]; then
|
|
469
469
|
fi
|
470
470
|
fi
|
471
471
|
|
472
|
-
arch=$(
|
472
|
+
arch=$(uname -m)
|
473
473
|
|
474
474
|
# Code taken from debootstrap
|
475
475
|
if [ -x /usr/bin/dpkg ] && /usr/bin/dpkg --print-architecture >/dev/null 2>&1; then
|
@@ -477,7 +477,7 @@ if [ -x /usr/bin/dpkg ] && /usr/bin/dpkg --print-architecture >/dev/null 2>&1; t
|
|
477
477
|
elif type udpkg >/dev/null 2>&1 && udpkg --print-architecture >/dev/null 2>&1; then
|
478
478
|
arch=`/usr/bin/udpkg --print-architecture`
|
479
479
|
else
|
480
|
-
arch=$(
|
480
|
+
arch=$(uname -m)
|
481
481
|
if [ "$arch" = "i686" ]; then
|
482
482
|
arch="i386"
|
483
483
|
elif [ "$arch" = "x86_64" ]; then
|
data/development/Vagrantfile
CHANGED
@@ -25,17 +25,11 @@ end
|
|
25
25
|
Vagrant.require_plugin 'vagrant-lxc'
|
26
26
|
|
27
27
|
Vagrant.configure("2") do |config|
|
28
|
-
config.vm.
|
29
|
-
|
30
|
-
config.vm.synced_folder "../", "/vagrant", id: 'vagrant-root'
|
31
|
-
|
32
|
-
cache_dir = local_apt_cache(config.vm.box)
|
33
|
-
config.vm.synced_folder cache_dir, "/var/cache/apt/archives", id: "vagrant-apt-cache"
|
34
|
-
|
35
|
-
cache_dir = local_gem_cache(config.vm.box)
|
36
|
-
config.vm.synced_folder cache_dir, "/home/vagrant/gems/cache", id: "vagrant-gem-cache"
|
28
|
+
config.vm.synced_folder "../", "/vagrant", id: 'vagrant-root', nfs: true
|
37
29
|
|
38
30
|
config.vm.define :vbox do |vb_config|
|
31
|
+
vb_config.vm.network :private_network, ip: "192.168.50.33"
|
32
|
+
vb_config.vm.box = 'quantal64'
|
39
33
|
vb_config.vm.box_url = "https://github.com/downloads/roderik/VagrantQuantal64Box/quantal64.box"
|
40
34
|
vb_config.vm.hostname = 'vbox'
|
41
35
|
|
@@ -47,17 +41,62 @@ Vagrant.configure("2") do |config|
|
|
47
41
|
"--cpus", '2'
|
48
42
|
]
|
49
43
|
end
|
44
|
+
|
45
|
+
cache_dir = local_apt_cache(vb_config.vm.box)
|
46
|
+
vb_config.vm.synced_folder cache_dir, "/var/cache/apt/archives", id: "vagrant-apt-cache"
|
47
|
+
|
48
|
+
cache_dir = local_gem_cache(vb_config.vm.box)
|
49
|
+
vb_config.vm.synced_folder cache_dir, "/home/vagrant/gems/cache", id: "vagrant-gem-cache"
|
50
50
|
end
|
51
51
|
|
52
52
|
config.vm.define :precise do |precise|
|
53
|
+
precise.vm.network :private_network, ip: "192.168.50.32"
|
53
54
|
precise.vm.box = 'precise64'
|
54
55
|
precise.vm.hostname = 'vbox'
|
55
56
|
precise.vm.box_url = 'http://files.vagrantup.com/precise64.box'
|
57
|
+
|
58
|
+
precise.vm.provider :virtualbox do |vb|
|
59
|
+
# Configure VM to use 1.5gb of ram and 2 cpus
|
60
|
+
vb.customize [
|
61
|
+
"modifyvm", :id,
|
62
|
+
"--memory", '1536',
|
63
|
+
"--cpus", '2'
|
64
|
+
]
|
65
|
+
end
|
66
|
+
|
67
|
+
cache_dir = local_apt_cache(precise.vm.box)
|
68
|
+
precise.vm.synced_folder cache_dir, "/var/cache/apt/archives", id: "vagrant-apt-cache"
|
69
|
+
|
70
|
+
cache_dir = local_gem_cache(precise.vm.box)
|
71
|
+
precise.vm.synced_folder cache_dir, "/home/vagrant/gems/cache", id: "vagrant-gem-cache"
|
72
|
+
end
|
73
|
+
|
74
|
+
config.vm.define :raring do |raring|
|
75
|
+
raring.vm.network :private_network, ip: "192.168.50.34"
|
76
|
+
raring.vm.box = 'raring64'
|
77
|
+
raring.vm.hostname = 'vbox'
|
78
|
+
raring.vm.box_url = 'http://cloud-images.ubuntu.com/vagrant/raring/current/raring-server-cloudimg-amd64-vagrant-disk1.box'
|
79
|
+
|
80
|
+
raring.vm.provider :virtualbox do |vb|
|
81
|
+
# Configure VM to use 1.5gb of ram and 2 cpus
|
82
|
+
vb.customize [
|
83
|
+
"modifyvm", :id,
|
84
|
+
"--memory", '1536',
|
85
|
+
"--cpus", '2'
|
86
|
+
]
|
87
|
+
end
|
88
|
+
|
89
|
+
cache_dir = local_apt_cache(raring.vm.box)
|
90
|
+
raring.vm.synced_folder cache_dir, "/var/cache/apt/archives", id: "vagrant-apt-cache"
|
91
|
+
|
92
|
+
cache_dir = local_gem_cache(raring.vm.box)
|
93
|
+
raring.vm.synced_folder cache_dir, "/home/vagrant/gems/cache", id: "vagrant-gem-cache"
|
56
94
|
end
|
57
95
|
|
58
96
|
config.vm.define :lxc do |lxc_config|
|
97
|
+
lxc_config.vm.box = 'quantal64'
|
59
98
|
lxc_config.vm.hostname = 'lxc-dev-box'
|
60
|
-
lxc_config.vm.box_url = 'http://dl.dropbox.com/u/13510779/lxc-quantal64-2013-04-
|
99
|
+
lxc_config.vm.box_url = 'http://dl.dropbox.com/u/13510779/lxc-quantal64-2013-04-21.box'
|
61
100
|
# Uncomment to test boxes built locally:
|
62
101
|
# lxc_config.vm.box_url = '../boxes/output/lxc-quantal64.box'
|
63
102
|
|
data/development/site.pp
CHANGED
@@ -21,7 +21,7 @@ exec {
|
|
21
21
|
# Install dependencies
|
22
22
|
package {
|
23
23
|
[ 'libffi-dev', 'bsdtar', 'exuberant-ctags', 'ruby1.9.1-dev', 'htop', 'git',
|
24
|
-
'build-essential', 'redir' ]:
|
24
|
+
'build-essential', 'redir', 'curl' ]:
|
25
25
|
ensure => 'installed'
|
26
26
|
;
|
27
27
|
|
@@ -43,7 +43,7 @@ if $hostname == 'vbox' {
|
|
43
43
|
|
44
44
|
# TMUX
|
45
45
|
package {
|
46
|
-
'tmux':
|
46
|
+
'tmux': ensure => 'installed';
|
47
47
|
}
|
48
48
|
|
49
49
|
# Allow gems to be installed on vagrant user home avoiding "sudo"s
|
data/example/Vagrantfile
CHANGED
@@ -5,15 +5,8 @@
|
|
5
5
|
Vagrant.require_plugin 'vagrant-lxc'
|
6
6
|
|
7
7
|
Vagrant.configure("2") do |config|
|
8
|
-
config.vm.box = "quantal64"
|
9
|
-
config.vm.box_url = 'http://dl.dropbox.com/u/13510779/lxc-quantal64-2013-04-10.box'
|
10
|
-
# Uncomment if you want to try out a box built locally
|
11
|
-
# config.vm.box_url = '../boxes/output/lxc-quantal64.box'
|
12
|
-
config.vm.hostname = 'lxc-quantal64-example'
|
13
|
-
|
14
8
|
config.vm.synced_folder "/tmp", "/vagrant_data"
|
15
9
|
|
16
|
-
|
17
10
|
config.vm.provider :lxc do |lxc|
|
18
11
|
lxc.customize 'cgroup.memory.limit_in_bytes', '400M'
|
19
12
|
lxc.customize 'cgroup.memory.memsw.limit_in_bytes', '500M'
|
@@ -33,4 +26,17 @@ echo "Hi there I'm a shell script used for provisioning"
|
|
33
26
|
chef.add_recipe "hello-world"
|
34
27
|
chef.log_level = :debug
|
35
28
|
end
|
29
|
+
|
30
|
+
port = 8080
|
31
|
+
releases = %w(precise quantal raring)
|
32
|
+
releases.each do |release|
|
33
|
+
config.vm.define(release) do |lxc_config|
|
34
|
+
lxc_config.vm.box = "#{release}64"
|
35
|
+
lxc_config.vm.box_url = "http://dl.dropbox.com/u/13510779/lxc-#{release}-amd64-2013-04-21.box"
|
36
|
+
# Uncomment if you want to try out a box built locally
|
37
|
+
# lxc_config.vm.box_url = "../boxes/output/lxc-#{release}64.box"
|
38
|
+
lxc_config.vm.hostname = "lxc-#{release}64-example"
|
39
|
+
lxc_config.vm.network :forwarded_port, guest: 80, host: (port += 1)
|
40
|
+
end
|
41
|
+
end
|
36
42
|
end
|
@@ -68,7 +68,7 @@ module Vagrant
|
|
68
68
|
redir_cmd = "sudo redir --laddr=127.0.0.1 --lport=#{host} --cport=#{guest} --caddr=#{@container_ip} 2>/dev/null"
|
69
69
|
|
70
70
|
@logger.debug "Forwarding port with `#{redir_cmd}`"
|
71
|
-
|
71
|
+
spawn redir_cmd
|
72
72
|
end
|
73
73
|
|
74
74
|
def store_redir_pid(host_port, redir_pid)
|
data/lib/vagrant-lxc/version.rb
CHANGED
data/spec/Vagrantfile
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
# -*- mode: ruby -*-
|
2
|
+
# vi: set ft=ruby :
|
3
|
+
|
4
|
+
def local_apt_cache(box_name)
|
5
|
+
cache_dir = File.join(File.expand_path(Vagrant::Environment::DEFAULT_HOME),
|
6
|
+
'cache',
|
7
|
+
'apt',
|
8
|
+
box_name)
|
9
|
+
partial_dir = File.join(cache_dir, 'partial')
|
10
|
+
FileUtils.mkdir_p(partial_dir) unless File.exists? partial_dir
|
11
|
+
cache_dir
|
12
|
+
end
|
13
|
+
|
14
|
+
Vagrant.require_plugin 'vagrant-lxc'
|
15
|
+
|
16
|
+
Vagrant.configure("2") do |config|
|
17
|
+
config.vm.box = "quantal64"
|
18
|
+
config.vm.hostname = 'lxc-test-box'
|
19
|
+
|
20
|
+
config.vm.box_url = 'http://dl.dropbox.com/u/13510779/lxc-quantal64-2013-04-10.box'
|
21
|
+
# Uncomment to test boxes built locally:
|
22
|
+
# config.vm.box_url = '../boxes/output/lxc-quantal64.box'
|
23
|
+
|
24
|
+
cache_dir = local_apt_cache(config.vm.box)
|
25
|
+
config.vm.synced_folder cache_dir, "/var/cache/apt/archives", id: "vagrant-apt-cache"
|
26
|
+
|
27
|
+
config.vm.provision :shell,
|
28
|
+
inline: 'mkdir -p /vagrant/tmp && echo -n "Provisioned" > /vagrant/tmp/provisioning'
|
29
|
+
|
30
|
+
config.vm.network :forwarded_port, guest: 80, host: 8080
|
31
|
+
config.vm.provision :shell,
|
32
|
+
inline: 'sudo apt-get install nginx -y && sudo service nginx start'
|
33
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'acceptance_helper'
|
2
|
+
|
3
|
+
describe 'Sanity check' do
|
4
|
+
after(:all) { destroy_container }
|
5
|
+
|
6
|
+
context 'running `vagrant up` from scratch' do
|
7
|
+
before(:all) do
|
8
|
+
destroy_container
|
9
|
+
vagrant_up
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'creates a container' do
|
13
|
+
containers = `sudo lxc-ls`.chomp.split(/\s+/).uniq
|
14
|
+
expect(containers).to include vagrant_container_name
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'starts the newly created container' do
|
18
|
+
status = `sudo lxc-info -n #{vagrant_container_name}`
|
19
|
+
expect(status).to include 'RUNNING'
|
20
|
+
end
|
21
|
+
|
22
|
+
it "is able to be SSH'ed" do
|
23
|
+
expect(vagrant_ssh('hostname')).to eq 'lxc-test-box'
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'mounts shared folders with the right permissions' do
|
27
|
+
vagrant_ssh 'mkdir -p /vagrant/tmp && echo -n "Shared" > /vagrant/tmp/shared'
|
28
|
+
shared_file_contents = File.read('/vagrant/spec/tmp/shared')
|
29
|
+
expect(shared_file_contents).to eq 'Shared'
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'provisions the container based on Vagrantfile configs' do
|
33
|
+
provisioned_file_contents = File.read('/vagrant/spec/tmp/provisioning')
|
34
|
+
expect(provisioned_file_contents).to eq 'Provisioned'
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'forwards configured ports' do
|
38
|
+
output = `curl -s localhost:8080`.strip.chomp
|
39
|
+
expect(output).to include 'Welcome to nginx!'
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
context '`vagrant halt` on a running container' do
|
44
|
+
before(:all) do
|
45
|
+
destroy_container
|
46
|
+
vagrant_up
|
47
|
+
vagrant_halt
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'shuts down container' do
|
51
|
+
status = `sudo lxc-info -n #{vagrant_container_name}`
|
52
|
+
expect(status).to include 'STOPPED'
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'clears forwarded ports' do
|
56
|
+
`curl -s localhost:8080 --connect-timeout 2`
|
57
|
+
expect($?.exitstatus).to_not eq 0
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'kills redir processes' do
|
61
|
+
processes = `pgrep redir`
|
62
|
+
expect($?.exitstatus).to_not eq 0
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
context '`vagrant destroy`' do
|
67
|
+
before(:all) do
|
68
|
+
destroy_container
|
69
|
+
vagrant_up
|
70
|
+
@container_name = vagrant_container_name
|
71
|
+
vagrant_destroy
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'destroys the underlying container' do
|
75
|
+
containers = `sudo lxc-ls`.chomp.split(/\s+/).uniq
|
76
|
+
expect(containers).to_not include @container_name
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module AcceptanceExampleGroup
|
2
|
+
def self.included(base)
|
3
|
+
base.metadata[:type] = :acceptance
|
4
|
+
end
|
5
|
+
|
6
|
+
ID_FILE = "/vagrant/spec/.vagrant/machines/default/lxc/id"
|
7
|
+
def vagrant_container_name
|
8
|
+
File.read(ID_FILE).strip.chomp if File.exists?(ID_FILE)
|
9
|
+
end
|
10
|
+
|
11
|
+
def destroy_container
|
12
|
+
if name = vagrant_container_name
|
13
|
+
`sudo lxc-shutdown -n #{name} 2>/dev/null`
|
14
|
+
`sudo lxc-wait -n #{name} --state STOPPED 2>/dev/null`
|
15
|
+
`sudo lxc-destroy -n #{name} 2>/dev/null`
|
16
|
+
end
|
17
|
+
`sudo killall -9 redir 2>/dev/null`
|
18
|
+
end
|
19
|
+
|
20
|
+
def with_vagrant_environment
|
21
|
+
opts = { cwd: 'spec', ui_class: TestUI }
|
22
|
+
env = Vagrant::Environment.new(opts)
|
23
|
+
yield env
|
24
|
+
env.unload
|
25
|
+
end
|
26
|
+
|
27
|
+
def vagrant_up
|
28
|
+
with_vagrant_environment do |env|
|
29
|
+
env.cli('up', '--provider', 'lxc')
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def vagrant_halt
|
34
|
+
with_vagrant_environment do |env|
|
35
|
+
env.cli('halt')
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def vagrant_destroy
|
40
|
+
with_vagrant_environment do |env|
|
41
|
+
env.cli('destroy', '-f')
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def vagrant_ssh(cmd)
|
46
|
+
output = nil
|
47
|
+
with_vagrant_environment do |env|
|
48
|
+
result = env.cli('ssh', '-c', cmd)
|
49
|
+
if result.to_i != 0
|
50
|
+
raise "SSH command failed: '#{cmd}'\n#{env.ui.messages.inspect}"
|
51
|
+
end
|
52
|
+
output = env.ui.messages[:info].join("\n").chomp
|
53
|
+
end
|
54
|
+
output
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# Monkey patch vagrant in order to reuse the UI test object that is set on
|
2
|
+
# our Vagrant::Environments
|
3
|
+
#
|
4
|
+
# TODO: Find out if this makes sense to be on vagrant core itself
|
5
|
+
require 'vagrant/machine'
|
6
|
+
Vagrant::Machine.class_eval do
|
7
|
+
alias :old_action :action
|
8
|
+
|
9
|
+
define_method :action do |name, extra_env = nil|
|
10
|
+
extra_env = { ui: @env.ui }.merge(extra_env || {})
|
11
|
+
old_action name, extra_env
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class TestUI < Vagrant::UI::Interface
|
2
|
+
attr_reader :messages
|
3
|
+
|
4
|
+
METHODS = [:clear_line, :report_progress, :warn, :error, :info, :success]
|
5
|
+
|
6
|
+
def initialize(resource = nil)
|
7
|
+
super
|
8
|
+
@messages = METHODS.each_with_object({}) { |m, h| h[m] = [] }
|
9
|
+
end
|
10
|
+
|
11
|
+
def ask(*args)
|
12
|
+
super
|
13
|
+
# Automated tests should not depend on user input, obviously.
|
14
|
+
raise Errors::UIExpectsTTY
|
15
|
+
end
|
16
|
+
|
17
|
+
METHODS.each do |method|
|
18
|
+
define_method(method) do |message, *opts|
|
19
|
+
@messages[method].push message
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
unless ENV['USER'] == 'vagrant'
|
4
|
+
puts 'Acceptance specs are supposed to run from one of the vagrant-lxc dev machines'
|
5
|
+
exit 1
|
6
|
+
end
|
7
|
+
|
8
|
+
if defined? SimpleCov
|
9
|
+
SimpleCov.command_name 'acceptance'
|
10
|
+
end
|
11
|
+
|
12
|
+
require 'vagrant'
|
13
|
+
require 'vagrant-lxc'
|
14
|
+
|
15
|
+
Dir[File.dirname(__FILE__) + "/acceptance/support/**/*.rb"].each { |f| require f }
|
16
|
+
|
17
|
+
RSpec.configure do |config|
|
18
|
+
config.include AcceptanceExampleGroup, :type => :acceptance, :example_group => {
|
19
|
+
:file_path => /\bspec\/acceptance\//
|
20
|
+
}
|
21
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -2,14 +2,8 @@ if ENV['COVERAGE']
|
|
2
2
|
require 'simplecov'
|
3
3
|
require 'coveralls'
|
4
4
|
|
5
|
-
SimpleCov.
|
6
|
-
|
7
|
-
Coveralls::SimpleCov::Formatter
|
8
|
-
]
|
9
|
-
|
10
|
-
SimpleCov.start do
|
11
|
-
add_filter { |source_file| source_file.filename =~ /\/spec\/support/ }
|
12
|
-
end
|
5
|
+
SimpleCov.start { add_filter '/spec/' }
|
6
|
+
SimpleCov.merge_timeout 300
|
13
7
|
end
|
14
8
|
|
15
9
|
require 'bundler/setup'
|
File without changes
|
@@ -28,15 +28,15 @@ describe Vagrant::LXC::Action::ClearForwardedPorts do
|
|
28
28
|
|
29
29
|
context 'with a valid redir pid' do
|
30
30
|
it 'kills known processes' do
|
31
|
-
subject.should have_received(:system).with("sudo pkill -
|
31
|
+
subject.should have_received(:system).with("sudo pkill -TERM -P #{pid}")
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
35
|
context 'with an invalid pid' do
|
36
|
-
let(:pid_cmd)
|
36
|
+
let(:pid_cmd) { 'sudo ls' }
|
37
37
|
|
38
38
|
it 'does not kill the process' do
|
39
|
-
subject.should_not have_received(:system).with("sudo pkill -
|
39
|
+
subject.should_not have_received(:system).with("sudo pkill -TERM -P #{pid}")
|
40
40
|
end
|
41
41
|
end
|
42
42
|
end
|
@@ -22,14 +22,14 @@ describe Vagrant::LXC::Action::ForwardPorts do
|
|
22
22
|
machine.stub(provider: provider, data_dir: data_dir)
|
23
23
|
|
24
24
|
subject.stub(exec: true)
|
25
|
-
subject.stub(:
|
25
|
+
subject.stub(spawn: pid)
|
26
26
|
subject.call(env)
|
27
27
|
end
|
28
28
|
|
29
29
|
after { FileUtils.rm_rf data_dir.to_s }
|
30
30
|
|
31
31
|
it 'forwards ports using redir' do
|
32
|
-
subject.should have_received(:
|
32
|
+
subject.should have_received(:spawn).with(
|
33
33
|
"sudo redir --laddr=127.0.0.1 --lport=#{host_port} --cport=#{guest_port} --caddr=#{container_ip} 2>/dev/null"
|
34
34
|
)
|
35
35
|
end
|
@@ -14,6 +14,9 @@ module UnitExampleGroup
|
|
14
14
|
Object.any_instance.stub(:fork) { |*args, &block|
|
15
15
|
UnitExampleGroup.prevent_system_calls(*args, &block)
|
16
16
|
}
|
17
|
+
Object.any_instance.stub(:spawn) { |*args, &block|
|
18
|
+
UnitExampleGroup.prevent_system_calls(*args, &block)
|
19
|
+
}
|
17
20
|
require 'vagrant/util/subprocess'
|
18
21
|
Vagrant::Util::Subprocess.stub(:execute) { |*args, &block|
|
19
22
|
UnitExampleGroup.prevent_system_calls(*args, &block)
|
data/spec/unit_helper.rb
CHANGED
data/tasks/boxes.rake
CHANGED
@@ -1,18 +1,79 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
1
|
+
require 'rake/tasklib'
|
2
|
+
|
3
|
+
class BuildUbuntuBoxTask < ::Rake::TaskLib
|
4
|
+
include ::Rake::DSL
|
5
|
+
|
6
|
+
attr_reader :name
|
7
|
+
|
8
|
+
def initialize(name, release, arch, opts = {})
|
9
|
+
@name = name
|
10
|
+
@release = release.to_s
|
11
|
+
@arch = arch.to_s
|
12
|
+
@install_chef = opts.fetch(:chef, true)
|
13
|
+
@install_puppet = opts.fetch(:puppet, true)
|
14
|
+
@file = opts[:file] || default_box_file
|
15
|
+
|
16
|
+
desc "Build an Ubuntu #{release} #{arch} box" unless ::Rake.application.last_comment
|
17
|
+
task name do
|
18
|
+
RakeFileUtils.send(:verbose, true) do
|
19
|
+
run_task
|
8
20
|
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def run_task
|
25
|
+
if File.exists?("./boxes/output/#{@file}")
|
26
|
+
puts 'Box has been built already!'
|
27
|
+
exit 1
|
28
|
+
end
|
29
|
+
|
30
|
+
if Dir.exists?('boxes/temp')
|
31
|
+
puts "There is a partially built box under #{File.expand_path('./boxes/temp')}, please remove it before building a new box"
|
32
|
+
exit 1
|
33
|
+
end
|
34
|
+
|
35
|
+
sh 'mkdir -p boxes/temp/'
|
36
|
+
Dir.chdir 'boxes/temp' do
|
37
|
+
sh "sudo ../ubuntu/download #{@arch} #{@release}"
|
38
|
+
sh "sudo ../ubuntu/install-puppet" if @install_puppet
|
39
|
+
sh "sudo ../ubuntu/install-chef" if @install_chef
|
40
|
+
sh 'sudo rm -f rootfs.tar.gz'
|
41
|
+
sh 'sudo tar --numeric-owner -czf rootfs.tar.gz ./rootfs/*'
|
42
|
+
sh 'sudo rm -rf rootfs'
|
43
|
+
sh "sudo chown #{ENV['USER']}:#{ENV['USER']} rootfs.tar.gz"
|
44
|
+
sh "cp ../ubuntu/lxc-template ."
|
45
|
+
metadata = File.read('../ubuntu/metadata.json.template')
|
46
|
+
metadata.gsub!('ARCH', @arch)
|
47
|
+
metadata.gsub!('RELEASE', @release)
|
48
|
+
File.open('metadata.json', 'w') { |f| f.print metadata }
|
49
|
+
sh "tar -czf tmp-package.box ./*"
|
50
|
+
end
|
51
|
+
|
52
|
+
sh "cp boxes/temp/tmp-package.box boxes/output/#{@file}"
|
53
|
+
sh "rm -rf boxes/temp"
|
54
|
+
end
|
55
|
+
|
56
|
+
def default_box_file
|
57
|
+
require 'time'
|
58
|
+
"lxc-#{@release}-#{@arch}-#{Date.today}.box"
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
namespace :boxes do
|
63
|
+
namespace :ubuntu do
|
64
|
+
namespace :build do
|
65
|
+
chef = ENV['CHEF'] != '0'
|
66
|
+
puppet = ENV['PUPPET'] != '0'
|
67
|
+
|
68
|
+
desc 'Build an Ubuntu Precise 64 bits box'
|
69
|
+
BuildUbuntuBoxTask.new(:precise64, :precise, 'amd64', chef: chef, puppet: puppet)
|
70
|
+
|
71
|
+
desc 'Build an Ubuntu Quantal 64 bits box'
|
72
|
+
BuildUbuntuBoxTask.new(:quantal64, :quantal, 'amd64', chef: chef, puppet: puppet)
|
9
73
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
sh 'cd boxes/quantal64 && sudo tar --numeric-owner -czf rootfs.tar.gz ./rootfs/*'
|
14
|
-
sh 'cd boxes/quantal64 && sudo rm -rf rootfs'
|
15
|
-
sh "cd boxes/quantal64 && sudo chown #{ENV['USER']}:#{ENV['USER']} rootfs.tar.gz && tar -czf ../output/lxc-quantal64.box ./* --exclude=download-ubuntu"
|
74
|
+
# FIXME: Find out how to install chef on raring
|
75
|
+
desc 'Build an Ubuntu Raring 64 bits box'
|
76
|
+
BuildUbuntuBoxTask.new(:raring64, :raring, 'amd64', chef: false, puppet: puppet)
|
16
77
|
end
|
17
78
|
end
|
18
79
|
end
|
data/tasks/spec.rake
CHANGED
@@ -1,12 +1,15 @@
|
|
1
1
|
begin
|
2
2
|
require 'rspec/core/rake_task'
|
3
|
+
require 'coveralls/rake/task'
|
3
4
|
|
4
|
-
# TODO: add 'spec:acceptance' and 'spec:integration' then they are in place
|
5
5
|
desc 'Run all specs'
|
6
|
-
task :spec
|
6
|
+
task :spec => ['spec:unit', 'spec:acceptance']
|
7
7
|
|
8
8
|
desc 'Default task which runs all specs with code coverage enabled'
|
9
|
-
task :default => ['spec:set_coverage', 'spec']
|
9
|
+
task :default => ['spec:set_coverage', 'spec:unit']
|
10
|
+
|
11
|
+
Coveralls::RakeTask.new
|
12
|
+
task :ci => ['spec:set_coverage', 'spec:unit', 'coveralls:push']
|
10
13
|
rescue LoadError; end
|
11
14
|
|
12
15
|
namespace :spec do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-lxc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fabio Rehm
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-04-
|
11
|
+
date: 2013-04-23 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Linux Containers provider for Vagrant
|
14
14
|
email:
|
@@ -28,9 +28,11 @@ files:
|
|
28
28
|
- LICENSE.txt
|
29
29
|
- README.md
|
30
30
|
- Rakefile
|
31
|
-
- boxes/
|
32
|
-
- boxes/
|
33
|
-
- boxes/
|
31
|
+
- boxes/ubuntu/download
|
32
|
+
- boxes/ubuntu/install-chef
|
33
|
+
- boxes/ubuntu/install-puppet
|
34
|
+
- boxes/ubuntu/lxc-template
|
35
|
+
- boxes/ubuntu/metadata.json.template
|
34
36
|
- development/Vagrantfile
|
35
37
|
- development/lxc-configs/lxc-dev-box
|
36
38
|
- development/lxc-configs/vbox
|
@@ -70,9 +72,15 @@ files:
|
|
70
72
|
- lib/vagrant-lxc/provider.rb
|
71
73
|
- lib/vagrant-lxc/version.rb
|
72
74
|
- locales/en.yml
|
75
|
+
- spec/Vagrantfile
|
76
|
+
- spec/acceptance/sanity_check_spec.rb
|
77
|
+
- spec/acceptance/support/acceptance_example_group.rb
|
78
|
+
- spec/acceptance/support/machine_ext.rb
|
79
|
+
- spec/acceptance/support/test_ui.rb
|
80
|
+
- spec/acceptance_helper.rb
|
73
81
|
- spec/fixtures/sample-ip-addr-output
|
74
82
|
- spec/spec_helper.rb
|
75
|
-
- spec/support
|
83
|
+
- spec/support/.gitkeep
|
76
84
|
- spec/unit/action/clear_forwarded_ports_spec.rb
|
77
85
|
- spec/unit/action/compress_rootfs_spec.rb
|
78
86
|
- spec/unit/action/forward_ports_spec.rb
|
@@ -80,6 +88,7 @@ files:
|
|
80
88
|
- spec/unit/action/setup_package_files_spec.rb
|
81
89
|
- spec/unit/driver/cli_spec.rb
|
82
90
|
- spec/unit/driver_spec.rb
|
91
|
+
- spec/unit/support/unit_example_group.rb
|
83
92
|
- spec/unit_helper.rb
|
84
93
|
- tasks/boxes.rake
|
85
94
|
- tasks/spec.rake
|
@@ -108,9 +117,15 @@ signing_key:
|
|
108
117
|
specification_version: 4
|
109
118
|
summary: Linux Containers provider for Vagrant
|
110
119
|
test_files:
|
120
|
+
- spec/Vagrantfile
|
121
|
+
- spec/acceptance/sanity_check_spec.rb
|
122
|
+
- spec/acceptance/support/acceptance_example_group.rb
|
123
|
+
- spec/acceptance/support/machine_ext.rb
|
124
|
+
- spec/acceptance/support/test_ui.rb
|
125
|
+
- spec/acceptance_helper.rb
|
111
126
|
- spec/fixtures/sample-ip-addr-output
|
112
127
|
- spec/spec_helper.rb
|
113
|
-
- spec/support
|
128
|
+
- spec/support/.gitkeep
|
114
129
|
- spec/unit/action/clear_forwarded_ports_spec.rb
|
115
130
|
- spec/unit/action/compress_rootfs_spec.rb
|
116
131
|
- spec/unit/action/forward_ports_spec.rb
|
@@ -118,4 +133,5 @@ test_files:
|
|
118
133
|
- spec/unit/action/setup_package_files_spec.rb
|
119
134
|
- spec/unit/driver/cli_spec.rb
|
120
135
|
- spec/unit/driver_spec.rb
|
136
|
+
- spec/unit/support/unit_example_group.rb
|
121
137
|
- spec/unit_helper.rb
|