portainer/portainer · error
unable to get storage class %s. Error: %w
Error message
unable to get storage class %s. Error: %w
What it means
Error "unable to get storage class %s. Error: %w" thrown in portainer/portainer.
Source
Thrown at api/kubernetes/cli/persistent_volume_claims.go:119
return fmt.Errorf("unable to delete persistent volume claim %s/%s. Error: %w", req.Namespace, req.Name, err)
}
}
return nil
}
// ResizePersistentVolumeClaim resizes a PVC to the given new size.
// The storage class must have AllowVolumeExpansion set to true.
func (kcl *KubeClient) ResizePersistentVolumeClaim(namespace, name, newSize string) error {
pvc, err := kcl.cli.CoreV1().PersistentVolumeClaims(namespace).Get(context.Background(), name, metav1.GetOptions{})
if err != nil {
return fmt.Errorf("unable to get persistent volume claim %s/%s. Error: %w", namespace, name, err)
}
if pvc.Spec.StorageClassName != nil {
sc, err := kcl.GetStorageClass(*pvc.Spec.StorageClassName)
if err != nil {
return fmt.Errorf("unable to get storage class %s. Error: %w", *pvc.Spec.StorageClassName, err)
}
if sc.AllowVolumeExpansion == nil || !*sc.AllowVolumeExpansion {
return errors.New("storage class " + sc.Name + " does not allow volume expansion")
}
}
_, err = resource.ParseQuantity(newSize)
if err != nil {
return fmt.Errorf("invalid size format %q. Error: %w", newSize, err)
}
patch := fmt.Sprintf(`{"spec":{"resources":{"requests":{"storage":"%s"}}}}`, newSize)
_, err = kcl.cli.CoreV1().PersistentVolumeClaims(namespace).Patch(
context.Background(),
name,
types.MergePatchType,View on GitHub (pinned to 17e74456ff)
When it happens
Trigger: Thrown at api/kubernetes/cli/persistent_volume_claims.go:119 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of portainer/portainer@17e74456ff (2026-08-26).
Data as JSON: /api/errors/4a95aa1e0835aec8.
Report an issue: GitHub.