Commit Graph

251 Commits

Author SHA1 Message Date
Mitchell Hashimoto 5d39cc381f Merge pull request #2694 from tmatilai/plugin-json-errors
core: show more informative error if plugin.json parsing fails
2013-12-28 13:12:59 -08:00
Mitchell Hashimoto 0316665ad8 commands/plugin: use default version requirement 2013-12-28 14:10:57 -07:00
Teemu Matilainen a5b84f413e core: More informative error if plugin.json parsing fails 2013-12-20 07:10:10 -03:00
Mitchell Hashimoto da91572ce7 commands/init: error if can't write Vagrantfile [GH-2660] 2013-12-15 11:28:51 -08:00
Mitchell Hashimoto 2c568a75f2 commands/ssh: use proper variable 2013-12-13 22:32:01 -08:00
Mitchell Hashimoto 902b769e6b core: -t/-T work for vagrant ssh -c [GH-2618] 2013-12-13 21:07:54 -08:00
Teemu Matilainen 294f4def91 Fix `vagrant plugin` commands
`StateFile#installed_plugins` returns now a Hash instead of Array.

Fixes regression from 39b2539.
2013-12-04 18:25:33 -03:00
Mitchell Hashimoto d354cdda4a core: request users upgrade plugins if they're old 2013-12-04 11:43:39 -08:00
Mitchell Hashimoto 236141ba90 commands/plugin: old state files default to 0 for vagrant version 2013-12-04 11:29:17 -08:00
Mitchell Hashimoto 39b2539ec7 commands/plugin: state file keeps track of the Vagrant version 2013-12-04 11:17:48 -08:00
Mitchell Hashimoto 4f17a70c4e commands/plugin: ignore default gems when pruning
For modern RubyGems compatibility
2013-12-03 23:48:06 -08:00
Mitchell Hashimoto 72edddbb09 core: do proper type conversions for box checksum types 2013-12-01 23:03:21 -08:00
Mitchell Hashimoto 1094ac976e core: support checksum on box add 2013-12-01 23:03:20 -08:00
Mitchell Hashimoto cd3e19306c commands/box/add: custom CA cert [GH-2337] 2013-11-26 19:32:56 -08:00
Mitchell Hashimoto 13b52f6b6e Merge branch 'client-certs' of https://github.com/sthulb/vagrant into sthulb-client-certs
Conflicts:
	config/default.rb
	lib/vagrant/action/builtin/handle_box_url.rb
	plugins/commands/box/command/add.rb
2013-11-25 16:50:11 -08:00
Mitchell Hashimoto 48973a72d5 commands/box/list: clean up 2013-11-25 13:26:46 -08:00
Mitchell Hashimoto 3bedc77cc4 Merge branch '2293-track-box-url' of https://github.com/fgrehm/vagrant into fgrehm-2293-track-box-url
Conflicts:
	plugins/commands/box/command/list.rb
