This enables synced folder implementations to be completely standalone
plugins and simplifies the way synced folders are enabled for providers
by providing a standard `SyncedFolder` middleware that does everything.
This is all much better tested than previously.
The built-in synced folder types are now:
* "virtualbox" - VirtualBox shared folders
* "nfs" - NFS shared folders
These can now easily be extended
The default shell is "bash -l" which does not get installed by default
on FreeBSD. This change allows the plugin to override the default shell
and use a known installed shell (sh).
Since VM images can be fairly large and connections rather flaky, it would be
nice to support resumable downloads whereby, if a download is interrupted for
some reason, on the next attempt, it picks up where it left off.
To implement this, the following changes were made:
* The temporary download filename is now constructed from a SHA1 of the
`box_url` instead of a timestamp. This allows separate invocations of
Vagrant to 'share' the download-path if the URLs exactly match.
* Add `--continue-at -` option to `curl` which tells it to automatically resume
downloading where it left off
* Modify the `recover` method in `box_add` to not remove the temporary
download path if the download was interrupted
Known Issue:
* The progress on a resumed download will look a bit wonky in the sense that,
it starts at 0% each time, instead of where it left off. Since Vagrant is
pulling this directly from `curl`, this is more of an upstream issue.
Fixes#57
This fixes the bug seen here:
http://pastebin.com/QzWQQndK
Which would generate an Argument Error causing "vagrant up" and other such commands to fail.
In the case that NFS is already started on a Gentoo host, /etc/init.d/nfs start will not reload exports, but fail. /etc/init.d/nfs reload is known to fail for some esoteric configurations of /etc/exports, restart should be safe for existing connections.
when up-ing several boxes at once, VBoxManage modifyvm gets cranky and throws random lock errors. this adds the existing retryable logic to
the customize and sane_defaults actions, both of which fire a bunch of
modifyvm commands, all of which are fine to run multiple times.