Get a text summary of the tracker.
(self)
| 338 | return value[1] |
| 339 | |
| 340 | def text_summary(self): |
| 341 | """Get a text summary of the tracker.""" |
| 342 | data = self.summary() |
| 343 | |
| 344 | total_ct = {} |
| 345 | |
| 346 | res = "" |
| 347 | res += "Server List\n" |
| 348 | res += "------------------------------\n" |
| 349 | res += "server-address key\n" |
| 350 | res += "------------------------------\n" |
| 351 | sorted_server = sorted(data["server_info"], key=lambda x: x["key"]) |
| 352 | for item in sorted_server: |
| 353 | addr = item["addr"] |
| 354 | res += f"{':'.join(map(str, addr)):21s} " |
| 355 | res += item["key"] + "\n" |
| 356 | key = item["key"].split(":")[1] # 'server:rasp3b` -> 'rasp3b' |
| 357 | if key not in total_ct: |
| 358 | total_ct[key] = 0 |
| 359 | total_ct[key] += 1 |
| 360 | res += "------------------------------\n" |
| 361 | res += "\n" |
| 362 | |
| 363 | # compute max length of device key |
| 364 | queue_info = data["queue_info"] |
| 365 | keys = list(queue_info.keys()) |
| 366 | if keys: |
| 367 | keys.sort() |
| 368 | max_key_len = max([len(k) for k in keys]) |
| 369 | else: |
| 370 | max_key_len = 0 |
| 371 | |
| 372 | res += "Queue Status\n" |
| 373 | title = f"{'key':<{max_key_len}s} total free pending\n" |
| 374 | separate_line = "-" * len(title) + "\n" |
| 375 | res += separate_line + title + separate_line |
| 376 | for k in keys: |
| 377 | total = total_ct.get(k, 0) |
| 378 | free, pending = queue_info[k]["free"], queue_info[k]["pending"] |
| 379 | if total or pending: |
| 380 | res += f"{k:<{max_key_len}} {total:<5d} {free:<4d} {pending:<7d}\n" |
| 381 | res += separate_line |
| 382 | return res |
| 383 | |
| 384 | def request( |
| 385 | self, |