From 2e54686f1b710b0177fc924ff3eb421cc4cf7f45 Mon Sep 17 00:00:00 2001 From: Hemant Kumar Date: Mon, 21 Feb 2022 16:37:29 -0500 Subject: [PATCH] Add a function to record volume size in dsow --- .../cache/desired_state_of_world.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/pkg/kubelet/volumemanager/cache/desired_state_of_world.go b/pkg/kubelet/volumemanager/cache/desired_state_of_world.go index a52f7d28ea0..1dfdf920774 100644 --- a/pkg/kubelet/volumemanager/cache/desired_state_of_world.go +++ b/pkg/kubelet/volumemanager/cache/desired_state_of_world.go @@ -124,6 +124,11 @@ type DesiredStateOfWorld interface { // MarkVolumeAttachability updates the volume's attachability for a given volume MarkVolumeAttachability(volumeName v1.UniqueVolumeName, attachable bool) + + // UpdatePersistentVolumeSize updates persistentVolumeSize in desired state of the world + // so as it can be compared against actual size and volume expansion performed + // if necessary + UpdatePersistentVolumeSize(volumeName v1.UniqueVolumeName, size resource.Quantity) } // VolumeToMount represents a volume that is attached to this node and needs to @@ -359,6 +364,19 @@ func (dsw *desiredStateOfWorld) DeletePodFromVolume( } } +// UpdatePersistentVolumeSize updates last known PV size. This is used for volume expansion and +// should be only used for persistent volumes. +func (dsw *desiredStateOfWorld) UpdatePersistentVolumeSize(volumeName v1.UniqueVolumeName, size resource.Quantity) { + dsw.Lock() + defer dsw.Unlock() + + vol, volExists := dsw.volumesToMount[volumeName] + if volExists { + vol.persistentVolumeSize = size + dsw.volumesToMount[volumeName] = vol + } +} + func (dsw *desiredStateOfWorld) VolumeExists( volumeName v1.UniqueVolumeName) bool { dsw.RLock()