Model files are now deleted from the fileserver on models.delete call

This commit is contained in:
clearml 2024-12-05 22:38:06 +02:00
parent e48e64a82f
commit 8c4932c7eb
2 changed files with 24 additions and 6 deletions

View File

@ -583,14 +583,13 @@ def _delete_model_events(
"services.async_urls_delete.enabled", True "services.async_urls_delete.enabled", True
) )
if delete_external_artifacts: if delete_external_artifacts:
for m in models: model_urls = {m.uri for m in models if m.uri}
if not m.uri: if model_urls:
continue
schedule_for_delete( schedule_for_delete(
task_id=m.id, task_id=model_ids[0],
company=company_id, company=company_id,
user=user_id, user=user_id,
urls=m.uri, urls=model_urls,
can_delete_folders=False, can_delete_folders=False,
) )

View File

@ -1,3 +1,5 @@
import unittest
from apiserver.apierrors import errors from apiserver.apierrors import errors
from apiserver.apierrors.errors.bad_request import InvalidModelId from apiserver.apierrors.errors.bad_request import InvalidModelId
from apiserver.tests.automated import TestService from apiserver.tests.automated import TestService
@ -236,6 +238,23 @@ class TestModelsService(TestService):
res = self.api.models.get_frameworks(projects=[project]) res = self.api.models.get_frameworks(projects=[project])
self.assertEqual([], res.frameworks) self.assertEqual([], res.frameworks)
@unittest.skip(
"""This test requires the following setting
CLEARML__services__async_urls_delete__fileserver__url_prefixes=["https://files.allegro-master.hosted.allegro.ai"
Check the test results in the logs of async_delete service
"""
)
def test_delete_many_with_files(self):
models = [
self._create_model(
name=f"delete model test{idx}",
uri=f"https://files.allegro-master.hosted.allegro.ai/models/test{idx}.txt"
)
for idx in range(2)
]
self.api.models.delete_many(ids=models)
def test_make_public(self): def test_make_public(self):
m1 = self._create_model(name="public model test") m1 = self._create_model(name="public model test")
@ -277,7 +296,7 @@ class TestModelsService(TestService):
service="models", service="models",
delete_params=dict(can_fail=True, force=True), delete_params=dict(can_fail=True, force=True),
name=kwargs.pop("name", "test"), name=kwargs.pop("name", "test"),
uri=kwargs.pop("name", "file:///a"), uri=kwargs.pop("uri", "file:///a"),
labels=kwargs.pop("labels", {}), labels=kwargs.pop("labels", {}),
**kwargs, **kwargs,
) )