vagrant/plugins/commands
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
..
box `vagrant box add` works again. Box verification remove temporarily. 2012-08-18 16:13:14 -07:00
destroy `destroy` gets a little farther, and properly halts the VM 2012-08-13 23:18:50 -07:00
gem Move command base class to a plugin component 2012-06-26 16:18:02 -07:00
halt Start moving the halt commands over to the new provider interface 2012-07-28 10:43:16 -07:00
init Move command base class to a plugin component 2012-06-26 16:18:02 -07:00
package Get vagrant package --base working in some hacky way. 2012-08-19 18:51:36 -07:00
provision `vagrant provision` 2012-08-14 21:21:31 -07:00
reload `vagrant reload` now works with the new machine abstraction 2012-08-14 21:12:41 -07:00
resume `vagrant resume` works with the new machine abstraction 2012-08-13 20:03:35 -07:00
ssh `vagrant ssh -c` now exits with the proper exit code 2012-08-11 20:35:34 -07:00
ssh_config Merge branch 'machine-abstraction' 2012-08-19 19:27:09 -07:00
status Move command base class to a plugin component 2012-06-26 16:18:02 -07:00
suspend `vagrant suspend` works with new machine abstraction 2012-08-13 19:30:41 -07:00
up `vagrant up`! 2012-08-14 22:38:41 -07:00