### `PluginInfo() (*PluginInfoResponse, error)` A `PluginInfoResponse` contains meta data about the plugin. ```go PluginInfoResponse{ // Type is the plugin type which is implemented Type: PluginTypeDriver, // Plugin API versions supported by the plugin PluginApiVersions: []string{drivers.ApiVersion010}, // Version of the plugin PluginVersion: "0.1.0", // Name of the plugin Name: "foodriver", } ``` ### `SetConfig(config *Config) error` The `SetConfig` function is called when starting the plugin for the first time. The `Config` given has two different configuration fields. The first, `PluginConfig`, is an encoded configuration from the `plugin` block of the client config. The second, `AgentConfig`, is the Nomad agent's configuration, which is given to all plugins. ### `ConfigSchema() (*hclspec.Spec, error)` The `ConfigSchema` function allows a plugin to tell Nomad the schema for its configuration. This configuration is given in a [plugin block][pluginblock] of the client configuration. The schema is defined with the [hclspec][hclspec] package. [hclspec]: https://godoc.org/github.com/hashicorp/nomad/plugins/shared/hclspec [pluginblock]: /nomad/docs/configuration/plugin