Skip to content

Commit 5c9327a

Browse files
authored
Merge pull request #213 from AllenNeuralDynamics:feat-resource-monitor-from-rig
Add constraint to check available storage from rig schema
2 parents dfa2668 + 5040bf2 commit 5c9327a

File tree

2 files changed

+36
-1
lines changed

2 files changed

+36
-1
lines changed
Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
from ._base import ResourceMonitor
2-
from ._constraints import Constraint, available_storage_constraint_factory, remote_dir_exists_constraint_factory
2+
from ._constraints import (
3+
Constraint,
4+
available_storage_constraint_factory,
5+
available_storage_constraint_factory_from_rig,
6+
remote_dir_exists_constraint_factory,
7+
)
38

49
__all__ = [
510
"ResourceMonitor",
611
"Constraint",
712
"available_storage_constraint_factory",
813
"remote_dir_exists_constraint_factory",
14+
"available_storage_constraint_factory_from_rig",
915
]

src/clabe/resource_monitor/_constraints.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,39 @@
11
import os
22
import shutil
33
from pathlib import Path
4+
from typing import TYPE_CHECKING
5+
6+
if TYPE_CHECKING:
7+
from aind_behavior_services import AindBehaviorRigModel
48

59
from ._base import Constraint
610

711

12+
def available_storage_constraint_factory_from_rig(rig: "AindBehaviorRigModel", min_bytes: float = 2e11) -> Constraint:
13+
"""
14+
Creates a constraint to check if the rig's data directory has sufficient available storage.
15+
16+
This factory function creates a constraint that validates whether the data directory
17+
specified in the rig model has enough free space to meet the minimum requirements.
18+
19+
Args:
20+
rig: The rig model containing the data directory path
21+
min_bytes: Minimum required free space in bytes. Defaults to 200GB
22+
Returns:
23+
Constraint: A constraint object for available storage validation
24+
Example:
25+
```python
26+
from aind_behavior_services import AindBehaviorRigModel
27+
from clabe.resource_monitor import available_storage_constraint_factory_from_rig
28+
rig = AindBehaviorRigModel(rig_name="example_rig", version="1.0", data_directory="D:/data")
29+
storage_constraint = available_storage_constraint_factory_from_rig(rig, min_bytes=5e11) # 500GB
30+
monitor = ResourceMonitor()
31+
monitor.add_constraint(storage_constraint)
32+
```
33+
"""
34+
return available_storage_constraint_factory(drive=rig.data_directory, min_bytes=min_bytes)
35+
36+
837
def available_storage_constraint_factory(drive: os.PathLike = Path(r"C:\\"), min_bytes: float = 2e11) -> Constraint:
938
"""
1039
Creates a constraint to check if a drive has sufficient available storage.

0 commit comments

Comments
 (0)