-
Notifications
You must be signed in to change notification settings - Fork 12
Expand file tree
/
Copy path__init__.py
More file actions
39 lines (35 loc) · 1.52 KB
/
__init__.py
File metadata and controls
39 lines (35 loc) · 1.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from expb.configs.scenarios import Scenario, Scenarios
from expb.configs.snapshots import SnapshotBackend
from expb.payloads.executor.services.snapshots.base import SnapshotService
from expb.payloads.executor.services.snapshots.copy import CopySnapshotService
from expb.payloads.executor.services.snapshots.overlay import OverlaySnapshotService
from expb.payloads.executor.services.snapshots.zfs import ZFSSnapshotService
def setup_snapshot_service(
scenarios: Scenarios,
scenario: Scenario,
) -> SnapshotService:
if scenario.snapshot_backend == SnapshotBackend.OVERLAY:
overlay_work_dir = scenarios.paths.work / "work"
overlay_upper_dir = scenarios.paths.work / "upper"
overlay_merged_dir = scenarios.paths.work / "merged"
return OverlaySnapshotService(
overlay_work_dir=overlay_work_dir,
overlay_upper_dir=overlay_upper_dir,
overlay_merged_dir=overlay_merged_dir,
)
elif scenario.snapshot_backend == SnapshotBackend.ZFS:
return ZFSSnapshotService()
elif scenario.snapshot_backend == SnapshotBackend.COPY:
if scenario.snapshot_path is not None:
copy_work_dir = scenario.snapshot_path
else:
copy_work_dir = scenarios.paths.work / "snapshot"
return CopySnapshotService(work_dir=copy_work_dir)
else:
raise ValueError(f"Invalid snapshot backend: {scenario.snapshot_backend}")
__all__ = [
"SnapshotService",
"CopySnapshotService",
"OverlaySnapshotService",
"ZFSSnapshotService",
]