tools: fix pce-config removal

make sure that the order in which the pcep-related commands are
removed by frr-reload.py is the correct one, i.e., pce followed
by pce-config followed by pcc.

Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
This commit is contained in:
Emanuele Di Pascale 2020-12-22 18:40:47 +01:00
parent 2f1406fc86
commit 0e11b1e2ba

View File

@ -1393,6 +1393,8 @@ def compare_context_objects(newconf, running):
lines_to_del = []
pollist_to_del = []
seglist_to_del = []
pceconf_to_del = []
pcclist_to_del = []
candidates_to_add = []
delete_bgpd = False
@ -1478,9 +1480,8 @@ def compare_context_objects(newconf, running):
# Segment routing and traffic engineering never need to be deleted
elif (
len(running_ctx_keys) > 1
running_ctx_keys[0].startswith('segment-routing')
and len(running_ctx_keys) < 3
and running_ctx_keys[0].startswith('segment-routing')
):
continue
@ -1510,6 +1511,23 @@ def compare_context_objects(newconf, running):
):
pollist_to_del.append((running_ctx_keys, None))
# pce-config must be deleted after the pce, to be sure we add them
# to a separate array that is going to be appended at the end
elif (
len(running_ctx_keys) >= 4
and running_ctx_keys[0].startswith('segment-routing')
and running_ctx_keys[3].startswith('pce-config')
):
pceconf_to_del.append((running_ctx_keys, None))
# pcc must be deleted after the pce and pce-config too
elif (
len(running_ctx_keys) >= 4
and running_ctx_keys[0].startswith('segment-routing')
and running_ctx_keys[3].startswith('pcc')
):
pcclist_to_del.append((running_ctx_keys, None))
# Non-global context
elif running_ctx_keys and not any(
"address-family" in key for key in running_ctx_keys
@ -1532,6 +1550,14 @@ def compare_context_objects(newconf, running):
if len(seglist_to_del) > 0:
lines_to_del.extend(seglist_to_del)
# if we have some pce list commands to delete, append them to lines_to_del
if len(pceconf_to_del) > 0:
lines_to_del.extend(pceconf_to_del)
# if we have some pcc list commands to delete, append them to lines_to_del
if len(pcclist_to_del) > 0:
lines_to_del.extend(pcclist_to_del)
# Find the lines within each context to add
# Find the lines within each context to del
for (newconf_ctx_keys, newconf_ctx) in iteritems(newconf.contexts):