203 Commits

Author SHA1 Message Date
sophia
f7cd08b208 Pass terminal output color option from Ruby to terminal plugin 2022-09-14 11:42:52 -04:00
sophia
8bdb5e797d Pass in echo/secret ui input setting 2022-08-30 15:18:21 -05:00
Paul Hinze
7c56c74bb6
Support and honor the "primary" option for Command plugins 2022-07-27 11:36:04 -05:00
Paul Hinze
9ab94f9971
Fix crashes on Vagrantfiles with provisioners
I forgot to handle nil in the new PluginOptions stuff, and options are
nil for Provisioner plugins.
2022-07-20 17:36:05 -05:00
Paul Hinze
957d0d3779
Bring plugin options back to Ruby for providers and synced folders
This removes the need for the validation workaround for Docker, because
box_updated is once again available in that context.

We don't technically need the SyncedFolder priorities back on the Ruby
side, but wiring them through for symmetry.

Depends on https://github.com/hashicorp/vagrant-plugin-sdk/pull/183
2022-07-15 12:14:47 -05:00
Chris Roberts
67895c927e Allow a machine client to load its target 2022-07-11 15:08:53 -07:00
Chris Roberts
19b4adb3b8 Implement get_value rpc in vagrantfile client 2022-07-08 16:38:02 -07:00
Paul Hinze
ee8883153c
Make Docker provider work again post config refactor
- Allow machine.box to be empty without sadness (depends on
   https://github.com/hashicorp/vagrant-plugin-sdk/pull/182)
 - Get synced folder type from plugin name instead of defaulting to
   :virtualbox
2022-07-08 11:36:27 -05:00
Sophia Castellarin
66a22e5254
Merge pull request #303 from hashicorp/synced_folder_has_override_opts
Synced folder has override opts
2022-07-07 16:28:14 -05:00
sophia
b17c36c7c7 Fix typo 2022-07-07 12:30:24 -05:00
Paul Hinze
75d900c93b
Fix Type::Booleans leaking through capabilities
We had some cases where calling a capability that returned a boolean was
not getting correctly unpacked, so instead of `true` or `false` the
capability was putting out
`VagrantPlugins::CommandServe::Type::Boolean`.

This may have been happening in _all_ cases where a boolean was returned
from a capability and we just didn't notice it yet because the return
value was always truthy.

These tweaks should help ensure that Ruby types make it out where they
are supposed to be in Args::Direct usage.
2022-07-07 11:29:50 -05:00
Paul Hinze
fb2a102c71
Fix init and other commands that run without a project
The Basis needs to be able to respond to Vagrantfile() and
DefaultProvider() to make it through Vagrant::Environment
initialization.

Depends on https://github.com/hashicorp/vagrant-plugin-sdk/pull/178
2022-07-01 11:56:08 -05:00
sophia
adadf26c9c Check if communicator is available before detecting guests 2022-06-29 17:23:43 -05:00
Paul Hinze
986e3fb258
Merge pull request #292 from hashicorp/box-collection-nit
Scope down rescue on BoxCollection.find
2022-06-28 15:23:33 -05:00
Paul Hinze
47962dff37
Scope down rescue on BoxCollection.find
After https://github.com/hashicorp/vagrant-plugin-sdk/pull/175 is merged
it will properly return a NotFound so we can rescue that specifically
and let any unexpected errors propagate.
2022-06-24 16:30:51 -05:00
Chris Roberts
43979be447 Fix logger usage in plugin manager 2022-06-15 11:14:07 -07:00
Chris Roberts
44afa299f0 Perform direct type conversions 2022-06-15 11:02:24 -07:00
Chris Roberts
c24960731f Add vagrantfile client 2022-06-15 10:56:19 -07:00
sophia
194882214a Add machine readable bool endpoint to terminal ui 2022-05-31 15:47:47 -05:00
sophia
32bb18e9b9 Only output machine readable data if the terminal is not interactive 2022-05-31 10:53:21 -05:00
sophia
65e851d646 Output machine readable data as table 2022-05-31 10:28:26 -05:00
Paul Hinze
06350a7afc
Port default provider selection
- Pulls in the SDK changes to Project.DefaultProvider and Project.Target
- Implements the hefty default provider method
- Un-hard-codes provider from Target, and sets it when a Target is
  looked up from a Project
2022-05-25 16:19:50 -05:00
Paul Hinze
102e100108
client/target_index: Make yard comments conformant 2022-05-25 16:19:49 -05:00
sophia
d708bab84a Add error message for errors originating from a remote 2022-05-13 17:14:50 -05:00
sophia
31393eb3a9 Fill in some missing target client functions 2022-05-04 11:22:41 -05:00
sophia
0117c01e4b Fill in environment remote class 2022-05-04 11:22:41 -05:00
sophia
f340e192f2 Fill in project ruby client 2022-05-04 11:22:41 -05:00
sophia
0a37521ef2 Remove reload machine function from the grpc api 2022-05-04 09:32:36 -05:00
sophia
b4fbf76a33 Plug machine#uid methods into remote go backend 2022-05-04 09:32:36 -05:00
sophia
adf2340712 Update Ruby clients for proto changes 2022-04-25 14:12:28 -05:00
sophia
cddcfef0a1
Update Box#UpdateInfo to use box metadata client 2022-04-25 12:26:57 -05:00
sophia
35c094f570
Get box update info 2022-04-25 12:26:57 -05:00
sophia
7b470d4b25
Ensure box metadata has optional arguments 2022-04-25 12:26:53 -05:00
sophia
03ecb877e6
Update box metadata Name endpoint to boxName 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
0556c804fd
Add load metadata client endpoint 2022-04-25 12:26:52 -05:00
sophia
1f5d66fd76
Get box metadata client from box 2022-04-25 12:26:52 -05:00
sophia
428c3b02fd
Use remote box metadata implementation 2022-04-25 12:26:52 -05:00
sophia
05244e67c1
Add mappers for core plugin manager 2022-04-25 12:26:50 -05:00
sophia
b3003e8cb6
Add core plugin service client 2022-04-25 12:26:50 -05:00
Paul Hinze
8f9952089a
Fix commands that run without a project
Some commands like `vagrant init` and `vagrant box` should be able to
run successfully without a full Project available in VAGRANT_CWD (in
other words, they don't require that a valid Vagrantfile be available.)

Thus far we've been assuming that a Project is available when
dispatching commands, which mean that commands of this nature weren't
working.

Here we make the Basis available to serve as an alternative client to
Vagrant::Environment::Remote such that it can be instantiated and passed
through to commands. This required some changes to Environment::Remote
to make its interactions with the client more defensive, but we manage
to avoid needing to make any changes to the normal legacy codepaths.
2022-04-25 12:26:47 -05:00
sophia
128599ab68
Get local box metadata in remote box 2022-04-25 12:26:47 -05:00
sophia
b6d42d0695
Clean up machine client 2022-04-25 12:26:46 -05:00
sophia
f55da8168a
Check if a box is in use using the machines endpoint
This returns a list of machine index entries that use the box. This
is what is expected from the Ruby side.
2022-04-25 12:26:46 -05:00
sophia
4dcd120448
Load machine from machine ref 2022-04-25 12:26:46 -05:00
sophia
8b5bc0cd1c
Set box metadata url 2022-04-25 12:26:45 -05:00
Paul Hinze
7c1d2e5368
Use optional fields on Synced Folder instead of empty string checks
Addresses concerns raised in discussion here
https://github.com/hashicorp/vagrant-ruby/pull/219#discussion_r816966056
and makes it so we don't have to change any plugin code to make things
work.

Depends on https://github.com/hashicorp/vagrant-plugin-sdk/pull/133
2022-04-25 12:26:44 -05:00
Chris Roberts
df0bbe343f
Support bold style and add #clear_line 2022-04-25 12:26:43 -05:00
Chris Roberts
71fb214d95
Add #input to terminal client and use event stream 2022-04-25 12:26:43 -05:00
sophia
b7d12a0907
Get provider from remote machine 2022-04-25 12:26:38 -05:00