Commit Graph

14 Commits

Author SHA1 Message Date
f70bff400f Introduce a CLI object
Instead of writing the CLI calls to stderr as INFO loglines, now add
them to a list of messages by prune/create/sync.

Always close the VPP connection after finishing, by adding a destructor
to the VPPApi class.

At the end of each phase, print out what was gathered to stdout. Later,
I will make this more advanced (output to file, output directly to a
pipe of a running vppctl binary, etc).
2022-03-29 14:04:53 +00:00
850b982f2a First part of a BVI refactor
The handling of BVI is awkward, with the autoderived interface name
"bviXX" based on the bridgedomain bd_id. Lots of special casing happens
on account of this decision, and to make matters worse there is poor
interaction (leading to VPP crashes) when BVIs and Loopbacks are used
at the same time: https://lists.fd.io/g/vpp-dev/message/21116

This is step one of a refactor of the logic. In this commit, I'm
removing all of the BVI logic from the codebase, rendering bridgedomains
unable to have IP interfaces. In the next commit, I will introduce new
behavior in the schema, allowing for 'bvi' to be a loopback
interfacename which will be used as BVI for a bridgedomain, restoring
the ability to use bridgedomains with IP interfaces (using a loop).
2022-03-27 20:09:22 +00:00
176fd297aa Refactor phys_exist() into phys_exist_in_{config,vpp}(); Correct vppapi.get_phys() 2022-03-26 23:07:49 +00:00
e9bbd47407 Sync Phase: Implement bondethernets
Include special caveat on LCP MAC changes, for which I'll put in a
TODO for now with a VPP comment {} with the to be run command.

Also make the user aware of a quick in BondEthernets not being able
to have link_mtu != 9000 so if a packet MTU > 9000 is set, this will
work but is an undesirable configuration. Issue a warning in this
case.
2022-03-26 15:14:49 +00:00
f2784ce5d0 Remove spurious logline 2022-03-26 12:26:57 +00:00
54bb45f03d typofix on interface_names and sw_if_index 2022-03-26 12:20:19 +00:00
d5a7c59f4e Remove sub-ints before VXLANs. Report on interfaces thare are deleted before their addresses are. 2022-03-25 23:20:57 +00:00
661c7fc16c Implement pruning in config as well
After pruning elements from the VPP configuration, also remove them
from the configuration. The purpose of this is to leave a reasonable
representation of the VPP state in the configuration, so that subsequent
creates and syncs do not have to query the VPP API repeatedly.

The goal of this change is to be able to plan a complete path from
prune, create and sync, with only reading the initial VPP configuration
once, not multiple times.
2022-03-25 23:04:28 +00:00
1d7fd268e0 Add ability to delete sub-ints on BVI + Loopback
- Add a get_sub_interfaces() call to fetch all DPDK / Bond sub-ints
- In prune_bvis(), prune_loopbacks() and prune_sub_interfaces(),
  use sub_number_of_tags to go out-to-in (qinx, dot1x, untagged)
2022-03-25 18:43:46 +00:00
9aeb60ad98 Also bring down BVIs and Loopbacks if they do not exist in the config 2022-03-25 14:15:40 +00:00
fe2e63ac0e Prune Step1: remove addresses and set down, any interface not in the YAML config 2022-03-24 17:16:29 +00:00
e8e41098be Assert that all PHYs in the config also exist in VPP 2022-03-24 12:29:16 +00:00
8129235031 Clean up logging a little bit 2022-03-24 12:14:26 +00:00
ac5b8fcc8f Simple VPPApi abstraction, which fetches the necessary info from VPP, and a few dumpers 2022-03-23 23:29:19 +00:00