[ovs-dev] [PATCH v3] ovs-lib: Return the exit status of ovs-ctl in ovs_ctl()

Gurucharan Shetty shettyg at nicira.com
Wed Oct 2 16:32:25 UTC 2013


From: Duffie Cooley <dcooley at nicira.com>

commit 46528f78e5c(debian, rhel, xenserver: Ability to collect ovs-ctl logs)
made changes in the startup scripts such that the o/p of ovs-ctl is logged
into ovs-ctl.log. But it had an unintended consequence that the exit status
of ovs-ctl was no longer returned. We would always return success(the exit
status of tee).

With this commit, we return the exit status of ovs-ctl instead of tee.
Code referenced from: (line wrapped).
http://unix.stackexchange.com/questions/14270/\
get-exit-status-of-process-thats-piped-to-another/70675#70675)

Signed-off-by: Gurucharan Shetty <gshetty at nicira.com>
Signed-off-by: Duffie Cooley <dcooley at nicira.com>
---
 utilities/ovs-lib.in |   13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/utilities/ovs-lib.in b/utilities/ovs-lib.in
index 1684ddc..0b6f42f 100644
--- a/utilities/ovs-lib.in
+++ b/utilities/ovs-lib.in
@@ -41,6 +41,11 @@ ovs_ctl_log () {
     echo "$@" >> "${logdir}/ovs-ctl.log"
 }
 
+stdintoexitstatus () {
+    read exitstatus
+    return $exitstatus
+}
+
 ovs_ctl () {
     case "$@" in
         *"=strace"*)
@@ -50,8 +55,14 @@ ovs_ctl () {
             "${datadir}/scripts/ovs-ctl" "$@"
         ;;
         *)
+            # Tee ovs-ctl output to ovs-ctl.log and yield ovs-ctl's exit
+            # status. See (line wrapped)
+            # http://unix.stackexchange.com/questions/14270/\
+            # get-exit-status-of-process-thats-piped-to-another/70675#70675
             echo "`date -u`:$@" >> "${logdir}/ovs-ctl.log"
-            "${datadir}/scripts/ovs-ctl" "$@" 2>&1 | tee -a "${logdir}/ovs-ctl.log"
+            ( ( ( ( ("${datadir}/scripts/ovs-ctl" "$@"  2>&1 ; echo $? >&3) \
+            | tee -a "${logdir}/ovs-ctl.log") >&4) 3>&1) | stdintoexitstatus) \
+            4>&1
         ;;
     esac
 }
-- 
1.7.9.5




More information about the dev mailing list