66 Commits

Author SHA1 Message Date
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