From: Duffie Cooley <[email protected]> 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 <[email protected]> Signed-off-by: Duffie Cooley <[email protected]> --- 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 _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
