98c02851c8
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.
91 lines
2.9 KiB
Protocol Buffer
91 lines
2.9 KiB
Protocol Buffer
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 Nomad’s 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 {}
|