From 2c1084b21bf4b1859d3b88980e341d5296463057 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 1 Apr 2011 18:08:53 +0000 Subject: [PATCH] * libvirtd job: wait until libvirtd is accepting connections. svn path=/nixos/trunk/; revision=26663 --- modules/virtualisation/libvirtd.nix | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/modules/virtualisation/libvirtd.nix b/modules/virtualisation/libvirtd.nix index 339d8e1b019..b8cc0cddd6d 100644 --- a/modules/virtualisation/libvirtd.nix +++ b/modules/virtualisation/libvirtd.nix @@ -84,9 +84,20 @@ in exec = "${pkgs.libvirt}/sbin/libvirtd --daemon --verbose"; + # Wait until libvirtd is ready to accept requests. + postStart = + '' + for ((i = 0; i < 60; i++)); do + if ${pkgs.libvirt}/bin/virsh list > /dev/null; then exit 0; fi + sleep 1 + done + exit 1 # !!! seems to be ignored + ''; + daemonType = "daemon"; }; + # !!! Split this into save and restore tasks. jobs.libvirt_guests = { name = "libvirt-guests"; @@ -103,10 +114,12 @@ in preStart = '' mkdir -p /var/lock/subsys -m 755 - ${pkgs.libvirt}/etc/rc.d/init.d/libvirt-guests start + ${pkgs.libvirt}/etc/rc.d/init.d/libvirt-guests start || true ''; postStop = "${pkgs.libvirt}/etc/rc.d/init.d/libvirt-guests stop"; + + respawn = false; }; };