Repository navigation
Expand file tree
/
Copy path_users.py
More file actions
42 lines (33 loc) · 1.6 KB
/
Copy path_users.py
File metadata and controls
42 lines (33 loc) · 1.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
from typing import List
from pydantic import parse_obj_as
from dstack._internal.core.models.users import GlobalRole, User, UserWithCreds
from dstack._internal.server.schemas.users import (
CreateUserRequest,
GetUserRequest,
RefreshTokenRequest,
UpdateUserRequest,
)
from dstack.api.server._group import APIClientGroup
class UsersAPIClient(APIClientGroup):
def list(self) -> List[User]:
resp = self._request("/api/users/list")
return parse_obj_as(List[User], resp.json())
def get_my_user(self) -> User:
resp = self._request("/api/users/get_my_user")
return parse_obj_as(User, resp.json())
def get_user(self, username: str) -> User:
body = GetUserRequest(username=username)
resp = self._request("/api/users/get_user", body=body.json())
return parse_obj_as(User, resp.json())
def create(self, username: str, global_role: GlobalRole) -> User:
body = CreateUserRequest(username=username, global_role=global_role)
resp = self._request("/api/users/create", body=body.json())
return parse_obj_as(User, resp.json())
def update(self, username: str, global_role: GlobalRole) -> User:
body = UpdateUserRequest(username=username, global_role=global_role)
resp = self._request("/api/users/update", body=body.json())
return parse_obj_as(User, resp.json())
def refresh_token(self, username: str) -> UserWithCreds:
body = RefreshTokenRequest(username=username)
resp = self._request("/api/users/refresh_token", body=body.json())
return parse_obj_as(UserWithCreds, resp.json())