Skip to content

Commit f08b50a

Browse files
authored
fix: multi stage propagation of disaster recovery objectives (#3045)
1 parent 192a471 commit f08b50a

1 file changed

Lines changed: 11 additions & 7 deletions

File tree

backend/core/models.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2641,13 +2641,14 @@ def _aggregate_security_objectives(cls, primary_ancestors: set) -> dict:
26412641

26422642
@classmethod
26432643
def _aggregate_dro_objectives(cls, primary_ancestors: set) -> dict:
2644-
"""Aggregates DRO objectives from primary ancestors (lowest value wins)."""
2644+
"""Aggregates DRO objectives from primary ancestors (lowest non-zero value wins)."""
26452645
agg_obj = {}
26462646
for asset in primary_ancestors:
26472647
objectives = asset.disaster_recovery_objectives.get("objectives", {})
26482648
for key, content in objectives.items():
26492649
value = content.get("value")
2650-
if value is None:
2650+
# Skip None or 0 values (treat as "not set")
2651+
if not value:
26512652
continue
26522653

26532654
current_value = agg_obj.get(key, {}).get("value")
@@ -2847,13 +2848,16 @@ def get_disaster_recovery_objectives(self) -> dict[str, dict[str, dict[str, int]
28472848
for key, content in asset.disaster_recovery_objectives.get(
28482849
"objectives", {}
28492850
).items():
2851+
value = content.get("value")
2852+
# Skip None or 0 values (treat as "not set")
2853+
if not value:
2854+
continue
28502855
if key not in disaster_recovery_objectives:
2851-
disaster_recovery_objectives[key] = content
2856+
disaster_recovery_objectives[key] = content.copy()
28522857
else:
2853-
disaster_recovery_objectives[key]["value"] = min(
2854-
disaster_recovery_objectives[key].get("value", 0),
2855-
content.get("value", 0),
2856-
)
2858+
current_value = disaster_recovery_objectives[key].get("value")
2859+
if current_value is None or value < current_value:
2860+
disaster_recovery_objectives[key]["value"] = value
28572861

28582862
return {"objectives": disaster_recovery_objectives}
28592863

0 commit comments

Comments
 (0)