tools: fix key chain reload removal

When deleting a key chain with frr-reload track if the whole root node
is being removed or not.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
This commit is contained in:
Rafael Zalamena 2023-07-27 10:47:23 -03:00
parent 49e9bb2819
commit 96f76f7663

View File

@ -1567,6 +1567,7 @@ def compare_context_objects(newconf, running):
candidates_to_add = []
delete_bgpd = False
area_stub_no_sum = "area (\S+) stub no-summary"
deleted_keychains = []
# Find contexts that are in newconf but not in running
# Find contexts that are in running but not in newconf
@ -1617,6 +1618,22 @@ def compare_context_objects(newconf, running):
):
continue
# Check if key chain is being deleted:
# - If it is being deleted then avoid deleting its contexts
# - Else delete its configuration without removing the root node
elif (
running_ctx_keys[0].startswith("key chain ")
and len(running_ctx_keys) == 1
):
deleted_keychains.append(running_ctx_keys[0])
lines_to_del.append((running_ctx_keys, None))
elif (
running_ctx_keys[0].startswith("key chain ")
and len(running_ctx_keys) > 1
and running_ctx_keys[0] in deleted_keychains
):
continue
# Delete an entire vni sub-context under "address-family l2vpn evpn"
elif (
"router bgp" in running_ctx_keys[0]