vagrant-lxc 1.4.0 → 1.4.1

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
- SHA1:
3
- metadata.gz: dfd740ba8ba252e2ad4a24ce265b57835b4099b0
4
- data.tar.gz: 42e4c5fc8830dbc330956c45de02175d96194701
2
+ SHA256:
3
+ metadata.gz: 73218c6a794374a682e74972ea67214bd099f23de97c559ab8eea60550c9e3e7
4
+ data.tar.gz: 1f3e74d08fc10118458b5f0f0de19fc86e766bac9de2601e378c70d909dbf403
5
5
  SHA512:
6
- metadata.gz: 38bde493ef8c7eecd63037bd3b2aa450e7bf78934a55b9d14e38746bffbf054a9b7219642d7604e1d71552ff939debefd0d6860bea239614a784564a1f3d65a2
7
- data.tar.gz: a99b34ed05309bb29857739c7fad625fba52e596d70752b188f9d7e28ab565066c3fec61a812c78b91a6e20d9a9334ec1508d47b35ac2b26810ba27239ddbbf6
6
+ metadata.gz: df22280938f9a3f685260c891363b558c5b2eb052bedf5a7bfc5c43aabf0dd890c44308288cf4516e6dfe42e2ba9011d14d94ae00b29311a4a9e1575c74efb1d
7
+ data.tar.gz: 8ab355586daea42c581bb624c0de1beb769f70d719bbc0114398be954315c32af8552971fe12067d57817e5fa5858a7e3779a72c62bf9fab7a649c6c838b5fc4
data/.travis.yml CHANGED
@@ -3,6 +3,7 @@ rvm:
3
3
  - 2.2
4
4
  - 2.3
5
5
  - 2.4
6
+ - 2.5
6
7
  install:
7
8
  - gem install -v 1.12.5 bundler
8
9
  - bundle _1.12.5_ install --jobs=3 --retry=3
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## [1.4.1](https://github.com/fgrehm/vagrant-lxc/compare/v1.4.0...v1.4.1) (Apr 30, 2018)
2
+
3
+ FEATURES:
4
+ - Add support for LXC v3.0
5
+ - Add support for `redir` 3.x command line. [[GH-460]]
6
+
7
+ [GH-460]: https://github.com/fgrehm/vagrant-lxc/issues/460
8
+
1
9
  ## [1.4.0](https://github.com/fgrehm/vagrant-lxc/compare/v1.3.1...v1.4.0) (Mar 04, 2018)
2
10
 
3
11
  FEATURES:
data/Gemfile CHANGED
@@ -1,7 +1,7 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  group :development do
4
- gem 'vagrant', git: 'https://github.com/mitchellh/vagrant.git', tag: 'v1.8.7'
4
+ gem 'vagrant', git: 'https://github.com/mitchellh/vagrant.git', tag: 'v2.0.4'
5
5
  gem 'guard'
6
6
  gem 'guard-rspec'
7
7
  gem 'rb-inotify'
@@ -12,7 +12,7 @@ group :development, :test do
12
12
  gem 'rspec', '~> 2.99.0'
13
13
  gem 'coveralls', '~> 0.7.2', require: (ENV['COVERAGE'] == 'true')
14
14
  # The is the ref *just* before we switch to childprocess 0.6, which conflicts with vagrant 1.8 deps.
15
- gem 'vagrant-spec', git: 'https://github.com/mitchellh/vagrant-spec.git', ref: '5006bc73cd8796465ca09307d4774f8ec8375aa0'
15
+ # gem 'vagrant-spec', git: 'https://github.com/mitchellh/vagrant-spec.git', ref: '5006bc73cd8796465ca09307d4774f8ec8375aa0'
16
16
  end
17
17
 
18
18
  group :plugins do
data/README.md CHANGED
@@ -12,7 +12,7 @@ to see it in action.
12
12
  ## Features
13
13
 
