{"record":{"id":"9e300dda51de5ac6","repo":"hashicorp/nomad","slug":"plugin-does-not-support-creating-volumes","errorCode":null,"errorMessage":"plugin does not support creating volumes","messagePattern":"plugin does not support creating volumes","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"nomad/csi_endpoint.go","lineNumber":1182,"sourceCode":"\t\t// Check if override is set and we do not have permissions\n\t\tif args.PolicyOverride {\n\t\t\tif !aclObj.AllowNsOp(vol.Namespace, acl.NamespaceCapabilitySentinelOverride) {\n\t\t\t\treturn structs.ErrPermissionDenied\n\t\t\t}\n\t\t}\n\n\t\tif err = vol.Validate(); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tplugin, err := v.pluginValidateVolume(vol)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif !plugin.ControllerRequired {\n\t\t\treturn fmt.Errorf(\"plugin has no controller\")\n\t\t}\n\t\tif !plugin.HasControllerCapability(structs.CSIControllerSupportsCreateDelete) {\n\t\t\treturn fmt.Errorf(\"plugin does not support creating volumes\")\n\t\t}\n\n\t\t// if the volume already exists, we'll update it instead\n\t\t// current will be nil if it does not exist.\n\t\tcurrent, err := snap.CSIVolumeByID(nil, vol.Namespace, vol.ID)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tvalidatedVols = append(validatedVols,\n\t\t\tvalidated{vol, plugin, current})\n\n\t\twarn, err := v.enforceEnterprisePolicy(snap, vol, current, args.GetIdentity().GetACLToken(), args.PolicyOverride)\n\t\tif warn != nil {\n\t\t\treply.Warnings = warn.Error()\n\t\t}\n\n\t\tif err != nil {","sourceCodeStart":1164,"sourceCodeEnd":1200,"githubUrl":"https://github.com/hashicorp/nomad/blob/482b49bf1aec006f089bcfc7e632d8f6ac303e5e/nomad/csi_endpoint.go#L1164-L1200","documentation":"Fires in CSIVolume.Create: the plugin has a controller but lacks the CREATE_DELETE_VOLUME capability, so it cannot create volumes dynamically; creation is unsupported by this plugin.","triggerScenarios":"Thrown at nomad/csi_endpoint.go:1182 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use a plugin that advertises CREATE_DELETE_VOLUME","Pre-provision the volume in the storage system and register it statically instead"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"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"}