Skip to content

Commit 7ca3e85

Browse files
committed
scripts/libvirt_pool.sh: fix regression with pool heuristics
Heavy users of kdevops will often want to dedicate an entire partition so that it can be used for all guests of *all users*. This also allows us to share *all guestfs images* so we only have to download a guestfs image once for custom images like Debian Trixie. For instance: sudo virsh pool-dumpxml xfs1 | grep path <path>/xfs1</path> If we go back in history we can see this used to work, let's try with the first repo's tree's history, we *used* to get: mcgrof@big-box /xfs1/mcgrof/debug-pools/kdevops (git::main)$ make mrproper; make defconfig-kernel-hacking > /dev/null 2>&1 grep CONFIG_KDEVOPS_STORAGE_POOL_PATH .config CONFIG_KDEVOPS_STORAGE_POOL_PATH="/xfs1" Now we get: mcgrof@big-box /xfs1/mcgrof/debug-pools/kdevops (git::main)$ make mrproper; make defconfig-kernel-hacking > /dev/null 2>&1 grep CONFIG_KDEVOPS_STORAGE_POOL_PATH .config CONFIG_KDEVOPS_STORAGE_POOL_PATH="/xfs1/mcgrof/debug-pools/kdevops/default So now we lie, because the heuristic to see if we can use sudo for virsh pool stuff is broken, so we try to create a new pool every single time the user uses kdevops. I bisected this down to commit bc731be ("scripts: Adjust heuristic to see if current user can sudo"), so the pool heuristic has been broken since January 13th. That also means we were forcing down each new CI in place the download of a new debian trixie image. There's a few issues with this new heuristic: 1) CAN_SUDO=get_can_sudo Well that's just a string, not an execution so we never even ran this new routine. 2) It's a good thing we never ran it anyway because the routine calls exit 3) The sudo heuristic was broken as it assumed the -eq would capture previous routine's exit call but, $(foo) it actually just captures the output. So it could never have worked. Fix the heuristics. Even though a first reaction may be to see if we can move away from these shell heuristics with ansible, these helpers are used by scripts we use to set default variables inside Kconfig strings and bools so ansible can't be used unless we're comfortable with the idea of calling ansible as part of a local playbook to do some local work. Maybe that is not crazy idea after all. Cc: Swarna Prabhu <[email protected]> Cc: Joel Granados <[email protected]> Signed-off-by: Luis Chamberlain <[email protected]>
1 parent 53d1d15 commit 7ca3e85

File tree

1 file changed

+2
-4
lines changed

1 file changed

+2
-4
lines changed

scripts/libvirt_pool.sh

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,10 @@ get_can_sudo()
1313
# 2. With sudo it has two messages: one for paswordless sudo and
1414
# one passwordfull sudo. But we ignore the distinction as both
1515
# of these mean that can_sudo is "y".
16-
if [[ $(sudo -nv 2>&1 | grep 'may not' > /dev/null) -eq 0 ]]; then
16+
if sudo -nv 2>&1 | grep -q 'may not'; then
1717
echo "n"
18-
exit
1918
fi
2019
echo "y"
21-
exit
2220
}
2321

2422
get_pool_vars()
@@ -30,7 +28,7 @@ get_pool_vars()
3028
fi
3129
fi
3230

33-
CAN_SUDO=get_can_sudo
31+
CAN_SUDO="$(get_can_sudo)"
3432

3533
if [[ "$USES_QEMU_USER_SESSION" != "y" ]]; then
3634
REQ_SUDO="sudo"

0 commit comments

Comments
 (0)