2013-11-25 13:20:26 -08:00
Mitchell Hashimoto 7ba9d2d0a0 commands/init: add --output flag [GH-1364] 2013-11-24 11:53:15 -08:00
Mitchell Hashimoto 5cbc54d570 commands/box: list has machine-readable output 2013-11-24 11:42:24 -08:00
Mitchell Hashimoto 15d639c8dc website: document machine-readable output 2013-11-24 11:37:57 -08:00
Mitchell Hashimoto 42a71a953d commands/status: add machine-readable output 2013-11-24 11:11:38 -08:00
Mitchell Hashimoto f66d08d73c commands/plugin: style nitpick 2013-11-23 16:45:45 -08:00
Mitchell Hashimoto 63005fc1c6 Merge pull request #2420 from tmacedo/rubygems_2_compatibility
core: compatibility with rubygems 2.x
2013-11-23 16:44:10 -08:00
Mitchell Hashimoto 46d9ded812 commands/box/add: add --clean flag to ignore continuation 2013-11-23 15:55:52 -08:00
Mitchell Hashimoto 97389d4255 core: output synopsis with command [GH-2249] 2013-11-23 14:00:42 -08:00
Fabio Rehm 48875124b9 commands/box: Read box URL and downloaded date from JSON 2013-10-29 13:09:24 -02:00
Fabio Rehm 05a8cf523a core: Get rid of code that deals with box info on a separate statefile 2013-10-29 13:09:24 -02:00
Fabio Rehm 18cf66e83a commands/box: List base box downloaded URL and datetime when `-i` gets provided to `box list` 2013-10-29 13:09:24 -02:00
Fabio Rehm cbc7e7eedb commands/box: Preparing to display additional box information on `box list` 2013-10-29 13:09:23 -02:00
Fabio Rehm 031119a858 commands/box: Extract a base class for dealing with StateFile instantiation 2013-10-29 13:09:23 -02:00
Fabio Rehm 1c689d2211 core: Remove box information from state file after box removal 2013-10-29 13:09:23 -02:00
Fabio Rehm e4b5db829e commands/box: Extract box removal code from `box remove` command into a builtin action 2013-10-29 13:09:23 -02:00
Fabio Rehm 17fd5f9e4e commands/box: Introduce a StateFile for keeping track of downloaded boxes 2013-10-29 13:09:23 -02:00
Tiago Macedo 2d66d94ebe compatibility with rubygems 2.x 2013-10-25 11:27:17 +02:00
canausa 10883b3be6 Add --no-parallel to provision 2013-10-21 10:19:42 -04:00
Mitchell Hashimoto b8dc881792 commands/up: validate provision-with args [GH-1957] 2013-09-02 15:06:03 -07:00
Mitchell Hashimoto ac1404b9ac commands/plugin: Add "update" subcommand 2013-09-02 09:31:26 -07:00
Mitchell Hashimoto c95a68ed5d commands/reload: dont' provision by default 2013-09-02 09:13:22 -07:00
Mitchell Hashimoto e2ddab532d core: Don't provision after first `up` by default [GH-1776] 2013-09-02 09:03:46 -07:00
Mitchell Hashimoto c4e79db552 commmands/box/remove: fix exception when no provider specified [GH-2100] 2013-08-30 09:43:35 -07:00
Mitchell Hashimoto c2012ff944 commands/up: flag --no-destroy-on-error [GH-2011] 2013-08-29 12:13:02 -07:00
Mitchell Hashimoto 602a5ce0b4 commands/plugin/install: nitpick on style
/cc @ipwnstuff - Just nitpicking and CCing you so you can see. I dislike
the "if (val = something)" syntax so I axed that. Then I simplified
logic a bit.
2013-08-09 11:26:39 -07:00
Mitchell Hashimoto 8e3422403f Merge pull request #1986 from ipwnstuff/feature/plugin-post-install-message
commands/plugin/install: Display a plugin's post install message if available
2013-08-09 11:24:19 -07:00
Marc-André Courtois ed03add533 Start padding with 25 characters to keep original behavior 2013-08-01 13:23:18 -04:00
Marc-André Courtois 97aed37aea Use longest machine name to pad in status cmd 2013-08-01 13:17:55 -04:00
Mitchell Hashimoto e1c0c48ffa Show the correct installed plugin [GH-1834] 2013-07-28 21:38:48 -07:00
Erran Carey 2033eba2d4 Display post install messages if a plugin has any 2013-07-26 01:50:35 -05:00
Fabio Rehm 264a220461 Merge branch 'more-concise-box-not-found-error-message' of https://github.com/akalyaev/vagrant into akalyaev-more-concise-box-not-found-error-message 2013-07-18 23:32:15 -03:00
Mitchell Hashimoto 80666c03d6 vagrant help <foo> works [GH-1578] 2013-07-18 12:11:36 -04:00
Mitchell Hashimoto 3840e07adb vagrant box remove doesn't need provider if box only has one [GH-1032] 2013-07-10 19:57:53 -07:00
Mitchell Hashimoto f38b6801f9 vagrant destroy exits with 1 if any confirmation are declined [GH-923] 2013-07-10 19:39:20 -07:00
Simon Thulbourn ea9fde9433 Merge branch 'master' into client-certs 2013-07-02 09:29:39 +01:00
Marcel Hecko 4b9c21b5a6 [status command print formatting]
the result line needs space between the name of the VM and short_description - otherwise the formatting of the output breaks when the name of the VM is too long - the name of the VM gets smashed together with the short_description rendering
2013-06-05 14:10:24 +02:00
Simon Thulbourn e216b9a1d2 adds param for client certs
adds an option to the command parser for client certicates
2013-05-21 11:41:15 +01:00
Anton Kalyaev 6c5a580006 more concise message for BoxNotFound error
Now we have different providers, but the error message didn't tell
anything about it. Suppose I want to remove one of my boxes:

    vagrant box remove opscode-ubuntu-12.04 vritualbox

There is a typo in provider name. The error message is:

    Box 'opscode-ubuntu-12.04' could not be found.

