in pkg/csi/controller.go [226:253]
func (r *reconciler) updatePdVolumeType(ctx context.Context, node string, info *volumeTypeInfo) error {
if info.VolumeType != pdVolumeType {
return nil
}
if info.Size.IsZero() {
return fmt.Errorf("no size given for PD cache on node %s", node)
}
var pvc corev1.PersistentVolumeClaim
needCreate := false
err := r.Get(ctx, types.NamespacedName{Namespace: r.namespace, Name: node}, &pvc)
if apierrors.IsNotFound(err) {
needCreate = true
pvc.SetName(node)
pvc.SetNamespace(r.namespace)
pvc.Spec.StorageClassName = ptr.To(r.pdStorageClass)
pvc.Spec.VolumeMode = ptr.To(corev1.PersistentVolumeBlock)
pvc.Spec.AccessModes = []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce}
pvc.Spec.Resources.Requests = map[corev1.ResourceName]resource.Quantity{
corev1.ResourceStorage: info.Size,
}
} else if err == nil && pvc.Status.Phase == corev1.ClaimBound {
info.Disk = pvc.Spec.VolumeName
}
return r.updatePVCForLifecycle(ctx, &pvc, needCreate)
}