86 lines
2.7 KiB
Protocol Buffer
86 lines
2.7 KiB
Protocol Buffer
syntax = "proto3";
|
||
package hashicorp.nomad.plugins.base.proto;
|
||
option go_package = "proto";
|
||
|
||
import "github.com/hashicorp/nomad/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_version indicates the version of the Nomad Plugin API
|
||
// this plugin is built against.
|
||
string plugin_api_version = 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;
|
||
}
|
||
|
||
// 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
|
||
uint32 ClientMaxPort = 1;
|
||
|
||
// ClientMinPort is the lower range of the ports that the client uses for
|
||
// communicating with plugin subsystems over loopback
|
||
uint32 ClientMinPort = 2;
|
||
}
|
||
|
||
// SetConfigResponse is used to respond to setting the configuration
|
||
message SetConfigResponse {}
|