785 Commits

Author SHA1 Message Date
Chris Roberts
1a07190bb2 Update core manager to cleanup properly, use regular mapping 2022-04-25 16:01:10 -07:00
Chris Roberts
5e277410f3 Use regular mapper for manager and properly cleanup on close 2022-04-25 16:01:10 -07:00
Chris Roberts
8b5bab5250 Update plugin manager to cache named plugins 2022-04-25 16:01:10 -07:00
Chris Roberts
234734061c Add internal interface implementation for managers 2022-04-25 16:01:10 -07:00
Chris Roberts
616e003c42 When creating a plugin instance, register closer 2022-04-25 16:01:10 -07:00
sophia
2374af93bb Update tests for path changes 2022-04-25 17:17:52 -05:00
sophia
398d982408 Add decode hook for string -> path.Path 2022-04-25 14:12:28 -05:00
sophia
25dfcd039f Update paths to use Path type instead of string 2022-04-25 14:12:28 -05:00
sophia
02a0409ca8
Make core Project implement the Project interface from the sdk 2022-04-25 12:26:58 -05:00
Chris Roberts
4215232317
Include documentation on seedPlugin function 2022-04-25 12:26:58 -05:00
Chris Roberts
7e68e25994
Seed target and machine into plugins directly 2022-04-25 12:26:58 -05:00
Chris Roberts
373fc9c7b4
Helper for adding individual seed to plugin 2022-04-25 12:26:58 -05:00
Chris Roberts
1ca5872a5a
Define component types which can be cached 2022-04-25 12:26:58 -05:00
sophia
016a9a0efc
Remove box metadata ToMap functions
Box metadata is no longer passed around as a map. Instead it is
it's own service.
2022-04-25 12:26:57 -05:00
sophia
cddcfef0a1
Update Box#UpdateInfo to use box metadata client 2022-04-25 12:26:57 -05:00
sophia
e27e6c7871
Map box metadata 2022-04-25 12:26:57 -05:00
sophia
38c5dcb53c
Implement update info box endpoint 2022-04-25 12:26:57 -05:00
Chris Roberts
341dabcebd
Log seeding as trace level messages 2022-04-25 12:26:54 -05:00
Paul Hinze
ae58d787a0
Fix leaking basis log lines 2022-04-25 12:26:54 -05:00
sophia
cfe4e71a42
Seed target ui 2022-04-25 12:26:54 -05:00
sophia
a7d258abb3
Seed target after creation 2022-04-25 12:26:53 -05:00
sophia
6313596d62
Remove manual seeding of (guest and synced folder) plugins 2022-04-25 12:26:53 -05:00
sophia
c464569794
Remove extra logging 2022-04-25 12:26:53 -05:00
sophia
66524426d0
Update ruby remote box metadata for proto changes 2022-04-25 12:26:53 -05:00
sophia
01b4bbc42d
Specify multiple filters when querying for box metadata version 2022-04-25 12:26:53 -05:00
sophia
d1ea9b5ec7
Remove unused code 2022-04-25 12:26:52 -05:00
sophia
29c6d43cb8
Add LoadMetadata function to BoxMetadata 2022-04-25 12:26:52 -05:00
sophia
3dff26d683
Add version information to box provider metadata 2022-04-25 12:26:52 -05:00
sophia
794eefe191
Rename box metadata Name to BoxName 2022-04-25 12:26:52 -05:00
sophia
9f524bf1b0
Implement box metadata methods 2022-04-25 12:26:52 -05:00
sophia
4b8d4fbe86
Box metadata to implement vagrant-plugin-sdk box metadata interface 2022-04-25 12:26:52 -05:00
sophia
8b586fceb3
Make box metadata implement vagrant-plugin-sdk box metadata 2022-04-25 12:26:51 -05:00
sophia
921e7edb48
Reduce scope of plugins that can be returned from the core plugin manager 2022-04-25 12:26:50 -05:00
sophia
77a06e83d0
Close core plugins 2022-04-25 12:26:50 -05:00
sophia
68ffb3a8cf
Inject core plugin manager into context when running plugins 2022-04-25 12:26:50 -05:00
sophia
c2c784a295
Seed basis with core plugin manager 2022-04-25 12:26:49 -05:00
sophia
863c6a2704
Get BoxMetadata Plugin from the core plugin manager 2022-04-25 12:26:49 -05:00
Paul Hinze
4c21cb6ae5
Add release-grade logic for finding legacy Vagrant
After lots of experimentation I have landed on this as my proposal for
how we have our Go binary find its Ruby counterpart: just have it grab
it from the $PATH! @evanphx showed me this neat trick where by borrowing
a couple of helper methods from `exec` and tweaking them we can get
logic that will do a $PATH lookup that excludes "ourself". This allows
us to have both `vagrant` executables on the path... and means that
switching between Gogo-by-default or Legacy-by-default is just a matter
of tweaking $PATH order.