Therefore I need to double check the box name, and only than I will see
the typo.

This commit make the error message looks like this:

    Box 'opscode-ubuntu-12.04' with 'vritualbox' provider could not be
found.
2013-05-05 18:23:12 +04:00
Mitchell Hashimoto 45267c85fe Fix vagrant package --base [GH-1615] 2013-04-17 08:22:26 -07:00
Mitchell Hashimoto 0f089c5671 `--[no-]parallel` for vagrant up 2013-04-16 15:22:14 -07:00
Mitchell Hashimoto c1acdc2409 Get rid of ruby warning from shadowing in SSH command 2013-04-07 22:10:50 -07:00
Mitchell Hashimoto 8b2bf72e8a Fix parsing SSH extra args in multi-machine envs [GH-1545] 2013-04-07 22:07:55 -07:00
Mitchell Hashimoto 5e2549fe8b Add "--insecure" flag for downloader 2013-04-03 11:57:40 -07:00
Mitchell Hashimoto df93a221e1 Up command now uses Environment#batch 2013-04-03 08:31:42 -07:00
Mitchell Hashimoto 54f7930b84 Run "up" in a batch action so it parallelizes 2013-04-03 08:31:42 -07:00
Mitchell Hashimoto fcd93bb133 Logging on gem sources 2013-03-20 22:33:50 -07:00
Mitchell Hashimoto 408eee746d Stylistic changes for GH-1461 2013-03-20 22:30:31 -07:00
Hugues Malphettes 135adc8904 Support a few more gem parameters - take 2 2013-03-20 14:02:32 +08:00
Mitchell Hashimoto dea881cad2 vagrant box add --force works again [GH-1413] 2013-03-13 21:20:25 -07:00
Mitchell Hashimoto c74251a1d9 FIx vagrant package --base to work again, wrong Machine args [GH-1410] 2013-03-11 15:46:52 -07:00
Mitchell Hashimoto bfc8c62ffe vagrant plugin list works properly with isolated gem env 2013-03-01 12:14:12 -08:00
Mitchell Hashimoto a2cd7936ea `vagrant package` works again 2013-02-21 11:14:39 -08:00
Mitchell Hashimoto 7bc72028bd Use custom Gem.configuration to avoid loading gemrc files 2013-02-07 16:32:11 -08:00
Mitchell Hashimoto 1b3250e3b6 `vagrant plugin i nstall` shows version it installed 2013-02-06 17:08:48 -08:00
Mitchell Hashimoto bc7237130d Use the HashiCorp gem source for plugin installs 2013-02-04 11:18:57 -08:00
Mitchell Hashimoto c6a4bd529d Missing interpolated variable for output message on plugin command 2013-02-04 10:43:35 -08:00
Mitchell Hashimoto 85e458b9a8 Forgot an autoload for plugins 2013-02-04 10:41:35 -08:00
Mitchell Hashimoto 55c905b43b `vagrant plugin license` command. 2013-02-04 10:32:04 -08:00
Mitchell Hashimoto 036fa3e96a Set more force flags when uninstalling gems to remove monkeypatch 2013-02-03 17:33:51 -08:00
Mitchell Hashimoto 635949980b Handle the case a plugin install is a plugin not found 2013-02-03 14:29:29 -08:00
Mitchell Hashimoto 1162c2dbfc Instead of shelling out, use the RubyGems API to install plugins
This gets us an accurate name of the gem even if it is installed
from a file.
2013-02-03 13:59:43 -08:00
Mitchell Hashimoto 368ca71d72 Remove the `gem` command. 2013-02-03 13:21:39 -08:00
Mitchell Hashimoto 455745277c List plugins should have output when no plugins 2013-02-03 13:13:22 -08:00
Mitchell Hashimoto 5882d5dad6 VAGRANT_NO_PLUGINS can be used to skip plugin loading 2013-02-03 13:03:00 -08:00
Mitchell Hashimoto 9690754983 Plugin listing is a bit more sophisticated, shows version 2013-02-03 12:59:32 -08:00
Mitchell Hashimoto bc54875a25 Move the plugins.json to the home directory 2013-02-03 12:49:21 -08:00
Mitchell Hashimoto b6821a4fc7 Fix some include requirements for pruning 2013-02-03 10:49:26 -08:00
Mitchell Hashimoto 0d7322578b `vagrant plugin uninstall` 2013-02-03 10:47:32 -08:00
Mitchell Hashimoto e055bc893b Sort the state file as well for sanity 2013-02-03 10:35:59 -08:00
Mitchell Hashimoto 76457eff16 Make sure the state file only contains unique fields 2013-02-03 10:34:43 -08:00
Mitchell Hashimoto 491356c938 Better logging for prune 2013-02-03 10:33:39 -08:00
Mitchell Hashimoto 60d21e35c9 Be silent when uninstalling gems 2013-02-03 10:32:31 -08:00
Mitchell Hashimoto 572142df7e Perform gem uninstallation for prune 2013-02-03 10:30:52 -08:00
Mitchell Hashimoto 472d4182c1 Basic logic behind prune action is good. 2013-02-03 10:15:46 -08:00
Mitchell Hashimoto f257d1211f List actually compares state with gems 2013-02-02 23:59:48 -08:00
Mitchell Hashimoto 8ac7b62075 A really basic "list" command 2013-02-02 23:52:34 -08:00
Mitchell Hashimoto 53667d44db Have a base class to invoke actions on the plugins 2013-02-02 23:38:44 -08:00
Mitchell Hashimoto 150cae86b7 Only show error if exit code != 0 of gem 2013-02-02 23:33:52 -08:00
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 db2e27bab6 Initial plugin command plugin 2013-02-02 17:12:46 -08:00
Mitchell Hashimoto b3571eb5bb Add message about removing box so something is clearly happening 2013-02-02 16:43:16 -08:00
Mitchell Hashimoto 2dc14af825 `vagrant up` says what provider it will use 2013-02-01 14:03:59 -08:00
Mitchell Hashimoto 26adfb0de6 Put the provider name in the status output 2013-02-01 13:54:52 -08:00
Mitchell Hashimoto d19194d95b `vagrant provision` accepts `--provision-with` [GH-1167] 2013-01-30 22:54:28 -08:00
Mitchell Hashimoto 25713e4568 Show proper message when viewing status for multi-machine 2013-01-30 20:22:29 -08:00
Mitchell Hashimoto 72c10b53e7 Convert provision types to symbols so they work 2013-01-30 19:51:04 -08:00
Mitchell Hashimoto b91d7203eb Pass the start options into the actions so that they have effect 2013-01-30 19:49:18 -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 aa980f2234 Forced halts work 2013-01-29 10:55:40 -08:00
Mitchell Hashimoto f7b39476a0 vagrant destroy --force works [GH-1340] 2013-01-29 10:33:40 -08:00
Mitchell Hashimoto 2d2f9577af Fix repackage command to actually work properly 2013-01-28 13:06:18 -08:00
Mitchell Hashimoto 8c4a7350fe vagrant status uses new MachineState results 2013-01-21 11:35:46 -06:00
Mitchell Hashimoto cfe55eb57f Whitespace weirdness in the `status` command file 2013-01-21 10:47:29 -06:00
Mitchell Hashimoto 10a051a64b box add works even if no provider is set 2013-01-16 22:52:44 -08:00
Mitchell Hashimoto 124a2ee5d3 Add the --provider optional flag to `box add` 2013-01-11 21:24:57 -08:00
Mitchell Hashimoto 2cfc5986d2 Wording changes in the status command. VM => machine 2012-12-24 10:00:28 -08:00
Mitchell Hashimoto 8fe0f86dbd The --provider flag for `up` now actually does something. 2012-12-23 21:23:08 -08:00
Paul McKellar 2b0c4e6385 Change description of plugins to avoid self referencial definitions. e.g. 'destroy' will destroy your VM 2012-11-19 13:10:04 -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 e8370f0098 Convert comands to V2 plugins. 2012-11-06 21:09:29 -08:00
Mitchell Hashimoto 391dc39267 Merge branch 'machine-abstraction'
This branch brings in the "machine abstraction" code. This is a major
milestone in the development of Vagrant as it abstracts all of the
VirtualBox-specific code out into a plugin. There is zero VirtualBox
specific code in the core ("lib/") directory at this point. Read on for
important points.

