Add deployment preflight and fix helium Syncthing root
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
import importlib.util
|
||||
import sys
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
_SCRIPT = Path(__file__).parents[1] / "scripts" / "preflight-deployment.py"
|
||||
_SPEC = importlib.util.spec_from_file_location("deployment_preflight", _SCRIPT)
|
||||
assert _SPEC is not None and _SPEC.loader is not None
|
||||
preflight = importlib.util.module_from_spec(_SPEC)
|
||||
sys.modules[_SPEC.name] = preflight
|
||||
_SPEC.loader.exec_module(preflight)
|
||||
|
||||
|
||||
class DeploymentPreflightTests(unittest.TestCase):
|
||||
def test_maps_nested_container_path_to_host_source(self):
|
||||
container = {
|
||||
"Mounts": [
|
||||
{"Type": "bind", "Source": "/srv/data", "Destination": "/data"},
|
||||
{"Type": "bind", "Source": "/srv/sync", "Destination": "/data/Sync"},
|
||||
]
|
||||
}
|
||||
mapping = preflight.map_path(container, "/data/Sync/routes/route-1")
|
||||
self.assertEqual(mapping.source, Path("/srv/sync/routes/route-1"))
|
||||
self.assertEqual(str(mapping.destination), "/data/Sync")
|
||||
|
||||
def test_rejects_api_and_client_roots_from_different_host_paths(self):
|
||||
with self.assertRaisesRegex(preflight.CheckFailure, "host paths differ"):
|
||||
preflight.require_same_path(
|
||||
"Syncthing api_root/local_root",
|
||||
preflight.Mapping(Path("/srv/syncthing-config/routes"), Path("/var/syncthing")),
|
||||
preflight.Mapping(Path("/srv/sync/routes"), Path("/data/storage")),
|
||||
)
|
||||
|
||||
def test_rejects_unmounted_container_path(self):
|
||||
with self.assertRaisesRegex(preflight.CheckFailure, "not backed"):
|
||||
preflight.map_path({"Mounts": []}, "/missing")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user