summaryrefslogtreecommitdiff
path: root/tools/frr-reload.py
AgeCommit message (Collapse)Author
2020-07-15tools: frr-reload: log exclusively through loggerDuncan Eastoe
In several instances a call to log.error() is preceded by a print() for the same message. To prevent duplicate messages these print() calls are removed. To maintain (very) similar behaviour we add a StreamHandler to the logger, when doing logging to a file (ie. --reload without --stdout), which additionally sends error and above logs to STDOUT without any metadata (exactly as they did before, with print()). There is one subtle change - the log from Vtysh.is_config_available() is now preceded with the "vtysh 'configure' returned" text, whereas previously only the output from vtysh was sent to STDOUT. Furthermore any error logs which weren't previously explicitly logged to STDOUT will now be. Signed-off-by: Duncan Eastoe <duncan.eastoe@att.com>
2020-07-14tools: frr-reload: more detailed log level controlDuncan Eastoe
Add a "--log-level" option to frr-reload to set the maximum message level to be logged. When the option is not used, the level is set to info as before. The existing --debug option is synonymous with --log-level=debug and these options are therefore mutually exclusive. Signed-off-by: Duncan Eastoe <duncan.eastoe@att.com>
2020-07-09tools: create sub-context for bfd peersPaul Manley
add lines starting with 'peer' to the list of sub-contexts that are handled by frr-reload.py. https://github.com/FRRouting/frr/issues/6511#issuecomment-655163833 Signed-off-by: Paul Manley <paul.manley@wholefoods.com>
2020-06-24tools: Fix reload with 'ipv6 address...' in interfaceDonald Sharp
When you have this configuration: int foo ipv6 address fd01:0:0:1::1/64 And issue a reload statement, FRR-reload is reducing the code to a `no ipv6 address fd01:0:0:1::/64` and then issuing a: `ipv6 address fd01:0:0:1::/64` The end result is of course that the foo interface now has two v6 addresses on it. The brilliance of this is of course if you happen to have two systems that are connected over an interface, and you issue a reload command. They both get fd01:0:0:1::/64 as an ipv6 address and DAD detection kicks in and stomps on your stuff. Put a special hey don't munch the v6 address line in a reload situation. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-06-18Merge pull request #6614 from qlyoung/fix-evpnmh-reloadJafar Al-Gharaibeh
tools: 'evpn mh' is a new one-line context
2020-06-18tools: 'evpn mh' is a new one-line contextQuentin Young
frr-reload.py needs to know about config-level commands, otherwise it assumes they are contexts Ticket: CM-30128 Ticket: CM-30077 Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2020-06-15tools: fix frr-reload.py daemon optionEmanuele Di Pascale
the refactored frr-reload.py is adding 'no-header' to the 'show running' command of vtysh, but if a daemon is specified the no-header option should only be added after the daemon name. Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
2020-05-26tools/frr-reload: --vty_socket argDavid Lamparter
After the cleanup, adding this doesn't require updating a zillion locations in the code anymore, just one :) Partially derived from 6a00e91d99f7f98d857c2056d0dcfeba48966581 Originally-by: Emanuele Di Pascale <emanuele@voltanet.io> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2020-05-26tools/frr-reload: cleanup passDavid Lamparter
- throw vtysh into a wrapper class - ignore "username" commands - use mark output on stdout - some other random cleanups Signed-off-by: David Lamparter <equinox@diac24.net>
2020-05-12tools: revert frr-reload.py remove stderr redirects"Donald Sharp
This reverts commit 3fa139a65be70e5a81b5f078530094f09a247416. This is being reverted because this commit completely breaks the invocation of frr-reload. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-05-05tools: fix frr traceback on bgp neighbor bfd deletionDon Slice
Problem reported that with certain configs, when the user deleted a "neighbor x.x.x.x bfd 4 100 100" statement from frr.conf and then reloaded, a traceback was seen and the deletion did not succeed. Found that in some scenarios it was possible to have something in lines_to_add that was in a different context and when the re.search was attempted, it found an empy line and was unhappy. This fix avoids trying to search in the wrong context. Ticket: CM-29145 Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
2020-04-27tools: fix frr-reload AF issue with ldpdEmanuele Di Pascale
when removing a whole address-family block from ldpd config we were erroneously trying to also remove each of the interface sub-sub-contexts that belonged to it; this would effectively re-enable the AF we just removed. Work around this by ignoring these sub-sub-contexts if we detect that we are already removing the parent block. Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
2020-01-16tools: improve frr-reload delete performance for some commandsDon Slice
Problem seen when deleting many static routes or access-lists due to frr-reload.py issuing individual vtysh -c commands for every line. On slow switches, this can take long enough for systemd to time out the reload process and restart frr. This fix uses add logic for static routes, prefix-lists, and access-lists to gang the changes together. Signed-off-by: Don Slice <dslice@cumulusnetworks.com> Ticket: CM-27856
2019-12-06tools/frr-reload.py: remove stderr redirectsDavid Lamparter
These make no sense. stderr=subprocess.STDOUT means that vtysh's stdout and stderr are combined and returned by check_output. We don't expect errors in that, and we certainly don't log them. Leaving vtysh's stderr as stderr is perfectly fine, it'll be captured for logging just like stderr output from frr-reload.py. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2019-11-19Merge pull request #5224 from manuhalo/fix_frr_reload_pathsQuentin Young
Fixes and extensions to frr_reload.py
2019-11-19tools: resolve issue with bfd timer change fix in frr-reload.pyDon Slice
Found that while the previous fix solved the traceback and created the correct configuration, it was doing a delete/add process rather than just an add. This was due to an incorrectly created search string. This commit fixes that search string and testing verifies that the correct thing is now being done. Ticket: CM-27233 Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
2019-11-13tools: stop repeating lines to delete for multiple bfd timer changesDon Slice
Problem reported with tracebacks seen when making multiple bfd timer changes in frr.conf and applying via frr-reload.py. Found that when multiple bfd timer changes are made, the same line can be added for deletion more than once, causing the traceback when the deletion is performed. This fix verifies the correct line is being appended for deletion. Ticket: CM-27233 Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
2019-11-12tools, vtysh: improved fix for ldpd ifacesEmanuele Di Pascale
instead of suppressing the 'exit' markers at the end of each 'interface XXX' clause in the mpls ldp configuration, mark those with a special marker 'exit-ldp-if' and teach the reload script to correctly recognize the new sub-subcontext Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
2019-10-29tools, vtysh: fix ldpd + frr-reload.pyEmanuele Di Pascale
frr-reload.py has many special case rules that did not consider ldpd at all. Specifically: 1. The bulk of ldp configuration comes in a big 'mpls ldp' context, which was previously considered a single-line context as it started with 'mpls'. This rule should only apply to labels and lsps. 2. ldp has a 'router-id' config line that fell into the same rule as the above one. It should not be considered a single-line context as more ldp configuration can follow. 3. enabled interfaces should not end their context. A better fix would actually require popping a new context for each interface in case there is any interface-specific config, but at least this fix will address the most common use case. 4. when declaring pseudowires, any line with 'member pseudowire XXX' should be considered a sub-context of the 'l2vpn YYY type ZZZ' context. Without this fix, changes in the first psuedowire declared would not correctly be processed (e.g. removing a 'control-word exclude' line would not be picked up). Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
2019-10-29tools: frr-reload.py for single daemonEmanuele Di Pascale
allow frr-reload.py to be invoked with a --daemon option to specify an individual daemon for which the configuration diff should be computed. This is useful when integrated config is not used and we want to apply a patch to a single daemon config file. No attempt to integrate this with 'service frr reload' has been done. Making watchfrr work with per-daemon config is outside the scope of this simple patch. Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
2019-10-29tools: non hardcoded paths in frr-reloadEmanuele Di Pascale
allow command line parameters to specify different folder for the vtysh binary, config file location and temporary file. Keep the old hardcoded paths as default values for those options to preserve current functionality. Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
2019-07-23frr-reload.py: fix reload with different settingsRafael Zalamena
Add `allow-external-route-update` and `domainname` to the one line context list, otherwise reload will fail when those commands show up in the running configuration. Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2019-05-17tools: fix vrrp autoconfigure reloadQuentin Young
Ticket: CM-24375 Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2019-04-25tools: frr-reload.py stop bouncing peers on bfd timer changeDon Slice
Problem reported that if a bgp neighbor had a bfd timer change made in frr.conf and systemctl reload frr performed, the neighbor with the timer changed bounced. If the change is made in vtysh by just adding the new timer values, no peer bounce occurs. This fix skips the delete part of the delete/add process in frr-reload so the peers stay up. Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
2019-02-27Merge pull request #3872 from dslicenc/frr-reload-vrf-contextRuss White
tools: keep exit-vrf to change context correctly between vrfs
2019-02-26tools: keep exit-vrf to change context correctly between vrfsDon Slice
Discovered in testing that if a static route in the default table was entered immediately after a vrf static block, the static route intended for the default table was put in the vrf instead. This fix retains the "exit-vrf" statement which causes the following static routes to appear in the default table correctly. Ticket: CM-23985 Signed-off-by: Don Slice <dslice@cumulusnetwork.com>
2019-02-26tools: fix blackhole static changes in frr-reload.pyDon Slice
Problem caused when nclu is used to create "ip route 1.1.1.0/24 blackhole" because frr-reload.py changed the line to Null0 instead of blackhole. If nclu tries to delete it using the same line as entered, the commit fails since it doesn't match. Ticket: CM-23986 Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
2018-12-14tools: stop frr-reload.py from trying to delete the vrf contextDon Slice
Problem seen when removing last config item under the vrf context, where frr-reload.py tries instead to delete the vrf context itself. Since that is not permitted on an active vrf, the command errors out and nothing is deleted. Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
2018-09-26frr-reload.py: Add python2 & python3 compatibility.jpmondet
Signed-off-by: jpmondet <jp@mondet.org>
2018-08-10tools: correct frr-reload.py handling of bgp vni/exit-vni configDon Slice
Problem reported that when a peer-group was added in certain configurations, it would be rejected because of the order of the commands put in by nclu. Issued turned out to be how frr-reload.py was handling the sub-sub-context of the vni under the address-family and subsequently how it handled the following exit-vni. Ticket: CM-21996 Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
2018-07-19tools: handle exit-vrf as end of context blockDon Slice
Ticket: CM-21048 Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
2018-03-12tools/frr-reload.py: process vnc settings as sub-contextChristian Franke
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-01-17tools: frr-reload 'vni' keyword does not always create a sub-contextDaniel Walton
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
2017-11-10tools: frr-reload do not attempt deleting lines that cannot be deletedDaniel Walton
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com> There are several lines that we cannot do a "no" on - frr version - frr defaults - password - line vty frr-reload should ignore these if asked to do a "no" on them
2017-11-10tools: frr-reload remove Cumulus Linux release numbers from commentsDaniel Walton
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com> The "3.0", etc in the comments were referring to Cumulus Linux 3.0 which was confusing now that FRR has a 3.0
2017-11-10tools: frr-reload combine "'router bgp' and line" checksDaniel Walton
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com> We had multiple places checking for if ctx_keys[0].startswith('router bgp') and line Combine these into a single check
2017-11-10tools: frr-reload avoid del/add of BGP table-mapDaniel Walton
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
2017-11-10tools: frr-reload.py ignore multiple whitespacesDaniel Walton
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com> Without this fix frr-reload would do a del/add even if the only difference were bogus whitespaces. root@cel-redxp-10[nclu]# /usr/lib/frr/frr-reload.py --test /etc/frr/frr.conf Lines To Delete =============== router bgp 100 no bgp router-id 1.1.1.1 Lines To Add ============ router bgp 100 bgp router-id 1.1.1.1 root@cel-redxp-10[nclu]#
2017-09-27tools: frr-reload.py should exit(1) if vtysh config mode is lockedDaniel Walton
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
2017-09-19tools: frr-reload capture stderr so we can log itDaniel Walton
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
2017-09-19tools: frr-reload support for "no no" scenarioDaniel Walton
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
2017-09-08tools: frr-reload.py support for vni under 'address-family l2vpn evpn'Daniel Walton
Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
2017-08-16vtysh: vtysh -f FOO should exit non-zero if it hits an errorDaniel Walton
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com> Today if we hit an error while apply the contents of file FOO that error does not bubble up to a non-zero exit.
2017-08-08bgpd, tools, vtysh: Handle config migration from 'address-family evpn' to ↵Daniel Walton
'address-family l2vpn evpn' Ticket: CM-16747 Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com> Reviewed-by: Quentin Young <qlyoung@cumulusnetworks.com>
2017-07-12tools: update to use FRR nameJafar Al-Gharaibeh
Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
2017-05-18Merge branch stable/2.0 into stable/3.0David Lamparter
Conflicts: bgpd/bgp_fsm.c ospf6d/ospf6_lsa.c ospfd/ospf_vty.c zebra/redistribute.c Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2017-05-17tools: Allow frr-reload.py to know about agentxDaniel Walton
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com> Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-05-17tools: frr-reload.py VtyshMarkException needs to include "vtysh -m"Daniel Walton
output Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
2017-05-17frr-reload.py fails on "no debug ospf6 message unknown"Daniel Walton
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
2017-05-17tools: frr-reload removes "ipv6 nd ra-interval" and "no ipv6 nd supp"Daniel Walton
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>