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; }