ovs-vtep: Use shlex module to split args.
authorGurucharan Shetty <gshetty@nicira.com>
Wed, 30 Jul 2014 17:31:26 +0000 (10:31 -0700)
committerGurucharan Shetty <gshetty@nicira.com>
Thu, 25 Sep 2014 23:50:45 +0000 (16:50 -0700)
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>
vtep/ovs-vtep

index c70ed64..0b855bb 100755 (executable)
@@ -18,6 +18,7 @@
 
 import argparse
 import re
+import shlex
 import subprocess
 import sys
 import time
@@ -55,13 +56,13 @@ def call_prog(prog, args_list):
     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):