fix(oci): keep installing when an image mountpoint is not a plain directory

- Log and continue when the helper refuses a mountpoint, as the seed capture does
- Nothing is moved in that case, so the image installs as before
This commit is contained in:
MacRimi
2026-10-22 10:52:35 +02:00
parent 00ebb0b2f9
commit 6699a4afbb
3 changed files with 19 additions and 2 deletions
+5 -1
View File
@@ -407,7 +407,11 @@ def attach_mounts(service, temporary):
owner = (100000,100000,0o755)
if mount['type'] == 'managed-volume':
from oci_image_mountpoints import normalize
normalize(root, [mount['container_path']])
try:
normalize(root, [mount['container_path']])
except (OSError, ValueError) as error:
# Nothing was moved; the image keeps its files as before.
print(f'Image defaults left in place for {mount["container_path"]}: {error}', file=sys.stderr)
finally:
run('pct','unmount',vmid)
if mount['type']=='managed-volume':
+4 -1
View File
@@ -524,7 +524,10 @@ capture_volume_seeds() {
if (( failed == 0 )); then
# Data seeds were captured first; prepare the raw image even when the
# transaction will reuse a persistent disk and therefore skipped seeding.
oci_quiet python3 "$SCRIPT_DIR/oci_image_mountpoints.py" "$rootfs" "$DEPLOYMENT_FILE" || failed=1
# The helper changes nothing when it refuses a path (a link, another
# filesystem); the image then installs as it did before.
oci_quiet python3 "$SCRIPT_DIR/oci_image_mountpoints.py" "$rootfs" "$DEPLOYMENT_FILE" \
|| oci_log "Image defaults left in place: a volume mountpoint of the image is not a plain directory"
fi
if (( mounted == 1 )); then
oci_quiet pct unmount "$VMID" || failed=1