[ovs-dev] [PATCH 3/4] ovs-vtep: Use shlex module to split args.

Gurucharan Shetty shettyg at nicira.com
Fri Aug 1 17:40:37 UTC 2014

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 at nicira.com>
 vtep/ovs-vtep |    7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/vtep/ovs-vtep b/vtep/ovs-vtep
index a44fbde..14f2e20 100755
--- a/vtep/ovs-vtep
+++ b/vtep/ovs-vtep
@@ -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):

More information about the dev mailing list