Skip to content

Commit

Permalink
remove falsy cherry-picked codes
Browse files Browse the repository at this point in the history
  • Loading branch information
fregataa committed Aug 18, 2024
1 parent c334165 commit e6d3d07
Showing 1 changed file with 0 additions and 177 deletions.
177 changes: 0 additions & 177 deletions src/ai/backend/manager/models/scaling_group.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit e6d3d07

Please sign in to comment.