|
1 | 1 | from __future__ import annotations |
2 | 2 |
|
3 | 3 | import enum |
4 | | -import uuid |
5 | | -from collections.abc import Iterable, Mapping, Sequence |
| 4 | +from collections.abc import Mapping, Sequence |
6 | 5 | from typing import Any, cast |
7 | 6 |
|
8 | 7 | import sqlalchemy as sa |
9 | 8 | import trafaret as t |
10 | 9 | from sqlalchemy.dialects import postgresql as pgsql |
11 | | -from sqlalchemy.ext.asyncio import AsyncConnection as SAConnection |
12 | 10 |
|
13 | 11 | from ai.backend.common import validators as tx |
14 | 12 | from ai.backend.common.types import SessionTypes |
15 | 13 | from ai.backend.manager.defs import DEFAULT_ROLE |
16 | 14 | from ai.backend.manager.exceptions import InvalidArgument |
17 | 15 |
|
18 | 16 | from .base import GUID, EnumType, IDColumn, metadata |
19 | | -from .user import UserRole |
20 | 17 | from .vfolder import verify_vfolder_name |
21 | 18 |
|
22 | 19 | __all__: Sequence[str] = ( |
23 | 20 | "TemplateType", |
24 | | - "query_accessible_session_templates", |
25 | 21 | "session_templates", |
26 | 22 | ) |
27 | 23 |
|
@@ -139,112 +135,3 @@ def check_cluster_template(raw_data: Mapping[str, Any]) -> Mapping[str, Any]: |
139 | 135 | f"One and only one {DEFAULT_ROLE} node must be created per cluster", |
140 | 136 | ) |
141 | 137 | return cast(Mapping[str, Any], data) |
142 | | - |
143 | | - |
144 | | -async def query_accessible_session_templates( |
145 | | - conn: SAConnection, |
146 | | - user_uuid: uuid.UUID, |
147 | | - template_type: TemplateType, |
148 | | - *, |
149 | | - user_role: UserRole | None = None, |
150 | | - domain_name: str | None = None, |
151 | | - allowed_types: Iterable[str] = ["user"], |
152 | | - extra_conds: Any = None, |
153 | | -) -> list[Mapping[str, Any]]: |
154 | | - from .group import association_groups_users as agus |
155 | | - from .group import groups |
156 | | - from .user import users |
157 | | - |
158 | | - entries: list[Mapping[str, Any]] = [] |
159 | | - if "user" in allowed_types: |
160 | | - # Query user templates |
161 | | - j = session_templates.join(users, session_templates.c.user_uuid == users.c.uuid) |
162 | | - query = ( |
163 | | - sa.select( |
164 | | - session_templates.c.name, |
165 | | - session_templates.c.id, |
166 | | - session_templates.c.created_at, |
167 | | - session_templates.c.user_uuid, |
168 | | - session_templates.c.group_id, |
169 | | - users.c.email, |
170 | | - ) |
171 | | - .select_from(j) |
172 | | - .where( |
173 | | - (session_templates.c.user_uuid == user_uuid) |
174 | | - & session_templates.c.is_active |
175 | | - & (session_templates.c.type == template_type), |
176 | | - ) |
177 | | - ) |
178 | | - if extra_conds is not None: |
179 | | - query = query.where(extra_conds) |
180 | | - result = await conn.execute(query) |
181 | | - for row in result: |
182 | | - entries.append({ |
183 | | - "name": row.name, |
184 | | - "id": row.id, |
185 | | - "created_at": row.created_at, |
186 | | - "is_owner": True, |
187 | | - "user": str(row.user_uuid) if row.user_uuid else None, |
188 | | - "group": str(row.group_id) if row.group_id else None, |
189 | | - "user_email": row.email, |
190 | | - "group_name": None, |
191 | | - }) |
192 | | - if "group" in allowed_types: |
193 | | - # Query group session_templates |
194 | | - if user_role == UserRole.ADMIN: |
195 | | - query = ( |
196 | | - sa.select(groups.c.id) |
197 | | - .select_from(groups) |
198 | | - .where(groups.c.domain_name == domain_name) |
199 | | - ) |
200 | | - result = await conn.execute(query) |
201 | | - grps = result.fetchall() |
202 | | - group_ids = [g.id for g in grps] |
203 | | - else: |
204 | | - j = sa.join(agus, users, agus.c.user_id == users.c.uuid) |
205 | | - query = sa.select(agus.c.group_id).select_from(j).where(agus.c.user_id == user_uuid) |
206 | | - result = await conn.execute(query) |
207 | | - grps = result.fetchall() |
208 | | - group_ids = [g.group_id for g in grps] |
209 | | - j = session_templates.join(groups, session_templates.c.group_id == groups.c.id) |
210 | | - query = ( |
211 | | - sa.select( |
212 | | - session_templates.c.name, |
213 | | - session_templates.c.id, |
214 | | - session_templates.c.created_at, |
215 | | - session_templates.c.user_uuid, |
216 | | - session_templates.c.group_id, |
217 | | - groups.c.name, |
218 | | - ) |
219 | | - .set_label_style(sa.LABEL_STYLE_TABLENAME_PLUS_COL) |
220 | | - .select_from(j) |
221 | | - .where( |
222 | | - session_templates.c.group_id.in_(group_ids) |
223 | | - & session_templates.c.is_active |
224 | | - & (session_templates.c.type == template_type), |
225 | | - ) |
226 | | - ) |
227 | | - if extra_conds is not None: |
228 | | - query = query.where(extra_conds) |
229 | | - if "user" in allowed_types: |
230 | | - query = query.where(session_templates.c.user_uuid != user_uuid) |
231 | | - result = await conn.execute(query) |
232 | | - is_owner = user_role == UserRole.ADMIN |
233 | | - for row in result: |
234 | | - entries.append({ |
235 | | - "name": row.session_templates_name, |
236 | | - "id": row.session_templates_id, |
237 | | - "created_at": row.session_templates_created_at, |
238 | | - "is_owner": is_owner, |
239 | | - "user": ( |
240 | | - str(row.session_templates_user_uuid) |
241 | | - if row.session_templates_user_uuid |
242 | | - else None |
243 | | - ), |
244 | | - "group": ( |
245 | | - str(row.session_templates_group_id) if row.session_templates_group_id else None |
246 | | - ), |
247 | | - "user_email": None, |
248 | | - "group_name": row.groups_name, |
249 | | - }) |
250 | | - return entries |
0 commit comments