1212from aind_settings_utils .aws import SecretsManagerBaseSettings
1313from pydantic import Field , SecretStr
1414from pydantic_settings import SettingsConfigDict
15+ from tenacity import (
16+ before_sleep_log ,
17+ retry ,
18+ stop_after_attempt ,
19+ wait_exponential_jitter ,
20+ )
1521from vastpy import VASTClient
1622
1723from aind_vast_utils .models import (
2127 QuotaTableRow ,
2228)
2329
24- logging .basicConfig (level = logging .INFO )
30+ logger = logging .getLogger (__name__ )
31+ logger .setLevel (logging .INFO )
2532
2633
2734class JobSettings (
@@ -72,6 +79,12 @@ def __init__(self, job_settings: JobSettings):
7279 address = job_settings .address ,
7380 )
7481
82+ @retry (
83+ wait = wait_exponential_jitter (initial = 1 , max = 60 , exp_base = 2 , jitter = 1 ),
84+ stop = stop_after_attempt (5 ),
85+ reraise = True ,
86+ before_sleep = before_sleep_log (logger , logging .WARNING ), # type: ignore
87+ )
7588 def _get_capacity (self , path : str , sort_key : str = "logical" ) -> Capacity :
7689 """Get capacity info for VAST cluster."""
7790
@@ -81,6 +94,12 @@ def _get_capacity(self, path: str, sort_key: str = "logical") -> Capacity:
8194 )
8295 return Capacity .model_validate (response )
8396
97+ @retry (
98+ wait = wait_exponential_jitter (initial = 1 , max = 60 , exp_base = 2 , jitter = 1 ),
99+ stop = stop_after_attempt (5 ),
100+ reraise = True ,
101+ before_sleep = before_sleep_log (logger , logging .WARNING ), # type: ignore
102+ )
84103 def _get_quota (self , path : str ) -> Quota :
85104 """Get quota info for VAST cluster."""
86105
0 commit comments