== Gotchas

White it is technically possible now to write plugins for other
providers, there is still major work to be done to make this feasible.
The plugin interface itself is pretty much done, but there are some
issues:

* ":virtualbox" is the hardcoded provider to be used at the moment.

* There is no way to configure a provider. For example,
  `config.vm.customize` would never work for anything other than
  VirtualBox, so there needs to be a way to have provider-specific
  configuration. This will come soon.

* Shared folders and networking need to be rearchitected to be friendly
  for multiple providers, since it is unrealistic that a provider such as
  EC2 could provide the same level of networking, for example.

* There is no way easy way (like `vagrant package --base`) to create
  boxes for providers other than VirtualBox. This will be addressed in a
  whole new feature of Vagrant probably in a future release after
  provider stuff has shipped.

== Writing a Provider

To write a provider, you create a Vagrant plugin that defines a
"provider". See the "plugins/providers/virtualbox/plugin.rb" for more
details. Providers themselves have an exremely simple API. The burden
for writing providers mostly rests on the fact that you must define
complex middleware sequences.

Lots more work to come in the future, but this is a BIG MILESTONE!
2012-08-19 19:27:09 -07: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 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 85a4fb82a8 `vagrant package` a single VM works! 2012-08-15 21:04:37 -07:00
Mitchell Hashimoto b659191a02 `vagrant up`! 2012-08-14 22:38:41 -07:00
Mitchell Hashimoto aaeb060f33 `vagrant provision` 2012-08-14 21:21:31 -07:00
Mitchell Hashimoto 7aa083d259 `vagrant reload` now works with the new machine abstraction 2012-08-14 21:12: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 db11c16b79 ssh_config works with new machine abstraction 2012-08-13 19:48:26 -07:00
Mitchell Hashimoto 83b908f3d8 `vagrant suspend` works with new machine abstraction 2012-08-13 19:30:41 -07:00
Mitchell Hashimoto 7efee573b8 `vagrant ssh -c` now exits with the proper exit code 2012-08-11 20:35:34 -07:00
Mitchell Hashimoto 5e70ad0ec2 `vagrant ssh -c` now uses a middleware sequence 2012-08-10 00:57:23 -07:00
Mitchell Hashimoto f1c1dfad2f Some SSH command cleanup 2012-08-07 11:31:55 -07:00
Mitchell Hashimoto e0ec679838 `vagrant ssh` with full console works with new provider.
This works by now calling the `:ssh` action on the provider. This action
is allowed to do whatever it pleases, but should at some point probably
call the `SSHExec` built-in middleware.

