type volumeStatCalculator … type PodVolumeStats … // newVolumeStatCalculator creates a new VolumeStatCalculator func newVolumeStatCalculator(statsProvider Provider, jitterPeriod time.Duration, pod *v1.Pod, eventRecorder record.EventRecorder) *volumeStatCalculator { … } // StartOnce starts pod volume calc that will occur periodically in the background until s.StopOnce is called func (s *volumeStatCalculator) StartOnce() *volumeStatCalculator { … } // StopOnce stops background pod volume calculation. Will not stop a currently executing calculations until // they complete their current iteration. func (s *volumeStatCalculator) StopOnce() *volumeStatCalculator { … } // getLatest returns the most recent PodVolumeStats from the cache func (s *volumeStatCalculator) GetLatest() (PodVolumeStats, bool) { … } // calcAndStoreStats calculates PodVolumeStats for a given pod and writes the result to the s.latest cache. // If the pod references PVCs, the prometheus metrics for those are updated with the result. func (s *volumeStatCalculator) calcAndStoreStats() { … } // parsePodVolumeStats converts (internal) volume.Metrics to (external) stats.VolumeStats structures func (s *volumeStatCalculator) parsePodVolumeStats(podName string, pvcRef *stats.PVCReference, metric *volume.Metrics, volSpec v1.Volume) stats.VolumeStats { … }