mirror of
https://github.com/clearml/clearml-server
synced 2025-01-31 19:06:55 +00:00
53 lines
1.4 KiB
Python
53 lines
1.4 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"
|
|
s3 = "s3"
|
|
azure = "azure"
|
|
gs = "gs"
|
|
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"),
|
|
("company", "storage_type", "url"),
|
|
("status", "retry_count", "storage_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)
|