k8s_log no longer attempts to parse log as JSON

Fixes #68

Rather than relying on the default serialization logic (which attempts
    to parse a log as JSON and then load it into a wrapper class), we
now simply return the raw log data as expected. The previous behavior
worked in many cases because the log was serialized into a JSON string,
       but in the case of #68 the log was loaded as a JSON float, which
       made the error handling fail to fallback to returning the raw
       data.
This commit is contained in:
Fabian von Feilitzsch
2020-03-31 14:52:52 -04:00
parent 493b6e31fb
commit fe6480594e

View File

@@ -6,6 +6,8 @@
from __future__ import absolute_import, division, print_function
from ansible.module_utils.six import PY2
__metaclass__ = type
@@ -182,11 +184,12 @@ class KubernetesLogModule(KubernetesAnsibleModule):
if self.params.get('container'):
kwargs['query_params'] = dict(container=self.params['container'])
log = resource.log.get(
log = serialize_log(resource.log.get(
name=name,
namespace=self.params.get('namespace'),
serialize=False,
**kwargs
)
))
self.exit_json(changed=False, log=log, log_lines=log.split('\n'))
@@ -228,6 +231,12 @@ class KubernetesLogModule(KubernetesAnsibleModule):
return selectors
def serialize_log(response):
if PY2:
return response.data
return response.data.decode('utf8')
def main():
KubernetesLogModule().execute_module()