14
14
  * Provides the same workflow as the Vagrant VirtualBox provider
15
- * Port forwarding via [`redir`](http://linux.die.net/man/1/redir)
15
+ * Port forwarding via [`redir`](https://github.com/troglobit/redir)
16
16
  * Private networking via [`pipework`](https://github.com/jpetazzo/pipework)
17
17
 
18
18
  ## Requirements
@@ -8,11 +8,15 @@ module Vagrant
8
8
 
9
9
  def call(env)
10
10
  @env = env
11
-
11
+ driver = env[:machine].provider.driver
12
12
  config = env[:machine].provider_config
13
13
 
14
14
  utsname = env[:machine].config.vm.hostname || env[:machine].id
15
- config.customize 'utsname', utsname
15
+ if driver.supports_new_config_format
16
+ config.customize 'uts.name', utsname
17
+ else
18
+ config.customize 'utsname', utsname
19
+ end
16
20
 
17
21
  # Fix apparmor issues when starting Ubuntu 14.04 containers
18
22
  # See https://github.com/fgrehm/vagrant-lxc/issues/278 for more information
@@ -32,7 +36,7 @@ module Vagrant
32
36
  end
33
37
 
34
38
  env[:ui].info I18n.t("vagrant_lxc.messages.starting")
35
- env[:machine].provider.driver.start(config.customizations)
39
+ driver.start(config.customizations)
36
40
 
37
41
  @app.call env
38
42
  end
@@ -24,13 +24,21 @@ module Vagrant
24
24
  backingstore = config.privileged ? "best" : "dir"
25
25
  end
26
26
  driver = env[:machine].provider.driver
27
+ template_options = env[:lxc_template_opts]
28
+ if driver.supports_new_config_format
29
+ if env[:lxc_box_config]
30
+ driver.update_config_keys(env[:lxc_box_config])
31
+ end
32
+ else
33
+ template_options['--oldconfig'] = ''
34
+ end
27
35
  driver.create(
28
36
  container_name,
29
37
  backingstore,
30
38
  config.backingstore_options,
31
39
  env[:lxc_template_src],
32
40
  env[:lxc_template_config],
33
- env[:lxc_template_opts]
41
+ template_options
34
42
  )
35
43
  driver.update_config_keys
36
44
 
@@ -1,3 +1,5 @@
1
+ require 'open3'
2
+
1
3
  module Vagrant
2
4
  module LXC
3
5
  module Action
@@ -78,8 +80,13 @@ module Vagrant
78
80
  end
79
81
 
80
82
  def redirect_port(host_ip, host_port, guest_ip, guest_port)
81
- params = %W( --lport=#{host_port} --caddr=#{guest_ip} --cport=#{guest_port} )
82
- params.unshift "--laddr=#{host_ip}" if host_ip
83
+ if redir_version >= 3
84
+ params = %W( :#{host_port} #{guest_ip}:#{guest_port} )
85
+ params[0] = "#{host_ip}:#{host_port}" if host_ip
86
+ else
87
+ params = %W( --lport=#{host_port} --caddr=#{guest_ip} --cport=#{guest_port} )
88
+ params.unshift "--laddr=#{host_ip}" if host_ip
89
+ end
83
90
  params << '--syslog' if ENV['REDIR_LOG']
84
91
  if host_port < 1024
85
92
  redir_cmd = "sudo redir #{params.join(' ')} 2>/dev/null"
@@ -99,6 +106,12 @@ module Vagrant
99
106
  end
100
107
  end
101
108
 
109
+ def redir_version
110
+ # For some weird reason redir prints version information in STDERR
111
+ _, version, _ = Open3.capture3 "redir --version"
112
+ version.split('.')[0].to_i
113
+ end
114
+
102
115
  def redir_installed?
103
116
  system "which redir > /dev/null"
104
117
  end
@@ -33,8 +33,10 @@ module Vagrant
33
33
  end
34
34
 
35
35
  if template_config_file.exist?
36
+ @env[:lxc_box_config] = template_config_file.to_s
36
37
  @env[:lxc_template_opts].merge!('--config' => template_config_file.to_s)
37
38
  elsif old_template_config_file.exist?
39
+ @env[:lxc_box_config] = old_template_config_file.to_s
38
40
  @env[:lxc_template_config] = old_template_config_file.to_s
39
41
  end
40
42
 
@@ -83,6 +83,7 @@ module Vagrant
83
83
  @cli.name = @container_name = name
84
84
 
85
85
  @logger.debug "Creating container..."
86
+
86
87
  @cli.create template_path, backingstore, backingstore_options, config_file, template_options
87
88
  end
88
89
 
@@ -214,6 +215,10 @@ module Vagrant
214
215
  @version ||= @cli.version
215
216
  end
216
217
 
218
+ def supports_new_config_format
219
+ Gem::Version.new(version) >= Gem::Version.new('2.1.0')
220
+ end
221
+
217
222
  # TODO: This needs to be reviewed and specs needs to be written
218
223
  def compress_rootfs
219
224
  # TODO: Pass in tmpdir so we can clean up from outside
@@ -244,8 +249,9 @@ module Vagrant
244
249
  write_config(contents)
245
250
  end
246
251
 
247
- def update_config_keys
248
- @cli.update_config(config_path)
252
+ def update_config_keys(path = nil)
253
+ path = path || config_path
254
+ @cli.update_config(path)
249
255
  rescue Errors::ExecuteError
250
256
  # not on LXC 2.1+. Doesn't matter, ignore.
251
257
  end
@@ -59,7 +59,7 @@ module Vagrant
59
59
  config_opts = ['-f', config_file]
60
60
  end
61
61
 
62
- extra = template_opts.to_a.flatten
62
+ extra = template_opts.to_a.flatten.reject { |elem| elem.empty? }
63
63
  extra.unshift '--' unless extra.empty?
64
64
 
65
65
  run :create,
@@ -1,5 +1,5 @@
1
1
  module Vagrant
2
2
  module LXC
3
- VERSION = "1.4.0"
3
+ VERSION = "1.4.1"
4
4
  end
5
5
  end
data/scripts/lxc-template CHANGED
@@ -33,8 +33,10 @@ LXC_PATH=
33
33
  LXC_ROOTFS=
34
34
  LXC_TARBALL=
35
35
  LXC_CONFIG=
36
+ LXC_USE_OLDCONFIG=
36
37
  LXC_STRIP_COMPONENTS=2
37
38
 
39
+
38
40
  usage() {
39
41
  cat <<EOF
40
42
  vagrant-lxc default template
@@ -44,6 +46,7 @@ Required arguments:
44
46
 
45
47
  Optional arguments:
46
48
  [ --config ]: Configuration file to be used when building the container
49
+ [ --oldconfig ]: Use pre LXC 2.1 config format
47
50
  [ -h | --help ]: This help message
48
51
 
49
52
  LXC internal arguments (do not pass manually!):
@@ -57,7 +60,7 @@ EOF
57
60
  return 0
58
61
  }
59
62
 
60
- options=$(getopt -o h -l tarball:,config:,help:,name:,path:,rootfs:,mapped-uid:,mapped-gid:,strip-components: -- "$@")SS
63
+ options=$(getopt -o h -l tarball:,config:,oldconfig,help:,name:,path:,rootfs:,mapped-uid:,mapped-gid:,strip-components: -- "$@")SS
61
64
 
62
65
  if [ $? -ne 0 ]; then
63
66
  usage $(basename $0)
@@ -70,6 +73,7 @@ do
70
73
  case "$1" in
71
74
  -h|--help) usage $0 && exit 0;;
72
75
  --config) LXC_CONFIG=$2; shift 2;;
76
+ --oldconfig) LXC_USE_OLDCONFIG=1; shift 1;;
73
77
  --tarball) LXC_TARBALL=$2; shift 2;;
74
78
  --name) LXC_NAME=$2; shift 2;;
75
79
  --path) LXC_PATH=$2; shift 2;;
