Commit Graph

1909 Commits

Author SHA1 Message Date
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 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
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
Matt Callaway 117a9c146a On Linux where IPv6 is disabled, where /etc/hosts has '::1 localhost', a socket connect to localhost 2222 results in ENETUNREACH which needs to be caught as per this patch. 2012-05-25 15:45:18 -05:00
Mitchell Hashimoto d5a7ca6159 config.ssh.shell now contains full shell command
Before, it only contained the shell executable and "-l" was magically
appended to it. However, every shell doesn't support "-l" and maybe "-l"
isn't even the behavior that users want!

Therefore, the config.ssh.shell command must now contain the full
command to execute.
2012-05-23 15:30:16 -07:00
Mitchell Hashimoto de78a3637a Plugin activation
Vagrant is only guaranteeing that the plugin definition superclass (the
Vagrant.plugin("1") part) is backwards compatible. Anything else, such
as Vagrant::Command::Base and so on, will likely change in future
versions. Beacuse of this, plugins should only immediately expose their
definition.

In order to support loading the other classes, plugins should defer
loading to the "activation" phase of a plugin. This can be done using
the `activated` block:

    class MyPlugin < Vagrant.plugin("1")
      name "my plugin"

      activated do
        require "myplugin/my_command"
      end

      command("foo") { MyCommand }
    end

Plugin activation is done at two specific times:

  * Right when a Vagrant::Environment is created and the global plugins
    (such as from ~.vagrantrc) are loaded.
  * Right before loading configuration, but after the Vagrantfiles have
    been evaluated. This allows plugins to be defined within these files
    as well.
2012-05-21 22:23:50 -07:00
Mitchell Hashimoto 3204b3a580 Vagrant.configure and versioned configuration
Vagrant.configure is now how configuration is done in Vagrantfiles
(previously it was Vagrant::Config.run). This function takes a single
argument which is the version of configuration to use.

Various internals were updated for this new versioned configuration.

Note that multiple versions of configuration aren't yet used so aren't
fully supported by Vagrant, but the foundation is being set here.
2012-05-21 21:47:01 -07:00
Mitchell Hashimoto 95e554314e Foundation for supporting multiple version types
I created VersionBase which is the abstract base class for any
configuration versions. Configuration versions are responsible for
knowing how to load configuration given a proc (from a
Vagrant.configure block), as well as merging configuration procs. In the
future, it will have to upgrade versions as well. This is not done yet.

The VERSIONS constant was added to Vagrant::Config which is a registry
to keep track of all the available configuration versions. The
VERSIONS_ORDER constant is an array of the ordering of these versions.
The ordering is important so that in the future Vagrant can attempt to
gracefully upgrade the configurations. It is also used to determine the
current configuration version (which is assumed to be the last version
in the order).

