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 <gshe...@nicira.com>
Co-authored-by: Duffie Cooley <dcoo...@nicira.com>
---
 utilities/ovs-lib.in |    9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/utilities/ovs-lib.in b/utilities/ovs-lib.in
index 1684ddc..7e339b3 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"*)
@@ -51,7 +56,9 @@ ovs_ctl () {
         ;;
         *)
             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

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to