not mandatory to have the command metadata field set

This commit is contained in:
Simone Scarduzio
2025-10-15 18:16:43 +02:00
parent 60877966f2
commit 9b36087438

View File

@@ -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"),
)