vagrant-lxc 0.4.0 → 0.5.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/CHANGELOG.md +26 -1
- data/Gemfile +2 -0
- data/Gemfile.lock +9 -9
- data/README.md +51 -27
- data/boxes/common/install-salt +11 -0
- data/boxes/ubuntu/finalize +7 -1
- data/example/Vagrantfile +0 -1
- data/lib/vagrant-lxc/action.rb +13 -11
- data/lib/vagrant-lxc/action/clear_forwarded_ports.rb +1 -1
- data/lib/vagrant-lxc/action/create.rb +1 -1
- data/lib/vagrant-lxc/action/fetch_ip_from_dnsmasq_leases.rb +48 -0
- data/lib/vagrant-lxc/action/fetch_ip_with_lxc_attach.rb +46 -0
- data/lib/vagrant-lxc/action/forward_ports.rb +22 -8
- data/lib/vagrant-lxc/action/remove_temporary_files.rb +1 -1
- data/lib/vagrant-lxc/config.rb +25 -1
- data/lib/vagrant-lxc/driver.rb +42 -14
- data/lib/vagrant-lxc/driver/cli.rb +7 -60
- data/lib/vagrant-lxc/errors.rb +7 -0
- data/lib/vagrant-lxc/provider.rb +26 -3
- data/lib/vagrant-lxc/sudo_wrapper.rb +79 -0
- data/lib/vagrant-lxc/version.rb +1 -1
- data/locales/en.yml +6 -0
- data/spec/unit/action/clear_forwarded_ports_spec.rb +2 -2
- data/spec/unit/action/forward_ports_spec.rb +25 -5
- data/spec/unit/driver/cli_spec.rb +10 -14
- data/spec/unit/driver_spec.rb +17 -36
- data/tasks/boxes.rake +13 -7
- data/tasks/boxes.v2.rake +15 -8
- data/vagrant-lxc.gemspec +1 -0
- metadata +8 -6
- data/lib/vagrant-lxc/driver/builder.rb +0 -21
- data/lib/vagrant-lxc/driver/fetch_ip_from_dnsmasq.rb +0 -41
- data/lib/vagrant-lxc/driver/fetch_ip_with_attach.rb +0 -29
data/vagrant-lxc.gemspec
CHANGED
@@ -10,6 +10,7 @@ Gem::Specification.new do |gem|
|
|
10
10
|
gem.email = ["fgrehm@gmail.com"]
|
11
11
|
gem.description = %q{Linux Containers provider for Vagrant}
|
12
12
|
gem.summary = gem.description
|
13
|
+
gem.license = 'MIT'
|
13
14
|
gem.homepage = "https://github.com/fgrehm/vagrant-lxc"
|
14
15
|
|
15
16
|
gem.files = `git ls-files`.split($/)
|
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.
|
4
|
+
version: 0.5.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-
|
11
|
+
date: 2013-08-01 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Linux Containers provider for Vagrant
|
14
14
|
email:
|
@@ -32,6 +32,7 @@ files:
|
|
32
32
|
- boxes/common/install-babushka
|
33
33
|
- boxes/common/install-chef
|
34
34
|
- boxes/common/install-puppet
|
35
|
+
- boxes/common/install-salt
|
35
36
|
- boxes/common/lxc-template
|
36
37
|
- boxes/common/lxc.conf
|
37
38
|
- boxes/common/metadata.json
|
@@ -67,6 +68,8 @@ files:
|
|
67
68
|
- lib/vagrant-lxc/action/destroy.rb
|
68
69
|
- lib/vagrant-lxc/action/destroy_confirm.rb
|
69
70
|
- lib/vagrant-lxc/action/disconnect.rb
|
71
|
+
- lib/vagrant-lxc/action/fetch_ip_from_dnsmasq_leases.rb
|
72
|
+
- lib/vagrant-lxc/action/fetch_ip_with_lxc_attach.rb
|
70
73
|
- lib/vagrant-lxc/action/forced_halt.rb
|
71
74
|
- lib/vagrant-lxc/action/forward_ports.rb
|
72
75
|
- lib/vagrant-lxc/action/handle_box_metadata.rb
|
@@ -77,13 +80,11 @@ files:
|
|
77
80
|
- lib/vagrant-lxc/action/share_folders.rb
|
78
81
|
- lib/vagrant-lxc/config.rb
|
79
82
|
- lib/vagrant-lxc/driver.rb
|
80
|
-
- lib/vagrant-lxc/driver/builder.rb
|
81
83
|
- lib/vagrant-lxc/driver/cli.rb
|
82
|
-
- lib/vagrant-lxc/driver/fetch_ip_from_dnsmasq.rb
|
83
|
-
- lib/vagrant-lxc/driver/fetch_ip_with_attach.rb
|
84
84
|
- lib/vagrant-lxc/errors.rb
|
85
85
|
- lib/vagrant-lxc/plugin.rb
|
86
86
|
- lib/vagrant-lxc/provider.rb
|
87
|
+
- lib/vagrant-lxc/sudo_wrapper.rb
|
87
88
|
- lib/vagrant-lxc/version.rb
|
88
89
|
- locales/en.yml
|
89
90
|
- spec/Vagrantfile
|
@@ -109,7 +110,8 @@ files:
|
|
109
110
|
- tasks/spec.rake
|
110
111
|
- vagrant-lxc.gemspec
|
111
112
|
homepage: https://github.com/fgrehm/vagrant-lxc
|
112
|
-
licenses:
|
113
|
+
licenses:
|
114
|
+
- MIT
|
113
115
|
metadata: {}
|
114
116
|
post_install_message:
|
115
117
|
rdoc_options: []
|
@@ -1,21 +0,0 @@
|
|
1
|
-
require_relative 'fetch_ip_with_attach'
|
2
|
-
require_relative 'fetch_ip_from_dnsmasq'
|
3
|
-
|
4
|
-
module Vagrant
|
5
|
-
module LXC
|
6
|
-
class Driver
|
7
|
-
class Builder
|
8
|
-
def self.build(id)
|
9
|
-
version = CLI.new.version.match(/^(\d+\.\d+)\./)[1].to_f
|
10
|
-
Driver.new(id).tap do |driver|
|
11
|
-
mod = version >= 0.8 ?
|
12
|
-
Driver::FetchIpWithAttach :
|
13
|
-
Driver::FetchIpFromDsnmasq
|
14
|
-
|
15
|
-
driver.extend(mod)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
module Vagrant
|
2
|
-
module LXC
|
3
|
-
class Driver
|
4
|
-
module FetchIpFromDsnmasq
|
5
|
-
def assigned_ip
|
6
|
-
@logger.debug 'Loading ip from dnsmasq leases'
|
7
|
-
ip = nil
|
8
|
-
# TODO: Use Vagrant::Util::Retryable
|
9
|
-
10.times do
|
10
|
-
if dnsmasq_leases =~ /#{Regexp.escape mac_address}\s+([0-9.]+)\s+/
|
11
|
-
ip = $1.to_s
|
12
|
-
break
|
13
|
-
else
|
14
|
-
@logger.debug 'Ip could not be parsed from dnsmasq leases file'
|
15
|
-
sleep 2
|
16
|
-
end
|
17
|
-
end
|
18
|
-
# TODO: Raise an user friendly error
|
19
|
-
raise 'Unable to identify container IP!' unless ip
|
20
|
-
ip
|
21
|
-
end
|
22
|
-
|
23
|
-
def mac_address
|
24
|
-
@mac_address ||= base_path.join('config').read.match(/^lxc\.network\.hwaddr\s+=\s+(.+)$/)[1]
|
25
|
-
end
|
26
|
-
|
27
|
-
LEASES_PATHS = %w(
|
28
|
-
/var/lib/misc/dnsmasq.leases
|
29
|
-
/var/lib/dnsmasq/dnsmasq.leases
|
30
|
-
/var/db/dnsmasq.leases
|
31
|
-
)
|
32
|
-
|
33
|
-
def dnsmasq_leases
|
34
|
-
LEASES_PATHS.map do |path|
|
35
|
-
File.read(path) if File.exists?(path)
|
36
|
-
end.join("\n")
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
module Vagrant
|
2
|
-
module LXC
|
3
|
-
class Driver
|
4
|
-
module FetchIpWithAttach
|
5
|
-
# Include this so we can use `Subprocess` more easily.
|
6
|
-
include Vagrant::Util::Retryable
|
7
|
-
|
8
|
-
def assigned_ip
|
9
|
-
ip = ''
|
10
|
-
retryable(:on => LXC::Errors::ExecuteError, :tries => 10, :sleep => 3) do
|
11
|
-
unless ip = get_container_ip_from_ip_addr
|
12
|
-
# retry
|
13
|
-
raise LXC::Errors::ExecuteError, :command => "lxc-attach"
|
14
|
-
end
|
15
|
-
end
|
16
|
-
ip
|
17
|
-
end
|
18
|
-
|
19
|
-
# From: https://github.com/lxc/lxc/blob/staging/src/python-lxc/lxc/__init__.py#L371-L385
|
20
|
-
def get_container_ip_from_ip_addr
|
21
|
-
output = @cli.attach '/sbin/ip', '-4', 'addr', 'show', 'scope', 'global', 'eth0', namespaces: 'network'
|
22
|
-
if output =~ /^\s+inet ([0-9.]+)\/[0-9]+\s+/
|
23
|
-
return $1.to_s
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|