mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-05-06 13:22:48 +00:00
Modules don't have to return JSON, key=value pairs is ok.
This commit is contained in:
@@ -18,11 +18,6 @@
|
||||
|
||||
################################################
|
||||
|
||||
try:
|
||||
import json
|
||||
except ImportError:
|
||||
import simplejson as json
|
||||
|
||||
import fnmatch
|
||||
import multiprocessing
|
||||
import signal
|
||||
@@ -209,7 +204,7 @@ class Runner(object):
|
||||
|
||||
try:
|
||||
# try to parse the JSON response
|
||||
return [ host, True, json.loads(result) ]
|
||||
return [ host, True, parse_json(result) ]
|
||||
except Exception, e:
|
||||
# it failed, say so, but return the string anyway
|
||||
return [ host, False, "%s/%s" % (str(e), result) ]
|
||||
@@ -324,7 +319,7 @@ class Runner(object):
|
||||
if self.module_name == 'setup':
|
||||
host = conn.host
|
||||
try:
|
||||
var_result = json.loads(result)
|
||||
var_result = parse_json(result)
|
||||
except:
|
||||
var_result = {}
|
||||
|
||||
|
||||
@@ -19,6 +19,9 @@
|
||||
|
||||
import sys
|
||||
import os
|
||||
import shlex
|
||||
from ansible.errors import *
|
||||
|
||||
try:
|
||||
import json
|
||||
except ImportError:
|
||||
@@ -183,4 +186,26 @@ def async_poll_status(jid, host, clock, result):
|
||||
else:
|
||||
return "<job %s> polling on %s, %s remaining" % (jid, host, clock)
|
||||
|
||||
def parse_json(data):
|
||||
try:
|
||||
return json.loads(data)
|
||||
except:
|
||||
# not JSON, but try "Baby JSON" which allows many of our modules to not
|
||||
# require JSON and makes writing modules in bash much simpler
|
||||
results = {}
|
||||
tokens = shlex.split(data)
|
||||
for t in tokens:
|
||||
if t.find("=") == -1:
|
||||
raise AnsibleException("failed to parse: %s" % data)
|
||||
(key,value) = t.split("=", 1)
|
||||
if key == 'changed' or 'failed':
|
||||
if value.lower() in [ 'true', '1' ] :
|
||||
value = True
|
||||
elif value.lower() in [ 'false', '0' ]:
|
||||
value = False
|
||||
if key == 'rc':
|
||||
value = int(value)
|
||||
results[key] = value
|
||||
return results
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user