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
Mitchell Hashimoto
9956e6d012
Better directory structure for plugins
2012-04-20 16:53:01 -07:00