From nobody Tue Apr 30 03:54:42 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) client-ip=205.139.110.61; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=canonical.com ARC-Seal: i=1; a=rsa-sha256; t=1588240836; cv=none; d=zohomail.com; s=zohoarc; b=fBygVTgk3EpQywFehgkBj/jJ6t9QaMvqHEeGYU05XoX7TKsnUEt14Noz4m75Rt8NKF2CiTO9bS6Xy0JIGkgFpCZ6l/j/XTWygoC8KpZhRmf1UrhEvkUqSHCywLCEoVG10Mcjmruu6DtACU80iCRFsEAd72a+6vleC2engTHDBeg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1588240836; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To; bh=Ad8xXPbE5P7VYPB1hUdmwsroowSkvExBwR4ICW5Fk8Q=; b=crwjlTPpBtC1t4q4FR3hyMqjwanWts3sN13TjtjpweeY1IykLf1t4Y2QgLrYvADDpdRdKgMS9XGa23FCuHFIcmWLJ8qma7vu3xPpcFK1HyqmUp3iWvtaDywUrQdALDCf2PY3tePDHDoJWodCgQukZYQrt7S8lzy2u30btTxcv1I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-2.mimecast.com [205.139.110.61]) by mx.zohomail.com with SMTPS id 1588240836551369.4753409686938; Thu, 30 Apr 2020 03:00:36 -0700 (PDT) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-404-HvVFDWZNP8WzOhMJv87KGw-1; Thu, 30 Apr 2020 06:00:28 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 5F097800D24; Thu, 30 Apr 2020 10:00:23 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 22CED5C1BE; Thu, 30 Apr 2020 10:00:23 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id CB0F64E982; Thu, 30 Apr 2020 10:00:20 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 03UA0Jsx032685 for ; Thu, 30 Apr 2020 06:00:19 -0400 Received: by smtp.corp.redhat.com (Postfix) id 227071000D9A; Thu, 30 Apr 2020 10:00:19 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast01.extmail.prod.ext.rdu2.redhat.com [10.11.55.17]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 1E3C3104949F for ; Thu, 30 Apr 2020 10:00:15 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-2.mimecast.com [207.211.31.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id A669485A5A0 for ; Thu, 30 Apr 2020 10:00:15 +0000 (UTC) Received: from youngberry.canonical.com (youngberry.canonical.com [91.189.89.112]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-447-Vb8UAOEoMbqNCAEvuEshAQ-1; Thu, 30 Apr 2020 06:00:13 -0400 Received: from 2.general.paelzer.uk.vpn ([10.172.196.173] helo=Keschdeichel.fritz.box) by youngberry.canonical.com with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1jU5z5-0001he-I5; Thu, 30 Apr 2020 09:59:59 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1588240831; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=Ad8xXPbE5P7VYPB1hUdmwsroowSkvExBwR4ICW5Fk8Q=; b=fKs+ySYcQWznCzAu7I4l7P5Gls5cwbXTbJO/GvrrWP5tpblIZIgJc3XI0oKeeEo7/jAxtI 3Tm3AgoXfk3TSuUhP78VGg7k2yi1KIiwMItuumqa9JYYPnhDXo3tU81TuKHiIqswacfn+4 j4IzAGUt7C5LX5LenJqQFmMEX0SDOTI= X-MC-Unique: HvVFDWZNP8WzOhMJv87KGw-1 X-MC-Unique: Vb8UAOEoMbqNCAEvuEshAQ-1 From: Christian Ehrhardt To: libvir-list@redhat.com Subject: [PATCH] libvirt-guests.sh: fix log output with new systemd Date: Thu, 30 Apr 2020 11:59:57 +0200 Message-Id: <20200430095957.2940867-1-christian.ehrhardt@canonical.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03UA0Jsx032685 X-loop: libvir-list@redhat.com Cc: Christian Ehrhardt X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" Newer systemd is too smart, it detects the PIDs of the gettext calls and due to that a log lists libvirt-guests.sh with many different PIDs. Furthermore it struggles to collect the output in time, so it can be truncated and overall looks like: libvirt-guests.sh[37986]: Running guests on default URI: libvirt-guests.sh[37995]: Running guests on libvirt-guests.sh[37977]: R Gather the gettext result into a local variable and printing the value from libvirt-guests.sh itself fixes both issues. Fixes: https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/1875708 Signed-off-by: Christian Ehrhardt --- tools/libvirt-guests.sh.in | 74 +++++++++++++++++++++----------------- 1 file changed, 42 insertions(+), 32 deletions(-) diff --git a/tools/libvirt-guests.sh.in b/tools/libvirt-guests.sh.in index 7af24dab3b..324abe3623 100644 --- a/tools/libvirt-guests.sh.in +++ b/tools/libvirt-guests.sh.in @@ -28,6 +28,16 @@ test ! -r "$sysconfdir"/rc.d/init.d/functions || # Make sure this file is recognized as having translations: _("dummy") . "@bindir@"/gettext.sh =20 +# Avoid output being listed under gettext PID and being truncated +unbuffered_gettext () { + msg=3D"$(gettext "$1")" + echo "$msg" +} +unbuffered_eval_gettext () { + msg=3D"$(eval_gettext "$1")" + echo "$msg" +} + export TEXTDOMAIN=3D"@PACKAGE@" TEXTDOMAINDIR=3D"@localedir@" =20 URIS=3Ddefault @@ -91,7 +101,7 @@ test_connect() if run_virsh "$uri" connect 2>/dev/null; then return 0; else - eval_gettext "Can't connect to \$uri. Skipping." + unbuffered_eval_gettext "Can't connect to \$uri. Skipping." return 1 fi } @@ -160,7 +170,7 @@ start() { [ -f "$LISTFILE" ] || { started; return 0; } =20 if [ "x$ON_BOOT" !=3D xstart ]; then - gettext "libvirt-guests is configured not to start any guests on b= oot" + unbuffered_gettext "libvirt-guests is configured not to start any = guests on boot" echo rm -f "$LISTFILE" started @@ -184,19 +194,19 @@ start() { done set +f if ! "$configured"; then - eval_gettext "Ignoring guests on \$uri URI"; echo + unbuffered_eval_gettext "Ignoring guests on \$uri URI"; echo continue fi =20 test_connect "$uri" || continue =20 - eval_gettext "Resuming guests on \$uri URI..."; echo + unbuffered_eval_gettext "Resuming guests on \$uri URI..."; echo for guest in $list; do local name=3D$(guest_name "$uri" "$guest") - eval_gettext "Resuming guest \$name: " + unbuffered_eval_gettext "Resuming guest \$name: " if guest_is_on "$uri" "$guest"; then if "$guest_running"; then - gettext "already active"; echo + unbuffered_gettext "already active"; echo else if "$isfirst"; then isfirst=3Dfalse @@ -205,7 +215,7 @@ start() { fi retval run_virsh "$uri" start $bypass "$name" \ >/dev/null && \ - gettext "done"; echo + unbuffered_gettext "done"; echo if "$sync_time"; then run_virsh "$uri" domtime --sync "$name" >/dev/null fi @@ -226,7 +236,7 @@ suspend_guest() local uri=3D$1 local guest=3D$2 local name=3D$(guest_name "$uri" "$guest") - local label=3D$(eval_gettext "Suspending \$name: ") + local label=3D$(unbuffered_eval_gettext "Suspending \$name: ") local bypass=3D local slept=3D0 =20 @@ -249,7 +259,7 @@ suspend_guest() fi fi done - retval wait "$virsh_pid" && printf '%s%s\n' "$label" "$(gettext "done"= )" + retval wait "$virsh_pid" && printf '%s%s\n' "$label" "$(unbuffered_get= text "done")" } =20 # shutdown_guest URI GUEST @@ -265,16 +275,16 @@ shutdown_guest() local format=3D local slept=3D =20 - eval_gettext "Starting shutdown on guest: \$name" + unbuffered_eval_gettext "Starting shutdown on guest: \$name" echo retval run_virsh "$uri" shutdown "$guest" >/dev/null || return =20 if [ $timeout -gt 0 ]; then check_timeout=3Dtrue - format=3D$(eval_gettext "Waiting for guest %s to shut down, %d sec= onds left\n") + format=3D$(unbuffered_eval_gettext "Waiting for guest %s to shut d= own, %d seconds left\n") else slept=3D0 - format=3D$(eval_gettext "Waiting for guest %s to shut down\n") + format=3D$(unbuffered_eval_gettext "Waiting for guest %s to shut d= own\n") fi while ! $check_timeout || [ "$timeout" -gt 0 ]; do sleep 1 @@ -296,9 +306,9 @@ shutdown_guest() =20 if guest_is_on "$uri" "$guest"; then if "$guest_running"; then - eval_gettext "Shutdown of guest \$name failed to complete in t= ime." + unbuffered_eval_gettext "Shutdown of guest \$name failed to co= mplete in time." else - eval_gettext "Shutdown of guest \$name complete." + unbuffered_eval_gettext "Shutdown of guest \$name complete." fi echo fi @@ -313,7 +323,7 @@ shutdown_guest_async() local guest=3D$2 local name=3D$(guest_name "$uri" "$guest") =20 - eval_gettext "Starting shutdown on guest: \$name" + unbuffered_eval_gettext "Starting shutdown on guest: \$name" echo retval run_virsh "$uri" shutdown "$guest" > /dev/null } @@ -339,7 +349,7 @@ check_guests_shutdown() guests_shutting_down=3D for guest in $guests_to_check; do if ! guest_is_on "$uri" "$guest" >/dev/null 2>&1; then - eval_gettext "Failed to determine state of guest: \$guest. Not= tracking it anymore." + unbuffered_eval_gettext "Failed to determine state of guest: \= $guest. Not tracking it anymore." echo continue fi @@ -366,7 +376,7 @@ print_guests_shutdown() =20 local name=3D$(guest_name "$uri" "$guest") if [ -n "$name" ]; then - eval_gettext "Shutdown of guest \$name complete." + unbuffered_eval_gettext "Shutdown of guest \$name complete." echo fi done @@ -386,10 +396,10 @@ shutdown_guests_parallel() =20 if [ $timeout -gt 0 ]; then check_timeout=3Dtrue - format=3D$(eval_gettext "Waiting for %d guests to shut down, %d se= conds left\n") + format=3D$(unbuffered_eval_gettext "Waiting for %d guests to shut = down, %d seconds left\n") else slept=3D0 - format=3D$(eval_gettext "Waiting for %d guests to shut down\n") + format=3D$(unbuffered_eval_gettext "Waiting for %d guests to shut = down\n") fi while [ -n "$on_shutdown" ] || [ -n "$guests" ]; do while [ -n "$guests" ] && @@ -417,7 +427,7 @@ shutdown_guests_parallel() fi timeout=3D$(($timeout - 1)) if [ $timeout -le 0 ]; then - eval_gettext "Timeout expired while shutting down domains"= ; echo + unbuffered_eval_gettext "Timeout expired while shutting do= wn domains"; echo RETVAL=3D1 return fi @@ -447,7 +457,7 @@ stop() { if [ "/x$ON_SHUTDOWN" =3D xshutdown ]; then suspending=3Dfalse if [ $SHUTDOWN_TIMEOUT -lt 0 ]; then - gettext "SHUTDOWN_TIMEOUT must be equal or greater than 0" + unbuffered_gettext "SHUTDOWN_TIMEOUT must be equal or greater = than 0" echo RETVAL=3D6 return @@ -461,7 +471,7 @@ stop() { =20 test_connect "$uri" || continue =20 - eval_gettext "Running guests on \$uri URI: " + unbuffered_eval_gettext "Running guests on \$uri URI: " =20 local list=3D$(list_guests "$uri") if [ $? -eq 0 ]; then @@ -473,7 +483,7 @@ stop() { done =20 if "$empty"; then - gettext "no running guests." + unbuffered_gettext "no running guests." fi echo fi @@ -486,7 +496,7 @@ stop() { =20 for uuid in $transient; do if "$empty"; then - eval_gettext "Not suspending transient guests on U= RI: \$uri: " + unbuffered_eval_gettext "Not suspending transient = guests on URI: \$uri: " empty=3Dfalse else printf ", " @@ -497,14 +507,14 @@ stop() { # reload domain list to contain only persistent guests list=3D$(list_guests "$uri" "--persistent") if [ $? -ne 0 ]; then - eval_gettext "Failed to list persistent guests on \$ur= i" + unbuffered_eval_gettext "Failed to list persistent gue= sts on \$uri" echo RETVAL=3D1 set +f return fi else - gettext "Failed to list transient guests" + unbuffered_gettext "Failed to list transient guests" echo RETVAL=3D1 set +f @@ -521,9 +531,9 @@ stop() { if [ -s "$LISTFILE" ]; then while read uri list; do if "$suspending"; then - eval_gettext "Suspending guests on \$uri URI..."; echo + unbuffered_eval_gettext "Suspending guests on \$uri URI...= "; echo else - eval_gettext "Shutting down guests on \$uri URI..."; echo + unbuffered_eval_gettext "Shutting down guests on \$uri URI= ..."; echo fi =20 if [ "$PARALLEL_SHUTDOWN" -gt 1 ] && @@ -566,14 +576,14 @@ gueststatus() { # since there is no external daemon process matching this init script. rh_status() { if [ -f "$LISTFILE" ]; then - gettext "stopped, with saved guests"; echo + unbuffered_gettext "stopped, with saved guests"; echo RETVAL=3D3 else if [ -f "$VAR_SUBSYS_LIBVIRT_GUESTS" ]; then - gettext "started"; echo + unbuffered_gettext "started"; echo RETVAL=3D0 else - gettext "stopped, with no saved guests"; echo + unbuffered_gettext "stopped, with no saved guests"; echo RETVAL=3D3 fi fi @@ -583,7 +593,7 @@ rh_status() { # Display usage string, then exit with VAL (defaults to 2). usage() { local program_name=3D$0 - eval_gettext "Usage: \$program_name {start|stop|status|restart|"\ + unbuffered_eval_gettext "Usage: \$program_name {start|stop|status|rest= art|"\ "condrestart|try-restart|reload|force-reload|gueststatus|shutdown}"; echo exit ${1-2} } --=20 2.26.0