Commit Graph

2532 Commits

Author SHA1 Message Date
Mitchell Hashimoto 194cd2145d Fix some nondeterminism in tests with GCing tempfiles.
Before, the tempfile "f" could be GC'd before the path was used,
resulting in failed tests because when it is GC'd the tempfile is
removed. We now store the tempfile in an instance variable so that it
isn't even available for GC until after the test is finished running.
2012-06-26 15:06:04 -07:00
Mitchell Hashimoto 2e00a007ce Move provisioner superclass into the V1 namespace 2012-06-26 15:06:04 -07:00
Mitchell Hashimoto 798704c6d2 Move the loader into the Config::V1 namespace. 2012-06-26 15:06:03 -07:00
Mitchell Hashimoto 07a48c0de8 Merge pull request #991 from muffs/master
Small error message fix. :)
2012-06-25 13:25:01 -07:00
Julian Connor 635920e56e Small error message fix. 2012-06-25 16:13:18 -04:00
Mitchell Hashimoto 41bc8e7454 Move Config::V1::Base to Vagrant::Plugin::V1::Config 2012-06-24 17:06:11 -07:00
Mitchell Hashimoto ffab8cab68 Renamespace V1 plugin root to Vagrant::Plugin::V1::Plugin
This is mostly a transparent change to end users, but I'm going to put
all base classes for V1 into Vagrant::Plugin::V1.
2012-06-24 14:24:52 -07:00
Mitchell Hashimoto f26024f771 Test Tempdir class cleans itself up 2012-06-24 00:03:28 -07:00
Mitchell Hashimoto 37c54c7b20 Use a temporary directory for the VAGRANT_CWD when running tests
Tests before were picking up a Vagrantfile in the Vagrant source
directory, which can cause some funny failures. This ensures that each
test run will actually establish a new temporary CWD so that a
Vagrantfile is hopefully never found.
2012-06-23 23:56:39 -07:00
Mitchell Hashimoto 6231bef3f0 Simple logging text change 2012-06-23 23:40:55 -07:00
Mitchell Hashimoto 7a299ae2de Configuration loader can handle upgrading.
The basic process for this is to:

1. Load the configuration using the proper loader for that version. i.e.
   if you're loading V1 config, then use the V1 loader.
2. If we just loaded a version that isn't current (imagine we're
   currently at V3), then we need to upgrade that config. So we first
   ask the V2 loader to upgrade the V1 config to V2, then we ask the V3
   loader to upgrade the V2 config to V3. We keep track of warnings and
   errors throughout this process.
3. Finally, we have a current config, so we merge it into the in-process
   configuration that is being loaded.
2012-06-23 19:56:31 -07:00
Mitchell Hashimoto 9bc1ea5f04 Use config finalize to move some version-specific logic to the version
This moves out the concept of a "default VM" from the Environment class
and makes it the responsibility of the V1 configuration that at least
one VM is defined on it. This lets the configuration ultimately decide
what a "default" implementation is.
2012-06-23 12:48:53 -07:00
Mitchell Hashimoto 70fb804128 Configuration versions can finalize config after loading
This is useful so that it can take a look at the final loaded
configuration object and possibly make some tweaks to the configuration
object. The use case this was built for was so that config V1 can verify
that there is always at least a single VM defined as a sub-VM, the
"default" VM.
2012-06-23 12:27:32 -07:00
Mitchell Hashimoto 7e19d6849b Config loader no longer assumes latest version for procs.
Previously, all procs were assumed to just be the current version. This
is certainly not going to be true always so now the version number of
the configuration must be explicit if you're assigning a proc to the
configuration loader.
2012-06-23 12:06:54 -07:00
Mitchell Hashimoto b3db82e516 Separate out the versions the config loader knows as init params.
This means that the Config::Loader now only knows how to load
configuration for versions used to initialize the class. This lets
things like the tests be completely isolated from what the actual
configuration is for Vagrant. This will be immensely useful to verify
that the loader functionality works for non-trivial bits (like
upgrading) without depending on Vagrant's upgrading functionality.
2012-06-23 11:33:53 -07:00
Mitchell Hashimoto a677c15e86 Use `next` instead of `return` for 1.8.x compatibility.
Since we're not calling this lambda from inside a method, the `return`
causes a LocalJumpError on 1.8.x. It appears this functionality works
fine on 1.9.x but we'd like to support both. The correct behavior
appears to use `next`.
2012-06-23 10:47:01 -07:00
Mitchell Hashimoto ba64c28304 Convert the path to a string because it may be a Pathname 2012-06-22 21:06:49 -07:00
Mitchell Hashimoto fa99eb7e54 Check for permission denied when using SCP to upload [GH-924] 2012-06-22 21:04:21 -07:00
Mitchell Hashimoto 76f7da0618 FreeBSD guest network config upload must be a file. 2012-06-22 20:56:41 -07:00
Mitchell Hashimoto d8c16035c8 Don't use Pathname#each_child for 1.8.7 compat [GH-979]
each_child is a 1.9.x feature. The implementation however is simple
enough that I copied it over and just use the 1.8.7 compatible version.
2012-06-22 20:47:43 -07:00
Mitchell Hashimoto e02f694712 Merge pull request #987 from videlalvaro/patch-1
Fixes minor typo
2012-06-20 09:36:28 -07:00
Alvaro Videla a46640c720 Fixes minor typo 2012-06-20 11:16:29 +03:00
Mitchell Hashimoto bd1def6b22 Renamespace Kernel to Kernel_V1 2012-06-14 18:49:20 -07:00
Mitchell Hashimoto 51be92eeb6 Remove dependence on V1 Kernel from Environment 2012-06-14 18:46:48 -07:00
Paul Morton 922a5aade5 Update drivers to support reading MAC Addresses 2012-06-11 21:29:21 -07:00
Mitchell Hashimoto 7bf613a162 Merge pull request #973 from mattrobenolt/expand-dotpath
Allow the .vagrant dotfile to be moved into a completely different directory tree
2012-06-11 21:24:49 -07:00
Matt Robenolt db76b42ef5 Allow the .vagrant dotfile to be moved into a completely different directory tree
I wanted to define my dotfile as: `config.vagrant.dotfile_name =
"~/.vagrant-projectname"` and noticed that the full path wasn't
expanded as expected.

