Commit graph

26 commits

Author SHA1 Message Date
Ray Ruvinskiy
dc55c914e4 Work around WaitForCommunicator lock race condition
The LXC provider issues the "fetch_ip" action to look up the IP address
of the container as part of its "ssh_info" action.
Vagrant::LXC::Action.action_fetch_ip checks the machine state using
Builtin::IsState, which calls Vagrant::Machine.state, which also updates
the state in the machine index and acquires a machine index entry lock to do that.
A race condition ensues in WaitForCommunicator.call, where ready_thr tries
to acquire the machine index lock while running ssh_info, and states_thr tries
to acquire the same lock doing its own state look up (env[:machine].state.id).
If they both try to acquire the lock at the same time, one will fail, and
an exception will be raised.

Work around this issue by checking for the desired machine state (:running) in
Vagrant::LXC::Provider.ssh_info, which can get the state from
Vagrant::LXC::Provider.state, which in turn does not write out the state into
the index file and does not acquire the index entry lock.
2014-09-29 16:47:29 -04:00
Jef Mathiot
94e175dc07 sudoers command now creates a safe wrapper script.
Sudoers now creates a safe wrapper script that performs sanity checks on sudo :
* wrapper generated in /usr/local/bin (name includes version to allow multiple wrappers on the same system)
* sudoers command now generates a one-line file in /etc/sudoers.d
* SudoWrapper use the new wrapper
* Removed unused Config#validate method
2014-04-09 15:53:20 +02:00
Fabio Rehm
005140099c Check for whether lxc is installed using lxc-create
Closes GH-214 and GH-211
2014-02-12 01:41:55 -02:00
Fabio Rehm
6066d22ad9 Simplify check for whether lxc is installed [GH-186] 2013-12-17 22:59:32 -02:00
Jan Vansteenkiste
9b7491c2e8 Attempt to find the lxc-version command using sudo
... if lxc-version is not found in the efault PATH

Fixes #195
2013-11-12 13:38:50 +01:00
Fabio Rehm
0385a64d31 Replace ugly driver builder with a more intelligent approach
References #118
2013-07-29 12:08:24 -03:00
Fabio Rehm
97f6edeed8 Error out if LXC is not installed
This is enough to close #11
2013-07-28 02:55:00 -03:00
Fabio Rehm
d62a053674 Add support for using a sudo wrapper script
Closes #90
2013-07-28 02:17:07 -03:00
Fabio Rehm
a9c4745b78 Hack in support for fetching container IPs from dnsmasq leases
Closes #49
2013-04-10 02:02:38 -03:00
Fabio Rehm
1eb7b52da9 💣 custom machine state class 2013-04-08 20:12:05 -03:00
Fabio Rehm
ed552b6af0 Driver#name -> Driver#container_name 2013-04-05 22:28:41 -03:00
Fabio Rehm
514736bdd6 Rename old container references to driver 2013-04-05 22:10:48 -03:00
Fabio Rehm
082f7dc5d3 Rename Container to Driver 2013-04-05 22:10:48 -03:00
Fabio Rehm
1fcdc07a3a Remove crazy TODO note 2013-04-05 22:10:48 -03:00
Fabio Rehm
78f8393536 Update comment reference 2013-03-29 12:31:36 -03:00
Fabio Rehm
31f60022d8 Allow setting guest ssh port from Vagrantfile 2013-03-29 12:29:24 -03:00
Fabio Rehm
d2a1eeeabc Use arp to grab container ip instead of dig (it seems to be more reliable)
References: #31
2013-03-10 01:55:18 -03:00
Fabio Rehm
238b5cd681 Move vendored_vagrant require to the right place 2013-03-10 00:45:27 -03:00
Fabio Rehm
9a168950fe First stab at handling a custom lxc-dhcp IP
Will help on #23
2013-03-08 04:32:47 -03:00
Fabio Rehm
22e5a48af5 Add ssh_info to provider 2013-03-02 16:45:14 -03:00
Fabio Rehm
849e9c73d7 Rename LXC::Actions to LXC::Action 2013-03-02 03:57:03 -03:00
Fabio Rehm
5291f13316 Handle stale machine id / container name 2013-03-02 01:18:38 -03:00
Fabio Rehm
661b00ea22 Remove LXC::Container dependency on a vagrant machine 2013-03-02 00:55:45 -03:00
Fabio Rehm
7168da249e Extract container object 2013-03-01 00:34:51 -03:00
Fabio Rehm
1bdd3f87a6 Hook up provider with some "placeholder" actions 2013-02-28 00:21:59 -03:00
Fabio Rehm
faa2aaa6ab Scaffold config, plugin and provider classes 2013-02-28 00:20:54 -03:00