string.split() function splits a quoted string if there is a whitespace
inside the quote.
ex: The following code snippet will output ['printing', '"No', 'Diagnostic"']
args = 'printing "No Diagnostic"'
print args.split()
The above is a problem if we run the following command through vtep_ctl().
vtep-ctl set tunnel $uuid bfd_status:diagnostic="No Diagnostic"
The workaround is to use the split() function from shlex module.
Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
Acked-by: Ariel Tubaltsev <atubaltsev@vmware.com>
Acked-by: Justin Pettit <jpettit@nicira.com>
import argparse
import re
+import shlex
import subprocess
import sys
import time
return output
def ovs_vsctl(args):
- return call_prog("ovs-vsctl", args.split())
+ return call_prog("ovs-vsctl", shlex.split(args))
def ovs_ofctl(args):
- return call_prog("ovs-ofctl", args.split())
+ return call_prog("ovs-ofctl", shlex.split(args))
def vtep_ctl(args):
- return call_prog("vtep-ctl", args.split())
+ return call_prog("vtep-ctl", shlex.split(args))
def unixctl_exit(conn, unused_argv, unused_aux):