The loader was modified to use the current version and the VERSIONS
registry instead of hardcoding V1.
2012-05-20 17:47:24 -07:00
Mitchell Hashimoto 0f85cb7b74 Log the guest class chosen 2012-05-19 09:32:43 -07:00
Josh Mahowald 174df1edf0 Setting up hostname before setting up the network to minimize issues as described in http://serverfault.com/questions/38114/why-does-sudo-command-take-long-to-execute 2012-05-19 09:17:44 -07:00
Mitchell Hashimoto 73c8299ecd Merge pull request #868 from justinlynn/add_dhcp_default_route_option
Issue #862: Allow bridged networking without removing the interface's DHCP assigned default route
2012-05-06 14:46:58 -07:00
Mitchell Hashimoto 8c6f3edf2d Single-VM mode still allows target name in vagrant commands 2012-05-06 14:33:47 -07:00
Mitchell Hashimoto bc0643613a Vagrant.require_plugin [GH-916] 2012-05-06 14:01:10 -07:00
Mitchell Hashimoto d230f0a41c Environment.rb doesn't need to load in "rubygems" anymore 2012-05-06 13:49:22 -07:00
Mitchell Hashimoto de92f5217c Use `load` for the Vagrantrc, make sure it is only loaded once 2012-05-06 10:09:33 -07:00
Mitchell Hashimoto 0d6248394c Tests for the Easy command base 2012-05-06 10:01:50 -07:00
Mitchell Hashimoto dc4f6e1939 Allow creating multiple easy commands 2012-05-06 09:54:23 -07:00
Ryan LeCompte 2355a4b9a6 fix support for multiple unique easy commands 2012-05-06 01:47:43 -07:00
Mitchell Hashimoto b7854c1ef6 Easy hooks 2012-05-05 22:31:21 -07:00
Mitchell Hashimoto 31ac7271aa Rename EasyCommand namespace to Easy 2012-05-05 22:16:13 -07:00
Mitchell Hashimoto 3d147f1d96 Raise exception if the insert_before middleware is not found 2012-05-05 22:10:26 -07:00
Mitchell Hashimoto 879f98b5d5 Action builder supports indexing middlewares by name 2012-05-05 22:01:53 -07:00
Mitchell Hashimoto c2649074c3 Test command name validation and fix up some bugs 2012-05-05 20:11:26 -07:00
Mitchell Hashimoto e4fa5bb489 Validate that commands only contain proper characters 2012-05-05 20:01:14 -07:00
Mitchell Hashimoto 64ece507ad `download` operation 2012-05-05 19:52:10 -07:00
Mitchell Hashimoto f8ab516082 `upload` operation for easy commands 2012-05-05 19:44:52 -07:00
Mitchell Hashimoto 1d7e02cd63 Build up some operations that can be run.
These are heavily inspired by Fabric! Thanks!
2012-05-05 19:28:50 -07:00
Mitchell Hashimoto 00aba5ac03 Plugin easy commands.
Easy commands are well... easy! They don't offer the full power of
creating a completely custom command class, but they let you do the
basics (what almost everyone needs) with minimal fuss. Example:

class MyPlugin < Vagrant.plugin("1")
  name "my-plugin"

  easy_command "foo" do |action|
    puts "HELLO!"
  end
end

