From e6d3d0780d36af4da94f432c188324de7e232ca9 Mon Sep 17 00:00:00 2001 From: Sanghun Lee Date: Sun, 18 Aug 2024 15:01:32 +0900 Subject: [PATCH] remove falsy cherry-picked codes --- .../backend/manager/models/scaling_group.py | 177 ------------------ 1 file changed, 177 deletions(-) diff --git a/src/ai/backend/manager/models/scaling_group.py b/src/ai/backend/manager/models/scaling_group.py index c3b6cf4f4a..11f87a169b 100644 --- a/src/ai/backend/manager/models/scaling_group.py +++ b/src/ai/backend/manager/models/scaling_group.py @@ -951,180 +951,3 @@ async def mutate( & (sgroups_for_keypairs.c.access_key == access_key), ) return await simple_db_mutate(cls, info.context, delete_query) - - -ALL_SCALING_GROUP_PERMISSIONS: frozenset[ScalingGroupPermission] = frozenset([ - perm for perm in ScalingGroupPermission -]) -OWNER_PERMISSIONS: frozenset[ScalingGroupPermission] = ALL_SCALING_GROUP_PERMISSIONS -ADMIN_PERMISSIONS: frozenset[ScalingGroupPermission] = ALL_SCALING_GROUP_PERMISSIONS -MONITOR_PERMISSIONS: frozenset[ScalingGroupPermission] = ALL_SCALING_GROUP_PERMISSIONS -PRIVILEGED_MEMBER_PERMISSIONS: frozenset[ScalingGroupPermission] = frozenset({ - ScalingGroupPermission.AGENT_PERMISSIONS, - ScalingGroupPermission.COMPUTE_SESSION_PERMISSIONS, - ScalingGroupPermission.INFERENCE_SERVICE_PERMISSIONS, - ScalingGroupPermission.STORAGE_HOST_PERMISSIONS, -}) -MEMBER_PERMISSIONS: frozenset[ScalingGroupPermission] = frozenset({ - ScalingGroupPermission.AGENT_PERMISSIONS, - ScalingGroupPermission.COMPUTE_SESSION_PERMISSIONS, - ScalingGroupPermission.INFERENCE_SERVICE_PERMISSIONS, - ScalingGroupPermission.STORAGE_HOST_PERMISSIONS, -}) - - -@dataclass -class ScalingGroupPermissionContext(AbstractPermissionContext[ScalingGroupPermission, str, str]): - async def build_query(self) -> sa.sql.Select | None: - return None - - async def calculate_final_permission(self, rbac_obj: str) -> frozenset[ScalingGroupPermission]: - host_name = rbac_obj - return self.object_id_to_additional_permission_map.get(host_name, frozenset()) - - -class ScalingGroupPermissionContextBuilder( - AbstractPermissionContextBuilder[ScalingGroupPermission, ScalingGroupPermissionContext] -): - db_session: SASession - - def __init__(self, db_session: SASession) -> None: - self.db_session = db_session - - async def build( - self, - ctx: ClientContext, - target_scope: BaseScope, - requested_permission: ScalingGroupPermission, - ) -> ScalingGroupPermissionContext: - match target_scope: - case DomainScope(domain_name): - permission_ctx = await self.build_in_domain_scope(ctx, domain_name) - case ProjectScope(project_id, _): - permission_ctx = await self.build_in_project_scope(ctx, project_id) - case UserScope(user_id, _): - permission_ctx = await self.build_in_user_scope(ctx, user_id) - case _: - raise InvalidScope - permission_ctx.filter_by_permission(requested_permission) - return permission_ctx - - async def build_in_domain_scope( - self, - ctx: ClientContext, - domain_name: str, - ) -> ScalingGroupPermissionContext: - from .domain import DomainRow - - roles = await get_roles_in_scope(ctx, DomainScope(domain_name), self.db_session) - permissions = await self.calculate_permission_by_roles(roles) - if not permissions: - # User is not part of the domain. - return ScalingGroupPermissionContext() - - stmt = ( - sa.select(DomainRow) - .where(DomainRow.name == domain_name) - .options(selectinload(DomainRow.scaling_groups)) - ) - domain_row = cast(DomainRow | None, await self.db_session.scalar(stmt)) - if domain_row is None: - return ScalingGroupPermissionContext() - scaling_groups = cast(list[ScalingGroupRow], domain_row.scaling_groups) - result = ScalingGroupPermissionContext( - object_id_to_additional_permission_map={row.name: permissions for row in scaling_groups} - ) - return result - - async def build_in_project_scope( - self, - ctx: ClientContext, - project_id: uuid.UUID, - ) -> ScalingGroupPermissionContext: - from .group import GroupRow - - roles = await get_roles_in_scope(ctx, ProjectScope(project_id), self.db_session) - project_permissions = await self.calculate_permission_by_roles(roles) - if not project_permissions: - # User is not part of the domain. - return ScalingGroupPermissionContext() - - stmt = ( - sa.select(GroupRow) - .where(GroupRow.id == project_id) - .options(selectinload(GroupRow.scaling_groups)) - ) - project_row = cast(GroupRow | None, await self.db_session.scalar(stmt)) - if project_row is None: - return ScalingGroupPermissionContext() - scaling_groups = cast(list[ScalingGroupRow], project_row.scaling_groups) - result = ScalingGroupPermissionContext( - object_id_to_additional_permission_map={ - row.name: project_permissions for row in scaling_groups - } - ) - return result - - async def build_in_user_scope( - self, - ctx: ClientContext, - user_id: uuid.UUID, - ) -> ScalingGroupPermissionContext: - from .keypair import KeyPairRow - from .user import UserRow - - roles = await get_roles_in_scope(ctx, UserScope(user_id), self.db_session) - user_permissions = await self.calculate_permission_by_roles(roles) - if not user_permissions: - # User is not part of the domain. - return ScalingGroupPermissionContext() - - stmt = ( - sa.select(UserRow) - .where(UserRow.uuid == user_id) - .options(selectinload(UserRow.keypairs).options(joinedload(KeyPairRow.scaling_groups))) - ) - user_row = cast(UserRow | None, await self.db_session.scalar(stmt)) - if user_row is None: - return ScalingGroupPermissionContext() - - object_id_to_additional_permission_map: dict[str, frozenset[ScalingGroupPermission]] = {} - for keypair in user_row.keypairs: - scaling_groups = cast(list[ScalingGroupRow], keypair.scaling_groups) - for sg in scaling_groups: - if sg.name not in object_id_to_additional_permission_map: - object_id_to_additional_permission_map[sg.name] = user_permissions - result = ScalingGroupPermissionContext( - object_id_to_additional_permission_map=object_id_to_additional_permission_map - ) - return result - - @classmethod - async def _permission_for_owner( - cls, - ) -> frozenset[ScalingGroupPermission]: - return OWNER_PERMISSIONS - - @classmethod - async def _permission_for_admin( - cls, - ) -> frozenset[ScalingGroupPermission]: - return ADMIN_PERMISSIONS - - @classmethod - async def _permission_for_monitor( - cls, - ) -> frozenset[ScalingGroupPermission]: - return MONITOR_PERMISSIONS - - @classmethod - async def _permission_for_privileged_member( - cls, - ) -> frozenset[ScalingGroupPermission]: - return PRIVILEGED_MEMBER_PERMISSIONS - - @classmethod - async def _permission_for_member( - cls, - ) -> frozenset[ScalingGroupPermission]: - return MEMBER_PERMISSIONS