It _also_ means that we don't need any different lookup logic for
"release mode" vs "development mode" which is what I was looking at
before this solution.

In order to continue to facilitate development, I've generated a binstub
for vagrant using `bundle binstubs vagrant --standalone --path
./binstubs`, and I've updated the Nix development setup to prepend this
directory to the $PATH.

NOTE: Non-Nix users will need to modify their $PATH in the same way to
get the same behavior in development.
2022-04-25 12:26:49 -05:00
Paul Hinze
73a1be95fe
Fix nil dereference bug in new error handling logic
Found this while running `./vagrant box` with no args to get the help
output. It turns out you can have an empty RunResult but also a nil
error. I took the occasion to unwind the conditional tree a bit which
hopefully makes it a bit easier to read.
2022-04-25 12:26:49 -05:00
Paul Hinze
1341bfe0af
Tweak Ruby->Go error handling so exit codes match
In legacy Vagrant, any exception raised that's a subclass of
Vagrant::Errors::VagrantError is considered user-facing and so causes
the error message to be printed to the console and the process to use
exit code 1. Anything outside of that causes the process to use exit
code 255. (See `bin/vagrant` for the code.)

Here we mirror that behavior by treating errors that have a
LocalizedMessage as user-facing and those without as unexpected. This
allows the basic virtualbox component to pass in vagrant-spec!
2022-04-25 12:26:49 -05:00
sophia
211da5be23
Remove box count check when trying to recover boxes
The get box + stat operations are not that slow. No need to also
go through listing out all the boxes in the vagrant box dir.
2022-04-25 12:26:49 -05:00
sophia
c23e617fce
Check for metadata.json 2022-04-25 12:26:49 -05:00
sophia
0d38ccf20c
Create boxes dir if it does not exist 2022-04-25 12:26:49 -05:00
sophia
b3f8c5a99d
Add test for removing boxes that are no longer available 2022-04-25 12:26:48 -05:00
sophia
385bcbf81b
Remove box from db if it is no longer available on disk 2022-04-25 12:26:48 -05:00
sophia
82fa38f5e0
Check for consistency between db/boxes dir when creating box collection 2022-04-25 12:26:48 -05:00
sophia
aa9a03b9de
Ensure consistency between box db and dir 2022-04-25 12:26:48 -05:00
Paul Hinze
7f56168959
Work around a few global flag collisions for ssh command
* `vagrant ssh` has a --no-tty flag colliding with the one defined in
   `bin/vagrant` - in fact none of the flags in `bin/vagrant` are
   processed in `serve` mode, so remove the code that captures them from
   the CommandInfo OptionParser dance
 * `vagrant ssh` has a `--plain` flag colliding with the one defined in
   `internal/cli/base.go` - this flag was inherited from Waypoint, so we
   can just rename it to line up with the (inversely defined) `--color`
   flag used in legacy vagrant
2022-04-25 12:26:48 -05:00
sophia
d3f22f3a68
Don't count machines that have not been created when looking for boxes in use 2022-04-25 12:26:48 -05:00
sophia
6e420689cb
Update Target State for updated states 2022-04-25 12:26:48 -05:00