open-nomad/plugins/base/proto/base.proto
Mahmood Ali 98c02851c8
use comment ignores (#9448)
Use targetted ignore comments for the cases where we are bound by
backward compatibility.

I've left some file based linters, especially when the file is riddled
with linter voilations (e.g. enum names), or if it's a property of the
file (e.g. package and file names).

I encountered an odd behavior related to RPC_REQUEST_RESPONSE_UNIQUE and
RPC_REQUEST_STANDARD_NAME.  Apparently, if they target a `stream` type,
we must separate them into separate lines so that the ignore comment
targets the type specifically.
2020-11-25 16:03:01 -05:00

91 lines
2.9 KiB
Protocol Buffer
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

syntax = "proto3";
package hashicorp.nomad.plugins.base.proto;
option go_package = "proto";
import "plugins/shared/hclspec/hcl_spec.proto";
// BasePlugin is the methods that all Nomad plugins must support.
service BasePlugin {
// PluginInfo describes the type and version of a plugin.
rpc PluginInfo(PluginInfoRequest) returns (PluginInfoResponse) {}
// ConfigSchema returns the schema for parsing the plugins configuration.
rpc ConfigSchema(ConfigSchemaRequest) returns (ConfigSchemaResponse) {}
// SetConfig is used to set the configuration.
rpc SetConfig(SetConfigRequest) returns (SetConfigResponse) {}
}
// PluginType enumerates the type of plugins Nomad supports
enum PluginType {
UNKNOWN = 0;
DRIVER = 2;
DEVICE = 3;
}
// PluginInfoRequest is used to request the plugins basic information.
message PluginInfoRequest {}
// PluginInfoResponse returns basic information about the plugin such
// that Nomad can decide whether to load the plugin or not.
message PluginInfoResponse {
// type indicates what type of plugin this is.
PluginType type = 1;
// plugin_api_versions indicates the versions of the Nomad Plugin API
// this plugin supports.
repeated string plugin_api_versions = 2;
// plugin_version is the semver version of this individual plugin.
// This is divorce from Nomads development and versioning.
string plugin_version = 3;
// name is the name of the plugin
string name = 4;
}
// ConfigSchemaRequest is used to request the configurations schema.
message ConfigSchemaRequest {}
// ConfigSchemaResponse returns the plugins configuration schema.
message ConfigSchemaResponse {
// spec is the plugins configuration schema
hashicorp.nomad.plugins.shared.hclspec.Spec spec = 1;
}
// SetConfigRequest is used to set the configuration
message SetConfigRequest {
// msgpack_config is the configuration encoded as MessagePack.
bytes msgpack_config = 1;
// nomad_config is the nomad client configuration sent to all plugins.
NomadConfig nomad_config = 2;
// plugin_api_version is the api version to use.
string plugin_api_version = 3;
}
// NomadConfig is the client configuration sent to all plugins
message NomadConfig {
// driver specific configuration sent to all plugins
NomadDriverConfig driver = 1;
}
// NomadDriverConfig is the driver specific client configuration sent to all
// driver plugins
message NomadDriverConfig {
// ClientMaxPort is the upper range of the ports that the client uses for
// communicating with plugin subsystems over loopback
// buf:lint:ignore FIELD_LOWER_SNAKE_CASE
uint32 ClientMaxPort = 1;
// ClientMinPort is the lower range of the ports that the client uses for
// communicating with plugin subsystems over loopback
// buf:lint:ignore FIELD_LOWER_SNAKE_CASE
uint32 ClientMinPort = 2;
}
// SetConfigResponse is used to respond to setting the configuration
message SetConfigResponse {}