@@ -144,7 +148,12 @@ if [ -e "${LXC_PATH}/config-auto" ]; then
144
148
  cat ${LXC_PATH}/config-auto >> ${LXC_PATH}/config
145
149
  rm ${LXC_PATH}/config-auto
146
150
  fi
147
- echo "lxc.utsname = ${LXC_NAME}" >> ${LXC_PATH}/config
151
+
152
+ if [ $LXC_USE_OLDCONFIG ]; then
153
+ echo "lxc.utsname = ${LXC_NAME}" >> ${LXC_PATH}/config
154
+ else
155
+ echo "lxc.uts.name = ${LXC_NAME}" >> ${LXC_PATH}/config
156
+ fi
148
157
 
149
158
  ## Re-add the previously removed network config
150
159
  if [ -e "${LXC_PATH}/config-network" ]; then
@@ -24,6 +24,7 @@ describe Vagrant::LXC::Action::ForwardPorts do
24
24
  machine.stub_chain(:config, :vm, :networks).and_return(networks)
25
25
  machine.stub(provider: provider, data_dir: data_dir)
26
26
 
27
+ subject.stub(redir_version: 3)
27
28
  subject.stub(exec: true)
28
29
  subject.stub(spawn: pid)
29
30
  end
@@ -34,7 +35,7 @@ describe Vagrant::LXC::Action::ForwardPorts do
34
35
  subject.stub(system: true)
