Skip to content

Commit

Permalink
k8s_log - fix module traceback when resource not found (#493)
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
abikouo authored Jul 28, 2022
1 parent 09d5491 commit 7f7008f
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 3 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
---
bugfixes:
- k8s_log - Fix module traceback when no resource found (https://github.com/ansible-collections/kubernetes.core/issues/479).
20 changes: 17 additions & 3 deletions plugins/modules/k8s_log.py
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,12 @@
K8sService,
)

try:
from kubernetes.client.exceptions import ApiException
except ImportError:
# ImportError are managed by the common module already.
pass


def argspec():
args = copy.deepcopy(AUTH_ARG_SPEC)
Expand Down Expand Up @@ -217,9 +223,17 @@ def execute_module(svc, params):
{"tailLines": params["tail_lines"]}
)

response = resource.log.get(
name=name, namespace=namespace, serialize=False, **kwargs
)
try:
response = resource.log.get(
name=name, namespace=namespace, serialize=False, **kwargs
)
except ApiException as exc:
if exc.reason == "Not Found":
raise CoreException("Pod {0}/{1} not found.".format(namespace, name))
raise CoreException(
"Unable to retrieve log from Pod due to: {0}".format(exc.reason)
)

log = response.data.decode("utf8")

return {"changed": False, "log": log, "log_lines": log.split("\n")}
Expand Down
13 changes: 13 additions & 0 deletions tests/integration/targets/k8s_log/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,18 @@
---
- block:
- name: Retrieve log from unexisting Pod
k8s_log:
namespace: "{{ test_namespace }}"
name: "this_pod_does_exist"
ignore_errors: true
register: fake_pod

- name: Assert that task failed with proper message
assert:
that:
- fake_pod is failed
- 'fake_pod.msg == "Pod {{ test_namespace }}/this_pod_does_exist not found."'

- name: create hello-world deployment
k8s:
wait: yes
Expand Down

0 comments on commit 7f7008f

Please sign in to comment.