hashicorp/nomad · error
no CSI plugin named: %s could be found
Error message
no CSI plugin named: %s could be found
What it means
pluginValidateVolume looks up the CSI plugin that hosts the volume by PluginID. If no plugin with that ID exists in state store, registration/creation of the volume cannot validate provider info and fails.
Source
Thrown at nomad/csi_endpoint.go:226
if err != nil {
return err
}
reply.Volume = vol
return v.srv.replySetIndex(csiVolumeTable, &reply.QueryMeta)
}}
return v.srv.blockingRPC(&opts)
}
func (v *CSIVolume) pluginValidateVolume(vol *structs.CSIVolume) (*structs.CSIPlugin, error) {
state := v.srv.fsm.State()
plugin, err := state.CSIPluginByID(nil, vol.PluginID)
if err != nil {
return nil, err
}
if plugin == nil {
return nil, fmt.Errorf("no CSI plugin named: %s could be found", vol.PluginID)
}
if plugin.ControllerRequired && plugin.ControllersHealthy < 1 {
return nil, fmt.Errorf("no healthy controllers for CSI plugin: %s", vol.PluginID)
}
vol.Provider = plugin.Provider
vol.ProviderVersion = plugin.Version
return plugin, nil
}
func (v *CSIVolume) controllerValidateVolume(req *structs.CSIVolumeRegisterRequest, vol *structs.CSIVolume, plugin *structs.CSIPlugin) error {
if !plugin.ControllerRequired {
// The plugin does not require a controller, so for now we won't do any
// further validation of the volume.
return nilView on GitHub (pinned to 482b49bf1a)
Solutions
- Confirm the plugin ID with nomad plugin status and match it exactly in the volume spec
- Ensure the CSI plugin job is running on an eligible client so it registers with the server
- Re-deploy the CSI plugin job before registering volumes
Example fix
// before plugin_id = "csi-plugin" // typo // after plugin_id = "aws-ebs-csi" // matches nomad plugin status output
Defensive patterns
Strategy: validation
Validate before calling
// before registering, verify plugin exists plugins, _ := client.CSIPlugins().List(nil) // ensure spec plugin_id matches one of plugins
Try / catch
if err := volumeRegister(); err != nil && strings.Contains(err.Error(), "no CSI plugin named") { redeploy plugin job } Prevention
- Run nomad plugin status to confirm plugin_id before registering volumes
- Deploy the CSI plugin job first, then volumes
- Copy plugin IDs from plugin list output instead of typing them
When it happens
Trigger: Registering or creating a CSI volume whose PluginID does not match any plugin registered by a running Nomad client, or the plugin was deregistered after the volume spec was written.
Common situations: Typo in the plugin_id in the volume spec; CSI plugin workload not yet running so it never registered; plugin node drained or client offline causing plugin deregistration.
Related errors
- CSI.ControllerValidateVolume: PluginID is required
- controller validate volume: %v
- missing secret ID
- CSI Plugin loaded incorrectly
- CSI.ControllerValidateVolume: VolumeID is required
AI-assisted analysis of hashicorp/nomad@482b49bf1a (2026-09-04).
Data as JSON: /api/errors/130305a6497842b4.
Report an issue: GitHub.