mirror of
https://github.com/clearml/clearml-server
synced 2025-01-31 19:06:55 +00:00
52 lines
1.3 KiB
Python
52 lines
1.3 KiB
Python
|
from enum import Enum
|
||
|
|
||
|
from mongoengine import StringField, DateTimeField, IntField, EnumField
|
||
|
|
||
|
from apiserver.database import Database, strict
|
||
|
from apiserver.database.model import AttributedDocument
|
||
|
|
||
|
|
||
|
class StorageType(str, Enum):
|
||
|
fileserver = "fileserver"
|
||
|
unknown = "unknown"
|
||
|
|
||
|
|
||
|
class FileType(str, Enum):
|
||
|
file = "file"
|
||
|
folder = "folder"
|
||
|
|
||
|
|
||
|
class DeletionStatus(str, Enum):
|
||
|
created = "created"
|
||
|
retrying = "retrying"
|
||
|
failed = "failed"
|
||
|
|
||
|
|
||
|
class UrlToDelete(AttributedDocument):
|
||
|
_field_collation_overrides = {
|
||
|
"url": AttributedDocument._numeric_locale,
|
||
|
}
|
||
|
|
||
|
meta = {
|
||
|
"db_alias": Database.backend,
|
||
|
"strict": strict,
|
||
|
"indexes": [
|
||
|
("company", "user", "task"),
|
||
|
"storage_type",
|
||
|
"created",
|
||
|
"retry_count",
|
||
|
"type",
|
||
|
],
|
||
|
}
|
||
|
|
||
|
id = StringField(primary_key=True)
|
||
|
url = StringField(required=True, unique_with="company")
|
||
|
task = StringField(required=True)
|
||
|
created = DateTimeField(required=True)
|
||
|
storage_type = EnumField(StorageType, default=StorageType.unknown)
|
||
|
type = EnumField(FileType, default=FileType.file)
|
||
|
retry_count = IntField(default=0)
|
||
|
last_failure_time = DateTimeField()
|
||
|
last_failure_reason = StringField()
|
||
|
status = EnumField(DeletionStatus, default=DeletionStatus.created)
|