47 lines
1.4 KiB
Protocol Buffer
47 lines
1.4 KiB
Protocol Buffer
syntax = "proto3";
|
||
package hashicorp.nomad.plugins.base;
|
||
|
||
import "google/protobuf/empty.proto";
|
||
import "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(google.protobuf.Empty) returns (PluginInfoResponse) {}
|
||
|
||
// ConfigSchema returns the schema for parsing the plugins configuration.
|
||
rpc ConfigSchema(google.protobuf.Empty) returns (ConfigSchemaResponse) {}
|
||
}
|
||
|
||
// PluginType enumerates the type of plugins Nomad supports
|
||
enum PluginType {
|
||
UNKNOWN = 0;
|
||
DRIVER = 1;
|
||
DEVICE = 2;
|
||
}
|
||
|
||
// 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;
|
||
}
|
||
|
||
// ConfigSchemaResponse returns the plugins configuration schema.
|
||
message ConfigSchemaResponse {
|
||
// spec is the plugins configuration schema
|
||
hashicorp.nomad.plugins.shared.hclspec.Spec spec = 1;
|
||
}
|