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.
70 lines
1.7 KiB
Protocol Buffer
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;
|
|
}
|