restore-estimate.ts 775 B

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