// Copyright (c) HashiCorp, Inc. // SPDX-License-Identifier: BUSL-1.1 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 "google/rpc/error_details.proto"; import "plugin.proto"; // The service that is implemented for the server backend. service RubyVagrant { // Gets available ruby plugins rpc GetPlugins(GetPluginsRequest) returns (GetPluginsResponse); rpc ParseVagrantfile(ParseVagrantfileRequest) returns (ParseVagrantfileResponse); rpc ParseVagrantfileProc(ParseVagrantfileProcRequest) returns (ParseVagrantfileResponse); rpc ParseVagrantfileSubvm(ParseVagrantfileSubvmRequest) returns (ParseVagrantfileResponse); rpc ParseVagrantfileProvider(ParseVagrantfileProviderRequest) returns (ParseVagrantfileResponse); rpc Stop(google.protobuf.Empty) returns (google.protobuf.Empty); } /******************************************************************** * Plugins ********************************************************************/ message GetPluginsRequest { string project_path = 1; } message GetPluginsResponse { repeated Plugin plugins = 1; } message Plugin { // name of the plugin string name = 1; // type of the plugin Type type = 2; // options for the plugin google.protobuf.Any options = 3; // 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; } message ParseVagrantfileProcRequest { sdk.Args.ProcRef proc = 1; } message ParseVagrantfileResponse { // Vagrantfile representation sdk.Args.Hash data = 1; } message ParseVagrantfileSubvmRequest { sdk.Config.RawRubyValue subvm = 1; } message ParseVagrantfileProviderRequest { sdk.Config.RawRubyValue subvm = 1; string provider = 2; }