k8s_log - fix issue when required name is not provided, add all_containers support
SUMMARY
Fixes issue when the required name is not provided, closes#514
all support for all_containers option
ISSUE TYPE
Bugfix Pull Request
Feature Pull Request
COMPONENT NAME
k8s_log
ADDITIONAL INFORMATION
Reviewed-by: Mike Graves <mgraves@redhat.com>
Reviewed-by: Jill R <None>
k8s_log - fix module traceback when resource not found
Depends-on: #495
SUMMARY
closes#479
ISSUE TYPE
Bugfix Pull Request
COMPONENT NAME
k8s_log
Reviewed-by: Mike Graves <mgraves@redhat.com>
feat: add new tail_lines parameter to k8s_log module (#488)
SUMMARY
Add new tail_lines parameter to k8s_log module to limit the number of lines to be retrieved from the end of the logs.
Closes#488.
ISSUE TYPE
Feature Pull Request
COMPONENT NAME
kubernetes.core.k8s_log
ADDITIONAL INFORMATION
Thanks for useful collection 😃
This is the first time to send PR to this collection, so please let me know if I'm on the wrong way.
The version_added is set to 2.4.0, but I'm not aware of the roadmap for this collection, so I'd like to know this is the right version to specify.
Changelog and simple integration test is also added.
It seems that the end of log_lines always contains an empty element, so if tail_lines is set to 5, the length of log_lines will be 6, as noted in the comment in the test. I've considered that truncating the trailing empty element, but decided not to for the following reasons.
It is inconsistent and unnatural to remove trailing empty elements only when tail_lines is specified.
Removing trailing empty elements always with or without tail_lines is a destructive change and should not be done because it would break backward compatibility.
Example tasks in playbook:
tasks:
- name: create a job that has 10 lines of log
kubernetes.core.k8s:
state: present
wait: yes
wait_timeout: "{{ k8s_wait_timeout | default(omit) }}"
wait_condition:
type: Complete
status: 'True'
definition:
apiVersion: batch/v1
kind: Job
metadata:
name: multiline-log
namespace: test
spec:
template:
spec:
containers:
- name: busybox
image: busybox
command: ['sh']
args: ['-c', 'for i in $(seq 0 9); do echo $i; done']
restartPolicy: Never
backoffLimit: 4
- name: retrieve all logs from the job
kubernetes.core.k8s_log:
api_version: batch/v1
kind: Job
namespace: test
name: multiline-log
register: full_log
- name: retrieve last 5 lines of log from the job
kubernetes.core.k8s_log:
api_version: batch/v1
kind: Job
namespace: test
name: multiline-log
tail_lines: 5
register: tailed_log
- ansible.builtin.debug:
var: full_log.log_lines
- ansible.builtin.debug:
var: tailed_log.log_lines
Example output:
TASK [create a job that has 10 lines of log] *****************************************************************************************
ok: [localhost]
TASK [retrieve all logs from the job] ************************************************************************************************
ok: [localhost]
TASK [retrieve last 5 lines of log from the job] *************************************************************************************
ok: [localhost]
TASK [ansible.builtin.debug] *********************************************************************************************************
ok: [localhost] =>
full_log.log_lines:
- '0'
- '1'
- '2'
- '3'
- '4'
- '5'
- '6'
- '7'
- '8'
- '9'
- ''
TASK [ansible.builtin.debug] *********************************************************************************************************
ok: [localhost] =>
tailed_log.log_lines:
- '5'
- '6'
- '7'
- '8'
- '9'
- ''
PLAY RECAP ***************************************************************************************************************************
localhost : ok=5 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Reviewed-by: Bikouo Aubin <None>
Reviewed-by: Mike Graves <mgraves@redhat.com>
Move integration test suite from molecule to ansible-test
SUMMARY
molecule has been replaced with ansible-test
some test cases have been updated
k8s_apply : remove duplicated tasks increasing the running time of the test
helm: use different namespaces for different test cases in order to wait for the namespace deletion before moving to the next test.
all: remove wait: yes at the end of each test when deleting namespace, the role used to create namespace will ensure that it is deleted before if existing.
ISSUE TYPE
Feature Pull Request
COMPONENT NAME
integration testing
Reviewed-by: Mike Graves <mgraves@redhat.com>
Reviewed-by: Gonéri Le Bouder <goneri@lebouder.net>
Reviewed-by: None <None>