mirror of
https://github.com/beshu-tech/deltaglider.git
synced 2026-04-18 14:49:38 +02:00
not mandatory to have the command metadata field set
This commit is contained in:
@@ -2,11 +2,13 @@
|
||||
|
||||
from dataclasses import dataclass
|
||||
from datetime import datetime
|
||||
import logging
|
||||
|
||||
# Metadata key prefix for DeltaGlider
|
||||
# AWS S3 automatically adds 'x-amz-meta-' prefix, so our keys become 'x-amz-meta-dg-*'
|
||||
METADATA_PREFIX = "dg-"
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class DeltaSpace:
|
||||
@@ -96,6 +98,12 @@ class DeltaMeta:
|
||||
@classmethod
|
||||
def from_dict(cls, data: dict[str, str]) -> "DeltaMeta":
|
||||
"""Create from S3 metadata dict with DeltaGlider namespace prefix."""
|
||||
delta_cmd_key = f"{METADATA_PREFIX}delta-cmd"
|
||||
delta_cmd_value = data.get(delta_cmd_key)
|
||||
if delta_cmd_value is None:
|
||||
object_name = data.get(f"{METADATA_PREFIX}original-name", "<unknown>")
|
||||
logger.warning("Delta metadata missing %s for %s; using empty command", delta_cmd_key, object_name)
|
||||
delta_cmd_value = ""
|
||||
return cls(
|
||||
tool=data[f"{METADATA_PREFIX}tool"],
|
||||
original_name=data[f"{METADATA_PREFIX}original-name"],
|
||||
@@ -105,7 +113,7 @@ class DeltaMeta:
|
||||
ref_key=data[f"{METADATA_PREFIX}ref-key"],
|
||||
ref_sha256=data[f"{METADATA_PREFIX}ref-sha256"],
|
||||
delta_size=int(data[f"{METADATA_PREFIX}delta-size"]),
|
||||
delta_cmd=data[f"{METADATA_PREFIX}delta-cmd"],
|
||||
delta_cmd=delta_cmd_value,
|
||||
note=data.get(f"{METADATA_PREFIX}note"),
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user