generated_clientset.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import base64
  2. from urllib.parse import urlparse
  3. from .generated_http_client import HTTPClient
  4. from typing import Optional
  5. from .generated_worker_client import WorkerClient
  6. from .generated_model_client import ModelClient
  7. from .generated_model_instance_client import ModelInstanceClient
  8. from .generated_model_file_client import ModelFileClient
  9. from .generated_user_client import UserClient
  10. from .generated_inference_backend_client import InferenceBackendClient
  11. from .generated_benchmark_client import BenchmarkClient
  12. from .generated_model_route_target_client import ModelRouteTargetClient
  13. from gpustack.utils.network import use_proxy_env_for_url
  14. class ClientSet:
  15. def __init__(
  16. self,
  17. base_url: str,
  18. api_key: Optional[str] = None,
  19. username: Optional[str] = None,
  20. password: Optional[str] = None,
  21. headers: Optional[dict] = None,
  22. timeout: Optional[float] = 60.0,
  23. enable_cache: bool = True,
  24. ):
  25. if headers is None:
  26. headers = {}
  27. if api_key:
  28. headers["Authorization"] = f"Bearer {api_key}"
  29. elif username and password:
  30. base64_credentials = base64.b64encode(
  31. f"{username}:{password}".encode()
  32. ).decode()
  33. headers["Authorization"] = f"Basic {base64_credentials}"
  34. self.base_url = base_url
  35. self.headers = headers
  36. verify = None
  37. parsed_url = urlparse(base_url)
  38. if parsed_url.hostname == "127.0.0.1" and parsed_url.scheme == "https":
  39. verify = False
  40. use_proxy_env = use_proxy_env_for_url(base_url)
  41. http_client = (
  42. HTTPClient(
  43. base_url=base_url,
  44. verify_ssl=verify,
  45. httpx_args={"trust_env": use_proxy_env},
  46. )
  47. .with_headers(headers)
  48. .with_timeout(timeout)
  49. )
  50. self.http_client = http_client
  51. self.workers = WorkerClient(
  52. http_client,
  53. enable_cache=enable_cache,
  54. )
  55. self.models = ModelClient(
  56. http_client,
  57. enable_cache=enable_cache,
  58. )
  59. self.model_instances = ModelInstanceClient(
  60. http_client,
  61. enable_cache=enable_cache,
  62. )
  63. self.model_files = ModelFileClient(
  64. http_client,
  65. enable_cache=enable_cache,
  66. )
  67. self.users = UserClient(
  68. http_client,
  69. enable_cache=enable_cache,
  70. )
  71. self.inference_backends = InferenceBackendClient(
  72. http_client,
  73. enable_cache=enable_cache,
  74. )
  75. self.benchmarks = BenchmarkClient(
  76. http_client,
  77. enable_cache=enable_cache,
  78. )
  79. self.model_route_targets = ModelRouteTargetClient(
  80. http_client,
  81. enable_cache=enable_cache,
  82. )