11import os
22import shutil
33import yaml
4- from typing import Dict , TextIO
4+ from typing import Dict , TextIO , List
5+ import json
56import k8s_request_data
67
78
@@ -26,41 +27,60 @@ def header(msg: str) -> str:
2627
2728def dump_crd (crd_log : TextIO ) -> None :
2829 crd = k8s_request_data .get_crds ()
29- crd_log .write (header ("CRD" ))
30- crd_log .write (yaml .dump (clean_nones (crd )))
30+ if crd is not None :
31+ crd_log .write (header ("CRD" ))
32+ crd_log .write (yaml .dump (clean_nones (crd )))
3133
3234
3335def dump_persistent_volume (diagnostic_file : TextIO ) -> None :
34- diagnostic_file .write (header ("Persistent Volumes" ))
3536 pv = k8s_request_data .get_persistent_volumes ()
36- diagnostic_file .write (yaml .dump (clean_nones (pv )))
37+ if pv is not None :
38+ diagnostic_file .write (header ("Persistent Volumes" ))
39+ diagnostic_file .write (yaml .dump (clean_nones (pv )))
3740
3841
3942def dump_stateful_sets_namespaced (diagnostic_file : TextIO , namespace : str ) -> None :
40- diagnostic_file .write (header ("Stateful Sets" ))
4143 sst = k8s_request_data .get_stateful_sets_namespaced (namespace )
42- diagnostic_file .write (yaml .dump (clean_nones (sst )))
44+ if sst is not None :
45+ diagnostic_file .write (header ("Stateful Sets" ))
46+ diagnostic_file .write (yaml .dump (clean_nones (sst )))
4347
4448
4549def dump_pod_log_namespaced (namespace : str , name : str , containers : list ) -> None :
4650 for container in containers :
4751 with open (
48- "logs/e2e/{}-{}.log" .format (name , container .name ),
49- mode = "w" ,
50- encoding = "utf-8" ,
52+ f"logs/e2e/{ name } -{ container .name } .log" , mode = "w" , encoding = "utf-8" ,
5153 ) as log_file :
52- log_file . write (
53- k8s_request_data . get_pod_log_namespaced ( namespace , name , container .name )
54+ log = k8s_request_data . get_pod_log_namespaced (
55+ namespace , name , container .name
5456 )
57+ if log is not None :
58+ log_file .write (log )
5559
5660
5761def dump_pods_and_logs_namespaced (diagnostic_file : TextIO , namespace : str ) -> None :
5862 pods = k8s_request_data .get_pods_namespaced (namespace )
59- for pod in pods :
60- name = pod .metadata .name
61- diagnostic_file .write (header (f"Pod { name } " ))
62- diagnostic_file .write (yaml .dump (clean_nones (pod .to_dict ())))
63- dump_pod_log_namespaced (namespace , name , pod .spec .containers )
63+ if pods is not None :
64+ for pod in pods :
65+ name = pod .metadata .name
66+ diagnostic_file .write (header (f"Pod { name } " ))
67+ diagnostic_file .write (yaml .dump (clean_nones (pod .to_dict ())))
68+ dump_pod_log_namespaced (namespace , name , pod .spec .containers )
69+
70+
71+ def dump_configmap_keys_namespaced (
72+ namespace : str , keys : List [str ], configmap_name : str
73+ ) -> None :
74+ configmap = k8s_request_data .get_configmap_namespaced (namespace , configmap_name )
75+ if configmap is not None :
76+ for key in keys :
77+ with open (
78+ f"logs/e2e/{ configmap_name } -{ key } .json" , mode = "w" , encoding = "utf-8" ,
79+ ) as log_file :
80+ if key in configmap ["data" ]:
81+ log_file .write (
82+ json .dumps (json .loads (configmap ["data" ][key ]), indent = 4 )
83+ )
6484
6585
6686def dump_all (namespace : str ) -> None :
@@ -82,3 +102,5 @@ def dump_all(namespace: str) -> None:
82102
83103 with open ("logs/e2e/crd.log" , mode = "w" , encoding = "utf-8" ) as crd_log :
84104 dump_crd (crd_log )
105+
106+ dump_configmap_keys_namespaced (namespace , ["automation-config" ], "mdb0-config" )
0 commit comments