import json import pandas as pd pod_infos = json.load(open('kube_pod_info_asset_snapshot.json')) node_infos = json.load(open('kube_node_info_asset_snapshot.json')) pods_data = [] nodes_data = [] for pod in pod_infos['data']['result']: kube_pod_info_data = pod['metric'] cluster = kube_pod_info_data['cluster'] if 'shoot/' in cluster or 'seed/' in cluster: continue if 'node' not in kube_pod_info_data: continue node = kube_pod_info_data['node'] pod = kube_pod_info_data['pod'] namespace = kube_pod_info_data['namespace'] result = { "pod": pod, "namespace": namespace, "node": node, "cluster": cluster } pods_data.append(result) for node in node_infos['data']['result']: kube_node_info_data = node['metric'] cluster = kube_node_info_data['cluster'] if 'shoot/' in cluster or 'seed/' in cluster: continue if 'node' not in kube_node_info_data: continue node = kube_node_info_data['node'] result = { "node": node, "cluster": cluster, # TODO(chenfei): to investigate why there is no this field 'node_instance_id': kube_node_info_data.get('provider_id', '') } nodes_data.append(result) pd_a = pd.DataFrame(pods_data) pd_b = pd.DataFrame(nodes_data) result = pd.merge(pd_a, pd_b, left_on=('cluster', 'node'), right_on=('cluster', 'node'), how='left') result.to_json('pod_node_scheduled_data.json', orient="records")