NOTE: The "action" stuff isn't done yet, but will be soon!
2012-05-05 18:57:29 -07:00
Mitchell Hashimoto 8850c086b1 Plugins can now have action_hooks 2012-05-05 18:28:07 -07:00
Mitchell Hashimoto 462136cbf2 Use the .vagrantrc for plugins! 2012-05-05 13:08:07 -07:00
Mitchell Hashimoto d9034da8a4 Remove gem-based plugin loading 2012-05-05 12:57:31 -07:00
Mitchell Hashimoto 3b7030ed2c Merge pull request #905 from LarsFronius/master
Fix for issue #898 - interfaces assigned in wrong order under ruby1.8
2012-05-04 20:52:04 -07:00
Mitchell Hashimoto 359ea23069 Support multiple paths in VBOX_INSTALL_PATH [GH-885] 2012-05-04 20:48:52 -07:00
Mitchell Hashimoto 04df9bc80b Merge pull request #877 from bitprophet/allow-agents-in-plain-mode
Don't use IdentitiesOnly under 'ssh -p'
2012-05-04 20:31:15 -07:00
Jorgen H. Fjeld 6f5a9d13f3 Detect and disable DNS settings that break on Ubuntu 12.04. 2012-05-01 22:24:07 -07:00
Sean Wolfe e10e8aae86 After changing the file permissions, we need to reload the stat before comparing again. Otherwise we will always throw an exception even if we set the permissions successfully. 2012-05-01 13:26:12 -07:00
Lars Fronius 534faeae7c Fixes a bug where interfaces are assigned in a wrong order when using ruby1.8, causing vm boot to stop as documented in issue #898 2012-04-26 21:11:16 +02:00
Mitchell Hashimoto 9956e6d012 Better directory structure for plugins 2012-04-20 16:53:01 -07:00
Mitchell Hashimoto cae80a7716 Make Vagrant::Plugin a module 2012-04-19 21:42:35 -07:00
Mitchell Hashimoto 86a846e445 Remove old command directory 2012-04-19 21:33:26 -07:00
Mitchell Hashimoto 945f3bba67 Remove old commands 2012-04-19 21:29:25 -07:00
Mitchell Hashimoto deb346d5a1 Remove guest subdirectory 2012-04-19 21:28:24 -07:00
Mitchell Hashimoto 3a79aa0beb Remove hosts directory 2012-04-19 21:27:16 -07:00
Mitchell Hashimoto 9593ad3fdb Get rid of provisioners directory 2012-04-19 20:30:14 -07:00
Mitchell Hashimoto 6161c04fcf Fix some issues with commands not referencing proper classes 2012-04-19 14:02:03 -07:00
Mitchell Hashimoto 1489854d70 Move commands into plugins 2012-04-19 13:59:48 -07:00
Mitchell Hashimoto 661f20bb91 Move hosts to a plugin system 2012-04-18 22:20:45 -07:00
Mitchell Hashimoto 1cbac3167f Move provisioners into plugins 2012-04-18 21:53:19 -07:00
Mitchell Hashimoto 0d7b9f84e2 Add logging to v1 plugin registration 2012-04-18 21:32:15 -07:00
Mitchell Hashimoto 1b2fa748f9 Move all guests to plugins, even the distros 2012-04-18 21:23:25 -07:00
Mitchell Hashimoto 7766eb6098 Major guests have been moved to plugins 2012-04-18 21:03:03 -07:00
Mitchell Hashimoto dd459170dd Start moving guest configuration out into plugins 2012-04-18 17:38:20 -07:00
Mitchell Hashimoto a23fee4848 Remove old configuration classes 2012-04-18 17:16:03 -07:00
Mitchell Hashimoto a62e859231 Get rid of the UNSET_VALUE stuff, save it for v2 2012-04-18 17:09:25 -07:00
Mitchell Hashimoto b38fb5e974 Loader uses the new configuration classes 2012-04-18 17:03:34 -07:00
Mitchell Hashimoto 98d6bf958e Move core config into a plugin 2012-04-17 22:12:27 -07:00
Mitchell Hashimoto c0ee3b06ff Config merging 2012-04-17 10:22:24 -07:00
Mitchell Hashimoto 92ee042fc2 V1 config loading using plugins as a source for config keys 2012-04-16 22:26:38 -07:00
Mitchell Hashimoto b46daa82bc Ability to define configuration classes on plugins 2012-04-15 16:04:54 -05:00
Mitchell Hashimoto 2eebc2cb68 Basic Plugin class 2012-04-15 15:34:44 -05:00
Mitchell Hashimoto 4034a2db21 `vagrant destroy` works in "guru meditation" state 2012-04-12 10:18:34 -07:00
Jeff Forcier e35fac0986 Protip, don't apply changes from old released versions to master 2012-04-09 18:01:03 -07:00
Jeff Forcier 59852e79de Don't use IdentitiesOnly under 'ssh -p' 2012-04-09 17:57:41 -07:00
Justin Lynn a20ee32c9a Need to correctly configure the template's options.
pull the config through the bridged interface configuration routine

template debugging

add another test line

