[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-users] reboot driver domains with auto-reconnect?
reply-to-self update. ;-) On Mon, Apr 16, 2018 at 03:58:59PM +0000, Jason Cooper wrote: > My current dilemma is that I would like to be able to reboot these mini > VMs for kernel updates, etc. When this happens, I'd like the previously > connected VMs to reconnect to the new instance. Here's the script, to be executed on Dom0, that attempts to do the reboot of a driver domain, and then re-attach the previously attached vifs. I'm only concerned about vifs for now. vbds will come later. The reboot portion sucks, I despise random sleeps. I'd like to trigger on a xenbus variable to indicate the VM is ready to receive attach events. Also, the client VM to the driver-domain needs hotplug enabled, which makes sense. Occassionally, I'll get a stale vif in the client VM. Usually this is when I was debugging something else, and just needed to reboot the driver-domain. I'm hoping those won't occur once I nail down a proper reboot sequence. I'll see if I can catch the 'timeout waiting for vif to detach' error message, which maybe related. ------------------>8----------------------------------------------- #!/bin/bash if [ $# -ne 1 ]; then echo >&2 "Usage: ${0##*/} domain" exit 1 fi DOM="$1" # get the domain id DOMID="`xl domid $DOM`" [[ "$DOMID" =~ (^[0-9]+$) ]] || exit 1 tmp="`mktemp`" # loop through frontends while read frontend <&4; do while read vif <&5; do if [ "x$vif" = "x" ]; then # stale frontend echo >&2 "WARN: stale frontend ($frontend), removing" xenstore-rm /local/domain/$DOMID/backend/vif/$frontend continue fi # store info for afterwards front="`xl domname $frontend`" bridge="`xenstore-read /local/domain/$DOMID/backend/vif/$frontend/$vif/bridge`" echo "$front bridge=$bridge backend=$DOM" >>"$tmp" # remove the vif xl -f network-detach $front $vif done 5< <(xenstore-list /local/domain/$DOMID/backend/vif/$frontend) done 4< <(xenstore-list /local/domain/$DOMID/backend/vif) # reboot the domain xl destroy $DOM || exit 2 sleep 2 xl create -c $DOM || exit 3 if ! [ -e "$tmp" ]; then exit 0 fi # reattach everything while read ln <&4; do echo >&2 "re-attach [$ln]" xl network-attach $ln || exit 4 done 4< <(cat $tmp) rm -f $tmp ------------------>8----------------------------------------------- thx, Jason. _______________________________________________ Xen-users mailing list Xen-users@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-users
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |