self.fsstats.addstr(y_coord, coord[0], "N/A", curses.A_DIM)
def create_clients(self, x_coord_map, stats_json, fs_name):
+ global metrics_dict, current_states
counters = [m.upper() for m in stats_json[GLOBAL_COUNTERS_KEY]]
self.tablehead_y += 2
- res = stats_json[CLIENT_METADATA_KEY].get(fs_name, {})
+ res = stats_json[GLOBAL_METRICS_KEY].get(fs_name, {})
client_cnt = len(res)
self.fsstats.addstr(self.tablehead_y, 0, FS_TOP_NAME_TOPL_FMT.format(
- fs_name=fs_name, client_count=client_cnt), curses.A_BOLD | curses.A_ITALIC)
+ fs_name=fs_name, client_count=client_cnt), curses.A_BOLD)
self.tablehead_y += 2
+ metrics_dict_client = metrics_dict.get(fs_name, {})
+ if len(metrics_dict) > len(fs_list):
+ stale_fs = set(metrics_dict) - set(fs_list)
+ for key in stale_fs:
+ del metrics_dict[key]
+ if len(metrics_dict_client) > client_cnt:
+ stale_clients = set(metrics_dict_client) - set(res)
+ for key in stale_clients:
+ del metrics_dict_client[key]
if client_cnt:
- for client_id, metrics in \
- stats_json[GLOBAL_METRICS_KEY][fs_name].items():
+ if len(metrics_dict_client) != client_cnt:
+ sort_list = sorted(list(res.keys()))
+ else:
+ sort_arg = current_states['last_field']
+ sort_list = sorted(list(res.keys()),
+ key=lambda x: metrics_dict[fs_name].get(x, {}).get(sort_arg, 0),
+ reverse=True)
+ if current_states['limit'] is not None and int(current_states['limit']) < client_cnt:
+ sort_list = sort_list[0:int(current_states['limit'])]
+ for client_id in sort_list:
self.create_client(
- client_id, metrics, counters, res[client_id],
+ fs_name, client_id, res.get(client_id, {}), counters,
+ stats_json[CLIENT_METADATA_KEY].get(fs_name, {}).get(client_id, {}),
x_coord_map, self.tablehead_y)
self.tablehead_y += 1