open-nomad/plugins/base/proto/base.proto

91 lines
2.9 KiB
Protocol Buffer
Raw Normal View History

syntax = "proto3";
2018-08-09 22:29:00 +00:00
package hashicorp.nomad.plugins.base.proto;
2018-08-10 17:50:09 +00:00
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.
2018-08-07 23:16:23 +00:00
rpc PluginInfo(PluginInfoRequest) returns (PluginInfoResponse) {}
// ConfigSchema returns the schema for parsing the plugins configuration.
2018-08-07 23:16:23 +00:00
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;
2018-08-10 17:50:09 +00:00
DRIVER = 2;
DEVICE = 3;
}
2018-08-07 23:16:23 +00:00
// 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;
2018-10-17 02:21:15 +00:00
2018-12-14 22:46:32 +00:00
// 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;
}
2018-08-07 23:16:23 +00:00
// 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;
}
2018-08-07 23:16:23 +00:00
// SetConfigRequest is used to set the configuration
message SetConfigRequest {
// msgpack_config is the configuration encoded as MessagePack.
2018-10-17 02:21:15 +00:00
bytes msgpack_config = 1;
// nomad_config is the nomad client configuration sent to all plugins.
NomadConfig nomad_config = 2;
2018-12-14 22:46:32 +00:00
// plugin_api_version is the api version to use.
string plugin_api_version = 3;
2018-10-17 02:21:15 +00:00
}
// 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 {
2018-10-17 02:21:15 +00:00
// 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;
2018-08-07 23:16:23 +00:00
}
// SetConfigResponse is used to respond to setting the configuration
message SetConfigResponse {}