Commit Graph

2193 Commits

Author SHA1 Message Date
Mitchell Hashimoto fa50f06a4c Error if RubyGems failed. 2013-02-02 23:31:53 -08:00
Mitchell Hashimoto a2ef7790de Start creating the plugin middleware sequences 2013-02-02 18:42:04 -08:00
Mitchell Hashimoto ec995b5ddf Avoid cross-device moves when adding boxes [GH-1350] 2013-02-02 16:37:46 -08:00
Mitchell Hashimoto 165dd63f78 New HandleBoxUrl built-in middleware to handlet the "box_url" config 2013-02-01 11:31:08 -08:00
Mitchell Hashimoto 4e6496bed7 Improve subprocess logging 2013-01-31 19:47:54 -08:00
Mitchell Hashimoto a8c7ad30ee Be a bit more fine grained about errors that are reported for Vfiles 2013-01-31 18:52:29 -08:00
Mitchell Hashimoto 67c2e205be Create rgloader/loader.rb files for encoded files 2013-01-31 18:48:56 -08:00
Mitchell Hashimoto 1392d9b4a5 Detect if a VM name is already taken for VirtualBox 2013-01-30 23:22:45 -08:00
Mitchell Hashimoto 7fe19d3a11 Use box directory as temporary directory to avoid cross-device [GH-1199] 2013-01-30 21:54:07 -08:00
Mitchell Hashimoto c164a5ca81 Merge pull request #1300 from kainz/master
Avoid cross device activity for box creation by creating tmp dir in provider dir
2013-01-30 21:47:40 -08:00
Mitchell Hashimoto c75ec09014 Lower IO.select timeouts to improve subprocess speeds
We were getting bit if the process exited while we were doing an
IO.select because it would then wait the full timeout.
2013-01-30 21:29:04 -08:00
Mitchell Hashimoto c5120fdd5e Don't fail too early with bad Vagrantfiles [GH-1345] 2013-01-30 20:16:10 -08:00
Mitchell Hashimoto e9327c4a28 Better logging in the config logger 2013-01-30 20:12:41 -08:00
Mitchell Hashimoto c57ba9de58 Give a nice human-friendly error message when problems loading Vfile 2013-01-30 20:01:41 -08:00
Mitchell Hashimoto 75ea4e5bdd --provision-with works properly again 2013-01-30 19:42:54 -08:00
Mitchell Hashimoto e0f0066c99 --no-provision works properly again 2013-01-30 19:39:21 -08:00
Mitchell Hashimoto 7eec127704 Support refreshing the machine cache 2013-01-30 10:37:40 -08:00
Mitchell Hashimoto 64042a5d35 Downloading the box_url component works again 2013-01-30 10:24:47 -08:00
Mitchell Hashimoto a21744a12d Merge pull request #1336 from ithinkihaveacat/return-non-zero-if-invalid-command
Return exit status of 1 on invalid command
2013-01-29 10:58:55 -08:00
Mitchell Hashimoto e1b78dbfbe Unlock the file explicitly due to some weirdness on BSD kernels 2013-01-28 21:08:22 -08:00
Mitchell Hashimoto 7531c94dbf Allow path and exception for Lock middleware to be procs 2013-01-28 20:46:39 -08:00
Mitchell Hashimoto 9ae3a373c8 Add new middleware builtin: Lock
This will do a process lock by flocking a file. If it fails, it will
raise an exception of choice.
2013-01-28 17:08:37 -08:00
Mitchell Hashimoto 0d27cd5bcb Warn if Vagrant is run outside of installers 2013-01-28 13:39:56 -08:00
Mitchell Hashimoto d4cf03d6c5 `vagrant package` uses bsdtar 2013-01-28 13:20:42 -08:00
Mitchell Hashimoto 35aef1aa0b Use bsdtar to repackage boxes 2013-01-28 13:18:07 -08:00
Mitchell Hashimoto e6a0023713 Switch to bsdtar for unpackaging a box 2013-01-28 13:01:43 -08:00
Michael Stillwell 7941748db7 Return exit status of 1 on invalid command
Makes "vagrant destroyjj" and similar return an exit code of 1, so that
"vagrant destroyjj && vagrant up" works as expected.
2013-01-27 19:52:43 +00:00
Mitchell Hashimoto c3cc513609 Create the setup_version file to track our directory layout version 2013-01-25 16:37:54 -08:00
Mitchell Hashimoto 6a3c0bd425 Call built-in supports args for imddleware 2013-01-22 12:20:02 -08:00
Mitchell Hashimoto fb875ab642 Better logging in the GracefulHalt middleware 2013-01-22 12:13:42 -08:00
Mitchell Hashimoto 51540496a9 GracefulHalt builtin 2013-01-22 11:56:49 -08:00
Mitchell Hashimoto e1f4e27b1b Update docs for v2 provider interface for MachineState 2013-01-21 11:44:19 -06:00
Mitchell Hashimoto 8ad8f73846 Raise an exception if a non-MachineState is returned 2013-01-21 11:31:20 -06:00
Mitchell Hashimoto 7bdf54923a Create the MachineState class 2013-01-21 11:25:28 -06:00
Mitchell Hashimoto 2d57afbbda Support warnings/errors when upgrading Vagrantfiles internally 2013-01-20 22:04:50 -05:00
Mitchell Hashimoto ffd9c1eb9c Verify we have errors to show if we're going to show them 2013-01-18 13:37:31 -08:00
Mitchell Hashimoto 7f55d5eac8 Builtin: ConfigValidate will validate your configuration 2013-01-18 13:26:14 -08:00
Mitchell Hashimoto 37e36010e0 Remove the ErrorRecorder 2013-01-18 13:15:22 -08:00
Mitchell Hashimoto fff021e51d Update Chef provisioner to new validation API 2013-01-18 13:12:02 -08:00
Mitchell Hashimoto e651eb3aa1 Add a V2 config helper to merge errors since that seems common 2013-01-18 13:03:07 -08:00
Mitchell Hashimoto 3f3c7027aa Machine objects are passed into validate instead of env 2013-01-18 12:43:53 -08:00
Mitchell Hashimoto a8b57ba13f Ignore empty error groups 2013-01-18 12:27:29 -08:00
Mitchell Hashimoto bae6555836 Remove DeprecationError 2013-01-18 12:23:29 -08:00
Mitchell Hashimoto e0c8fadae4 I can remove the `validate!` method from the v1 root 2013-01-18 12:18:30 -08:00
Mitchell Hashimoto 42a1ce6e9d Remove the old config validation error 2013-01-18 12:15:36 -08:00
Mitchell Hashimoto e6f9586d83 New validation method on the root that returns errors 2013-01-18 12:14:40 -08:00
Mitchell Hashimoto 0bd0752bf2 Environment#data_dir
This is basically a directory to store state.
2013-01-18 11:37:49 -08:00
Mitchell Hashimoto 776a1e446b Strip the value, actually, to trim the front newline 2013-01-15 21:57:10 -08:00
Mitchell Hashimoto 6c2e1c354f Chomp values inserted into a StringBlockEditor 2013-01-15 21:55:56 -08:00
Mitchell Hashimoto 23668d4ed0 Fix some newline weirdness with StringBlockEditor 2013-01-15 21:53:11 -08:00
Mitchell Hashimoto adec64baa4 Add the #get method to StringBlockEditor 2013-01-15 20:34:41 -08:00
Mitchell Hashimoto 335503a688 StringBlockEditor to help plugins with owning parts of files 2013-01-15 17:49:46 -08:00
Mitchell Hashimoto 5c9f27626c Provisioner built-in uses new API 2013-01-13 16:09:32 -08:00
Mitchell Hashimoto cf2cca3b7c Revamp the configuration internal state for defining provisioners 2013-01-13 16:02:48 -08:00
Mitchell Hashimoto c8053c00a4 New provisioner API. Shell provisioner adheres to it. 2013-01-13 15:48:52 -08:00
Mitchell Hashimoto 25fcb59e38 Use registries for the V2 plugin manager 2013-01-13 13:05:31 -08:00
Mitchell Hashimoto f3b340aae0 Use registry merging for provider configs 2013-01-13 13:00:06 -08:00
Mitchell Hashimoto 45879132a3 Registries support merging 2013-01-13 12:58:48 -08:00
Mitchell Hashimoto e66c5066e4 Plugin configuration can have scopes now, ex. provider 2013-01-13 12:38:17 -08:00
Mitchell Hashimoto 212e634c3b Make Provision a built-in action.
This allows other providers to just use it.
2013-01-12 16:22:37 -08:00
Mitchell Hashimoto 22571bf05b Rescue the EHOSTDOWN error for SSH 2013-01-12 12:47:49 -08:00
Mitchell Hashimoto 124a2ee5d3 Add the --provider optional flag to `box add` 2013-01-11 21:24:57 -08:00
Mitchell Hashimoto 48eaa93745 Raise proper error if there aren't any NIC slots available 2013-01-11 15:57:08 -08:00
Mitchell Hashimoto 102e8f23d6 Use scoped hash overrides for high-level config 2013-01-11 15:50:09 -08:00
Mitchell Hashimoto 0c612f695f Util::ScopedHashOverride 2013-01-11 15:44:35 -08:00
Bryon Roche b5c75b89a9 Make box creation not cross filesystems.
This will cause issues on modern linux which uses a tmpfs-backed tmpdir.
2013-01-07 16:19:17 -08:00
Mitchell Hashimoto f428b288f3 Convert provider to symbol only if non-nil 2012-12-30 18:08:07 -10:00
Mitchell Hashimoto 20253c4c4f Convert provider to symbol 2012-12-30 18:04:31 -10:00
Mitchell Hashimoto a30a92bb4f active_machines should return name as a symbol 2012-12-30 11:51:22 -10:00
Mitchell Hashimoto 4c46091746 Environment#primary_machine_name and use it for with_target_vms
This makes the single-provider and default provider semantics work with
primary VMs.
2012-12-30 11:12:56 -10:00
Mitchell Hashimoto 07157b47ae Only allow one provider active machine at a time.
Temporary limitation of Vagrant to only allow one active machine with a
provider at a time. That means you cant `up` a machine with both vmware
and virtualbox at the same time. In the future you will be able to but
to avoid various edge cases for now we're disallowing it.
2012-12-30 10:52:01 -10:00
Mitchell Hashimoto 526603dbbf Lots more logging in with_target_vms 2012-12-29 18:34:11 -10:00
Mitchell Hashimoto 9257fe3d98 Environment#active_machines
This returns a list of active machines for the environment. An active
machine is a machine that at one point was created by Vagrant.
2012-12-27 19:28:05 -10:00
Mitchell Hashimoto 4e649cc987 Upgrade V1-style dotfile to V2
See the code and comments for details on how this is done. As usual, we
are very careful about this so as not to inadvertently destruct real
user data.
2012-12-26 22:41:42 -08:00
Mitchell Hashimoto c0c3e7bf43 Remove Vagrant::DataStore
We just don't use it yet and the old implementation was sketchy. I was
not happy with it.
2012-12-26 21:45:24 -08:00
Mitchell Hashimoto b15a6dee0e Log more information about the machine 2012-12-26 21:45:24 -08:00
Mitchell Hashimoto 3baa31460f Store machine ID in "id" file in data directory.
Instead of storing an "active" hash in the local_data of an Environment,
we now place the ID of a machine in the "id" file of the machine data
directory. This file is read upon re-instantiation in order to load the
proper state.
2012-12-26 21:45:23 -08:00
Mitchell Hashimoto d18edc3ce5 Detect a V1 environment and stub upgrade process 2012-12-26 21:45:23 -08:00
Mitchell Hashimoto cc18492c7a Local data path introduced
The local data path is set to the `ROOT_DIR/.vagrant` by default and is
a directory where Vagrant can store environment-local state. This can be
overriden on a per-Environment basis using the `local_data_path`
option.
2012-12-26 21:45:23 -08:00
Mitchell Hashimoto 5cb2f3275a Get rid of a silly constant for subdirs in Environment
The data is only used once anyways so just use a local variable.
2012-12-26 21:45:23 -08:00
Mitchell Hashimoto 8fe0f86dbd The --provider flag for `up` now actually does something. 2012-12-23 21:23:08 -08:00
Mitchell Hashimoto 3808ea377f Upgrade all other default configurations to V2 2012-12-23 16:29:26 -08:00
Mitchell Hashimoto b0b7c56aa3 More accurate commenting/documentation on the command helpers 2012-12-23 16:29:25 -08:00
Mitchell Hashimoto e88d735cb6 Make configured VM providers default to an empty one 2012-12-23 16:29:25 -08:00
Mitchell Hashimoto 6478139cee Move config.vm.customize to VirtualBox specific option 2012-12-23 16:29:25 -08:00
Mitchell Hashimoto dffbf6eb09 Allow COnfirm calls to be forced by specifying a force_key 2012-12-23 16:29:25 -08:00
Mitchell Hashimoto 50d7b0aba4 Fix bug where Call didn't propagate recovery. Warden has no recovery.
The issue here is that when a middleware failed and a recovery sequence
started, it would halt at the "call" step because the "Call" didn't
properly recover the child sequence.

