vagrant-lxc 0.1.1 → 0.2.0

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: 92bccd1befe677dbdc19efd2a933735360940bbf
4
- data.tar.gz: 94562a0d7b89f14d4813f3c914dc6ed71083358d
3
+ metadata.gz: 186bdb083beeef3921bd1365defc643f73ee384e
4
+ data.tar.gz: 493eaf050cd7c208af7098ed3f0d6a4ecd3b508f
5
5
  SHA512:
6
- metadata.gz: b45e42a6f567badf41f207056a47e408714c5c9571760502ec91d64439100558d9e20eac33810d0d40965a82a2bda9b091c7726ca56d950940ba989dfd55f49c
7
- data.tar.gz: 730254e8c4288d87a36a60255e0c0c6aae18f2abacfccb76bea7ccad5d9b151cecbbd68c36b44e2e1859c35efa99651a2a57f5ecbf350671192819da827d7167
6
+ metadata.gz: 1efa2adc9cce87eca8a4fa1878f019cecb0834ec347f0ec5fed463fed8a5dd50f63792d72928d2ba34fecc9ee908190d6a3119551987158bba47d68444e7dc95
7
+ data.tar.gz: 080dde3c3857967619f7b1033e379d9c8e0c340e6128b7d53edcd2a89b71b496fefbe4f525c7c6874ee1978c207f054777da6bf7e9f13234c4fb0beedb6a9b4a
data/CHANGELOG.md CHANGED
@@ -1,4 +1,8 @@
1
- ## [0.1.1](https://github.com/fgrehm/vagrant-lxc/pull/43)
1
+ ## [0.2.0](https://github.com/fgrehm/vagrant-lxc/compare/v0.1.1...v0.2.0)
2
+
3
+ - Experimental box packaging (only tested with Ubuntu 64 base box)
4
+
5
+ ## [0.1.1](https://github.com/fgrehm/vagrant-lxc/compare/v0.1.0...v0.1.1)
2
6
 
3
7
  - Removed support for development under Vagrant < 1.1