set the setting in the correct areas, yay dynamic method calls
2012-04-05 10:58:58 -07:00
Justin Lynn bf3d3b0245 add use_dhcp_assigned_default_route setting to allow for dhcp bridged interfaces which have a default route assigned by dhcp 2012-04-05 09:21:09 -07:00
Mitchell Hashimoto 00c4193b43 Merge pull request #856 from stevehodgkiss/fix_error_when_changing_users
Cleanup any tmp files set by vagrant to fix a permissions issue when switching users.
2012-04-03 21:56:16 -07:00
Mitchell Hashimoto e98cedf0e1 LogLevel QUIET for SSH to suppress known hosts warning [GH-847] 2012-04-02 09:57:16 -07:00
Mitchell Hashimoto 285a07ebb3 Don't use unless 2012-04-02 09:55:39 -07:00
Steve Hodgkiss 3561c1c5ba Guests should clean up after themselves 2012-04-02 17:33:54 +10:00
Steve Hodgkiss 092e8a95b3 Cleanup any tmp files set by vagrant to fix a permissions issue when switching users. 2012-04-02 14:56:43 +10:00
David Calavera e8c5cf09db fix reading information method for vbox 4.1 2012-03-31 18:58:02 -07:00
David Calavera b0e6085c0b Fix importing progress status check 2012-03-31 18:50:45 -07:00
David Calavera 73b31b5a3b fix regexp matchers 2012-03-30 19:36:35 -07:00
David Calavera eb07788db1 Remove global variables 2012-03-30 19:36:26 -07:00
Mitchell Hashimoto 1782acdf2e Fix up some stuff from previous pull request 2012-03-30 19:31:03 -07:00
Hunter Morris db6cd14f9e Detect when the VirtualBox installation is incomplete and error 2012-03-30 19:29:39 -07:00
Mitchell Hashimoto 9f6bc9ee03 Catch Errno::ETIMEDOUT for downloading boxes [GH-849] 2012-03-30 19:28:10 -07:00
Mitchell Hashimoto 2ed6695f78 Improve the SSH ready? check [GH-841] 2012-03-28 22:30:01 -07:00
Mitchell Hashimoto c9d1110b0e Up version for development 2012-03-28 22:08:55 -07:00
Mitchell Hashimoto 41445466ee v1.0.2 2012-03-25 10:08:22 -07:00
Mitchell Hashimoto bfe20a223f Fail fast if the VM fails to boot properly. [GH-825] 2012-03-25 10:00:27 -07:00
Mitchell Hashimoto 1b4388ee98 Fix a few edge cases where CLI#execute didn't properly return an int 2012-03-25 09:58:57 -07:00
Mitchell Hashimoto 351f9757a1 Backwards compatible with_target_vms, fix failing test 2012-03-23 11:29:10 -04:00
withnale ff36845259 Allow multiple VMs to be specified for relevant commands 2012-03-23 11:25:35 -04:00
Mitchell Hashimoto 3338b6c134 Support arbitrary exit statuses for CLI commands that aren't exploding 2012-03-23 11:07:35 -04:00
Mitchell Hashimoto c1445a0130 Check if a port is open prior to forwarding [GH-821] 2012-03-23 10:31:27 -04:00
Mitchell Hashimoto d08a65e7f7 IsPortOpen utility 2012-03-23 10:26:29 -04:00
Mitchell Hashimoto 3877b71983 Better logging in the SaneDefaults middleware 2012-03-23 10:00:26 -04:00
Seth Chisamore c137dec14f Enable DNS proxy (in NAT mode) by default 2012-03-23 09:37:04 -04:00
Mitchell Hashimoto a1b16fd96d Merge pull request #816 from Oakie3CR/chef-solo-encrypted-databags
Add encrypted data bag options to chef-solo
2012-03-23 06:21:36 -07:00
Mitchell Hashimoto 1749e4cf94 Enable Host IO cache on SATA controller by default 2012-03-22 13:41:48 -07:00
Mitchell Hashimoto 641a8daac8 safe_puts to avoid EPIPE [GH-819] 2012-03-18 17:45:49 -06:00
Hendrik Volkmer 28e391cb61 Disable IdentitiesOnly for SunSSH
SunSSH is default on Solaris/OpenSolaris/Illumos. SunSSH does not support
the IdentitiesOnly option. 'vagrant ssh' works when the options is not supplied.
2012-03-18 16:32:15 +01:00
Mitchell Hashimoto cd92d6483f Update CHANGELOG 2012-03-15 09:52:28 -06:00
Remco Vermeulen 728dbe5a4f Make sure that the private_key_path is expanded before checking existence.
This allows for paths like ~/.ssh/some_key to be defined in the Vagrantfile.
2012-03-14 12:02:31 +01:00
Christian Rigdon b4e24c91f5 Add encrypted databag options to chef-solo 2012-03-13 16:27:11 -06:00