Fix ZFS pool detection: bind-mount host zpool binary and libs

This commit is contained in:
2026-03-07 03:46:56 +00:00
parent 861f9279c4
commit 4c033981c1
2 changed files with 9 additions and 7 deletions

View File

@@ -10,12 +10,11 @@ services:
- /dev:/dev
- /sys:/sys:ro
- /run/udev:/run/udev:ro
- /usr/sbin/zpool:/usr/sbin/zpool:ro
- /usr/sbin/zfs:/usr/sbin/zfs:ro
- /usr/lib/libzfs.so.6:/usr/lib/libzfs.so.6:ro
- /usr/lib/libnvpair.so.3:/usr/lib/libnvpair.so.3:ro
- /usr/lib/libuutil.so.3:/usr/lib/libuutil.so.3:ro
- /usr/lib/libzfs_core.so.3:/usr/lib/libzfs_core.so.3:ro
- /usr/sbin/zpool:/host/zpool:ro
- /usr/sbin/zfs:/host/zfs:ro
- /lib/x86_64-linux-gnu:/host/lib:ro
environment:
- TZ=America/Denver
- UVICORN_LOG_LEVEL=info
- ZPOOL_BIN=/host/zpool
- LD_LIBRARY_PATH=/host/lib

View File

@@ -4,6 +4,9 @@ import logging
logger = logging.getLogger(__name__)
# Allow overriding the zpool binary path via env (for bind-mounted host tools)
ZPOOL_BIN = os.environ.get("ZPOOL_BIN", "zpool")
async def get_zfs_pool_map() -> dict[str, str]:
"""Return a dict mapping device names to ZFS pool names.
@@ -13,7 +16,7 @@ async def get_zfs_pool_map() -> dict[str, str]:
pool_map = {}
try:
proc = await asyncio.create_subprocess_exec(
"zpool", "status", "-P",
ZPOOL_BIN, "status", "-P",
stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.PIPE,
)