Paul Hinze 0fef7cc416
Port push plugins
This uses the new Push plugin support added to the plugin SDK in https://github.com/hashicorp/vagrant-plugin-sdk/pull/106 to make the following changes:

 * The plugin manager on the Go side now registers push plugins
 * The the _remote_ plugin manager on the Ruby side now calls over to
   the go side to get push plugins
 * All the wiring is hooked up such that when a push plugin is replaced
   with its remote GRPC-client-wielding equivalent, the messages are
   ferried around.
2022-04-25 12:26:21 -05:00

70 lines
1.7 KiB
Protocol Buffer

syntax = "proto3";
package hashicorp.vagrant;
option go_package = "github.com/hashicorp/vagrant/internal/server/proto/ruby_vagrant";
import "google/protobuf/empty.proto";
import "google/protobuf/any.proto";
import "plugin.proto";
// The service that is implemented for the server backend.
service RubyVagrant {
// Gets available ruby plugins
rpc GetPlugins(google.protobuf.Empty) returns (GetPluginsResponse);
rpc ParseVagrantfile(ParseVagrantfileRequest) returns (ParseVagrantfileResponse);
}
/********************************************************************
* Plugins
********************************************************************/
message GetPluginsResponse {
repeated Plugin plugins = 1;
}
message Plugin {
// name of the plugin
string name = 1;
// type of the plugin
Type type = 2;
// Supported plugin types, the values here MUST match the enum values
// in the Go sdk/component package exactly. A test in internal/server
// validates this.
enum Type {
UNKNOWN = 0;
COMMAND = 1;
COMMUNICATOR = 2;
GUEST = 3;
HOST = 4;
PROVIDER = 5;
PROVISIONER = 6;
SYNCEDFOLDER = 7;
AUTHENTICATOR = 8;
LOGPLATFORM = 9;
LOGVIEWER = 10;
MAPPER = 11;
CONFIG = 12;
PLUGININFO = 13;
PUSH = 14;
}
}
/********************************************************************
* Vagrantfile
********************************************************************/
message ParseVagrantfileRequest {
// Path to the Vagrantfile
string path = 1;
// TODO: might be good to add an option for passing cmd line args
}
message ParseVagrantfileResponse {
// Vagrantfile representation
sdk.Vagrantfile.Vagrantfile vagrantfile = 1;
}