2018-08-07 05:27:47 +00:00
|
|
|
|
syntax = "proto3";
|
|
|
|
|
package hashicorp.nomad.plugins.base;
|
2018-08-09 20:29:05 +00:00
|
|
|
|
option go_package = "base";
|
2018-08-07 05:27:47 +00:00
|
|
|
|
|
2018-08-09 20:29:05 +00:00
|
|
|
|
import "github.com/hashicorp/nomad/plugins/shared/hclspec/hcl_spec.proto";
|
2018-08-07 05:27:47 +00:00
|
|
|
|
|
|
|
|
|
// 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) {}
|
2018-08-07 05:27:47 +00:00
|
|
|
|
|
|
|
|
|
// 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) {}
|
2018-08-07 05:27:47 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// PluginType enumerates the type of plugins Nomad supports
|
|
|
|
|
enum PluginType {
|
|
|
|
|
UNKNOWN = 0;
|
|
|
|
|
DRIVER = 1;
|
|
|
|
|
DEVICE = 2;
|
|
|
|
|
}
|
|
|
|
|
|
2018-08-07 23:16:23 +00:00
|
|
|
|
// PluginInfoRequest is used to request the plugins basic information.
|
|
|
|
|
message PluginInfoRequest {}
|
|
|
|
|
|
2018-08-07 05:27:47 +00:00
|
|
|
|
// 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;
|
|
|
|
|
}
|
|
|
|
|
|
2018-08-07 23:16:23 +00:00
|
|
|
|
// ConfigSchemaRequest is used to request the configurations schema.
|
|
|
|
|
message ConfigSchemaRequest {}
|
|
|
|
|
|
2018-08-07 05:27:47 +00:00
|
|
|
|
// 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.
|
|
|
|
|
bytes msgpack_config = 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// SetConfigResponse is used to respond to setting the configuration
|
|
|
|
|
message SetConfigResponse {}
|