This patch allows the vagrant file to be placed anywhere on the
filesystem.
2012-06-09 22:56:54 -07:00
Mitchell Hashimoto 3a07535e51 Update CHANGELOG 2012-06-08 10:25:47 -07:00
Mitchell Hashimoto e1f00c6c27 Merge pull request #964 from jbraeuer/puppet-modulepath-fix
Fix problem that Puppet module-paths were re-ordered by Vagrant.
2012-06-08 10:24:38 -07:00
Mitchell Hashimoto be55534fe2 Merge pull request #968 from mxtthias/ssh-command-eof
Explicitly tell ssh server we're done sending data
2012-06-08 10:23:03 -07:00
mxtthias 447d6810f7 Explicitly tell ssh server we're done sending data 2012-06-08 14:40:49 +02:00
Jens Braeuer ae92895411 Fix problem that Puppet module-paths were re-ordered by Vagrant.
Puppet module-path were re-ordered by Vagrant due to the use of a
hash. This could lead to unpredictable results.
2012-06-07 20:37:15 +02:00
Mitchell Hashimoto b393de052f Subprocess now only yields stdout/stderr if you're listening 2012-06-01 23:17:48 +02:00
Mitchell Hashimoto 2441961a34 Fix bug where SSH didn't work properly
Forgot to set the `shell` variable properly
2012-06-01 23:17:38 +02:00
Mitchell Hashimoto 4efa9ad3cc Update CHANGELOG 2012-06-01 17:13:19 +02:00
Mitchell Hashimoto 1a6ae81aa9 Require what to be notified for with block and Subprocess.execute
There was an issue before where the stdin buffer would always have space
so it would always yield that block and Ruby would spin at 100%. Now we
require all callers to say what they want to listen for. This drops
CPU down to almost nothing.

See GH-832
2012-06-01 17:02:12 +02:00
Mitchell Hashimoto 903fd3acdc Easy operations API `local` now echoes stdout/stderr 2012-06-01 16:38:40 +02:00
Mitchell Hashimoto ca6d49bc94 Easy operations `run` and `sudo` now echo stdout/stderr 2012-06-01 16:33:41 +02:00
Mitchell Hashimoto f133f39bcc Add comment to explain unclear code 2012-06-01 16:08:41 +02:00
Mitchell Hashimoto fd9ad904fe Easy commands now take a target VM name
It is assumed to be the first arg, as long as the first arg doesn't
begin as a flag "-foo"
2012-06-01 15:59:05 +02:00
Mitchell Hashimoto 83917a6bb0 Added `arg` and `arg_extra` API to easy commands
Easy commands can now easily get arguments from the command line.

Using `arg`, you can get named arguments on the command line, such as
"--foo" or "-f"

With `arg_extra`, you can get any remaining arguments after a "--"
on the command line, which is a common pattern used to grab longer
parameters.
2012-06-01 15:57:55 +02:00
Mitchell Hashimoto 100e1f7eb0 Primary VMs are respected again.
At some point in the past, primary VMs were no longer respected for
commands. This fixes taht.
2012-06-01 15:10:26 +02:00
Mitchell Hashimoto 9cb53860c2 New easy command APIs: argv, info, error, success
Some new APIs were added to the easy command operations. `info`,
`error`, and `success` are simple ways to output messages to the UI
without resorting to "puts" in Ruby, since the Vagrant UI object is the
idiomatic way to do communication with the world.

Additionally, `argv` was added which gives commands access to the
command-line arguments that are remaining that does not include the
vagrant binary or subcommand.

Also, behavior was changed: Previously, easy commands would run for
every target VM. Now, it is only run once with the primary VM. In the
next commit, I plan on adding a new flag that signifies an easy command
is meant to work with a named VM.
2012-06-01 14:55:08 +02:00
Mitchell Hashimoto da98ce59b3 Basic fixes to the configure_networks for Arch 2012-06-01 14:26:34 +02:00
Marco Monteiro f6c33fb4ef Fix reference to undefined variable 2012-06-01 14:24:15 +02:00
Marco Monteiro 5bbabaf5a5 Fix multiple ethernet interface support on Arch Linux 2012-06-01 14:23:15 +02:00
Mitchell Hashimoto 48ed18a385 Merge pull request #954 from leth/patch-1
Reword plugin autoloading message slightly.
2012-06-01 02:39:30 -07:00
Mitchell Hashimoto 1ef679f683 SSH log level fatal. Thanks @petejkim
This change makes it so that SSH errors are shown, whereas QUIET hid
those as well. The main change to QUIET was to get rid of warnings,
not errors, so this fixes that.
2012-05-31 23:42:28 +02:00
Marcus Cobden 2ad4910a36 Reword plugin autoloading message slightly. 2012-05-28 21:20:29 +02:00
Zsolt Takács cac79cf409 preserve attributes on packaging when using ruby 1.9.2
see http://bugs.ruby-lang.org/issues/4507
2012-05-26 16:51:18 -07:00