Commit Graph

275 Commits

Author SHA1 Message Date
Mitchell Hashimoto 5030a16f84 kernel/v2: default all configs properly, remove config/default.rb 2014-02-05 15:36:35 -08:00
Mitchell Hashimoto 8bc36824bf commands/list-commands: lists all commands primary and non-primary 2014-01-11 09:32:13 -08:00
Mitchell Hashimoto ea502c5c3d commands/plugin: vagrant plugin install can accept multiple 2014-01-07 14:17:48 -08:00
Mitchell Hashimoto 24a2892236 Update CHANGELOG and website 2014-01-07 14:11:33 -08:00
Ryan S. Brown b53ae446d2 Allow `vagrant (un)install plugin1 plugin2 plugin3` 2014-01-07 14:09:31 -08:00
Mitchell Hashimoto 86cab61c27 commands/plugin: support installing from file 2014-01-06 09:27:37 -08:00
Mitchell Hashimoto f612ec7549 core: support plugin sources, and mask Bundler errors 2014-01-05 23:13:49 -08:00
Mitchell Hashimoto 0117521744 commands/plugin: vagrant update is fancier now (see website docs) 2014-01-05 22:33:05 -08:00
Mitchell Hashimoto 561e65ec72 commands/plugin: list shows version constraints and entrypoints 2014-01-05 21:16:41 -08:00
Mitchell Hashimoto bef7051943 commands/plugin: InstallGem tests 2014-01-05 21:08:55 -08:00
Mitchell Hashimoto aeb0d1a480 commands/plugin: fix plugin existence middleware, add tests 2014-01-05 20:57:55 -08:00
Mitchell Hashimoto 5fe2994005 commands/plugin: convert all actions to use the new classes 2014-01-05 20:50:25 -08:00
Mitchell Hashimoto 8904319beb commands/plugin: install version and entrypoints work 2014-01-05 20:47:02 -08:00
Mitchell Hashimoto 9dc1307b7c commands/plugin: remove --plugin-prerelease 2014-01-05 17:46:20 -08:00
Mitchell Hashimoto d368b3cf62 core: Tolerate syntax errors in ~/.gemrc [GH-2760] 2014-01-05 17:11:24 -08:00
Mitchell Hashimoto 8823f43f3a commands/plugin: error if uninstall non-existent plugin 2014-01-05 16:03:00 -08:00
Mitchell Hashimoto e1c9431085 commands/plugin: uninstall works again 2014-01-05 16:02:00 -08:00
Mitchell Hashimoto 95aeb9443d commands/plugin: Remove PruneGems 2014-01-05 14:55:44 -08:00
Mitchell Hashimoto 86610bf735 installing gems works 2014-01-05 14:54:50 -08:00
Mitchell Hashimoto 1eef75a715 commands/plugin: list uses PluginManager 2014-01-05 08:42:34 -08:00
Mitchell Hashimoto 279b171339 commands/plugin: remove unnecessary line 2014-01-04 17:22:07 -08:00
Mitchell Hashimoto ae17dc09eb commands/plugin: list plugins uses Bundler 2014-01-04 17:21:53 -08:00
Mitchell Hashimoto 8450f20e87 Move StateFile into Vagrant::Plugin core 2014-01-04 16:45:41 -08:00
Mitchell Hashimoto 5387984e0f commands/plugin: allow within Bundler env (cause we always are) 2014-01-04 16:32:46 -08:00
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