Merge pull request #69 from fabianvf/properly-serialize-log

k8s_log no longer attempts to parse log as JSON
This commit is contained in:
Jeff Geerling
2020-04-21 16:14:38 -05:00
committed by GitHub
2 changed files with 49 additions and 2 deletions

View File

@@ -79,6 +79,43 @@
- "'hello world' in pod_log.log"
- item == 'hello world' or item == ''
with_items: '{{ pod_log.log_lines }}'
- name: Create a job that calculates 7
k8s:
state: present
wait: yes
wait_timeout: 120
wait_condition:
type: Complete
status: 'True'
definition:
apiVersion: batch/v1
kind: Job
metadata:
name: int-log
namespace: k8s-log
spec:
template:
spec:
containers:
- name: busybox
image: busybox
command: ["echo", "7"]
restartPolicy: Never
backoffLimit: 4
- name: retrieve logs from the job
k8s_log:
api_version: batch/v1
kind: Job
namespace: k8s-log
name: int-log
register: job_logs
- name: verify the log was successfully retrieved
assert:
that: job_logs.log_lines[0] == "7"
always:
- name: ensure that namespace is removed
k8s:

View File

@@ -127,6 +127,9 @@ log_lines:
import copy
from ansible.module_utils.six import PY2
from ansible_collections.community.kubernetes.plugins.module_utils.common import KubernetesAnsibleModule
from ansible_collections.community.kubernetes.plugins.module_utils.common import AUTH_ARG_SPEC
@@ -182,11 +185,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 +232,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()