{"record":{"id":"130305a6497842b4","repo":"hashicorp/nomad","slug":"no-csi-plugin-named-s-could-be-found","errorCode":null,"errorMessage":"no CSI plugin named: %s could be found","messagePattern":"no CSI plugin named: (.+?) could be found","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"nomad/csi_endpoint.go","lineNumber":226,"sourceCode":"\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\treply.Volume = vol\n\t\t\treturn v.srv.replySetIndex(csiVolumeTable, &reply.QueryMeta)\n\t\t}}\n\treturn v.srv.blockingRPC(&opts)\n}\n\nfunc (v *CSIVolume) pluginValidateVolume(vol *structs.CSIVolume) (*structs.CSIPlugin, error) {\n\tstate := v.srv.fsm.State()\n\n\tplugin, err := state.CSIPluginByID(nil, vol.PluginID)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif plugin == nil {\n\t\treturn nil, fmt.Errorf(\"no CSI plugin named: %s could be found\", vol.PluginID)\n\t}\n\n\tif plugin.ControllerRequired && plugin.ControllersHealthy < 1 {\n\t\treturn nil, fmt.Errorf(\"no healthy controllers for CSI plugin: %s\", vol.PluginID)\n\t}\n\n\tvol.Provider = plugin.Provider\n\tvol.ProviderVersion = plugin.Version\n\n\treturn plugin, nil\n}\n\nfunc (v *CSIVolume) controllerValidateVolume(req *structs.CSIVolumeRegisterRequest, vol *structs.CSIVolume, plugin *structs.CSIPlugin) error {\n\n\tif !plugin.ControllerRequired {\n\t\t// The plugin does not require a controller, so for now we won't do any\n\t\t// further validation of the volume.\n\t\treturn nil","sourceCodeStart":208,"sourceCodeEnd":244,"githubUrl":"https://github.com/hashicorp/nomad/blob/482b49bf1aec006f089bcfc7e632d8f6ac303e5e/nomad/csi_endpoint.go#L208-L244","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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"],"exampleFix":"// before\nplugin_id = \"csi-plugin\"  // typo\n// after\nplugin_id = \"aws-ebs-csi\" // matches nomad plugin status output","handlingStrategy":"validation","validationCode":"// before registering, verify plugin exists\nplugins, _ := client.CSIPlugins().List(nil)\n// ensure spec plugin_id matches one of plugins","typeGuard":null,"tryCatchPattern":"if err := volumeRegister(); err != nil && strings.Contains(err.Error(), \"no CSI plugin named\") { redeploy plugin job }","preventionTips":["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"],"tags":["csi","plugin","validation"],"backgroundTag":"csi-plugin-not-found","analyzedSha":"482b49bf1aec006f089bcfc7e632d8f6ac303e5e","analyzedAt":"2026-09-04T07:54:14.808Z","contentChangedAt":"2026-09-04T07:54:14.808Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}