syntax = "proto3"; package hashicorp.nomad.plugins.base.proto; 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. 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_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 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; // plugin_api_version is the api version to use. string plugin_api_version = 3; } // 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 // 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; } // SetConfigResponse is used to respond to setting the configuration message SetConfigResponse {}