Catch a unquoted line error. Fixes #6532

This commit is contained in:
Michael DeHaan 2014-03-17 17:14:32 -04:00
parent b8d5ba42f5
commit 94e3350b38
3 changed files with 10 additions and 3 deletions

View file

@ -28,7 +28,6 @@ import collections
import socket
import base64
import sys
import shlex
import pipes
import jinja2
import subprocess

View file

@ -58,6 +58,7 @@ class ActionModule(object):
options = {}
if complex_args:
options.update(complex_args)
options.update(utils.parse_kv(module_args))
src = options.get('src', None)
@ -65,6 +66,7 @@ class ActionModule(object):
delimiter = options.get('delimiter', None)
remote_src = utils.boolean(options.get('remote_src', 'yes'))
if src is None or dest is None:
result = dict(failed=True, msg="src and dest are required")
return ReturnData(conn=conn, comm_ok=False, result=result)

View file

@ -539,8 +539,14 @@ def parse_kv(args):
if args is not None:
# attempting to split a unicode here does bad things
args = args.encode('utf-8')
vargs = [x.decode('utf-8') for x in shlex.split(args, posix=True)]
#vargs = shlex.split(str(args), posix=True)
try:
vargs = shlex.split(args, posix=True)
except ValueError, ve:
if 'no closing quotation' in str(ve).lower():
raise errors.AnsibleError("error parsing argument string, try quoting the entire line.")
else:
raise
vargs = [x.decode('utf-8') for x in vargs]
for x in vargs:
if "=" in x:
k, v = x.split("=",1)