Skip to content

Commit 27ec6bb

Browse files
author
Myroslav Rozum
committed
use container name in dictionary instead of pod's to return logs
Signed-off-by: Myroslav Rozum <[email protected]>
1 parent e05be60 commit 27ec6bb

File tree

2 files changed

+33
-20
lines changed

2 files changed

+33
-20
lines changed

chaosk8s/pod/probes.py

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -59,24 +59,37 @@ def read_pod_logs(name: str = None, last: Union[str, None] = None,
5959
now = datetime.now()
6060
since = int((now - dateparser.parse(last)).total_seconds())
6161

62-
params = dict(
63-
namespace=ns,
64-
follow=False,
65-
previous=from_previous,
66-
timestamps=True,
67-
container=container_name or "", # None is not a valid value
68-
_preload_content=False
69-
)
70-
71-
if since:
72-
params["since_seconds"] = since
73-
7462
logs = {}
63+
7564
for p in ret.items:
76-
name = p.metadata.name
77-
logger.debug("Fetching logs for pod '{n}'".format(n=name))
78-
r = v1.read_namespaced_pod_log(name, **params)
79-
logs[name] = r.read().decode('utf-8')
65+
# Retreive either logs for specific container
66+
# or for all containers at once if not ptovided.
67+
container_names = []
68+
if container_name:
69+
container_names.append(container_name)
70+
else:
71+
container_names = [c.name
72+
for i, c
73+
in enumerate(p.status.container_statuses)]
74+
75+
for cname in container_names:
76+
params = dict(
77+
namespace=ns,
78+
follow=False,
79+
previous=from_previous,
80+
timestamps=True,
81+
container=cname,
82+
_preload_content=False
83+
)
84+
if since:
85+
params["since_seconds"] = since
86+
87+
name = p.metadata.name
88+
logger.debug("Fetching logs for pod '{n}' container {c}"
89+
.format(n=name, c=cname))
90+
91+
r = v1.read_namespaced_pod_log(name, **params)
92+
logs[cname] = r.read().decode('utf-8')
8093

8194
return logs
8295

tests/test_probes.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -323,11 +323,11 @@ def test_fetch_last_logs(cl, client, has_conf):
323323

324324
v1.read_namespaced_pod_log.return_value = io.BytesIO(b"hello")
325325

326-
logs = read_microservices_logs("myapp")
327-
328-
assert pod.metadata.name in logs
329-
assert logs[pod.metadata.name] == "hello"
326+
container_name = "mycontainer"
327+
logs = read_microservices_logs(name="myapp", container_name=container_name)
330328

329+
assert container_name in logs
330+
assert logs[container_name] == "hello"
331331

332332
@patch('chaosk8s.has_local_config_file', autospec=True)
333333
@patch('chaosk8s.service.probes.client', autospec=True)

0 commit comments

Comments
 (0)