Attach generic references to normalized objects
This commit is contained in:
@@ -110,11 +110,35 @@ class ObjectReference:
|
||||
object.__setattr__(self, "logical_key", logical_key)
|
||||
|
||||
|
||||
def _normalized_references(
|
||||
references,
|
||||
) -> tuple[ObjectReference, ...]:
|
||||
normalized = tuple(references)
|
||||
if any(
|
||||
not isinstance(reference, ObjectReference)
|
||||
for reference in normalized
|
||||
):
|
||||
raise ValueError(
|
||||
"Object references must be ObjectReference instances"
|
||||
)
|
||||
if len(set(normalized)) != len(normalized):
|
||||
raise ValueError("Object references cannot contain duplicates")
|
||||
return normalized
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class DiscoveredObject:
|
||||
object_type: str
|
||||
local_key: str
|
||||
payload: Mapping[str, Any]
|
||||
references: tuple[ObjectReference, ...] = ()
|
||||
|
||||
def __post_init__(self) -> None:
|
||||
object.__setattr__(
|
||||
self,
|
||||
"references",
|
||||
_normalized_references(self.references),
|
||||
)
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
@@ -123,6 +147,14 @@ class NormalizedObject:
|
||||
logical_key: str
|
||||
payload: Mapping[str, Any]
|
||||
local_key: str | None = None
|
||||
references: tuple[ObjectReference, ...] = ()
|
||||
|
||||
def __post_init__(self) -> None:
|
||||
object.__setattr__(
|
||||
self,
|
||||
"references",
|
||||
_normalized_references(self.references),
|
||||
)
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
|
||||
@@ -95,6 +95,7 @@ def _normalize_dns_record(
|
||||
logical_key=hostname,
|
||||
local_key=discovered.local_key,
|
||||
payload=normalized_payload,
|
||||
references=discovered.references,
|
||||
)
|
||||
|
||||
|
||||
@@ -146,6 +147,7 @@ def _normalize_proxy_host(
|
||||
logical_key=",".join(domains),
|
||||
local_key=discovered.local_key,
|
||||
payload=normalized_payload,
|
||||
references=discovered.references,
|
||||
)
|
||||
|
||||
|
||||
@@ -175,6 +177,7 @@ def _normalize_certificate(
|
||||
logical_key=identity.key,
|
||||
local_key=discovered.local_key,
|
||||
payload=normalized_payload,
|
||||
references=discovered.references,
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user