Skip to content

Commit 260befa

Browse files
committed
Drop deleted_by_user cols
1 parent bd79e47 commit 260befa

6 files changed

Lines changed: 41 additions & 70 deletions

File tree

src/dstack/_internal/server/background/pipeline_tasks/gateways.py

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
GatewayComputeModel,
2626
GatewayModel,
2727
ProjectModel,
28-
UserModel,
2928
)
3029
from dstack._internal.server.services import backends as backends_services
3130
from dstack._internal.server.services import events
@@ -431,9 +430,6 @@ async def _process_to_be_deleted_item(item: GatewayPipelineItem):
431430
)
432431
.options(joinedload(GatewayModel.project).joinedload(ProjectModel.backends))
433432
.options(joinedload(GatewayModel.gateway_compute))
434-
.options(
435-
joinedload(GatewayModel.deleted_by_user).load_only(UserModel.id, UserModel.name)
436-
)
437433
)
438434
gateway_model = res.unique().scalar_one_or_none()
439435
if gateway_model is None:
@@ -465,13 +461,10 @@ async def _process_to_be_deleted_item(item: GatewayPipelineItem):
465461
item.id,
466462
)
467463
return
468-
actor = events.SystemActor()
469-
if gateway_model.deleted_by_user is not None:
470-
actor = events.UserActor.from_user(gateway_model.deleted_by_user)
471464
events.emit(
472465
session,
473466
"Gateway deleted",
474-
actor=actor,
467+
actor=events.SystemActor(),
475468
targets=[events.Target.from_model(gateway_model)],
476469
)
477470
else:

src/dstack/_internal/server/migrations/versions/2026/02_20_0840_d911914ecf17_add_gatewaymodel_deleted_columns.py

Lines changed: 0 additions & 53 deletions
This file was deleted.
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
"""Add GatewayModel.to_be_deleted
2+
3+
Revision ID: 3160b6c59d94
4+
Revises: 66c2fdda33c2
5+
Create Date: 2026-02-20 09:14:31.650140+00:00
6+
7+
"""
8+
9+
import sqlalchemy as sa
10+
from alembic import op
11+
12+
# revision identifiers, used by Alembic.
13+
revision = "3160b6c59d94"
14+
down_revision = "66c2fdda33c2"
15+
branch_labels = None
16+
depends_on = None
17+
18+
19+
def upgrade() -> None:
20+
# ### commands auto generated by Alembic - please adjust! ###
21+
with op.batch_alter_table("gateways", schema=None) as batch_op:
22+
batch_op.add_column(
23+
sa.Column("to_be_deleted", sa.Boolean(), server_default=sa.text("0"), nullable=False)
24+
)
25+
26+
# ### end Alembic commands ###
27+
28+
29+
def downgrade() -> None:
30+
# ### commands auto generated by Alembic - please adjust! ###
31+
with op.batch_alter_table("gateways", schema=None) as batch_op:
32+
batch_op.drop_column("to_be_deleted")
33+
34+
# ### end Alembic commands ###

src/dstack/_internal/server/models.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -522,10 +522,6 @@ class GatewayModel(PipelineModelMixin, BaseModel):
522522
runs: Mapped[List["RunModel"]] = relationship(back_populates="gateway")
523523

524524
to_be_deleted: Mapped[bool] = mapped_column(Boolean, server_default=false())
525-
deleted_by_user_id: Mapped[Optional[uuid.UUID]] = mapped_column(
526-
ForeignKey("users.id", ondelete="SET NULL")
527-
)
528-
deleted_by_user: Mapped[Optional[UserModel]] = relationship(foreign_keys=[deleted_by_user_id])
529525

530526
__table_args__ = (UniqueConstraint("project_id", "name", name="uq_gateways_project_id_name"),)
531527

src/dstack/_internal/server/services/gateways/__init__.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,12 @@ async def delete_gateways(
310310
for gateway_model in gateway_models:
311311
if not gateway_model.to_be_deleted:
312312
gateway_model.to_be_deleted = True
313-
gateway_model.deleted_by_user_id = user.id
313+
events.emit(
314+
session,
315+
"Gateway marked for deletion",
316+
actor=events.UserActor.from_user(user),
317+
targets=[events.Target.from_model(gateway_model)],
318+
)
314319
await session.commit()
315320

316321

src/tests/_internal/server/background/pipeline_tasks/test_gateways.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
create_gateway,
2121
create_gateway_compute,
2222
create_project,
23-
create_user,
2423
list_events,
2524
)
2625

@@ -194,7 +193,6 @@ class TestGatewayWorkerDeleted:
194193
async def test_deletes_gateway_and_marks_compute_deleted(
195194
self, test_db, session: AsyncSession, worker: GatewayWorker
196195
):
197-
user = await create_user(session=session)
198196
project = await create_project(session=session)
199197
backend = await create_backend(session=session, project_id=project.id)
200198
gateway_compute = await create_gateway_compute(session=session, backend_id=backend.id)
@@ -208,7 +206,6 @@ async def test_deletes_gateway_and_marks_compute_deleted(
208206
gateway.lock_token = uuid.uuid4()
209207
gateway.lock_expires_at = datetime(2025, 1, 2, 3, 4, tzinfo=timezone.utc)
210208
gateway.to_be_deleted = True
211-
gateway.deleted_by_user_id = user.id
212209
await session.commit()
213210

214211
with (
@@ -237,7 +234,6 @@ async def test_deletes_gateway_and_marks_compute_deleted(
237234
events = await list_events(session)
238235
assert len(events) == 1
239236
assert events[0].message == "Gateway deleted"
240-
assert events[0].actor_user_id == user.id
241237

242238
async def test_keeps_gateway_if_terminate_fails(
243239
self, test_db, session: AsyncSession, worker: GatewayWorker

0 commit comments

Comments
 (0)