4
8
  - Removed rsync from base quantal64 box to speed up containers creation [#40](https://github.com/fgrehm/vagrant-lxc/issues/40)
@@ -6,7 +10,7 @@
6
10
  - Skip Vagrant's built in SSH redirect
7
11
  - Allow setting rootfs from Vagrantfile [#30](https://github.com/fgrehm/vagrant-lxc/issues/30)
8
12
 
9
- ## 0.1.0
13
+ ## [0.1.0](https://github.com/fgrehm/vagrant-lxc/compare/v0.0.3...v0.1.0)
10
14
 
11
15
  - Support for chef added to base quantal64 box
12
16
  - Puppet upgraded to 3.1.1 on base quantal64 box
data/Gemfile.lock CHANGED
@@ -14,7 +14,7 @@ GIT
14
14
  PATH
15
15
  remote: .
16
16
  specs:
17
- vagrant-lxc (0.1.1)
17
+ vagrant-lxc (0.2.0)
18
18
 
19
19
  GEM
20
20
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -16,9 +16,11 @@ sudo dpkg -i /tmp/vagrant.deb
16
16
  ```
17
17
 
18
18
 
19
- ## What is currently supported? (v0.1.1)
19
+ ## What is currently supported? (v0.2.0)
20
20
 
21
- * Vagrant's `up`, `halt`, `reload`, `destroy`, and `ssh` commands
21
+ Pretty much everything you need from Vagrant:
22
+
23
+ * Vagrant's `up`, `halt`, `reload`, `destroy`, `ssh` and `package` commands (box packaging is kind of experimental)
22
24
  * Shared folders
23
25
  * Provisioning
24
26
  * Setting container's host name
@@ -32,8 +34,7 @@ for the most up to date list.*
32
34
 
33
35
  * Does not detect forwarded ports collision, right now you are responsible for taking care of that
34
36
  * A hell lot of `sudo`s
35
- * Only a [single ubuntu box supported](boxes), I'm still [figuring out what should go
36
- on the .box file](https://github.com/fgrehm/vagrant-lxc/issues/4)
37
+ * Only a [single ubuntu box supported](boxes)
37
38
  * "[works on my machine](https://github.com/fgrehm/vagrant-lxc/issues/20)" (TM)
38
39
  * [Does not tell you if dependencies are not met](https://github.com/fgrehm/vagrant-lxc/issues/11)
39
40
  (will probably just throw up some random error)
@@ -54,7 +55,7 @@ After that you can create a `Vagrantfile` like the one below and run `vagrant up
54
55
  ```ruby
55
56
  Vagrant.configure("2") do |config|
56
57
  config.vm.box = "lxc-quantal64"
57
- config.vm.box_url = 'http://dl.dropbox.com/u/13510779/lxc-quantal64-2013-03-26.box'
58
+ config.vm.box_url = 'http://dl.dropbox.com/u/13510779/lxc-quantal64-2013-03-31.box'
58
59
 
59
60
  # Share an additional folder to the guest Container. The first argument
60
61
  # is the path on the host to the actual folder. The second argument is
@@ -78,8 +78,10 @@ EOF
78
78
  rm -f $rootfs/etc/init/tty{5,6}.conf
79
79
  fi
80
80
 
81
- chroot $rootfs useradd --create-home -s /bin/bash vagrant
82
- echo "vagrant:vagrant" | chroot $rootfs chpasswd
81
+ if ! (grep -q vagrant $rootfs/etc/passwd); then
82
+ chroot $rootfs useradd --create-home -s /bin/bash vagrant
83
+ echo "vagrant:vagrant" | chroot $rootfs chpasswd
84
+ fi
83
85
 
84
86
  return 0
85
87
  }
@@ -1,6 +1,6 @@
1
1
  {
2
- "provider": "lxc",
3
- "vagrant-lxc-version": "0.0.1",
2
+ "provider": "lxc",
3
+ "version": "1",
4
4
 
5
5
  "template-opts": {
6
6
  "--arch": "amd64",
@@ -21,18 +21,19 @@ def local_gem_cache(box_name)
21
21
  cache_dir
22
22
  end
23
23
 
24
+ # Required to make sure vagrant picks it up during development
24
25
  Vagrant.require_plugin 'vagrant-lxc'
25
26
 
26
27
  Vagrant.configure("2") do |config|
27
28
  config.vm.box = "quantal64"
28
29
 
29
- config.vm.synced_folder "../", "/vagrant", name: 'vagrant-root'
30
+ config.vm.synced_folder "../", "/vagrant", id: 'vagrant-root'
30
31
 
31
32
  cache_dir = local_apt_cache(config.vm.box)
32
- config.vm.synced_folder cache_dir, "/var/cache/apt/archives", name: "vagrant-apt-cache"
33
+ config.vm.synced_folder cache_dir, "/var/cache/apt/archives", id: "vagrant-apt-cache"
33
34
 
34
35
  cache_dir = local_gem_cache(config.vm.box)
35
- config.vm.synced_folder cache_dir, "/home/vagrant/gems/cache", name: "vagrant-gem-cache"
36
+ config.vm.synced_folder cache_dir, "/home/vagrant/gems/cache", id: "vagrant-gem-cache"
36
37
 
37
38
  config.vm.define :vbox do |vb_config|
38
39
  vb_config.vm.box_url = "https://github.com/downloads/roderik/VagrantQuantal64Box/quantal64.box"
@@ -50,13 +51,15 @@ Vagrant.configure("2") do |config|
50
51
 
51
52
  config.vm.define :lxc do |lxc_config|
52
53
  lxc_config.vm.hostname = 'lxc-dev-box'
54
+ lxc_config.vm.box_url = 'http://dl.dropbox.com/u/13510779/lxc-quantal64-2013-03-31.box'
53
55
  # Uncomment to test boxes built locally:
54
56
  # lxc_config.vm.box_url = '../boxes/output/lxc-quantal64.box'
55
- lxc_config.vm.box_url = 'http://dl.dropbox.com/u/13510779/lxc-quantal64-2013-03-26.box'
56
57
 
57
58
  lxc_config.vm.provider :lxc do |lxc|
58
59
  # Required to boot nested containers
59
60
  lxc.start_opts << 'lxc.aa_profile=unconfined'
61
+ # Change this to override the path where the rootfs gets stored
62
+ # lxc.target_rootfs_path = '/path/to/vagrant-lxc-dev-box-rootfs'
60
63
  end
61
64
  end
62
65
 
data/example/Vagrantfile CHANGED
@@ -11,12 +11,15 @@ def local_cache(box_name)
11
11
  cache_dir
12
12
  end
13
13
 
14
+ # Not really needed, but useful while developing so that vagrant picks it up
14
15
  Vagrant.require_plugin 'vagrant-lxc'
15
16
 
16
17
  Vagrant.configure("2") do |config|
17
18
  config.vm.box = "quantal64"
18
- config.vm.box_url = 'http://dl.dropbox.com/u/13510779/lxc-quantal64-2013-03-26.box'
19
- config.vm.hostname = 'lxc-quantal64'
19
+ config.vm.box_url = 'http://dl.dropbox.com/u/13510779/lxc-quantal64-2013-03-31.box'
20
+ # Uncomment if you want to try out a box built locally
21
+ # config.vm.box_url = '../boxes/output/lxc-quantal64.box'
22
+ config.vm.hostname = 'lxc-quantal64-example'
20
23
 
21
24
  config.vm.synced_folder "/tmp", "/vagrant_data"
22
25
 
@@ -36,7 +39,10 @@ echo "Hi there I'm a shell script used for provisioning"
36
39
  puppet.module_path = "puppet/modules"
37
40
  puppet.manifests_path = "puppet/manifests"
38
41
  puppet.manifest_file = "site.pp"
39
- # If you want to make some debugging noise
40
- # puppet.options << [ '--verbose', '--debug' ]
42
+ end
43
+
44
+ config.vm.provision :chef_solo do |chef|
45
+ chef.add_recipe "hello-world"
46
+ chef.log_level = :debug
41
47
  end
42
48
  end
@@ -0,0 +1,4 @@
1
+ execute "hello world" do
2
+ command "echo 'Hello from Chef!'"
3
+ action :run
4
+ end
@@ -10,11 +10,13 @@ require 'vagrant-lxc/action/create'
10
10
  require 'vagrant-lxc/action/created'
11
11
  require 'vagrant-lxc/action/destroy'
12
12
  require 'vagrant-lxc/action/disconnect'
13
+ require 'vagrant-lxc/action/compress_rootfs'
13
14
  require 'vagrant-lxc/action/forced_halt'
14
15
  require 'vagrant-lxc/action/forward_ports'
15
16
  require 'vagrant-lxc/action/handle_box_metadata'
16
17
  require 'vagrant-lxc/action/is_running'
17
18
  require 'vagrant-lxc/action/network'
19
+ require 'vagrant-lxc/action/setup_package_files'
18
20
  require 'vagrant-lxc/action/share_folders'
19
21
 
20
22
  module Vagrant
@@ -58,7 +60,6 @@ module Vagrant
58
60
  b.use ShareFolders
59
61
  b.use Network
60
62
  b.use Vagrant::Action::Builtin::SetHostname
61
- # b.use SaneDefaults
62
63
  # b.use Customize
63
64
  b.use ForwardPorts
64
65
  b.use Boot
@@ -84,7 +85,6 @@ module Vagrant
84
85
  next
85
86
  end
86
87
 
87
- # b3.use CheckAccessible
88
88
  b3.use Vagrant::Action::Builtin::Provision
89
89
  end
90
90
  end
@@ -175,12 +175,30 @@ module Vagrant
175
175
  end
176
176
  end
177
177
 
178
+ # This action packages the virtual machine into a single box file.
179
+ def self.action_package
180
+ Vagrant::Action::Builder.new.tap do |b|
181
+ # b.use CheckDependencies
182
+ b.use Vagrant::Action::Builtin::Call, Created do |env1, b2|
183
+ if !env1[:result]
184
+ # TODO: Implement our own MessageNotCreated
185
+ b2.use VagrantPlugins::ProviderVirtualBox::Action::MessageNotCreated
186
+ next
187
+ end
188
+
189
+ b2.use action_halt
190
+ b2.use CompressRootFS
191
+ b2.use SetupPackageFiles
192
+ b2.use Vagrant::Action::General::Package
193
+ end
194
+ end
195
+ end
196
+
178
197
  # This is the action that will exec into an SSH shell.
179
198
  def self.action_ssh
180
199
  Vagrant::Action::Builder.new.tap do |b|
181
200
  # b.use CheckDependencies
182
201
  b.use CheckCreated
183
- # b.use CheckAccessible
184
202
  b.use CheckRunning
185
203
  b.use Vagrant::Action::Builtin::SSHExec
186
204
  end
@@ -191,7 +209,6 @@ module Vagrant
191
209
  Vagrant::Action::Builder.new.tap do |b|
192
210
  # b.use CheckDependencies
193
211
  b.use CheckCreated
194
- # b.use CheckAccessible
195
212
  b.use CheckRunning
196
213
  b.use Vagrant::Action::Builtin::SSHRun
197
214
  end
@@ -0,0 +1,30 @@
1
+ require "fileutils"
2
+
3
+ module Vagrant
4
+ module LXC
5
+ module Action
6
+ class CompressRootFS
7
+ def initialize(app, env)
8
+ @app = app
9
+ end
10
+
11
+ def call(env)
12
+ raise Vagrant::Errors::VMPowerOffToPackage if env[:machine].provider.state.id != :stopped
13
+
14
+ env[:ui].info I18n.t("vagrant.actions.lxc.compressing_rootfs")
15
+ @rootfs = env['package.rootfs'] = env[:machine].provider.container.compress_rootfs
16
+
17
+ @app.call env
18
+
19
+ recover # called to remove the rootfs tarball
20
+ end
21
+
22
+ def recover(*)
23
+ if @rootfs && File.exist?(@rootfs)
24
+ FileUtils.rm_rf(File.dirname @rootfs)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -29,7 +29,8 @@ module Vagrant
29
29
  system(%Q[sudo su root -c "cp #{lxc_template_src} #{dest}"])
30
30
 
31
31
  @logger.debug('Extracting rootfs')
32
- system(%Q[sudo su root -c "cd #{box.directory} && tar xfz rootfs.tar.gz -C #{rootfs_cache}"])
32
+ # TODO: Ideally the compressed rootfs should not output errors...
33
+ system(%Q[sudo su root -c "cd #{box.directory} && tar xfz rootfs.tar.gz -C #{rootfs_cache} 2>/dev/null"])
33
34
 
34
35
  box.metadata.merge!(
35
36
  'template-name' => template_name,
@@ -0,0 +1,52 @@
1
+ require 'fileutils'
2
+
3
+ module Vagrant
4
+ module LXC
5
+ module Action
6
+ class SetupPackageFiles
7
+ def initialize(app, env)
8
+ @app = app
9
+
10
+ env["package.include"] ||= []
11
+ env["package.vagrantfile"] ||= nil
12
+ end
13
+
14
+ def call(env)
15
+ @env = env
16
+
17
+ create_package_temp_dir
18
+ move_rootfs_to_pkg_dir
19
+ copy_box_files_to_pkg_dir
20
+
21
+ @app.call env
22
+
23
+ recover # called to cleanup temp directory
24
+ end
25
+
26
+ def recover(*)
27
+ if @temp_dir && File.exist?(@temp_dir)
28
+ FileUtils.rm_rf(@temp_dir)
29
+ end
30
+ end
31
+
32
+ private
33
+
34
+ def create_package_temp_dir
35
+ @env[:ui].info I18n.t("vagrant.actions.vm.export.create_dir")
36
+ @temp_dir = @env["package.directory"] = @env[:tmp_path].join("container-export-#{Time.now.to_i.to_s}")
37
+ FileUtils.mkpath(@temp_dir)
38
+ end
39
+
40
+ def move_rootfs_to_pkg_dir
41
+ FileUtils.mv @env['package.rootfs'].to_s, @env['package.directory'].to_s
42
+ end
43
+
44
+ def copy_box_files_to_pkg_dir
45
+ box_dir = @env[:machine].box.directory
46
+ FileUtils.cp box_dir.join('lxc-template').to_s, @env['package.directory'].to_s
47
+ FileUtils.cp box_dir.join('metadata.json').to_s, @env['package.directory'].to_s
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -93,6 +93,26 @@ module Vagrant
93
93
  @cli.destroy
94
94
  end
95
95
 
96
+ # TODO: This needs to be reviewed and specs needs to be written
97
+ def compress_rootfs
98
+ # TODO: Our template should not depend on container's arch
99
+ arch = base_path.join('config').read.match(/^lxc\.arch\s+=\s+(.+)$/)[1]
100
+ rootfs_dirname = File.dirname rootfs_path
101
+ basename = rootfs_path.to_s.gsub(/^#{Regexp.escape rootfs_dirname}\//, '')
102
+ # TODO: Pass in tmpdir so we can clean up from outside
103
+ target_path = "#{Dir.mktmpdir}/rootfs.tar.gz"
104
+
105
+ Dir.chdir base_path do
106
+ @logger.info "Compressing '#{rootfs_path}' rootfs to #{target_path}"
107
+ system "sudo rm -f rootfs.tar.gz && sudo bsdtar -s /#{basename}/rootfs-#{arch}/ --numeric-owner -czf #{target_path} #{basename}/* 2>/dev/null"
108
+
109
+ @logger.info "Changing rootfs tarbal owner"
110
+ system "sudo chown #{ENV['USER']}:#{ENV['USER']} #{target_path}"
111
+ end
112
+
113
+ target_path
114
+ end
115
+
96
116
  def state
97
117
  if @name
98
118
  @cli.state
@@ -1,5 +1,5 @@
1
1
  module Vagrant
2
2
  module LXC
3
- VERSION = "0.1.1"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
data/locales/en.yml CHANGED
@@ -2,6 +2,8 @@ en:
2
2
  vagrant:
3
3
  actions:
4
4
  lxc:
5
+ compressing_rootfs: Compressing container's rootfs...
6
+
5
7
  share_folders:
6
8
  preparing: Setting up mount entries for shared folders...
7
9
 
@@ -0,0 +1,27 @@
1
+ require 'unit_helper'
2
+
3
+ require 'vagrant-lxc/action/compress_rootfs'
4
+
5
+ describe Vagrant::LXC::Action::CompressRootFS do
6
+ let(:app) { mock(:app, call: true) }
7
+ let(:env) { {machine: machine, ui: stub(info: true)} }
8
+ let(:machine) { fire_double('Vagrant::Machine', provider: provider) }
9
+ let(:provider) { fire_double('Vagrant::LXC::Provider', container: container) }
10
+ let(:container) { fire_double('Vagrant::LXC::Container', compress_rootfs: compressed_rootfs_path) }
11
+ let(:compressed_rootfs_path) { '/path/to/rootfs.tar.gz' }
12
+
13
+ subject { described_class.new(app, env) }
14
+
15
+ before do
16
+ provider.stub_chain(:state, :id).and_return(:stopped)
17
+ subject.call(env)
18
+ end
19
+
20
+ it 'asks the container to compress its rootfs' do
21
+ container.should have_received(:compress_rootfs)
22
+ end
23
+
24
+ it 'sets export.temp_dir on action env' do
25
+ env['package.rootfs'].should == compressed_rootfs_path
26
+ end
27
+ end
@@ -39,6 +39,6 @@ describe Vagrant::LXC::Action::HandleBoxMetadata do
39
39
 
40
40
  it 'extracts rootfs into a tmp folder' do
41
41
  subject.should have_received(:system).
42
- with(%Q[sudo su root -c "cd #{box_directory} && tar xfz rootfs.tar.gz -C #{tmpdir}"])
42
+ with(%Q[sudo su root -c "cd #{box_directory} && tar xfz rootfs.tar.gz -C #{tmpdir} 2>/dev/null"])
43
43
  end
44
44
  end
@@ -0,0 +1,41 @@
1
+ require 'unit_helper'
2
+
3
+ require 'vagrant-lxc/action/setup_package_files'
4
+
5
+ describe Vagrant::LXC::Action::SetupPackageFiles do
6
+ let(:app) { mock(:app, call: true) }
7
+ let(:env) { {machine: machine, tmp_path: tmp_path, ui: stub(info: true), 'package.rootfs' => rootfs_path} }
8
+ let(:machine) { fire_double('Vagrant::Machine', box: box) }
9
+ let!(:tmp_path) { Pathname.new(Dir.mktmpdir) }
10
+ let(:box) { fire_double('Vagrant::Box', directory: tmp_path.join('box')) }
11
+ let(:rootfs_path) { tmp_path.join('rootfs-amd64.tar.gz') }
12
+
13
+ subject { described_class.new(app, env) }
14
+
15
+ before do
16
+ box.directory.mkdir
17
+ [box.directory.join('lxc-template'), box.directory.join('metadata.json'), rootfs_path].each do |file|
18
+ file.open('w') { |f| f.puts file.to_s }
19
+ end
20
+
21
+ subject.stub(recover: true) # Prevents files from being removed on specs
22
+ subject.call(env)
23
+ end
24
+
25
+ after do
26
+ FileUtils.rm_rf(tmp_path.to_s)
27
+ end
28
+
29
+ it 'copies box lxc-template to package directory' do
30
+ env['package.directory'].join('lxc-template').should be_file
31
+ end
32
+
33
+ it 'copies metadata.json to package directory' do
34
+ env['package.directory'].join('metadata.json').should be_file
35
+ end
36
+
37
+ it 'moves the compressed rootfs to package directory' do
38
+ env['package.directory'].join(rootfs_path.basename).should be_file
39
+ env['package.rootfs'].should_not be_file
40
+ end
41
+ end
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.1.1
4
+ version: 0.2.0
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-03-29 00:00:00.000000000 Z
11
+ date: 2013-03-31 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Linux Containers provider for Vagrant
14
14
  email:
@@ -37,6 +37,7 @@ files:
37
37
  - development/shell-provisioning/upgrade-kernel
38
38
  - development/site.pp
39
39
  - example/Vagrantfile
40
+ - example/cookbooks/hello-world/recipes/default.rb
40
41
  - example/puppet/manifests/site.pp
41
42
  - example/puppet/modules/hello_world/manifests/init.pp
42
43
  - lib/vagrant-lxc.rb
@@ -46,6 +47,7 @@ files:
46
47
  - lib/vagrant-lxc/action/check_created.rb
47
48
  - lib/vagrant-lxc/action/check_running.rb
48
49
  - lib/vagrant-lxc/action/clear_forwarded_ports.rb
50
+ - lib/vagrant-lxc/action/compress_rootfs.rb
49
51
  - lib/vagrant-lxc/action/create.rb
50
52
  - lib/vagrant-lxc/action/created.rb
51
53
  - lib/vagrant-lxc/action/destroy.rb
@@ -55,6 +57,7 @@ files:
55
57
  - lib/vagrant-lxc/action/handle_box_metadata.rb
56
58
  - lib/vagrant-lxc/action/is_running.rb
57
59
  - lib/vagrant-lxc/action/network.rb
60
+ - lib/vagrant-lxc/action/setup_package_files.rb
58
61
  - lib/vagrant-lxc/action/share_folders.rb
59
62
  - lib/vagrant-lxc/config.rb
60
63
  - lib/vagrant-lxc/container.rb
@@ -69,8 +72,10 @@ files:
69
72
  - spec/spec_helper.rb
70
73
  - spec/support/unit_example_group.rb
71
74
  - spec/unit/action/clear_forwarded_ports_spec.rb
75
+ - spec/unit/action/compress_rootfs_spec.rb
72
76
  - spec/unit/action/forward_ports_spec.rb
73
77
  - spec/unit/action/handle_box_metadata_spec.rb
78
+ - spec/unit/action/setup_package_files_spec.rb
74
79
  - spec/unit/container/cli_spec.rb
75
80
  - spec/unit/container_spec.rb
76
81
  - spec/unit/machine_state_spec.rb
@@ -106,8 +111,10 @@ test_files:
106
111
  - spec/spec_helper.rb
107
112
  - spec/support/unit_example_group.rb
108
113
  - spec/unit/action/clear_forwarded_ports_spec.rb
114
+ - spec/unit/action/compress_rootfs_spec.rb
109
115
  - spec/unit/action/forward_ports_spec.rb
110
116
  - spec/unit/action/handle_box_metadata_spec.rb
117
+ - spec/unit/action/setup_package_files_spec.rb
111
118
  - spec/unit/container/cli_spec.rb
112
119
  - spec/unit/container_spec.rb
113
120
  - spec/unit/machine_state_spec.rb