Skip to content

Commit 2bf9eb6

Browse files
add event when deleting file
1 parent efb57ab commit 2bf9eb6

File tree

4 files changed

+40
-1
lines changed

4 files changed

+40
-1
lines changed

packages/models-library/src/models_library/rabbitmq_messages.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,3 +316,13 @@ class WalletCreditsLimitReachedMessage(RabbitMessageBase):
316316

317317
def routing_key(self) -> str | None:
318318
return f"{self.wallet_id}.{self.credits_limit}"
319+
320+
321+
class FileDeletedMessage(RabbitMessageBase):
322+
channel_name: Literal[
323+
"io.simcore.service.storage.file-deleted"
324+
] = "io.simcore.service.storage.file-deleted"
325+
file_id: str
326+
327+
def routing_key(self) -> str | None:
328+
return None

services/storage/src/simcore_service_storage/rabbitmq.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from typing import cast
2+
13
from aiohttp import web
24
from servicelib.rabbitmq._client import RabbitMQClient
35
from servicelib.rabbitmq._utils import wait_till_rabbitmq_responsive
@@ -26,3 +28,7 @@ async def _rabbitmq_client(app: web.Application):
2628
def setup_rabbitmq(app: web.Application):
2729
if _rabbitmq_client not in app.cleanup_ctx:
2830
app.cleanup_ctx.append(_rabbitmq_client)
31+
32+
33+
def get_rabbitmq_client(app: web.Application) -> RabbitMQClient:
34+
return cast(RabbitMQClient, app[_APP_RABBITMQ_CLIENT_KEY])

services/storage/src/simcore_service_storage/simcore_s3_dsm.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
SimcoreS3FileID,
3636
StorageFileID,
3737
)
38+
from models_library.rabbitmq_messages import FileDeletedMessage
3839
from models_library.users import UserID
3940
from pydantic import AnyUrl, ByteSize, NonNegativeInt, TypeAdapter
4041
from servicelib.aiohttp.client_session import get_client_session
@@ -77,6 +78,7 @@
7778
UploadLinks,
7879
UserOrProjectFilter,
7980
)
81+
from .rabbitmq import get_rabbitmq_client
8082
from .s3 import get_s3_client
8183
from .s3_utils import S3TransferDataCB, update_task_progress
8284
from .settings import Settings
@@ -537,6 +539,12 @@ async def delete_file(
537539
_logger.warning("File %s not found in S3", file_id)
538540
# we still need to clean up the database entry (it exists)
539541
# and to invalidate the size of the parent directory
542+
else:
543+
rabbit_client = get_rabbitmq_client(self.app)
544+
msg = FileDeletedMessage(
545+
file_id=file_id,
546+
)
547+
await rabbit_client.publish(msg.channel_name, msg)
540548

541549
async with self.engine.acquire() as conn:
542550
await db_file_meta_data.delete(conn, [file_id])

services/web/server/src/simcore_service_webserver/notifications/_rabbitmq_nonexclusive_queue_consumers.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@
33
from typing import Final
44

55
from aiohttp import web
6-
from models_library.rabbitmq_messages import InstrumentationRabbitMessage
6+
from models_library.rabbitmq_messages import (
7+
FileDeletedMessage,
8+
InstrumentationRabbitMessage,
9+
)
710
from servicelib.aiohttp.monitor_services import (
811
MONITOR_SERVICE_STARTED_LABELS,
912
MONITOR_SERVICE_STOPPED_LABELS,
@@ -43,12 +46,24 @@ async def _instrumentation_message_parser(app: web.Application, data: bytes) ->
4346
return True
4447

4548

49+
async def _file_deleted_message_parser(app: web.Application, data: bytes) -> bool:
50+
rabbit_message = FileDeletedMessage.model_validate_json(data)
51+
_logger.error("File %s deleted", rabbit_message.file_id)
52+
53+
return True
54+
55+
4656
_EXCHANGE_TO_PARSER_CONFIG: Final[tuple[SubcribeArgumentsTuple, ...,]] = (
4757
SubcribeArgumentsTuple(
4858
InstrumentationRabbitMessage.get_channel_name(),
4959
_instrumentation_message_parser,
5060
{"exclusive_queue": False},
5161
),
62+
SubcribeArgumentsTuple(
63+
FileDeletedMessage.get_channel_name(),
64+
_file_deleted_message_parser,
65+
{"exclusive_queue": False},
66+
),
5267
)
5368

5469

0 commit comments

Comments
 (0)