Skip to content

Commit 3696421

Browse files
committed
Fix interaction with SKIP_CHILDREN_ON_DELETE.
1 parent 58f4806 commit 3696421

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

diffsync/helpers.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -361,11 +361,14 @@ def sync_diff_element(self, element: DiffElement, parent_model: Optional["DiffSy
361361
dst_model = None
362362

363363
natural_deletion_order = False
364+
skip_children = False
365+
# Set up flag booleans
364366
if dst_model:
365367
natural_deletion_order = bool(dst_model.model_flags & DiffSyncModelFlags.NATURAL_DELETION_ORDER)
368+
skip_children = bool(dst_model.model_flags & DiffSyncModelFlags.SKIP_CHILDREN_ON_DELETE)
366369

367370
changed = False
368-
if natural_deletion_order and self.action == DiffSyncActions.DELETE:
371+
if natural_deletion_order and self.action == DiffSyncActions.DELETE and not skip_children:
369372
for child in element.get_children():
370373
changed |= self.sync_diff_element(child, parent_model=dst_model)
371374

@@ -384,7 +387,6 @@ def sync_diff_element(self, element: DiffElement, parent_model: Optional["DiffSy
384387
if parent_model:
385388
parent_model.remove_child(dst_model)
386389

387-
skip_children = bool(dst_model.model_flags & DiffSyncModelFlags.SKIP_CHILDREN_ON_DELETE)
388390
self.dst_diffsync.remove(dst_model, remove_children=skip_children)
389391

390392
if skip_children:

tests/unit/test_diffsync.py

+1
Original file line numberDiff line numberDiff line change
@@ -973,6 +973,7 @@ class NoDeleteInterfaceDiffSync(BackendA):
973973
extra_models.load()
974974
extra_device = extra_models.device(name="nyc-spine3", site_name="nyc", role="spine")
975975
extra_device.model_flags |= DiffSyncModelFlags.SKIP_CHILDREN_ON_DELETE
976+
extra_device.model_flags |= DiffSyncModelFlags.NATURAL_DELETION_ORDER
976977
extra_models.get(extra_models.site, "nyc").add_child(extra_device)
977978
extra_models.add(extra_device)
978979
extra_interface = extra_models.interface(name="eth0", device_name="nyc-spine3")

0 commit comments

Comments
 (0)