Ramon de la Fuente
f6a5e20688
Add autostart as an option for vagrant boxes
...
Added specs for the environment and vagrantfile. Added a methd to retrieve
autostart_machine_names. Changed the plugin up/command to use autostart_machine_names
when no argument was given to the command.
2014-04-21 13:50:57 -07:00
Kenny Rasschaert
fc95e77237
provisioners/salt: error if minion_config missing
2014-04-19 23:24:30 +02:00
Mitchell Hashimoto
20473fe4ca
core: allow overriding default SSH port [GH-3474]
2014-04-15 10:37:08 -07:00
Mitchell Hashimoto
e7e9bcd360
Fix tests
2014-04-12 18:04:17 -07:00
Gilles Cornu
7ed17ae9ed
provisioners/ansible: use strict boolean options
...
With this change, the ansible provisioner fully complies with
the current user documentation.
2014-04-12 13:48:15 +02:00
Gilles Cornu
ad038890bb
provisioners/ansible: update specs after [GH-3436]
2014-04-12 10:53:02 +02:00
Gilles Cornu
baf0649dcf
provisioners/ansible: add more unit tests
...
Remove wrong usage of shared examples and introduce embedded class methods
(as kind of simple "RSpec macros") to reduce code duplication.
2014-04-12 10:53:01 +02:00
Gilles Cornu
e32783312b
provisioners/ansible: improve unit tests (wip)
...
- Don't mock the config object, but use a true instance
- When possible, take advantage of Rpsec before/after hooks to
reduce code repetitions
- Add an example ("with inventory_path option")
- Use a global variable to store the path of the generated inventory
- Miscellaneous changes in existing examples (style, fixes)
2014-04-12 08:18:35 +02:00
Gilles Cornu
f0a596b47c
provisioners/ansible: add first unit tests
2014-04-12 08:18:34 +02:00
Mitchell Hashimoto
2cb6a21a5a
core: Fix tests, which found broken logic in synced folders
2014-04-11 16:28:38 -07:00
Mitchell Hashimoto
3aad85fa30
style
2014-04-11 09:56:35 -07:00
Mitchell Hashimoto
794ca7a4df
Tests passing again
2014-04-09 10:57:00 -07:00
Mitchell Hashimoto
800cf7539b
synced_folders/rsync: don't crash if comm error during rsync-auto [GH-3419]
2014-04-09 08:58:56 -07:00
Mitchell Hashimoto
5f12126d32
core: network issues don't halt Vagrant during box update check [GH-3391]
2014-04-05 09:25:03 -07:00
Mitchell Hashimoto
0e46c5d9de
core: Raise predictable error if box metadata downlaod fails
2014-04-05 09:20:03 -07:00
Mitchell Hashimoto
5b360d0990
core: BoxCollection#find version constraint can benil
2014-04-02 19:50:44 -07:00
Mitchell Hashimoto
d1caf8c624
core: Allow direct box adding again
2014-04-02 19:45:49 -07:00
Mitchell Hashimoto
32d86ca42b
core: don't allow version for old-style box [GH-3260]
2014-04-02 09:32:34 -07:00
Mitchell Hashimoto
af7a589231
core: outdated check checks local boxes [GH-3321]
2014-04-02 08:37:03 -07:00
Mitchell Hashimoto
36ad327ec1
core: ignore if box doesn't exist on update check [GH-3326]
2014-04-02 08:24:38 -07:00
Mitchell Hashimoto
097dd2917c
core: better error when adding box with malformed version [GH-3332]
2014-04-01 22:48:52 -07:00
Mitchell Hashimoto
8195f7faab
core: add test for removing box version [GH-3364]
...
/cc @berendt - Added a test
2014-04-01 21:47:51 -07:00
Mitchell Hashimoto
600d01d792
Merge pull request #3102 from sax/smartos
...
guests/smartos
2014-03-20 17:50:20 -07:00
Paulo Bittencourt
1f694d4978
kernel/v2: allow provisioner plugins to register without config
2014-03-19 17:37:52 -04:00
Mitchell Hashimoto
846f942ff0
core: check for data_dir [GH-3208]
2014-03-14 14:04:00 -07:00
Fabio Rehm
99547eef8f
For some weird reason the changes introduced by transpec made this spec fail, this should fix it
2014-03-14 12:09:07 -03:00
Fabio Rehm
54656151cf
Convert specs to RSpec 2.14.8 syntax with Transpec
...
This conversion is done by Transpec 1.10.2 with the following command:
transpec test/unit/
* 507 conversions
from: obj.should
to: expect(obj).to
* 394 conversions
from: == expected
to: eq(expected)
* 260 conversions
from: obj.should_receive(:message)
to: expect(obj).to receive(:message)
* 85 conversions
from: obj.stub(:message)
to: allow(obj).to receive(:message)
* 25 conversions
from: its(:attr) { }
to: describe '#attr' do subject { super().attr }; it { } end
* 19 conversions
from: obj.should_not
to: expect(obj).not_to
* 7 conversions
from: obj.should_not_receive(:message)
to: expect(obj).not_to receive(:message)
* 3 conversions
from: Klass.any_instance.should_receive(:message)
to: expect_any_instance_of(Klass).to receive(:message)
2014-03-14 12:02:07 -03:00
Mitchell Hashimoto
513efa6739
core: Downloads with user/pass use curl -u flag [GH-3183]
2014-03-13 08:53:18 -07:00
Mitchell Hashimoto
012c28606f
kernel/v2: validate forwarded ports [GH-3187]
2014-03-13 08:32:05 -07:00
Eric Saxby
f36d372b32
Resolve confusion around SmartOS rsync_pre
...
rsync should *always* be pre-installed in SmartOS (global and local zones), as
it's part of the kernel. Previous commits incorrectly attributed #rsync_install
to running rsync, rather than to installing the rsync command.
2014-03-12 22:35:32 -07:00
Mitchell Hashimoto
8634cc309b
core: error earlier if adding a path that doesn't exist
2014-03-12 20:33:12 -07:00
Mitchell Hashimoto
56dd0e8531
synced_folders/rsync: don't watch excluded paths [GH-3159]
2014-03-12 19:40:18 -07:00
Mitchell Hashimoto
a6eafd6a12
synced_folders/rsync: execute rsync_post cap if it exists [GH-3163]
2014-03-12 18:43:59 -07:00
Mitchell Hashimoto
8624e2cbf2
Fix failing tests on Windows
2014-03-11 11:09:37 -07:00
Eric Saxby
31da3860e5
Add unit tests for smartos compatibility
2014-03-10 18:52:20 -07:00
Eric Saxby
edb4efa10a
Dummy communicator runs :test correctly
2014-03-10 18:51:47 -07:00
Mitchell Hashimoto
ee23b87eb6
core: Private boxes authenticate metadata box URLs too
2014-03-09 19:24:54 -07:00
Mitchell Hashimoto
06c881708d
Fix tests
2014-03-09 18:29:45 -07:00
Mitchell Hashimoto
4c9e6e46b2
provisioners/salt: don't use exteranl deep_merge [GH-2348]
2014-03-07 09:18:34 -08:00
Mitchell Hashimoto
d4511131b4
synced_folders/rsync: allow custom args [GH-3070]
2014-03-06 11:27:58 -08:00
Mitchell Hashimoto
4104f6c21f
Fix Hyper-V tests
2014-03-06 09:04:23 -08:00
Mitchell Hashimoto
79df69392f
core: initialize synced folder class only once [GH-3067]
2014-03-06 08:35:21 -08:00
Mitchell Hashimoto
35adc6063b
providers/hyperv: add test for windows guests
2014-03-05 18:50:31 -08:00
Mitchell Hashimoto
7f2fe524b3
core: use default color by default (not white)
2014-03-05 10:19:53 -08:00
Mitchell Hashimoto
857b989c47
provisioners/docker: setting to not auto assign name
2014-03-04 07:31:13 -08:00
Mitchell Hashimoto
4437bcd77f
core: better error if attempting to uninstall system plugin
2014-03-03 15:05:32 -08:00
Mitchell Hashimoto
b5637da6c4
core: plugin manager marks system gems as system
2014-03-03 14:55:34 -08:00
Mitchell Hashimoto
efddef0a80
core: add tests fornew systems path for plugin manager
2014-03-03 09:50:16 -08:00
Mitchell Hashimoto
7710fd16fa
core: load system plugins if they are installed
2014-03-03 09:44:29 -08:00
Mitchell Hashimoto
616bf15df5
core: Vagrant.installer_embedded_dir
2014-03-03 09:37:22 -08:00
Mitchell Hashimoto
5018e4d8a4
core: checksums supported when adding box from metadata
2014-03-01 12:03:22 +01:00
Mitchell Hashimoto
23bd397cb8
core: BoxMetadata supports checksums
2014-03-01 11:59:16 +01:00
Mitchell Hashimoto
ce350fe872
core: box checksums just work properly again for direct box adds
2014-03-01 11:54:37 +01:00
Mitchell Hashimoto
7926f7f051
core: box URLs can be authenticated by hooking
2014-03-01 11:38:04 +01:00
Mitchell Hashimoto
c735e81e4d
core: expand IsState to support inversions
2014-02-27 08:13:12 -08:00
Mitchell Hashimoto
e93038fd0e
providers/hyperv: suspend/resume
2014-02-27 08:13:11 -08:00
Mitchell Hashimoto
5d19285774
providers/hyperv: wait for IP on boot
2014-02-27 08:12:57 -08:00
Mitchell Hashimoto
7c0948c81d
providers/hyperv: clean up status script
2014-02-27 08:12:55 -08:00
Mitchell Hashimoto
fe93b0d2a5
providers/hyperv: more checks on machine import
2014-02-27 08:12:53 -08:00
Mitchell Hashimoto
784a5b2e32
providers/hyperv: all sorts of tests to verify Windows/admins
2014-02-27 08:12:51 -08:00
Mitchell Hashimoto
a1958ee12f
providers/hyperv: shuffle things around
2014-02-27 08:12:48 -08:00
Mitchell Hashimoto
5f1caf3ada
core: re-ask if confirmation bad input [GH-3027]
2014-02-26 08:01:45 -08:00
Mitchell Hashimoto
b8676a65dd
core: Vagrant.server_url should default if empty
2014-02-25 21:39:05 -08:00
Mitchell Hashimoto
1ed3be138e
core: add a test for last PR
2014-02-25 07:27:13 -08:00
Mitchell Hashimoto
6c5179602c
provisioners/salt: error if minion_config missing [GH-2893]
2014-02-24 07:58:12 -08:00
Mitchell Hashimoto
34c000419f
Fix failing tests
2014-02-23 22:33:04 -08:00
Teemu Matilainen
eea9c07029
provisioners/chef: set `encrypted_data_bag_secret` to `nil` if it's not uploaded
...
/cc @shanegibbs
Fixes #2984
2014-02-16 18:14:56 -03:00
Teemu Matilainen
ad34d474bc
provisioners/chef: DRY and unify encrypted data bag secret handling
...
Pull up encrypted data bag secret management into the base classes, thus
also unifying the functionality.
Especially this complements the issues:
* Upload the secret to provisioning path also with chef-solo [GH-1246]
* Delete the secret also with chef-client [GH-2712]
* Remove the secret before uploading also with chef-client [GH-1111]
2014-02-15 22:46:48 -03:00
Ryan Uber
a4e923bec7
Removed excess whitespace
2014-02-14 12:02:27 -08:00
Ryan Uber
fff4f595c5
Added unit test for passing a single fixnum as an argument to the shell
...
provisioner
2014-02-14 11:53:17 -08:00
Ryan Uber
509e29043a
Added handling of fixnum values for shell provisioner options both as the value
...
of `args` itself and as an element inside of an `args` array. Added validation
around passing in arrays for arguments. Just knowing that it is an array is not
enough, because arrays can contain any other type.
2014-02-14 11:47:36 -08:00
Mitchell Hashimoto
a4f64d0148
core: ui can hide details
2014-02-13 21:09:02 -08:00
Mitchell Hashimoto
b1bed68bed
providers/virtualbox: cap to read forwarded ports
2014-02-13 16:34:34 -08:00
Mitchell Hashimoto
12b2572687
kernel/v2: capture error if provider config is bad [GH-2959]
2014-02-11 11:55:04 -08:00
Mitchell Hashimoto
8d3afa73d2
providers/virtualbox: config to skip guest additions check
2014-02-08 18:35:09 -08:00
Mitchell Hashimoto
e6ca9d6f81
core: Ui::Prefixed can take prefix_spaces option
2014-02-08 15:14:21 -08:00
Mitchell Hashimoto
2d7c161f49
core: Ui#dup works properly
2014-02-08 15:11:51 -08:00
Mitchell Hashimoto
9026e54da9
core: fix Environment tests
2014-02-08 14:54:40 -08:00
Mitchell Hashimoto
86454ddac9
core: Environment#lock tests
2014-02-08 14:50:52 -08:00
Mitchell Hashimoto
1e50e7aca1
core: Prefixed UI only requests bolding if not specified at instance-level
2014-02-08 14:26:26 -08:00
Mitchell Hashimoto
efc1bf50dd
core: Machine#with_ui
2014-02-08 14:03:31 -08:00
Mitchell Hashimoto
40cbfb95e3
core: fix Machine tests
2014-02-07 09:24:09 -08:00
Mitchell Hashimoto
8e9ceeaf5c
core: Machine has reference to Vagrantfile
2014-02-07 09:16:55 -08:00
Mitchell Hashimoto
3533256cd7
core: Vagrantfile can create machines, Environment#machine uses that
2014-02-06 21:31:11 -08:00
Mitchell Hashimoto
506e1a433f
core: Vagrantfile#machine_config returns more info now
2014-02-06 21:04:59 -08:00
Mitchell Hashimoto
d40dc919d8
core: plugin tests no longer obliterate manager
2014-02-06 20:50:51 -08:00
Mitchell Hashimoto
cdf1d7f318
core: get rid of all uses of config_global
2014-02-06 20:22:15 -08:00
Mitchell Hashimoto
e2403c093d
core: Vagrantfile class now adheres to box_version
2014-02-06 20:17:24 -08:00
Mitchell Hashimoto
7549704c5b
core: Environment#config_global is gone!
2014-02-06 20:12:16 -08:00
Mitchell Hashimoto
e3a67f7ab6
core: Environment uses the new Vagrantflie class
2014-02-06 20:12:15 -08:00
Mitchell Hashimoto
99346cc516
core: add Vagrantfile class, tests
2014-02-06 20:11:12 -08:00
Mitchell Hashimoto
d18e80e1fd
Fix tests for kernel/v2
2014-02-05 21:24:34 -08:00
Mitchell Hashimoto
cac0fdb490
core: Add the default server URL
2014-02-05 21:20:37 -08:00
Mitchell Hashimoto
becc349846
core: handle native windows paths like 'c:\foo.box'
...
[GH-2081]
2014-02-05 21:20:35 -08:00
Mitchell Hashimoto
848fe5d166
kernel/v2: check for box updates by default
...
/cc @pearkes @armon
2014-02-05 21:20:33 -08:00
Mitchell Hashimoto
751b4da2c6
core: if box is unversioned, check update does nothing
2014-02-05 21:20:32 -08:00
Mitchell Hashimoto
647563edaf
core: shorthand boxes must be foo/bar formatted, better errors
2014-02-05 21:20:31 -08:00
Mitchell Hashimoto
85aa7db17e
commands/box: repackage tests
2014-02-05 21:20:29 -08:00
Mitchell Hashimoto
7a6d1a3ff1
commands/box: update command can update a specific box now
2014-02-05 21:20:23 -08:00
Mitchell Hashimoto
88b64f93a4
commands/box: "update" command
2014-02-05 21:20:19 -08:00
Mitchell Hashimoto
61a1082d65
core: BoxCheckOutdated is *much* simpler, unified logic, tests
2014-02-05 21:20:18 -08:00
Mitchell Hashimoto
b5157df2cc
core: BoxCheckOutdated only runs if told to
2014-02-05 21:20:14 -08:00
Mitchell Hashimoto
8cc16d14fa
core: BoxCheckOutdated checks locally
2014-02-05 21:20:13 -08:00
Mitchell Hashimoto
d78194654d
core: ability to hide success UI
2014-02-05 21:20:12 -08:00
Mitchell Hashimoto
e537e02d9d
core: BoxCheckOutdated can check if a box is outdated
2014-02-05 21:20:11 -08:00
Mitchell Hashimoto
f2509f5c65
commands/box: outdated command to find outdated boxes
2014-02-05 21:20:10 -08:00
Mitchell Hashimoto
b81686e2c9
core: BoxAdd adds the metadata URL
2014-02-05 21:20:08 -08:00
Mitchell Hashimoto
bd9f375263
core: Box can store a metadata URL
2014-02-05 21:20:07 -08:00
Mitchell Hashimoto
d40ff9c390
kernel_v2: test for box_url
2014-02-05 21:20:01 -08:00
Mitchell Hashimoto
f0607c6df0
core: BoxAdd supports multiple URLs properly
2014-02-05 21:19:59 -08:00
Mitchell Hashimoto
38248c240c
core: BoxAdd errors if name doesn't match metadata
2014-02-05 21:19:58 -08:00
Mitchell Hashimoto
b23ad41c40
core: HandleBox reloads the box
2014-02-05 21:19:57 -08:00
Mitchell Hashimoto
f2c4adc4ee
core: use symbol names for providers everywhere
2014-02-05 21:19:56 -08:00
Mitchell Hashimoto
a73ea6ab7a
core: fix hang in test
2014-02-05 21:19:54 -08:00
Mitchell Hashimoto
a115750401
core: HandleBox works with metadata boxes
2014-02-05 21:19:52 -08:00
Mitchell Hashimoto
b2fa785d07
core: Environment loads proper version of box
2014-02-05 21:19:51 -08:00
Mitchell Hashimoto
d08866e9f3
core: nicer error if shorthand can't be found
2014-02-05 21:19:49 -08:00
Mitchell Hashimoto
5aba445cac
core: shorthand box adds wor
2014-02-05 21:19:47 -08:00
Mitchell Hashimoto
f9fe025d10
core: helper to get the server URL
2014-02-05 21:19:46 -08:00
Mitchell Hashimoto
b71cde6b99
core: make box add UI much icer
2014-02-05 21:19:44 -08:00
Mitchell Hashimoto
c7fc9d1d46
core: BoxRemove works, tests
2014-02-05 21:19:42 -08:00
Mitchell Hashimoto
29da748702
commands/box/remove: update for new syntax
2014-02-05 21:19:41 -08:00
Mitchell Hashimoto
f9c9559320
core: ask what provider to use if multiple providers
2014-02-05 21:19:38 -08:00
Mitchell Hashimoto
05eeefbe36
core: Fix Downloader tests
2014-02-05 21:19:34 -08:00
Mitchell Hashimoto
8f0f0506d6
core: BoxAdd requires name if old-style box
2014-02-05 21:19:32 -08:00
Mitchell Hashimoto
09e8666296
core: BoxAdd now works with HTTP URLs
2014-02-05 21:19:31 -08:00
Mitchell Hashimoto
03b22ab9a1
core: add the box_added to the middleware
2014-02-05 21:19:30 -08:00
Mitchell Hashimoto
1ca7f86f76
core: verify providers with direct box adding
2014-02-05 21:19:29 -08:00
Mitchell Hashimoto
75cffe53d1
core: BoxAdd checks if box already exists for metadata
...
unless force
2014-02-05 21:19:28 -08:00
Mitchell Hashimoto
c1989603be
core: adding from metadata wlil force if specified
2014-02-05 21:19:27 -08:00
Mitchell Hashimoto
2a08302145
core: BoxAdd can add old boxes (happy path)
2014-02-05 21:19:26 -08:00
Mitchell Hashimoto
ee139eb79d
core: more output for box adding
2014-02-05 21:19:22 -08:00
Mitchell Hashimoto
5b075fa34e
core: BoxAdd adds matching provider even if lower version
2014-02-05 21:19:20 -08:00
Mitchell Hashimoto
80194cde35
core: BoxMetadata#version can constrain by providers
2014-02-05 21:19:19 -08:00
Mitchell Hashimoto
7d44cd61c9
core: BoxAdd can add from metadata, version constraints, more
2014-02-05 21:19:18 -08:00
Mitchell Hashimoto
15aa91b073
core: can add/search boxes with slashes in name
2014-02-05 21:19:17 -08:00
Mitchell Hashimoto
96e92167d9
commands/box: broken box adding, but more options/tests
2014-02-05 21:19:16 -08:00
Mitchell Hashimoto
8abcc6e5f2
core: BoxMetadata can read the JSON description
2014-02-05 21:19:15 -08:00
Mitchell Hashimoto
e8197c4e87
commands/box: list works with the new versions
2014-02-05 21:19:14 -08:00
Mitchell Hashimoto
e111b7a691
core: environment tests pass
2014-02-05 21:19:12 -08:00
Mitchell Hashimoto
16ced8d36c
core: boxcollection test tests versions
2014-02-05 21:19:11 -08:00
Mitchell Hashimoto
d87c414327
core: Box has a version field
2014-02-05 21:19:10 -08:00
Mitchell Hashimoto
87a85488d1
core: all box collection tests pass
2014-02-05 21:19:09 -08:00
Mitchell Hashimoto
4c1fa7359d
core: BoxCollection can find with version constraints
2014-02-05 21:19:07 -08:00
Mitchell Hashimoto
77b5fa94b7
core: BoxCollection#all returns versions
2014-02-05 21:19:06 -08:00
Mitchell Hashimoto
6cddb92407
core: error if newer home dir version is detected
2014-02-05 21:19:05 -08:00
Mitchell Hashimoto
b52d33e0af
core: upgrade to v1.5 box dir format if it can
2014-02-05 21:19:04 -08:00
Mitchell Hashimoto
a03bc763f9
core: tests around the environment setup_version
2014-02-05 21:19:01 -08:00
Mitchell Hashimoto
86ede835ea
Fix tests for new _finalize! changes
2014-02-05 21:16:47 -08:00
Mitchell Hashimoto
f72db0c611
core: config raises NoMethodError on bad calls once finalized
2014-02-05 16:14:58 -08:00
Mitchell Hashimoto
5030a16f84
kernel/v2: default all configs properly, remove config/default.rb
2014-02-05 15:36:35 -08:00
Teemu Matilainen
ca56c913aa
kernel/v2: fix provisioner config with blocks
...
Regression from 10d5416
.
2014-02-04 00:51:01 -03:00
Mitchell Hashimoto
d864187b1a
provisioners/docker: configuration is mergeable
2014-02-03 22:23:26 +01:00
Mitchell Hashimoto
2cc56119b7
kernel/v2: support the preserve_order option (documented)
2014-02-03 22:03:20 +01:00
Mitchell Hashimoto
3aaa57cac9
kernel/v2: support merging properly
2014-02-03 21:30:01 +01:00
Mitchell Hashimoto
10d5416a90
kernel/v2: support overriding provisioner settings
2014-02-03 16:56:39 +01:00
Mitchell Hashimoto
debc14f883
kernel/v2: more tests
2014-02-03 16:42:47 +01:00
Mitchell Hashimoto
0e5840a14d
kernel/v2: test for some config
2014-02-03 16:40:02 +01:00
Mitchell Hashimoto
1d69e95c1c
provisioners/docker: config to disablize -d flag
2014-02-03 16:14:59 +01:00
Mitchell Hashimoto
f63ef395f1
Merge branch 'rsync_install' of https://github.com/tmatilai/vagrant into tmatilai-rsync_install
...
Conflicts:
plugins/guests/freebsd/plugin.rb
plugins/guests/netbsd/plugin.rb
plugins/guests/openbsd/plugin.rb
2014-02-03 12:12:49 +01:00
Teemu Matilainen
bc96a054be
provisioners/file: add unit tests for the provisioner
2014-02-01 01:23:57 -03:00
Teemu Matilainen
9771c8bd52
provisioners/file: Add unit tests for the config
2014-02-01 01:22:53 -03:00
Teemu Matilainen
ee2ae94c25
synced_folders/rsync: Install `rsync` on guest if needed
...
Add new `rsync_installed` and `rsync_install` guest capabilities
to detect and install `rsync`.
Also copy `rsync_pre` capability to all Unix guests.
2014-01-31 02:12:57 -03:00
Mitchell Hashimoto
78e7e2746f
core: fix machine tests with provider changes
2014-01-26 14:33:22 -08:00
Mitchell Hashimoto
a924a7b48c
core: provider capabilities
2014-01-26 14:15:06 -08:00
Mitchell Hashimoto
00530303fb
core: color success Ui green
2014-01-23 13:15:07 -08:00
Mitchell Hashimoto
2b9e7ca14e
core: merge default synced folders ,don't override [GH-2873]
2014-01-21 20:13:08 -08:00
Mitchell Hashimoto
e80552b6aa
core: if synced folder type is blank, use default
2014-01-21 20:10:32 -08:00
Mitchell Hashimoto
d81af187ea
core: add tests for MachineReadable and frozen strings
2014-01-21 12:13:54 -08:00
Mitchell Hashimoto
06f1ebf752
core: add more tests for MachineReadable UI
2014-01-21 12:11:53 -08:00
Mitchell Hashimoto
f2f58655e8
core: get rid of more references to scope, old terminology
2014-01-21 12:06:04 -08:00
Mitchell Hashimoto
a32e154e6e
core: use cleaner UI abstractions
2014-01-20 17:18:36 -08:00
Mitchell Hashimoto
fc86a10796
core: only bold when output is part of a machine
2014-01-20 16:37:06 -08:00
Mitchell Hashimoto
0eec9aa599
core: extensive tests for Vagrant::UI classes
2014-01-17 21:31:07 -08:00
Mitchell Hashimoto
f713e43b00
Fix tests for new UI methods
2014-01-17 21:03:02 -08:00
Mitchell Hashimoto
dd33a26422
providers/virtualbox: network config uses proper format, tests [GH-2854]
2014-01-17 09:53:02 -08:00
Mitchell Hashimoto
2dff1ac417
core: get tests passing on Windows, more tweaks
2014-01-15 21:30:47 -08:00
Mitchell Hashimoto
73b72deb0a
synced_folders/rsync: convert path to cygpath on Windows
2014-01-15 21:13:08 -08:00
Mitchell Hashimoto
285bda7a68
synced_folders/nfs: don't nfs_prune on hosts that don't support it
2014-01-15 20:28:27 -08:00
Mitchell Hashimoto
99a23242ec
core: tests for more shared_helpers
2014-01-15 18:31:58 -08:00
Mitchell Hashimoto
7dc4cbb785
core: tests for shared_helpers.rb
...
/cc @tmatilai
2014-01-15 18:06:33 -08:00
Mitchell Hashimoto
35a19f829c
provider/virtualbox: fix NFS tests on Windows
2014-01-15 11:48:07 -08:00
Mitchell Hashimoto
e2ec46bb4d
core: environment tests passing on Windows
2014-01-15 11:40:53 -08:00
Mitchell Hashimoto
7248797fa5
core: add test for fs_real_path on Windows
2014-01-15 11:32:53 -08:00
Mitchell Hashimoto
4fab57576b
synced_folders/rsync: run hostpath through fs_real_path
...
This fixes issues with drive letter casing on Windows
2014-01-15 11:30:32 -08:00
Mitchell Hashimoto
8a56d0ae5e
core: be sure to close tempfile handle so Windows can delete it
2014-01-15 11:24:03 -08:00
Mitchell Hashimoto
aabe5124c4
core: don't test fork(1) on Windows
2014-01-15 11:12:13 -08:00
Mitchell Hashimoto
0fcce91d69
core: fix more cases where ".path" was being called on strings
2014-01-15 11:10:38 -08:00
Mitchell Hashimoto
008dd8e6e7
core: fix tests failing on WIndows dueo to bad temp dir gen
2014-01-15 11:09:00 -08:00
Mitchell Hashimoto
e85e355ddb
core: fix Windows failures on machine tests
2014-01-15 11:01:38 -08:00
Mitchell Hashimoto
b386e1dbbd
test: allow skipping certain tests on Windows
2014-01-15 10:54:50 -08:00
Mitchell Hashimoto
37e9553bf5
core: don't use Tempdir for tests, use Dir.mktmpdir
...
Tempdir didn't work on Windows, just spun forever.
2014-01-15 10:48:19 -08:00
Mitchell Hashimoto
2ca498a5dd
provisioners/docker: build images using new DSL
2014-01-14 09:22:55 -08:00
Mitchell Hashimoto
31b239fba2
provisioners/docker: unit tests for config
...
/cc @fgrehm - I'm starting to unit test more and more of the plugins.
Just showing you an example because it is quite easy. :)
2014-01-14 08:27:34 -08:00
Mitchell Hashimoto
8d771de9ba
Merge pull request #2820 from mitchellh/f-rsync-listen
...
`rsync-auto` command
2014-01-14 07:38:38 -08:00
Mitchell Hashimoto
04f1854840
synced_folders/rsync: unit tests for the callback, fix bug
2014-01-13 22:01:09 -08:00
Mitchell Hashimoto
9cf0387e00
core: interrupt in Cli exits with 1
2014-01-13 21:42:40 -08:00
Mitchell Hashimoto
ae9b74464d
core: MixinSyncedFolders#synced_folders does scoped hash override
2014-01-13 11:39:11 -08:00
Mitchell Hashimoto
b4b62daf5c
synced_folders/rsync: expand host paths relative to root path
2014-01-13 11:34:49 -08:00
Mitchell Hashimoto
309d12a16b
synced_folders/rsync: `vagrant rsync` syncs the folders
2014-01-13 11:25:29 -08:00
Mitchell Hashimoto
59218ded68
synced_folders/rsync: move rsync logic out to helper
2014-01-13 11:01:50 -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
08b1aee00d
core: default commands to primary
2014-01-11 09:15:14 -08:00
Mitchell Hashimoto
f05388349c
core: non-primary commands aren't shown in basic `vagrant -h`
2014-01-11 09:07:38 -08:00
Mitchell Hashimoto
13e9f8037a
test: get all the tests passing with new CLI changes
2014-01-11 08:59:13 -08:00
Mitchell Hashimoto
ad99b4f250
core: CLI understands new plugin definition format
2014-01-11 08:53:25 -08:00
Mitchell Hashimoto
4a99cdccdf
core: allow command plugins to have options
2014-01-11 08:38:27 -08:00
Mitchell Hashimoto
7b2a0716f1
synced_folders/rsync: warn if password auth
2014-01-10 20:37:11 -08:00
Mitchell Hashimoto
60f3d224c9
synced_folders/rsync: can exclude files
2014-01-10 18:01:38 -08:00
Mitchell Hashimoto
2e3fcf576c
synced_folders/rsync: allow guests to execute things before
2014-01-10 17:51:44 -08:00
Mitchell Hashimoto
38fbbb6c56
synced_folders/rsync: Initial commit working
2014-01-10 17:40:29 -08:00
Mitchell Hashimoto
213000fd3d
core: update Registry tests to make sure #keys doesn't load
2014-01-10 16:20:33 -08:00
Mitchell Hashimoto
fbcc08b3ee
Merge pull request #2637 from johnbellone/patch-1
...
core: Update Registry with #keys method.
2014-01-10 16:19:53 -08:00
Mitchell Hashimoto
365bef0e61
core: use dummy provider in tests so VirtualBox isn't required
2014-01-10 15:48:42 -08:00
Mitchell Hashimoto
9a58caaf9c
synced_folders/nfs: always prune [GH-2738]
2014-01-10 15:41:57 -08:00
Mitchell Hashimoto
a48ef2ec97
core: more user-friendly errors for caps on guests
2014-01-09 10:24:25 -08:00
Mitchell Hashimoto
ba5400b89b
core: raise user-friendly errors if capabilities exception in Guest
2014-01-09 10:13:33 -08:00
Mitchell Hashimoto
9fe702a000
core: tests for Guest#name
2014-01-09 09:09:40 -08:00
Mitchell Hashimoto
68a355931c
core: test that forking is allowed in a BatchAction
2014-01-08 21:43:46 -08:00
Mitchell Hashimoto
5e835f4201
Merge pull request #2792 from smoyer/redhat_hostname_patch
...
guests/redhat: use FQDN for hostname
2014-01-08 20:58:59 -08:00
Mitchell Hashimoto
7631a38601
core: refactor error initialization logic
...
/cc @tmatilai - This includes a test case for the symbol stuff, should
be okay now.
2014-01-08 19:53:43 -08:00
smoyer
3964298504
This was introduced in 1.4.1 with d26c147
.
...
This PR sets the active hostname back to the name specified in the Vagrantfile (fqdn) and updates the unit tests.
Setting it to the short name causes loads of problems while configuring the system. I've had issues with sudoers hostname matching, Weblogic certificate generation and a few others. Even if I changed all of the Chef recipes, the fqdn is set in /etc/sysconfig/network so the active hostname will switch to the fqdn after a reboot.
2014-01-08 17:49:54 -05:00
Mitchell Hashimoto
010874ffad
core: has_plugin? uses the new plugin manager class to check for gems
2014-01-08 10:50:28 -08:00
Mitchell Hashimoto
09a425030b
core: pass environment into all host caps
2014-01-07 20:34:33 -08:00
Mitchell Hashimoto
5e490e3746
Get tests to pass
2014-01-07 19:26:03 -08:00
Mitchell Hashimoto
93e365bb33
core: Vagrant::Environment uses new host settings
2014-01-07 19:11:08 -08:00
Mitchell Hashimoto
5922241fcb
core: Modify plugin interfaces and API for hosts
2014-01-07 18:38:49 -08:00
Mitchell Hashimoto
04a5e6bcd2
core: Remove Vagrant::Hosts and add Vagrant::Host, a CapabilityHost
2014-01-07 18:34:19 -08:00
Mitchell Hashimoto
c1d56da1ca
core: get tests passing for changes
2014-01-07 16:29:05 -08:00
Mitchell Hashimoto
40babfc3f7
core: modify Guest to use new CapabilityHost mixin
2014-01-07 16:27:12 -08:00
Mitchell Hashimoto
1f760b2c48
core: pass extra args to detect? when detecting capability host
2014-01-07 16:26:58 -08:00
Mitchell Hashimoto
b15cb22e3e
core: errors expose their extra data
2014-01-07 16:15:32 -08:00
Mitchell Hashimoto
1f6095f912
core: Vagrant::CapabilityHost is a module for adding capabilities to
...
things
2014-01-07 16:12:12 -08:00
Mitchell Hashimoto
3f4058471c
core: installing a plugin from a gem doesn't constrain it
2014-01-07 13:56:51 -08:00
Mitchell Hashimoto
b353865da1
core: specific versions "0.1.0" don't equate to "= 0.1.0"
2014-01-07 10:13:30 -08:00
Mitchell Hashimoto
198e142794
commands/plugin: add more tests for installgem
2014-01-06 10:55:34 -08:00
Mitchell Hashimoto
f612ec7549
core: support plugin sources, and mask Bundler errors
2014-01-05 23:13:49 -08:00
Mitchell Hashimoto
84ecca5c15
core: statefile can track sources, not sure if we'll use it though
2014-01-05 22:50:55 -08:00
Mitchell Hashimoto
35d711c91b
commands/plugin: add tests for UpdateGems
2014-01-05 22:37:29 -08:00
Mitchell Hashimoto
e231890e7e
commands/plugin: UninstallPlugin tests
2014-01-05 21:10:43 -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
8904319beb
commands/plugin: install version and entrypoints work
2014-01-05 20:47:02 -08:00
Mitchell Hashimoto
fe8842c795
Fix failing tests
2014-01-05 16:54:10 -08:00
Mitchell Hashimoto
1eef75a715
commands/plugin: list uses PluginManager
2014-01-05 08:42:34 -08:00
Mitchell Hashimoto
8450f20e87
Move StateFile into Vagrant::Plugin core
2014-01-04 16:45:41 -08:00
Mitchell Hashimoto
d98868d150
core: Vagrant.require_plugin is gone
2014-01-04 16:35:28 -08:00
Mitchell Hashimoto
b3a9e6a088
insert_public_key cap, and use that if it exists
2014-01-03 11:13:21 -08:00
Mitchell Hashimoto
e115322e78
core: accept passwords in ssh_info
2014-01-03 09:48:35 -08:00
Paul Hinze
fc66ec1660
providers/virtualbox: allow and prefer static guest IPs for NFS
...
Since vbox guest properties are proving to be less reliable than we had
hoped, bring back the static config parsing mechanism for finding a
guest IP to hand to NFS. If we find a static IP (or set of IPs) we'll
use that instead of trying to probe guest properties.
This retains NFS support for DHCP interfaces while regaining the
reliability that we previously had when static IPs were required.
2013-12-28 17:01:08 -06: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
Teemu Matilainen
e5032071f6
core: Vagrant.has_plugin? tries to match gem name first
...
Search primary from the list of gem names which have been loaded by
`Vagrant.require_plugin`. Fall back to matching registered plugin names.
2013-12-20 17:36:10 -03:00
Teemu Matilainen
a5b84f413e
core: More informative error if plugin.json parsing fails
2013-12-20 07:10:10 -03:00
Mitchell Hashimoto
4d7d47086f
core: configure version can be an int [GH-2689]
2013-12-19 08:03:15 -08:00
John Bellone
8909018af6
Add unit tests for Registry#keys.
2013-12-16 18:16:19 -05:00
Charlie Huggard
0e2b7a7c0b
Unit tests for ChangeHostName on Enterprise Linux
2013-12-16 01:57:11 -06:00
Mitchell Hashimoto
c1141dded3
providers/virtualbox: don't clear /etc/exports on BSDs for NFS [GH-2645]
2013-12-13 22:03:14 -08:00
Mitchell Hashimoto
72398faeaf
core: put shell quoting into its own util class, it is useful
2013-12-13 21:17:15 -08:00
Paul Hinze
abe0731d2e
guests/{ubuntu,debian}: fix change_host_name for trailing dots [GH-2610]
...
When `/etc/hosts` contained a FQDN with a trailing dot, the `\b` in the
sed expression would not match, since dot is not considered to be a word
character.
Fix this by regexp-escaping the hostname search, and matching the end of
the line on optional space followed by additional characters.
Also add some tests that extract the regexp used by sed and verify that
it does what we want. These will hopefully serve us in the future if we
ever need to test additional edge cases.
2013-12-09 18:56:45 -06:00
Mitchell Hashimoto
ba18d98d45
core: improve guest type detection
...
/cc @fgrehm - I figured you might be interested in this. :)
2013-12-08 11:14:18 -08:00
Mitchell Hashimoto
2c65d247da
core: Allow options to be passed down into SF cleanup
2013-12-06 16:40:24 -08: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
b2844d420d
commands/plugin: tests for state file
2013-12-04 10:50:19 -08:00
Paul Hinze
ec97a45125
commands/ssh-config: fix for multiple private keys
...
since we merged multiple private keys, the :private_key_path item of
ssh_info now comes back as an array. the ssh-config command had not yet
been updated to handle this properly.
here we fix that oversight and add a few unit tests around the config
generation.
2013-12-04 09:33:27 -06:00
Mitchell Hashimoto
1a51f42ee7
core: update rspec, fix deprecations
2013-12-03 18:42:21 -08:00
Mitchell Hashimoto
c04fa5e54e
core: clean up tests for synced folder built-ins
2013-12-03 18:30:59 -08:00
Mitchell Hashimoto
ca521887eb
Merge pull request #2561 from emyl/synced-folder-cleanup-v2
...
core: Enhance the synced folder plugin implementation with a cleanup routine
2013-12-03 18:08:42 -08:00
Mitchell Hashimoto
d2bc1dbc3b
Merge pull request #2560 from phinze/vbox-nfs-dhcp-support
...
providers/virtualbox: support DHCP interfaces for NFS
2013-12-03 11:49:54 -08:00
Paul Hinze
c25172d0f7
providers/virtualbox: support DHCP interfaces for NFS
...
Previously, we required a host-only interface with a static IP for NFS
to work in VirtualBox, because we needed access to the guest's IP in
order to properly configure mount commands.
After boot, VirtualBox exposes the IP addresses of a guest's network
adapters via the "guestproperty" interface.
This adds support for reading VirtualBox guest properties to the
VirtualBox driver and utilizes that support to prepare NFS settings,
which removes the necessity for a static IP for NFS to work.
In this commit we also start building out scaffolding for unit testing
vbox actions and drivers.
Test plan:
- Prepare a Vagrantfile with the following:
* private network with type: :dhcp
* synced folder with nfs: true
- Boot a VM from this Vagrantfile using the virtualbox provider
- Machine should boot successfully with working synced folder
2013-12-03 10:21:28 -05:00
Fabio Rehm
aff26b832d
core: Retrofit some test for Method support on Action::Runner
2013-12-02 22:26:51 -02:00
Emiliano Ticci
578393ac8e
Add cleanup routine to synced folder plugin implementation
2013-12-02 11:19:09 +01:00
Paul Hinze
4daa21e0b1
guests/debian: remove empty test file added by mistake
2013-12-01 09:49:31 -05:00
Mitchell Hashimoto
7c25a23352
core: get tests passing cleanly on Ruby 2.0.0
2013-11-30 16:21:19 -08:00
Mitchell Hashimoto
3c06e9458c
Merge pull request #2556 from phinze/fix-shell-array-args-validation
...
provisioners/shell: fix validation for args [GH-1949]
2013-11-29 00:01:19 -08:00
Fabio Rehm
61733bbfbf
core: Fix broken SSHExec spec
2013-11-29 00:26:42 -02:00
Paul Hinze
fef60242b0
provisioners/shell: fix validation for args [GH-1949]
...
The logic change in 57d4775140
introduced
a bug where neither strings nor arrays provided as `args` for shell
provisioners would pass validation.
This fixes that problem along with a few extras:
- split out arg validation into a private method
- update comment describing valid args
- add a few unit tests around config validation
2013-11-28 19:54:10 -06:00
Mitchell Hashimoto
1e7084e1e1
core: fix tests
2013-11-26 19:13:21 -08:00
Mitchell Hashimoto
45e09eb677
core: allow multiple private keys [GH-907]
2013-11-25 15:45:39 -08:00
Mitchell Hashimoto
8d99382993
core: allow custom callables in hooks
2013-11-24 21:07:11 -08:00
Mitchell Hashimoto
f5cc112a4b
core: allow hooks to send arbitrary data
2013-11-24 21:01:41 -08:00
phinze
688bca14f5
refactoring ubuntu/debian change_host_name
...
there's been a lot of churn around this code, so i figure it was worth
trying to clean it up.
- the methods were doing a lot, so make them into template methods with
one helper per step
- spread out /etc/hosts regexp into a couple of helper variables for
clarity
- remove handling for broken hostname implementations (like basing all
of the checks on name.split('.')[0]), since it seems reasonable to
remove code dedicated only to handling broken boxes
- DRY up the shared code between debian/ubuntu implementations, which
clarifies the differences as well
- add unit tests around the behavior; this will help us in the future
to separate flaws in our understanding from flaws in implementation
- includes a new DummyCommunicator in tests which should be useful in
supporting additional unit testing of this kind
- manually tested this on squeeze, wheezy, precise, quantal, raring,
and saucy successfully.
handles the issue in #2333
2013-11-24 11:46:12 -06:00
Mitchell Hashimoto
0506f47a4a
core: get tests passing again
2013-11-23 16:43:15 -08:00
Mitchell Hashimoto
1ea39ab605
Merge pull request #2437 from fgrehm/plugins-loaded-hook
...
core: plugins loaded hook with no vagrantfiles
2013-11-23 16:38:45 -08:00
Mitchell Hashimoto
1b8c3b62af
core: scope hash override synced folder settings
2013-11-23 13:38:15 -08:00
Mitchell Hashimoto
e9fd622406
core: vagrant version requirements in vagrantfile [GH-2322]
2013-11-23 12:23:34 -08:00
Mitchell Hashimoto
bf72c7cb5d
core: human friendly error for corrupt box metadata
2013-11-23 11:54:42 -08:00
Mitchell Hashimoto
ab70dc271b
core: verify explicit sf types are usable
2013-11-23 10:47:06 -08:00
Mitchell Hashimoto
125584aaf4
core: SyncedFolders middleware passes inoptions
2013-11-22 17:13:14 -08:00
Mitchell Hashimoto
93a4066339
core: SyncedFolders built-in middleware
2013-11-22 16:12:51 -08:00
Mitchell Hashimoto
97148379d2
providers/virtualbox: implement the synced folder plugin
2013-11-21 17:38:17 -08:00
Mitchell Hashimoto
ee0086ddee
core: Add synced_folder plugin type
2013-11-21 15:56:37 -08:00
Fabio Rehm
a0c1cc0231
core: Add spec for running environment hooks with a custom Action::Runner
2013-10-29 13:28:04 -02:00
Mitchell Hashimoto
225da651f8
core: Show error message if _key dynamically passed into error [GH-2328]
2013-10-05 09:21:38 -07:00
Mitchell Hashimoto
00f61e67e1
core: errors can use error_message to specify string error message
2013-10-01 21:45:05 -07:00
Paul Hinze
abe7830421
core: fix NoMethodError in Vagrant.has_plugin? [GH-1736]
2013-09-11 15:13:21 -05:00
Mitchell Hashimoto
77036c7eea
fix failing test
2013-09-06 00:13:32 -07:00
Mitchell Hashimoto
95aba27e59
core: VAGRANT_VAGRANTFILE affects only project vagrantfile [GH-2130]
2013-09-05 14:46:26 -07:00
Mitchell Hashimoto
283d2ae74b
fix broken test
2013-08-29 16:42:59 -07:00
Fabio Rehm
bf4131af17
Clean up downloader test a bit
2013-07-28 20:23:27 -03:00
Fabio Rehm
c7aed1a6a1
Provide a custom user agent header to cURL request so that URL shorteners are able to track the amount of downloads
2013-07-28 20:23:27 -03:00
Mitchell Hashimoto
7ef6c5d9d7
Unused config objects are finalized properly [GH-1877]
2013-07-23 17:36:48 -05:00
Mitchell Hashimoto
80f06605fb
config.vm.guest now forces guest setting again [GH-1800]
2013-06-09 13:17:23 -07:00
Mitchell Hashimoto
2239036b59
Use Mozilla CA cert bundle for SSL validation
2013-04-16 17:32:30 -07:00
Mitchell Hashimoto
0f089c5671
`--[no-]parallel` for vagrant up
2013-04-16 15:22:14 -07:00
Mitchell Hashimoto
f3cf23e873
Ability to specify no parallelism on the environment
2013-04-16 15:13:00 -07:00
Mitchell Hashimoto
43c14dfb26
Fix the tests
2013-04-16 13:32:37 -07:00
Mitchell Hashimoto
d03938e3c1
config.ssh properly overrides provder-detected [GH-1479]
2013-04-08 20:50:15 -07:00
Mitchell Hashimoto
f203c29fbb
Builders are merged when using hooks. [GH-1555]
2013-04-07 14:17:40 -07:00
Mitchell Hashimoto
96ebd3e8f7
Providers can support multiple box formats if they choose to.
...
Currently, providers must match a box format exactly the same
as that provider's name. i.e. the virtuabox provider needs a
"virtualbox" box and the "vmware_fusion" provider needs a
"vmware_fusion" box. Now, the provider can specify what the box format
is they want and support multiple if wanted.
Other box formats are specified in the provider definition within
a plugin:
class Plugin < Vagrant.plugin("2", "provider")
# ... other stuff
provider("foo", box_format: ["virtualbox", "other_format"]) do
# .. same
end
end
Now when using the example "foo" provider above, boxes for both
"virtualbox" or "other_format" are searched for. If both are found,
the order in which the formats exist determines precedence.
2013-04-06 18:21:16 -07:00
Mitchell Hashimoto
fbdd46a130
On Windows, prefer USERPROFILE for home directory path
2013-04-06 15:53:58 -07:00
Jeff LaBarge
8746d0193d
Remove redundant test that breaks if `VAGRANT_DEFAULT_PROVIDER` is set.
2013-04-04 13:47:37 -07:00
Mitchell Hashimoto
d490c840df
Tests passing for halt capability change
2013-04-03 23:48:44 -07:00
Mitchell Hashimoto
28d3f274d8
First capability for linux
2013-04-03 23:01:43 -07:00
Mitchell Hashimoto
819ef46fca
Tests for registering guest capabilities
2013-04-03 22:43:35 -07:00
Mitchell Hashimoto
c5c15fdaa6
Machine#guest returns the proper guest detected
2013-04-03 22:40:30 -07:00
Mitchell Hashimoto
f48b0796a5
Forward arguments down to capability
2013-04-03 22:20:45 -07:00
Mitchell Hashimoto
cf3c1b73d2
Guest#capability to execute capabilities
2013-04-03 22:19:20 -07:00
Mitchell Hashimoto
06a9968ec4
Guest#capability? for testing for capabilities
2013-04-03 22:03:03 -07:00
Mitchell Hashimoto
52f3847b0a
Laying the foundation for the new guest plugin
2013-04-03 21:47:57 -07:00
Mitchell Hashimoto
52a2f48b20
Provider-specific configuration overrides via 2nd block param
...
Example:
Vagrant.configure("2") do |config|
# ...
config.vm.provider :virtualbox do |p, vb_config|
vb_config.vm.box = "virtualbox_box"
end
end
2013-04-03 14:57:14 -07:00
Mitchell Hashimoto
932f15665b
Fix downloader tests
2013-04-03 12:04:58 -07:00
Mitchell Hashimoto
a9f269af24
Tests for GH-1478
2013-04-03 08:31:43 -07:00
Mitchell Hashimoto
d1eccbf98f
SafeChdir all the things for thread safety
2013-04-03 08:31:43 -07:00
Mitchell Hashimoto
d6a84b5ca4
Environment#batch and forcing disable through env var
2013-04-03 08:31:42 -07:00
Mitchell Hashimoto
3d8271a3a2
BatchAction for running actions in parallel
2013-04-03 08:31:42 -07:00
Mitchell Hashimoto
2e50a238fc
Provider plugins can provide arbitrary options
2013-04-03 08:31:42 -07:00
Mitchell Hashimoto
25f66cee51
Remove downloaders, no longer needed
2013-04-03 08:31:41 -07:00
Mitchell Hashimoto
b9a2855fcb
Tests for the downloader
2013-04-03 08:31:41 -07:00
Mitchell Hashimoto
e5539eb769
Only prepend/append once for hooks
2013-03-30 14:57:47 -07:00
Mitchell Hashimoto
c6a2d01cdf
Allow disabling prepend/append hooks
2013-03-30 14:51:10 -07:00
Mitchell Hashimoto
9464796c6d
Human friendly error when metadata.json is missing from a box
2013-03-15 11:12:50 -07:00
Mitchell Hashimoto
43f3764e5b
Properly quote regular expression inputs to StringBlockEditor
2013-03-14 12:41:03 -07:00
Mitchell Hashimoto
dea881cad2
vagrant box add --force works again [GH-1413]
2013-03-13 21:20:25 -07:00
Mitchell Hashimoto
7547a0d34a
V2 missing key returns a DummyConfig as well
2013-02-28 00:17:58 -08:00
Mitchell Hashimoto
af2690635e
Unknown keys return a DummyConfig rather than OpenStruct
2013-02-28 00:16:43 -08:00
Mitchell Hashimoto
2081fe5650
Tests passing for V1 config changes
2013-02-28 00:11:06 -08:00
Mitchell Hashimoto
7c5d118e0d
Use Dir.mktmpdir for tests more
2013-02-26 11:32:44 -08:00
Mitchell Hashimoto
c9d9bf679b
Get rid of a pending test
2013-02-26 11:30:51 -08:00
Mitchell Hashimoto
803269f729
Test to make sure hooks return the action runner result
2013-02-24 18:00:01 -08:00
Mitchell Hashimoto
499d1ff8bf
VAGRANT_VAGRANTFILE env var to specify alternate filename for Vfile
2013-02-23 12:07:23 -08:00
Mitchell Hashimoto
1b6538354d
Be smarter about determining if plugin load failed
2013-02-22 15:10:34 -08:00
Mitchell Hashimoto
46db50680b
environment_unload hook
2013-02-22 13:54:28 -08:00
Mitchell Hashimoto
3c343c0623
Environment#hook allows hooks to be run at arbitrary points
2013-02-22 12:22:10 -08:00
Mitchell Hashimoto
be01d57034
action_hooks can hook into specific actions
2013-02-22 12:12:55 -08:00
Mitchell Hashimoto
18524628b7
Hooks allow parameters and blocks to middlewares
2013-02-22 12:00:35 -08:00
Mitchell Hashimoto
987b3008fe
Which_test
2013-02-08 22:31:13 -08:00
Patrick Wyatt
bd06bea3e5
Enable Windows users with SSH installed to use 'vagrant ssh'
2013-02-08 22:09:11 -08:00
Mitchell Hashimoto
1d1dfec940
Additional unit test to verify missing config key behavior
2013-02-08 16:55:06 -08:00
Mitchell Hashimoto
595d6f7848
Record invalid key accesses as an error on config
2013-02-08 16:54:24 -08:00
Mitchell Hashimoto
c307a01baf
Remove unused test
2013-02-06 22:59:46 -08:00
Mitchell Hashimoto
cd3d2a1e8c
Call properly modifies original environment
2013-02-06 18:36:05 -08:00
Mitchell Hashimoto
aa7193471f
Plugins can define action hooks via action_hook
2013-02-06 15:27:14 -08:00
Mitchell Hashimoto
83bba789a4
Hook#apply
2013-02-06 15:21:34 -08:00
Mitchell Hashimoto
d720205810
Builder supports action hooks
2013-02-06 15:06:13 -08:00
Mitchell Hashimoto
e822aac931
Convert builder tests to use rspec "subjects"
2013-02-06 14:25:36 -08:00
Mitchell Hashimoto
80a7c8a0cb
Hook class
2013-02-06 14:21:31 -08:00
Mitchell Hashimoto
8f24d2d98c
Remove the "easy" plugins until a future version
2013-02-06 13:46:34 -08:00
Mitchell Hashimoto
84ded8d67e
Fix machine ssh_info tests
2013-02-05 21:27:26 -08:00
Mitchell Hashimoto
864f1b7506
Pass a proper Pathname for SSHExec to check key perms
2013-02-04 21:17:12 -08:00
Mitchell Hashimoto
434cc79a83
Properly expand config.ssh.private_key_path
2013-02-04 21:13:29 -08:00
Mitchell Hashimoto
c57ba9de58
Give a nice human-friendly error message when problems loading Vfile
2013-01-30 20:01:41 -08:00
Mitchell Hashimoto
7eec127704
Support refreshing the machine cache
2013-01-30 10:37:40 -08:00
Mitchell Hashimoto
64042a5d35
Downloading the box_url component works again
2013-01-30 10:24:47 -08:00
Mitchell Hashimoto
3399b74163
Fix invalid box test by not relying on Archive;:Tar::Minitar
2013-01-29 11:10:44 -08:00
Mitchell Hashimoto
948a31d7b3
Merge pull request #1326 from lolindrath/master
...
Add test for invalid box file
2013-01-29 11:09:05 -08:00
Mitchell Hashimoto
2073ce697f
Move cli test to proper path
2013-01-29 11:00:56 -08:00
Mitchell Hashimoto
a21744a12d
Merge pull request #1336 from ithinkihaveacat/return-non-zero-if-invalid-command
...
Return exit status of 1 on invalid command
2013-01-29 10:58:55 -08:00
Mitchell Hashimoto
7531c94dbf
Allow path and exception for Lock middleware to be procs
2013-01-28 20:46:39 -08:00
Mitchell Hashimoto
9ae3a373c8
Add new middleware builtin: Lock
...
This will do a process lock by flocking a file. If it fails, it will
raise an exception of choice.
2013-01-28 17:08:37 -08:00
Mitchell Hashimoto
64af19c783
Remove archive::tar::minitar from tests
2013-01-28 13:28:40 -08:00
Michael Stillwell
7941748db7
Return exit status of 1 on invalid command
...
Makes "vagrant destroyjj" and similar return an exit code of 1, so that
"vagrant destroyjj && vagrant up" works as expected.
2013-01-27 19:52:43 +00:00
Mitchell Hashimoto
6a3c0bd425
Call built-in supports args for imddleware
2013-01-22 12:20:02 -08:00
Mitchell Hashimoto
51540496a9
GracefulHalt builtin
2013-01-22 11:56:49 -08:00
Mitchell Hashimoto
8ad8f73846
Raise an exception if a non-MachineState is returned
2013-01-21 11:31:20 -06:00
Mitchell Hashimoto
7bdf54923a
Create the MachineState class
2013-01-21 11:25:28 -06:00
Mitchell Hashimoto
2d57afbbda
Support warnings/errors when upgrading Vagrantfiles internally
2013-01-20 22:04:50 -05:00
Andy Williams
8a8b771e0a
Add test for invalid box file
...
Filled in pending test. It creates a valid tar file, over-writes the
checksum field in the tar's header and then checks that the
BoxUnpackageFailure exception is thrown.
2013-01-20 14:28:48 -05:00
Mitchell Hashimoto
e651eb3aa1
Add a V2 config helper to merge errors since that seems common
2013-01-18 13:03:07 -08:00
Mitchell Hashimoto
a8b57ba13f
Ignore empty error groups
2013-01-18 12:27:29 -08:00
Mitchell Hashimoto
e6f9586d83
New validation method on the root that returns errors
2013-01-18 12:14:40 -08:00
Mitchell Hashimoto
23668d4ed0
Fix some newline weirdness with StringBlockEditor
2013-01-15 21:53:11 -08:00
Mitchell Hashimoto
adec64baa4
Add the #get method to StringBlockEditor
2013-01-15 20:34:41 -08:00
Mitchell Hashimoto
335503a688
StringBlockEditor to help plugins with owning parts of files
2013-01-15 17:49:46 -08:00
Mitchell Hashimoto
25fcb59e38
Use registries for the V2 plugin manager
2013-01-13 13:05:31 -08:00
Mitchell Hashimoto
f3b340aae0
Use registry merging for provider configs
2013-01-13 13:00:06 -08:00
Mitchell Hashimoto
45879132a3
Registries support merging
2013-01-13 12:58:48 -08:00
Mitchell Hashimoto
e66c5066e4
Plugin configuration can have scopes now, ex. provider
2013-01-13 12:38:17 -08:00
Mitchell Hashimoto
0c612f695f
Util::ScopedHashOverride
2013-01-11 15:44:35 -08:00
Mitchell Hashimoto
cf2c5a10c1
One more final fix for 1.8.7
2012-12-30 18:16:51 -10:00
Mitchell Hashimoto
037dbf24db
Fix some failing tests for 1.8.7.
2012-12-30 18:13:27 -10:00
Mitchell Hashimoto
a30a92bb4f
active_machines should return name as a symbol
2012-12-30 11:51:22 -10:00
Mitchell Hashimoto
4c46091746
Environment#primary_machine_name and use it for with_target_vms
...
This makes the single-provider and default provider semantics work with
primary VMs.
2012-12-30 11:12:56 -10:00
Mitchell Hashimoto
24c3c9a7ae
Better test coverage on with_target_vms. Added pending tests to work on.
2012-12-30 10:59:59 -10:00
Mitchell Hashimoto
07157b47ae
Only allow one provider active machine at a time.
...
Temporary limitation of Vagrant to only allow one active machine with a
provider at a time. That means you cant `up` a machine with both vmware
and virtualbox at the same time. In the future you will be able to but
to avoid various edge cases for now we're disallowing it.
2012-12-30 10:52:01 -10:00
Mitchell Hashimoto
9257fe3d98
Environment#active_machines
...
This returns a list of active machines for the environment. An active
machine is a machine that at one point was created by Vagrant.
2012-12-27 19:28:05 -10:00
Mitchell Hashimoto
4e649cc987
Upgrade V1-style dotfile to V2
...
See the code and comments for details on how this is done. As usual, we
are very careful about this so as not to inadvertently destruct real
user data.
2012-12-26 22:41:42 -08:00
Mitchell Hashimoto
cd969e1e05
Remove the dotfile_name configuration option.
...
The dotfile is gone now so the configuration option is obselete
2012-12-26 21:45:24 -08:00
Mitchell Hashimoto
c0c3e7bf43
Remove Vagrant::DataStore
...
We just don't use it yet and the old implementation was sketchy. I was
not happy with it.
2012-12-26 21:45:24 -08:00
Mitchell Hashimoto
3baa31460f
Store machine ID in "id" file in data directory.
...
Instead of storing an "active" hash in the local_data of an Environment,
we now place the ID of a machine in the "id" file of the machine data
directory. This file is read upon re-instantiation in order to load the
proper state.
2012-12-26 21:45:23 -08:00
Mitchell Hashimoto
cc18492c7a
Local data path introduced
...
The local data path is set to the `ROOT_DIR/.vagrant` by default and is
a directory where Vagrant can store environment-local state. This can be
overriden on a per-Environment basis using the `local_data_path`
option.
2012-12-26 21:45:23 -08:00
Mitchell Hashimoto
8fe0f86dbd
The --provider flag for `up` now actually does something.
2012-12-23 21:23:08 -08:00
Mitchell Hashimoto
3808ea377f
Upgrade all other default configurations to V2
2012-12-23 16:29:26 -08:00
Mitchell Hashimoto
6478139cee
Move config.vm.customize to VirtualBox specific option
2012-12-23 16:29:25 -08:00
Mitchell Hashimoto
dffbf6eb09
Allow COnfirm calls to be forced by specifying a force_key
2012-12-23 16:29:25 -08:00
Mitchell Hashimoto
50d7b0aba4
Fix bug where Call didn't propagate recovery. Warden has no recovery.
...
The issue here is that when a middleware failed and a recovery sequence
started, it would halt at the "call" step because the "Call" didn't
properly recover the child sequence.
An additional issue was that a Warden had no "recover" method, meaning
embedded Wardens wouldn't recover their stacks properly.
2012-12-23 16:29:25 -08:00
Mitchell Hashimoto
a6e0d3908f
Create a "dummy" provider for tests
2012-12-23 16:29:24 -08:00
Mitchell Hashimoto
ac7958a43b
Environment#primary_machine takes a provider argument. Use it.
2012-12-23 16:29:24 -08:00
Mitchell Hashimoto
128c06e78d
Environment#default_provider
2012-12-23 16:29:24 -08:00
Mitchell Hashimoto
1ee470a551
Begin work on supporting provider-specific configuration
...
This works by registering a `config` with `:provider => true` with the
same name as your provider. Vagrant will then automatically configure
the provider when `config.vm.provider` is used.
2012-12-23 16:29:24 -08:00
Mitchell Hashimoto
99c5cddb7d
V2 config supports the concept of an "UNSET" value when doing merges
...
This value should be used as a default, and allows the parent `merge`
method to "just work" most of the time.
2012-12-23 16:29:24 -08:00
Mitchell Hashimoto
819140bbc2
Don't error if box doesn't exist on load
2012-12-23 16:29:23 -08:00
Mitchell Hashimoto
0ec639c8e1
BoxCollection#find should only find V1 box when searching for vbox
2012-12-23 16:29:23 -08:00
Mitchell Hashimoto
e2dd0b0cf2
Get machine tests passing again with new environment
2012-12-23 16:29:23 -08:00
Mitchell Hashimoto
f2b91d26fd
Load the configuration per machine, so that provider boxes work
...
Boxes are provider-specific, and we don't know the provider until
Environment#machine is called, so we need to build up the machine
configuration during this time.
2012-12-23 16:29:23 -08:00
Mitchell Hashimoto
0180ed849d
Move config loader order out from an ivar into a param for the #load
...
method
2012-12-23 16:29:23 -08:00
Mitchell Hashimoto
1559f7b7a7
Get rid of the old Environment#vms calls. Use #machine everywhere.
2012-12-23 16:29:23 -08:00
Mitchell Hashimoto
5002b8d9c2
Fix failing test on 1.8.7
2012-12-20 22:05:05 -08:00
Mitchell Hashimoto
2ef6ff10f0
Cache the machine objects created in Environment#machine.
...
Each machine and provider backing should be represented by only one
machine.
2012-11-07 22:08:06 -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
f52f8ecc97
Get tests passing again, use V2 config in tests.
2012-11-07 20:06:55 -08:00
Mitchell Hashimoto
53860f90ab
V2 loader now properly upgrades V1 configuration.
...
This is done by calling the `upgrade` method on the _old_ configuration
classes. The old configuration classes are given the complete new
configuration and can set whatever settings they need to on it.
2012-11-07 20:01:39 -08:00
Mitchell Hashimoto
253b433864
Support configuring the version for test plugins.
2012-11-06 21:32:26 -08:00
Mitchell Hashimoto
02e499da47
Update tests to create V2 plugins
2012-11-06 21:19:27 -08:00
Mitchell Hashimoto
be294e002a
Build the v2 interface, which is just a copy of V1 for now.
2012-11-06 20:51:03 -08:00
Mitchell Hashimoto
efa0a6b8c2
Clean up tests a bit more
2012-11-04 08:10:48 -08:00
Mitchell Hashimoto
0ca783e8d1
V1 config loader loads upgradable config if not V1
...
This is to prepare for the upcoming V2 configuration. When we're in V2,
we only want to load _upgradable_ configuration keys.
2012-11-03 21:54:32 -07:00
Mitchell Hashimoto
59d5c5ed92
Add support for "upgrade safe" config classes to plugins.
...
These are classes that use NO core classes of Vagrant, and are therefore
safe to load for upgrades. i.e. a V2 core can load a V1 config class
that is deemed upgrade safe without crashing Vagrant.
2012-11-03 21:39:06 -07:00
Mitchell Hashimoto
68923ff556
Additional tests for the plugin manager.
2012-11-03 21:30:22 -07:00
Mitchell Hashimoto
c803b0508a
Much cleaner plugin part querying syntax.
...
Before we were manually going over every plugin and getting each piece,
all over the place. Now we have a central manager that will give us all
the pieces we want. There is still some cleanup to do here but this is
much better overall.
2012-11-03 21:25:28 -07:00
Mitchell Hashimoto
6ca671e2b8
Don't allow registry to be given value in non-block form
2012-11-03 20:46:24 -07:00
Mitchell Hashimoto
6df6f6764f
Remove plugin activation. It really isn't necessary.
...
It was only used in a couple places and it isn't necessary since you can
do the loading within the actual blocks themselves.
2012-11-03 20:29:34 -07:00
skim
bad38ca935
fixes an exception issue when a non-directory appears in the boxes dir
2012-09-25 21:13:38 -05:00
Nate Smith
50c04ac927
`box.url` can use `file://` URI
2012-08-24 09:53:50 -04:00
Mitchell Hashimoto
1cdd69bc91
All tests passing
2012-08-19 19:17:19 -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
b659191a02
`vagrant up`!
2012-08-14 22:38:41 -07:00
Mitchell Hashimoto
85a499ffb8
Properly handle the case that VM doesn't exist for the VB driver.
2012-08-14 20:27:28 -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
296878cff5
Add basic loop detection for distro_dispatch
2012-08-12 19:03:22 -07:00
Mitchell Hashimoto
f9752d78d8
Properly resolve and load the guest class impl for Machines
2012-08-12 18:35:19 -07:00
Mitchell Hashimoto
28f341ec75
Begin working on the #guest method for Machine instances
2012-08-12 16:46:00 -07:00
Mitchell Hashimoto
de0865b9e2
Test to ensure that the environment hash is returned from Machine#action
...
This will allow methods that call into the action to use any results
that might be set onto the environment hash by any of the middleware.
2012-08-11 20:33:09 -07:00
Mitchell Hashimoto
64afd578b3
Just always return the SSH communicator for machines for now.
...
In the future we'll actually find a matching communicator but for now
since we're just focusing on machine abstraction, we just return SSH.
2012-08-08 21:57:08 -07:00
Mitchell Hashimoto
5ae3e0e80c
Allow the definition of communicators in plugins
2012-08-08 21:52:25 -07:00
Mitchell Hashimoto
a1cef830e3
Add the Communicator plugin API.
...
This allows communication protocols to be defined for the machine. This
is how things like SSH will be implemented.
2012-08-08 21:28:28 -07:00
Mitchell Hashimoto
b1ced46d7c
SSHExec raises proper exception if SSH is not yet ready
2012-08-06 10:29:25 -07:00
Mitchell Hashimoto
8d50c4774e
Tests for SSHExec, and forward in the ssh options
2012-08-05 18:37:41 -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
a1145615d0
Machine#action supports passing in extra env vars for action runner
2012-08-05 13:16:08 -07:00
Mitchell Hashimoto
984c4f4025
Add Util::SSH which has methods for checking key permissions and exec
2012-08-05 13:12:53 -07:00
Mitchell Hashimoto
1a2a8b49c0
Provider API to return SSH info, must implement `ssh_info`.
...
Since SSH is such a critical part of Vagrant, each provider must
implement a method that returns the proper way to SSH into the machine.
2012-08-05 12:41:05 -07:00
Mitchell Hashimoto
9db982f7a4
Expose the provider via the machine object.
2012-08-04 11:16:31 -07:00
Mitchell Hashimoto
d8cb02d55d
Load the machine ID prior to initializing the provider
2012-08-03 14:22:17 -07:00
Mitchell Hashimoto
e5f250121a
Call now only yields the environment
2012-07-27 19:34:46 -07:00
Mitchell Hashimoto
118377e6f0
Destroy sequence asks the user for confirmation.
2012-07-27 19:29:40 -07:00
Mitchell Hashimoto
e20326d577
Added the Confirm built-in middleware
...
This middleware asks the user a question and expects a Y/N answer. This
middleware can be used with the Call middleware.
2012-07-27 19:16:44 -07:00
Mitchell Hashimoto
556a53d48d
You can no longer set env vars on Builders via `use`
2012-07-27 19:05:35 -07:00
Mitchell Hashimoto
90517a0f9b
The `Call` built-in middleware allows for conditional MW sequences.
...
Read the documentation for more information.
2012-07-26 23:56:47 -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
44b4b9dfef
Move drivers to the VirtualBox plugin. Use Machine class.
...
This starts the transition of replacing VM with Machine. Machine still
isn't ready to fully replace VM but by moving it now, I'm able to find
the spots that need to be fixed. At this point `vagrant status` works
with the new provider interface.
2012-07-24 21:32:38 -07:00
Mitchell Hashimoto
912998ef31
Fill in the provider API a bit more to what it is.
2012-07-16 15:24:51 -07:00
Mitchell Hashimoto
8f0375d7f3
Machines can call actions on their providers.
2012-07-16 14:12:58 -07:00
Mitchell Hashimoto
8fc5591b8e
Machine queries state from the provider
2012-07-16 10:57:17 -07:00
Mitchell Hashimoto
353610021c
Vagrant::Machine
...
This is the class that will represent a machine that is managed by
Vagrant. The class has a number of attributes associated with it and is
meant to be a single API for managing the machines.
2012-07-16 10:28:42 -07:00
Mitchell Hashimoto
3519bf0372
Add the "provider" API to the V1 plugin.
2012-07-15 11:17:58 -07:00
Mitchell Hashimoto
436da57cc4
Add the #action API to the provider plugin
2012-07-14 17:04:06 -07:00
Mitchell Hashimoto
3b82f2efc4
Create the basic provider plugin interface.
...
Non-functional at this point.
2012-07-14 16:57:54 -07:00
Mitchell Hashimoto
cc076e5ee5
Box#repackage to repackage a box.
2012-07-11 18:36:22 -07:00
Mitchell Hashimoto
798ffc93bd
BoxCollection#add throws an UpgradeRequired exception if a V1 box
...
already exists
2012-07-11 18:36:22 -07:00
Mitchell Hashimoto
1d197d84c3
BoxCollection#add transparently upgrades V1 boxes to V2
...
This means that V1 boxes can be added to a V2 box collection without
issue.
2012-07-11 18:36:22 -07:00
Mitchell Hashimoto
623ecb3e3d
Environment attempts to upgrade box on config load.
...
If a V1 box is encountered when Vagrant loads the configuration, then it
will be upgraded on the fly.
2012-07-11 18:36:22 -07:00
Mitchell Hashimoto
7595f0078e
BoxCollection#add provider argument is optional
...
In the case that not provider is given then whatever provider the box
represents will be added to the system. Ideally, a provider will be
given, but if not, Vagrant still does a "best effort" to install the
box.
2012-07-11 18:36:22 -07:00
Mitchell Hashimoto
da15105a8f
Make Box2 the new Box
...
This involved defaulting all box searching at the moment to VirtualBox.
Additionally, box upgrading is not yet handled. This needs to be done at
some point.
2012-07-11 18:36:21 -07:00
Mitchell Hashimoto
e7bed7c2ff
Raise an exception if an invalid tar file is added.
2012-07-11 18:36:21 -07:00
Mitchell Hashimoto
a35f6a175d
Exception when you attempt to add a box when a V1 box conflicts.
2012-07-11 18:36:21 -07:00
Mitchell Hashimoto
9e33d16ca1
Adding a box that already exists should result in an exception.
2012-07-11 18:36:21 -07:00
Mitchell Hashimoto
9cb0015b6e
Test that an added box provider must match expected.
2012-07-11 18:36:21 -07:00
Mitchell Hashimoto
c2151681ec
Box collection can add a new box. This is the happy path only.
2012-07-11 18:36:21 -07:00
Mitchell Hashimoto
ffd5ac5af4
BoxCollection can now upgrade V1 boxes to V2
2012-07-11 18:36:21 -07:00
Mitchell Hashimoto
2eaa850853
Box2 reads the metadata.json file.
2012-07-11 18:36:21 -07:00
Mitchell Hashimoto
cd6c60775c
Use the V1 box helper for a test.
2012-07-11 18:36:20 -07:00
Mitchell Hashimoto
4386ff9887
BoxCollection#all returns all boxes, including V1 boxes
2012-07-11 18:36:20 -07:00
Mitchell Hashimoto
9d1924811e
Box collection can detect V1 boxes and throws an exception
...
The exception notifies the caller that the box needs to be upgraded. The
upgrade process is not yet done but is coming ina future commit.
2012-07-11 18:36:20 -07:00
Mitchell Hashimoto
a6d7bd48fd
Find boxes with new on-disk structure.
...
The box collection can now find new-style boxes with providers and
return proper Box objects. In the future, we'll also have to implement
upgrading old style ones as well.
2012-07-11 18:36:20 -07:00
Mitchell Hashimoto
42826356ad
Basic "Box2" implementation.
...
This is the beginning of the new box internals. The basic idea is that
the new box has a new field: provider. The provider will describe what
provider that box was built with and what provider it is made to work
with.
2012-07-11 18:36:20 -07:00
Mitchell Hashimoto
70bdd9f56e
Move host base class to a plugin component
2012-06-27 09:26:03 -07:00
Mitchell Hashimoto
53d8c28c8e
Move guests to Vagrant.plugin("1", :guest)
2012-06-26 16:28:49 -07:00
Mitchell Hashimoto
b23dda54b8
Move command base class to a plugin component
2012-06-26 16:18:02 -07:00
Mitchell Hashimoto
7258daf535
Support specifying a component for Vagrant.plugin
...
The future of subclassing things like configuration bases and so on will
be to use `Vagrant.plugin(version, component)`. For example:
`Vagrant.plugin("1", :provisioner)`.
2012-06-26 15:47:26 -07:00
Mitchell Hashimoto
194cd2145d
Fix some nondeterminism in tests with GCing tempfiles.
...
Before, the tempfile "f" could be GC'd before the path was used,
resulting in failed tests because when it is GC'd the tempfile is
removed. We now store the tempfile in an instance variable so that it
isn't even available for GC until after the test is finished running.
2012-06-26 15:06:04 -07:00
Mitchell Hashimoto
798704c6d2
Move the loader into the Config::V1 namespace.
2012-06-26 15:06:03 -07:00
Mitchell Hashimoto
41bc8e7454
Move Config::V1::Base to Vagrant::Plugin::V1::Config
2012-06-24 17:06:11 -07:00
Mitchell Hashimoto
ffab8cab68
Renamespace V1 plugin root to Vagrant::Plugin::V1::Plugin
...
This is mostly a transparent change to end users, but I'm going to put
all base classes for V1 into Vagrant::Plugin::V1.
2012-06-24 14:24:52 -07:00
Mitchell Hashimoto
37c54c7b20
Use a temporary directory for the VAGRANT_CWD when running tests
...
Tests before were picking up a Vagrantfile in the Vagrant source
directory, which can cause some funny failures. This ensures that each
test run will actually establish a new temporary CWD so that a
Vagrantfile is hopefully never found.
2012-06-23 23:56:39 -07:00
Mitchell Hashimoto
7a299ae2de
Configuration loader can handle upgrading.
...
The basic process for this is to:
1. Load the configuration using the proper loader for that version. i.e.
if you're loading V1 config, then use the V1 loader.
2. If we just loaded a version that isn't current (imagine we're
currently at V3), then we need to upgrade that config. So we first
ask the V2 loader to upgrade the V1 config to V2, then we ask the V3
loader to upgrade the V2 config to V3. We keep track of warnings and
errors throughout this process.
3. Finally, we have a current config, so we merge it into the in-process
configuration that is being loaded.
2012-06-23 19:56:31 -07:00
Mitchell Hashimoto
9bc1ea5f04
Use config finalize to move some version-specific logic to the version
...
This moves out the concept of a "default VM" from the Environment class
and makes it the responsibility of the V1 configuration that at least
one VM is defined on it. This lets the configuration ultimately decide
what a "default" implementation is.
2012-06-23 12:48:53 -07:00
Mitchell Hashimoto
70fb804128
Configuration versions can finalize config after loading
...
This is useful so that it can take a look at the final loaded
configuration object and possibly make some tweaks to the configuration
object. The use case this was built for was so that config V1 can verify
that there is always at least a single VM defined as a sub-VM, the
"default" VM.
2012-06-23 12:27:32 -07:00
Mitchell Hashimoto
7e19d6849b
Config loader no longer assumes latest version for procs.
...
Previously, all procs were assumed to just be the current version. This
is certainly not going to be true always so now the version number of
the configuration must be explicit if you're assigning a proc to the
configuration loader.
2012-06-23 12:06:54 -07:00
Mitchell Hashimoto
b3db82e516
Separate out the versions the config loader knows as init params.
...
This means that the Config::Loader now only knows how to load
configuration for versions used to initialize the class. This lets
things like the tests be completely isolated from what the actual
configuration is for Vagrant. This will be immensely useful to verify
that the loader functionality works for non-trivial bits (like
upgrading) without depending on Vagrant's upgrading functionality.
2012-06-23 11:33:53 -07:00
Mitchell Hashimoto
de78a3637a
Plugin activation
...
Vagrant is only guaranteeing that the plugin definition superclass (the
Vagrant.plugin("1") part) is backwards compatible. Anything else, such
as Vagrant::Command::Base and so on, will likely change in future
versions. Beacuse of this, plugins should only immediately expose their
definition.
In order to support loading the other classes, plugins should defer
loading to the "activation" phase of a plugin. This can be done using
the `activated` block:
class MyPlugin < Vagrant.plugin("1")
name "my plugin"
activated do
require "myplugin/my_command"
end
command("foo") { MyCommand }
end
Plugin activation is done at two specific times:
* Right when a Vagrant::Environment is created and the global plugins
(such as from ~.vagrantrc) are loaded.
* Right before loading configuration, but after the Vagrantfiles have
been evaluated. This allows plugins to be defined within these files
as well.
2012-05-21 22:23:50 -07:00
Mitchell Hashimoto
3204b3a580
Vagrant.configure and versioned configuration
...
Vagrant.configure is now how configuration is done in Vagrantfiles
(previously it was Vagrant::Config.run). This function takes a single
argument which is the version of configuration to use.
Various internals were updated for this new versioned configuration.
Note that multiple versions of configuration aren't yet used so aren't
fully supported by Vagrant, but the foundation is being set here.
2012-05-21 21:47:01 -07:00
Mitchell Hashimoto
8c6f3edf2d
Single-VM mode still allows target name in vagrant commands
2012-05-06 14:33:47 -07:00
Mitchell Hashimoto
bc0643613a
Vagrant.require_plugin [GH-916]
2012-05-06 14:01:10 -07:00
Mitchell Hashimoto
0d6248394c
Tests for the Easy command base
2012-05-06 10:01:50 -07:00
Ryan LeCompte
2355a4b9a6
fix support for multiple unique easy commands
2012-05-06 01:47:43 -07:00
Mitchell Hashimoto
4cc3fb05df
Passing unit tests
2012-05-05 22:32:19 -07:00
Mitchell Hashimoto
3d147f1d96
Raise exception if the insert_before middleware is not found
2012-05-05 22:10:26 -07:00
Mitchell Hashimoto
879f98b5d5
Action builder supports indexing middlewares by name
2012-05-05 22:01:53 -07:00
Mitchell Hashimoto
c2649074c3
Test command name validation and fix up some bugs
2012-05-05 20:11:26 -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
8850c086b1
Plugins can now have action_hooks
2012-05-05 18:28:07 -07:00
Mitchell Hashimoto
13a27eb723
More test cleanups
2012-05-01 22:10:10 -07:00
Mitchell Hashimoto
9b20173dfb
Clean up some of the SSH key tests
2012-05-01 22:08:30 -07:00
Sean Wolfe
024f492cb3
Added spec to test the ssh key file permission changing.
2012-05-01 14:05:22 -07:00
Mitchell Hashimoto
1489854d70
Move commands into plugins
2012-04-19 13:59:48 -07:00
Mitchell Hashimoto
661f20bb91
Move hosts to a plugin system
2012-04-18 22:20:45 -07:00
Mitchell Hashimoto
1cbac3167f
Move provisioners into plugins
2012-04-18 21:53:19 -07:00
Mitchell Hashimoto
1b2fa748f9
Move all guests to plugins, even the distros
2012-04-18 21:23:25 -07:00
Mitchell Hashimoto
7766eb6098
Major guests have been moved to plugins
2012-04-18 21:03:03 -07:00
Mitchell Hashimoto
dd459170dd
Start moving guest configuration out into plugins
2012-04-18 17:38:20 -07:00
Mitchell Hashimoto
a23fee4848
Remove old configuration classes
2012-04-18 17:16:03 -07:00
Mitchell Hashimoto
b38fb5e974
Loader uses the new configuration classes
2012-04-18 17:03:34 -07:00
Mitchell Hashimoto
c0ee3b06ff
Config merging
2012-04-17 10:22:24 -07:00
Mitchell Hashimoto
92ee042fc2
V1 config loading using plugins as a source for config keys
2012-04-16 22:26:38 -07:00
Mitchell Hashimoto
b46daa82bc
Ability to define configuration classes on plugins
2012-04-15 16:04:54 -05:00
Mitchell Hashimoto
2eebc2cb68
Basic Plugin class
2012-04-15 15:34:44 -05:00
Mitchell Hashimoto
d08a65e7f7
IsPortOpen utility
2012-03-23 10:26:29 -04:00
Mitchell Hashimoto
1b0a6a0895
Make unit tests pass from the safe_puts changes
2012-03-22 13:42:41 -07:00
Mitchell Hashimoto
f8fa859b5f
Raise an error if the CWD is incorrect
2012-03-08 16:57:17 -08:00
Mitchell Hashimoto
6969f791ad
VAGRANT_CWD can be set to set the CWD of `vagrant`.
2012-03-08 16:45:19 -08:00
Mitchell Hashimoto
ce00a56ecb
Even with a custom vagrantfile name, use defaults [GH-778]
2012-03-08 13:24:04 -08:00
Mitchell Hashimoto
7b9f64f577
Allow data store to work even if file path is nil
2012-02-25 10:41:06 -08:00
Mitchell Hashimoto
2c823e98bd
Fix crashing bug with `primary_vm` on Environment
2012-02-24 10:27:34 -08:00
Mitchell Hashimoto
ba42fffed0
Convert line endings to Unix-style [GH-727]
2012-02-10 18:07:59 -08:00
Bob Van Zant
ae62c9bd68
Convert example host only IPs to RFC1918
2012-02-08 14:50:33 -08:00
Mitchell Hashimoto
3eff28ac0d
Don't strip color codes with ANSI escape code remover
2012-02-05 13:30:21 +01:00
Mitchell Hashimoto
912e4974db
Registry will now cache result values.
...
This is actually required so that we can do things like this
in plugins:
Vagrant.actions[:up].insert(Foo, Bar)
2012-01-28 17:31:50 -08:00
Mitchell Hashimoto
d1e78f791d
Remove test warnings, add ANSI escape code remover
2012-01-23 19:24:32 -08:00
Mitchell Hashimoto
d487e286f4
Don't merge config keys that start with __.
...
This allows config classes to store internal state somehow.
2012-01-19 20:54:09 -08:00
Mitchell Hashimoto
bdb591bc0f
Tests that boolean configs are merged up properly [GH-651]
2012-01-18 18:51:15 -08:00
Mitchell Hashimoto
4cfabc690b
Fix a failing unit test
2012-01-11 23:57:19 -08:00
Mitchell Hashimoto
f0b77d2f30
Additional fixes + tests for shell expansion [GH-633]
2012-01-11 22:56:15 -08:00
Mitchell Hashimoto
863ebe2d2f
Custom merging for VM config
2012-01-11 22:12:49 -08:00
Mitchell Hashimoto
51353d51fc
Test base merge
2012-01-11 21:31:19 -08:00
Mitchell Hashimoto
bfb52ba7dc
Top merges things in each key one by one by calling `merge`
2012-01-11 21:22:55 -08:00
Mitchell Hashimoto
d13dd482b5
Some Config::Top class tests
2012-01-11 21:09:52 -08:00
Mitchell Hashimoto
008132b3cb
Run each config proc only once
2012-01-11 20:59:21 -08:00
Mitchell Hashimoto
7c9c6e34ce
Change caching behavior of config procs for the config loader
2012-01-11 16:58:40 -08:00
Mitchell Hashimoto
ef37f692bd
Revert the check for duplicate Vagrantfiles.
...
This is just tricky with case sensitive/insensitive file systems.
Reverting since it doesn't seem worth it.
2012-01-08 23:15:18 -08:00
Mitchell Hashimoto
4f30a834d0
Tests for multivagrantfile being found
2012-01-08 23:04:23 -08:00
Mitchell Hashimoto
97f7fa633d
Re-implement how networking is done internally
2012-01-02 19:51:38 -08:00
Mitchell Hashimoto
43fcca3dcb
Retryable test
2011-12-26 17:38:47 -08:00
Mitchell Hashimoto
15a625275e
HashWithIndifferentAccess test
2011-12-26 17:27:56 -08:00
Mitchell Hashimoto
91562e2111
FileChecksum test
2011-12-26 17:24:44 -08:00
Mitchell Hashimoto
d80ff0a27f
Pull out port collision detection/correction into the CheckPortCollision middleware
2011-12-25 10:13:08 -08:00
Mitchell Hashimoto
40fdab3de8
DataStore tests and slight modifications
2011-12-22 21:18:59 -08:00
Mitchell Hashimoto
e3426211bc
Vagrant::Action::Warden unit tests
2011-12-22 20:41:01 -08:00
Mitchell Hashimoto
3cd262ed75
Unit tests for Vagrant::Action::Builder
2011-12-22 20:17:45 -08:00
Mitchell Hashimoto
a8f5ed1863
Require vagrant environments for some commands.
2011-12-18 13:26:15 -08:00
Mitchell Hashimoto
c2e3a3050a
Ruby 1.8.7 compatibility
2011-12-17 20:22:46 -08:00
Mitchell Hashimoto
e71007d47e
`vagrant destroy`
2011-12-17 11:05:49 -08:00
Mitchell Hashimoto
b292008f3b
Change parse_options a bit to automatically add help and detect invalid options
2011-12-17 09:25:46 -08:00
Mitchell Hashimoto
43cadfe830
`vagrant up`
2011-12-17 09:14:05 -08:00
Mitchell Hashimoto
27491b554c
Remove thor from requirements. Start revamping Vagrant::CLI
2011-12-16 23:34:30 -08:00
Mitchell Hashimoto
eda286b476
Config classes are registered via a registry now
2011-12-15 20:32:33 -08:00
Mitchell Hashimoto
b428072bb5
Provisioners use the registry. Cleaned up the way config classes are searched for.
2011-12-14 22:43:45 -08:00
Mitchell Hashimoto
668bab0ba9
Better host loading scheme
2011-12-11 23:22:44 -08:00
Mitchell Hashimoto
b8d40ea463
Registry is enumerable
2011-12-11 18:29:42 -08:00
Mitchell Hashimoto
e201d9cacf
Rename action registry to just Vagrant::Registry
2011-12-11 18:22:06 -08:00
Mitchell Hashimoto
05ae297fd2
Copy insecure private key to user owned directory [GH-580]
2011-12-11 16:32:25 -08:00
Mitchell Hashimoto
42a5e02db4
Clean up test load paths
2011-12-11 15:53:11 -08:00
Mitchell Hashimoto
d9e2c8b788
Raise a nice error if home directory is not accessible
2011-12-10 17:14:07 -08:00
Mitchell Hashimoto
5c6ca57409
Throw an error if a box already exists when calling box.add
2011-12-10 13:09:03 -08:00
Mitchell Hashimoto
739d5ffb5f
Lazy load attributes for runners. Get box repackage working.
2011-12-09 20:24:34 -08:00
Mitchell Hashimoto
d9321ed4d4
Box destroy works again
2011-12-09 18:06:34 -08:00
Mitchell Hashimoto
d92f3d8c6d
Box add works again with new env stuff
2011-12-09 17:33:30 -08:00
Mitchell Hashimoto
aeb6533607
Fix issue with Tempfile in test being deleted
2011-12-09 17:26:06 -08:00
Mitchell Hashimoto
56663b5952
Remove dependence on Vagrant::Environment on downloaders
2011-12-09 15:18:43 -08:00
Mitchell Hashimoto
3c8261f4ac
Add :ui to the globals for the action runner
2011-12-09 14:50:42 -08:00
Mitchell Hashimoto
b31c3d458c
Action runner supports global parameters
2011-12-09 14:44:43 -08:00
Mitchell Hashimoto
bbb8f0ac2c
Integrate new action runner/registry into Vagrant::Environment
2011-12-09 14:39:39 -08:00
Mitchell Hashimoto
daf711fd80
Separate Vagrant::Action into Runner and Registry
2011-12-09 14:22:03 -08:00
Mitchell Hashimoto
5bfcbcba66
Remove step stuff. Failed experiment for now. Too radical for point release.
2011-12-09 13:40:49 -08:00
Mitchell Hashimoto
2c73de0043
The proper enter/exit sequence is called for multisteps
2011-12-06 18:45:37 -08:00
Mitchell Hashimoto
822226cae4
MultiStep does not allow composing steps that do not work together
2011-12-06 18:31:07 -08:00
Mitchell Hashimoto
73761dc92a
MultiStep should do input/output validation
2011-12-06 18:19:18 -08:00
Mitchell Hashimoto
7d3746b292
Multistep can now take parameters from any arbitrary step prior.
2011-12-06 09:46:57 -08:00
Mitchell Hashimoto
5b87165e97
Multistep tests pass again.
2011-12-05 21:08:31 -08:00
Mitchell Hashimoto
c5eae41fd8
Revamp Step to be more like a Python with-context
2011-12-05 21:05:41 -08:00
Mitchell Hashimoto
683bbdaa3c
Implement multistep
2011-12-04 18:09:18 -08:00
Mitchell Hashimoto
49d299956f
Add the "Step" abstraction
2011-12-04 17:14:21 -08:00
Mitchell Hashimoto
8801bc7b1b
Starting to revamp BoxCollection to not depend on env
2011-12-04 11:39:44 -08:00
Mitchell Hashimoto
e2977e8948
Make VM names symbols again, since they're accessed often.
2011-12-03 19:33:44 -08:00
Mitchell Hashimoto
1921ce17e8
Propery load box configuration
2011-12-03 19:17:08 -08:00
Mitchell Hashimoto
99982fb26e
VM-specific configuration now works.
2011-12-03 19:05:50 -08:00
Mitchell Hashimoto
73a672cff1
load_config! is kind of working again.
...
Specifically: Global configuration load appears to be working. More
unit tests should reveal if proper VM configuration is loading.
2011-12-03 18:31:17 -08:00
Mitchell Hashimoto
02cc1447dc
Configuration files are only loaded once
2011-12-03 17:42:16 -08:00
Mitchell Hashimoto
15c56a1f4c
Configuration loads. Lots of refactor to do still.
2011-12-03 17:29:28 -08:00
Mitchell Hashimoto
1a8c4199b2
Introduce Config::Loader
...
Config::Loader will be the new class responsible for loading configuration
and replaces the previous dual-role "Vagrant::Config" played. While this
commit is very early-stage, once this new architecture is flushed out, it
will make loading, using, and extending configuration much easier and cleaner.
Additionally, I believe this will help post Vagrant 1.0 if multi-language
configuration is implemented.
2011-12-03 17:12:48 -08:00
Mitchell Hashimoto
1355487a04
Environment UI class can now be set through the environment init
2011-12-03 16:07:34 -08:00
Mitchell Hashimoto
fe442faefa
Move unit tests into the unit_legacy folder
2011-12-03 15:44:08 -08:00
Mitchell Hashimoto
c37f16b754
Remove final logger reference
2011-12-01 21:56:56 -08:00
Mitchell Hashimoto
282bf37350
Get the tests passing
2011-12-01 21:56:55 -08:00
Mitchell Hashimoto
0279cc1edf
Do not buffer output for tests
2011-11-27 11:16:24 -07:00
Mitchell Hashimoto
1155983307
Get unit tests passing again
2011-11-25 23:55:17 -07:00
Darrin Wortlehock
4c01a87ab3
Adding support for 'no_proxy' environment variable to suppress proxy in http downloader
2011-11-24 21:54:35 -07:00
Mitchell Hashimoto
c2ef1329aa
Get tests passing for GH-508
2011-11-24 21:52:31 -07:00
Mitchell Hashimoto
db491e1f9b
Modify unit tests a bit
2011-11-24 21:31:30 -07:00
Justin Brown
dcef64fa0d
Remove the chef dependency on the default 'v-root' shared folder.
2011-11-22 19:03:52 -08:00
Mitchell Hashimoto
5d684b9001
Reload the configuration for all VMs after downloading a box. Fixes GH-564
2011-11-21 22:39:12 -08:00
Mitchell Hashimoto
f83c1b3c27
Fix regression introduced with cab1e4e
2011-11-05 15:19:03 -07:00
Justin Brown
0c2fc0cae2
Make init respect the env's cwd.
2011-10-30 22:48:35 -07:00
Mitchell Hashimoto
245bcf436f
Have tests pass on Ruby 1.8.x
2011-10-30 22:23:36 -07:00
Ticean Bennett
dab80649b8
Added Basic Auth support to HTTP downloader.
2011-10-14 18:37:24 +02:00
Mitchell Hashimoto
7219f3d05b
Show warning if forwarding port less than 1024 [closes GH-487]
2011-09-11 23:56:02 -07:00
Samer Abukhait
99646735d0
Don't do the port threshold check if running under root
2011-09-11 23:26:55 -07:00
Mitchell Hashimoto
1cfef2734a
Fix crashing bug if .vagrant is invalid. [closes GH-496]
2011-09-11 23:23:17 -07:00
Mitchell Hashimoto
ce5d989384
Moving unit tests to test/unit
2011-08-28 23:10:32 -07:00
John Bender
07be6f1ac0
config hash to dot methods
2010-01-21 23:38:41 -08:00
Mitchell Hashimoto
531aa5474d
ruby-debug in tests
2010-01-21 21:36:34 -08:00
John Bender
032d0175de
test_helper and passing test
2010-01-21 20:35:31 -08:00