The `SSHExec` built-in middleware was added. This uses the information
returned by `Machine#ssh_info` and uses the `Vagrant::Util::SSH` helper
to exec into the remote machine. The provider should do any work upfront
in verifying that the machine is ready to be SSHed into.
2012-08-05 13:45:24 -07:00
Mitchell Hashimoto 002a83d7f7 Update SSH config help to properly reflect "--host" usage. 2012-07-30 11:42:29 -07:00
Mitchell Hashimoto 31a3a3f2e2 Start moving the halt commands over to the new provider interface 2012-07-28 10:43:16 -07:00
Mitchell Hashimoto 118377e6f0 Destroy sequence asks the user for confirmation. 2012-07-27 19:29:40 -07:00
Mitchell Hashimoto 5eed3b8417 Building up the `destroy` action again using new provider API.
This shows me moving the built-in middleware sequences to the provider
and how I'm organizing all that.
2012-07-26 22:39:27 -07:00
Mitchell Hashimoto c634cbedcc Handle interrupts more gracefully on the warning message 2012-07-11 18:47:41 -07:00
Mitchell Hashimoto f20666e230 Automatically upgrade the boxes all over. 2012-07-11 18:36:23 -07:00
Mitchell Hashimoto 23dfc45df2 `box repackage` now uses new Box API 2012-07-11 18:36:22 -07:00
Mitchell Hashimoto 6bb621026f `vagrant box add` uses the new API.
This assumes VirtualBox boxes for now, which is fine.
2012-07-11 18:36:22 -07:00
Mitchell Hashimoto 5b18a6525d `vagrant box remove` uses new API 2012-07-11 18:36:22 -07:00
Mitchell Hashimoto 6386ec2b79 `vagrant box list` uses the new collection stuff 2012-07-11 18:36:22 -07:00
Mitchell Hashimoto 2995b6439d Interrupt when asking to destroy a VM should exit. [GH-1017] 2012-07-11 18:33:28 -07:00
Mitchell Hashimoto b23dda54b8 Move command base class to a plugin component 2012-06-26 16:18:02 -07:00
Mitchell Hashimoto a1b37980e3 Defer loading for commands to last possible moment 2012-05-23 16:18:29 -07:00
Mitchell Hashimoto 8846a19c70 Convert all command plugins to use the new `activated` block 2012-05-21 22:43:13 -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 582f214024 Fix some basic mistakes with commands 2012-04-21 17:32:13 -07:00