An additional issue was that a Warden had no "recover" method, meaning
embedded Wardens wouldn't recover their stacks properly.
2012-12-23 16:29:25 -08:00
Mitchell Hashimoto a6e0d3908f Create a "dummy" provider for tests 2012-12-23 16:29:24 -08:00
Mitchell Hashimoto ac7958a43b Environment#primary_machine takes a provider argument. Use it. 2012-12-23 16:29:24 -08:00
Mitchell Hashimoto 128c06e78d Environment#default_provider 2012-12-23 16:29:24 -08:00
Mitchell Hashimoto 1ee470a551 Begin work on supporting provider-specific configuration
This works by registering a `config` with `:provider => true` with the
same name as your provider. Vagrant will then automatically configure
the provider when `config.vm.provider` is used.
2012-12-23 16:29:24 -08:00
Mitchell Hashimoto 99c5cddb7d V2 config supports the concept of an "UNSET" value when doing merges
This value should be used as a default, and allows the parent `merge`
method to "just work" most of the time.
2012-12-23 16:29:24 -08:00
Mitchell Hashimoto 2da812bd48 Change log levels of some messages that are useful 2012-12-23 16:29:24 -08:00
Mitchell Hashimoto e16010041a Warden only logs an error once 2012-12-23 16:29:24 -08:00
Mitchell Hashimoto cc24d7b196 Better logging for the box collection 2012-12-23 16:29:24 -08:00
Mitchell Hashimoto c9d5cff7be Add in some logging 2012-12-23 16:29:23 -08:00
Mitchell Hashimoto 819140bbc2 Don't error if box doesn't exist on load 2012-12-23 16:29:23 -08:00
Mitchell Hashimoto 0ec639c8e1 BoxCollection#find should only find V1 box when searching for vbox 2012-12-23 16:29:23 -08:00
Mitchell Hashimoto f2b91d26fd Load the configuration per machine, so that provider boxes work
Boxes are provider-specific, and we don't know the provider until
Environment#machine is called, so we need to build up the machine
configuration during this time.
2012-12-23 16:29:23 -08:00
Mitchell Hashimoto 0180ed849d Move config loader order out from an ivar into a param for the #load
method
2012-12-23 16:29:23 -08:00
Mitchell Hashimoto 1559f7b7a7 Get rid of the old Environment#vms calls. Use #machine everywhere. 2012-12-23 16:29:23 -08:00
Mitchell Hashimoto 130a602e9b Style nitpick 2012-12-16 10:40:12 -08:00
Nate Smith d556c0006c Update lib/vagrant/plugin/v2/plugin.rb
Require set in the V2 plugin file since it uses it.