35
36
  subject.call(env)
36
37
  expect(subject).to have_received(:spawn).with(
37
- "redir --laddr=#{host_ip} --lport=#{host_port} --caddr=#{container_ip} --cport=#{guest_port} 2>/dev/null"
38
+ "redir #{host_ip}:#{host_port} #{container_ip}:#{guest_port} 2>/dev/null"
38
39
  )
39
40
  end
40
41
 
@@ -43,7 +44,7 @@ describe Vagrant::LXC::Action::ForwardPorts do
43
44
  subject.stub(system: true)
44
45
  subject.call(env)
45
46
  expect(subject).to have_received(:spawn).with(
46
- "redir --laddr=127.0.0.1 --lport=#{host_port} --caddr=#{container_ip} --cport=#{guest_port} 2>/dev/null"
47
+ "redir 127.0.0.1:#{host_port} #{container_ip}:#{guest_port} 2>/dev/null"
47
48
  )
48
49
  end
49
50
 
@@ -52,7 +53,7 @@ describe Vagrant::LXC::Action::ForwardPorts do
52
53
  subject.stub(system: true)
53
54
  subject.call(env)
54
55
  expect(subject).to have_received(:spawn).with(
55
- "redir --laddr=127.0.0.1 --lport=#{host_port} --caddr=#{container_ip} --cport=#{guest_port} 2>/dev/null"
56
+ "redir 127.0.0.1:#{host_port} #{container_ip}:#{guest_port} 2>/dev/null"
56
57
  )
57
58
  end
58
59
 
@@ -70,6 +71,15 @@ describe Vagrant::LXC::Action::ForwardPorts do
70
71
  expect(subject).not_to have_received(:spawn)
71
72
  end
72
73
 
74
+ it 'uses redir 2.x command line interface' do
75
+ subject.stub(system: true)
76
+ subject.stub(redir_version: 2)
77
+ subject.call(env)
78
+ expect(subject).to have_received(:spawn).with(
79
+ "redir --laddr=#{host_ip} --lport=#{host_port} --caddr=#{container_ip} --cport=#{guest_port} 2>/dev/null"
80
+ )
81
+ end
82
+
73
83
  it 'raises RedirNotInstalled error if `redir` is not installed' do
