machine: introduce io.systemd.Machine.BindMount method (#35066)

This PR introduces io.systemd.Machine.BindMount method which is
alternative to DBus's BindMountMachine.
This commit is contained in:
Daan De Meyer
2025-01-03 13:19:48 +01:00
committed by GitHub
6 changed files with 118 additions and 1 deletions
+2
View File
@@ -401,6 +401,8 @@ varlinkctl call /run/systemd/machine/io.systemd.Machine io.systemd.Machine.Open
timeout 30 bash -c "until test -e /tmp/none-existent-file; do sleep .5; done"
grep -q "BAR" /tmp/none-existent-file
# io.systemd.Machine.BindMount is covered by testcase_check_machinectl_bind() in nspawn tests
# terminate machines
machinectl terminate long-running
# wait for the container being stopped, otherwise acquiring image metadata by io.systemd.MachineImage.List may fail in the below.
+3 -1
View File
@@ -796,7 +796,7 @@ EOF
testcase_machinectl_bind() {
local service_path service_name root container_name ec
local cmd='for i in $(seq 1 20); do if test -f /tmp/marker; then exit 0; fi; sleep .5; done; exit 1;'
local cmd='for i in $(seq 1 20); do if test -f /tmp/marker && test -f /tmp/marker-varlink; then exit 0; fi; sleep .5; done; exit 1;'
root="$(mktemp -d /var/lib/machines/TEST-13-NSPAWN.machinectl-bind.XXX)"
create_dummy_container "$root"
@@ -814,6 +814,8 @@ EOF
systemctl start "$service_name"
touch /tmp/marker
machinectl bind --mkdir "$container_name" /tmp/marker
touch /tmp/marker-varlink
varlinkctl call /run/systemd/machine/io.systemd.Machine io.systemd.Machine.BindMount "{\"name\": \"$container_name\", \"source\": \"/tmp/marker-varlink\", \"mkdir\": true}"
timeout 10 bash -c "while [[ '\$(systemctl show -P SubState $service_name)' == running ]]; do sleep .2; done"
ec="$(systemctl show -P ExecMainStatus "$service_name")"