restore-estimate.ts22 lines · main
1import { FALLBACK_LONG_RUNNING_STATE_THRESHOLD_MINUTES } from './project-transition-state'
2
3const RESTORE_TIME_SLOPE = 720 / 21000
4const RESTORE_TIME_BASE_MINUTES = 3
5const LONG_RUNNING_RESTORE_THRESHOLD_MULTIPLIER = 1.5
6
7export const estimateRestoreTimeFromSizeGb = (sizeGb: number) => {
8 return RESTORE_TIME_SLOPE * sizeGb + RESTORE_TIME_BASE_MINUTES
9}
10
11export const getRestoreLongRunningThresholdMinutes = (volumeSizeGb?: number | null) => {
12 if (typeof volumeSizeGb !== 'number' || !Number.isFinite(volumeSizeGb)) {
13 return FALLBACK_LONG_RUNNING_STATE_THRESHOLD_MINUTES
14 }
15
16 return Math.max(
17 FALLBACK_LONG_RUNNING_STATE_THRESHOLD_MINUTES,
18 Math.ceil(
19 estimateRestoreTimeFromSizeGb(volumeSizeGb) * LONG_RUNNING_RESTORE_THRESHOLD_MULTIPLIER
20 )
21 )
22}