restore-estimate.ts22 lines · main
| 1 | import { FALLBACK_LONG_RUNNING_STATE_THRESHOLD_MINUTES } from './project-transition-state' |
| 2 | |
| 3 | const RESTORE_TIME_SLOPE = 720 / 21000 |
| 4 | const RESTORE_TIME_BASE_MINUTES = 3 |
| 5 | const LONG_RUNNING_RESTORE_THRESHOLD_MULTIPLIER = 1.5 |
| 6 | |
| 7 | export const estimateRestoreTimeFromSizeGb = (sizeGb: number) => { |
| 8 | return RESTORE_TIME_SLOPE * sizeGb + RESTORE_TIME_BASE_MINUTES |
| 9 | } |
| 10 | |
| 11 | export 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 | } |