gpu_status.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import argparse
  2. from typing import Protocol
  3. import requests
  4. from renderer import Renderer
  5. parser = argparse.ArgumentParser(description="Prints the status of server nodes and their GPUs.")
  6. parser.add_argument(
  7. "-s",
  8. "--server",
  9. type=str,
  10. default="deimos",
  11. help="The name of the server to query."
  12. )
  13. parser.add_argument(
  14. "-p",
  15. "--port",
  16. type=str,
  17. default="8091",
  18. help="The port of the server to query.",
  19. )
  20. parser.add_argument(
  21. "-t",
  22. "--protocol",
  23. type=str,
  24. default="http",
  25. choices=("http", "https"),
  26. help="The protocol to use for the query.",
  27. )
  28. parser.add_argument(
  29. "-c",
  30. "--compact",
  31. action="store_true",
  32. help="Flag; if set, a compact overview will be displayed."
  33. )
  34. parser.add_argument(
  35. "-f",
  36. "--filter",
  37. type=str,
  38. nargs="*",
  39. default=None,
  40. help="The node names of nodes to filter for."
  41. )
  42. args = parser.parse_args()
  43. response = requests.get(f"{args.protocol}://{args.server}:{args.port}/api/clients/")
  44. if not args.compact:
  45. renderer = Renderer(
  46. columns=1,
  47. progress_bar_width=50,
  48. use_space_lines=True,
  49. node_names=args.filter
  50. )
  51. else:
  52. renderer = Renderer(
  53. columns=2,
  54. progress_bar_width=40,
  55. use_space_lines=False,
  56. node_names=args.filter,
  57. display_power=False,
  58. )
  59. print(renderer.render_info_dict(response.json()))