Fix ZFS pool detection: bind-mount host zpool binary and libs
This commit is contained in:
@@ -10,12 +10,11 @@ services:
|
|||||||
- /dev:/dev
|
- /dev:/dev
|
||||||
- /sys:/sys:ro
|
- /sys:/sys:ro
|
||||||
- /run/udev:/run/udev:ro
|
- /run/udev:/run/udev:ro
|
||||||
- /usr/sbin/zpool:/usr/sbin/zpool:ro
|
- /usr/sbin/zpool:/host/zpool:ro
|
||||||
- /usr/sbin/zfs:/usr/sbin/zfs:ro
|
- /usr/sbin/zfs:/host/zfs:ro
|
||||||
- /usr/lib/libzfs.so.6:/usr/lib/libzfs.so.6:ro
|
- /lib/x86_64-linux-gnu:/host/lib: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
|
|
||||||
environment:
|
environment:
|
||||||
- TZ=America/Denver
|
- TZ=America/Denver
|
||||||
- UVICORN_LOG_LEVEL=info
|
- UVICORN_LOG_LEVEL=info
|
||||||
|
- ZPOOL_BIN=/host/zpool
|
||||||
|
- LD_LIBRARY_PATH=/host/lib
|
||||||
|
|||||||
@@ -4,6 +4,9 @@ import logging
|
|||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
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]:
|
async def get_zfs_pool_map() -> dict[str, str]:
|
||||||
"""Return a dict mapping device names to ZFS pool names.
|
"""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 = {}
|
pool_map = {}
|
||||||
try:
|
try:
|
||||||
proc = await asyncio.create_subprocess_exec(
|
proc = await asyncio.create_subprocess_exec(
|
||||||
"zpool", "status", "-P",
|
ZPOOL_BIN, "status", "-P",
|
||||||
stdout=asyncio.subprocess.PIPE,
|
stdout=asyncio.subprocess.PIPE,
|
||||||
stderr=asyncio.subprocess.PIPE,
|
stderr=asyncio.subprocess.PIPE,
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user