74
84
  subject.stub(system: false)
75
85
  expect { subject.call(env) }.to raise_error(Vagrant::LXC::Errors::RedirNotInstalled)
@@ -82,7 +92,7 @@ describe Vagrant::LXC::Action::ForwardPorts do
82
92
  subject.stub(system: true)
83
93
  subject.call(env)
84
94
  expect(subject).to have_received(:spawn).with(
85
- "sudo redir --laddr=#{host_ip} --lport=#{host_port} --caddr=#{container_ip} --cport=#{guest_port} 2>/dev/null"
95
+ "sudo redir #{host_ip}:#{host_port} #{container_ip}:#{guest_port} 2>/dev/null"
86
96
  )
87
97
  end
88
98
 
@@ -91,7 +101,7 @@ describe Vagrant::LXC::Action::ForwardPorts do
91
101
  subject.stub(system: true)
92
102
  subject.call(env)
93
103
  expect(subject).to have_received(:spawn).with(
94
- "sudo redir --laddr=127.0.0.1 --lport=#{host_port} --caddr=#{container_ip} --cport=#{guest_port} 2>/dev/null"
104
+ "sudo redir 127.0.0.1:#{host_port} #{container_ip}:#{guest_port} 2>/dev/null"
95
105
  )
96
106
  end
97
107
 
@@ -100,7 +110,7 @@ describe Vagrant::LXC::Action::ForwardPorts do
100
110
  subject.stub(system: true)
101
111
  subject.call(env)
102
112
  expect(subject).to have_received(:spawn).with(
103
- "sudo redir --laddr=127.0.0.1 --lport=#{host_port} --caddr=#{container_ip} --cport=#{guest_port} 2>/dev/null"
113
+ "sudo redir 127.0.0.1:#{host_port} #{container_ip}:#{guest_port} 2>/dev/null"
104
114
  )
105
115
  end
106
116
  end
@@ -211,9 +211,9 @@ describe Vagrant::LXC::Driver do
211
211
  # Blah blah comment
212
212
  lxc.mount.entry = proc proc proc nodev,noexec,nosuid 0 0
213
213
  lxc.mount.entry = sysfs sys sysfs defaults 0 0
214
- lxc.tty = 4
215
- lxc.pts = 1024
216
- lxc.rootfs = #{rootfs_path}
214
+ lxc.tty.max = 4
215
+ lxc.pty.max = 1024
216
+ lxc.rootfs.path = #{rootfs_path}
217
217
  # VAGRANT-BEGIN
218
218
  lxc.network.type=veth
219
219
  lxc.network.name=eth1
@@ -241,9 +241,9 @@ describe Vagrant::LXC::Driver do
241
241
  # Blah blah comment
242
242
  lxc.mount.entry = proc proc proc nodev,noexec,nosuid 0 0
243
243
  lxc.mount.entry = sysfs sys sysfs defaults 0 0
244
- lxc.tty = 4
245
- lxc.pts = 1024
246
- lxc.rootfs = overlayfs:/path/to/master/directory:#{rootfs_path}
244
+ lxc.tty.max = 4
245
+ lxc.pty.max = 1024
246
+ lxc.rootfs.path = overlayfs:/path/to/master/directory:#{rootfs_path}
247
247
  # VAGRANT-BEGIN
248
248
  lxc.network.type=veth
249
249
  lxc.network.name=eth1
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: 1.4.0
4
+ version: 1.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fabio Rehm
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-04 00:00:00.000000000 Z
11
+ date: 2018-05-01 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Linux Containers provider for Vagrant
14
14
  email:
@@ -99,7 +99,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
99
99
  version: '0'
100
100
  requirements: []
101
101
  rubyforge_project:
102
- rubygems_version: 2.6.14
102
+ rubygems_version: 2.7.6
103
103
  signing_key:
104
104
  specification_version: 4
105
105
  summary: Linux Containers provider for Vagrant