Fixes #1257
2012-12-11 15:51:35 -05:00
Mitchell Hashimoto d84b71d73e Require set in the V1 plugin file since it uses it. 2012-12-01 11:28:31 -08:00
Mitchell Hashimoto b416665fd7 Just some comments 2012-11-07 22:21:48 -08:00
Mitchell Hashimoto 2ef6ff10f0 Cache the machine objects created in Environment#machine.
Each machine and provider backing should be represented by only one
machine.
2012-11-07 22:08:06 -08:00
Mitchell Hashimoto 67855be77b Add the Environment#machine method
This will eventually replace the Environment#vms method. Because of the
introduction of providers, the environment doesn't know what the backing
of the machines will be (and they're _machines_ now, not _vms_).
Instead, users of Environment will now call `#machine` on the
environment to retrieve a machine with the given backing provider as it
needs it.
2012-11-07 21:45:09 -08:00
Mitchell Hashimoto 53860f90ab V2 loader now properly upgrades V1 configuration.
This is done by calling the `upgrade` method on the _old_ configuration
classes. The old configuration classes are given the complete new
configuration and can set whatever settings they need to on it.
2012-11-07 20:01:39 -08:00
Mitchell Hashimoto d254d6f718 Configure the V2 kernel. 2012-11-06 21:28:44 -08:00
Mitchell Hashimoto 81ca275792 Providers to V2 2012-11-06 21:20:55 -08:00
Mitchell Hashimoto 5a33b7ee54 Hosts to V2 2012-11-06 21:20:22 -08:00
Mitchell Hashimoto 1d2beff649 Guests to V2 2012-11-06 21:14:45 -08:00
Mitchell Hashimoto 45f211b19e Communicators to v2 plugins. 2012-11-06 21:14:10 -08:00
Mitchell Hashimoto 78a1e5726e Get rid of some ruby warnings due to shadowed variables 2012-11-06 21:12:15 -08:00
Mitchell Hashimoto e8370f0098 Convert comands to V2 plugins. 2012-11-06 21:09:29 -08:00
Mitchell Hashimoto be294e002a Build the v2 interface, which is just a copy of V1 for now. 2012-11-06 20:51:03 -08:00
Mitchell Hashimoto 0ca783e8d1 V1 config loader loads upgradable config if not V1
This is to prepare for the upcoming V2 configuration. When we're in V2,
we only want to load _upgradable_ configuration keys.
2012-11-03 21:54:32 -07:00
Mitchell Hashimoto 59d5c5ed92 Add support for "upgrade safe" config classes to plugins.
These are classes that use NO core classes of Vagrant, and are therefore
safe to load for upgrades. i.e. a V2 core can load a V1 config class
that is deemed upgrade safe without crashing Vagrant.
2012-11-03 21:39:06 -07:00
Mitchell Hashimoto c803b0508a Much cleaner plugin part querying syntax.
Before we were manually going over every plugin and getting each piece,
all over the place. Now we have a central manager that will give us all
the pieces we want. There is still some cleanup to do here but this is
much better overall.
2012-11-03 21:25:28 -07:00
Mitchell Hashimoto 6ca671e2b8 Don't allow registry to be given value in non-block form 2012-11-03 20:46:24 -07:00
Mitchell Hashimoto 6df6f6764f Remove plugin activation. It really isn't necessary.
It was only used in a couple places and it isn't necessary since you can
do the loading within the actual blocks themselves.
2012-11-03 20:29:34 -07:00
Mitchell Hashimoto 32d5599e72 Document the box collection format a bit more 2012-09-27 11:57:40 -07:00
Mitchell Hashimoto 1360d86747 Use `next` over select with symbol to proc 2012-09-27 11:52:03 -07:00
skim bad38ca935 fixes an exception issue when a non-directory appears in the boxes dir 2012-09-25 21:13:38 -05:00
Mitchell Hashimoto bb56f4dd31 Clean up logic surrounding file downloader matching 2012-09-09 20:31:17 -07:00
Mitchell Hashimoto e0e2cc1974 Merge pull request #1087 from nwjsmith/master
Allow `file://` URIs from `config.box.url`
2012-09-09 20:28:19 -07:00
Mitchell Hashimoto 7158445c2d Error message on ECONNRESET for box downloading via HTTP [GH-1090] 2012-09-09 20:16:43 -07:00
Nate Smith 50c04ac927 `box.url` can use `file://` URI 2012-08-24 09:53:50 -04:00
Mitchell Hashimoto ba0e426507 Get vagrant package --base working in some hacky way.
`vagrant package --base` is deprecated for a future feature so I didn't
want to waste any brain cycles on how to do this the "right" way since a
new system will be introduced to do this sort of thing in teh future.
2012-08-19 18:51:36 -07:00
Mitchell Hashimoto cc7768c535 Trivial whitespace changes 2012-08-18 20:06:50 -07:00
Mitchell Hashimoto a7b298b647 Remove Vagrant::VM 2012-08-18 19:36:50 -07:00
Mitchell Hashimoto 78d79de5c4 Comment the action_box_add method 2012-08-18 16:19:13 -07:00
Mitchell Hashimoto 47fe278667 `vagrant box add` works again. Box verification remove temporarily.
The built-in middleware sequences will now be hardcoded onto
Vagrant::Action. Other plugins can hook into these sequences to provide
verification and so on. So the VirtualBox plugin will hook into that
action sequence and add verification.
2012-08-18 16:13:14 -07:00
Mitchell Hashimoto fa4cf63462 Remove the actions that are unavailable now from autoload 2012-08-15 21:55:47 -07:00
Mitchell Hashimoto fcffcb2ee0 Delete more unused actions 2012-08-15 21:55:25 -07:00
Mitchell Hashimoto ef5eabb63d Remove the builtin VM middleware that are now part of the VB provider 2012-08-14 22:39:25 -07:00
Mitchell Hashimoto b659191a02 `vagrant up`! 2012-08-14 22:38:41 -07:00
Mitchell Hashimoto 2fc18f7207 `destroy` gets a little farther, and properly halts the VM 2012-08-13 23:18:50 -07:00
Mitchell Hashimoto bca8663742 `vagrant resume` works with the new machine abstraction 2012-08-13 20:03:35 -07:00
Mitchell Hashimoto 83b908f3d8 `vagrant suspend` works with new machine abstraction 2012-08-13 19:30:41 -07:00
Mitchell Hashimoto 296878cff5 Add basic loop detection for distro_dispatch 2012-08-12 19:03:22 -07:00
Mitchell Hashimoto 0eddda3552 Halt works with new machine.
This required some modifications to the linux guest implementation. And
the other guests will have to be modified as well. This is because
`channel` is now `communicate`.
2012-08-12 18:54:52 -07:00
Mitchell Hashimoto f9752d78d8 Properly resolve and load the guest class impl for Machines 2012-08-12 18:35:19 -07:00
Mitchell Hashimoto 28f341ec75 Begin working on the #guest method for Machine instances 2012-08-12 16:46:00 -07:00
Mitchell Hashimoto 5e70ad0ec2 `vagrant ssh -c` now uses a middleware sequence 2012-08-10 00:57:23 -07:00
Mitchell Hashimoto 2e25285297 Add nice inspect results for Environment and Machine 2012-08-10 00:38:11 -07:00
Mitchell Hashimoto 64afd578b3 Just always return the SSH communicator for machines for now.
In the future we'll actually find a matching communicator but for now
since we're just focusing on machine abstraction, we just return SSH.
2012-08-08 21:57:08 -07:00
Mitchell Hashimoto 5ae3e0e80c Allow the definition of communicators in plugins 2012-08-08 21:52:25 -07:00
Mitchell Hashimoto 595e7cee0e Move SSH communication to a plugin 2012-08-08 21:48:51 -07:00
Mitchell Hashimoto a1cef830e3 Add the Communicator plugin API.
This allows communication protocols to be defined for the machine. This
is how things like SSH will be implemented.
2012-08-08 21:28:28 -07:00