9aeb60ad98
Also bring down BVIs and Loopbacks if they do not exist in the config
Pim van Pelt
2022-03-25 14:15:40 +00:00
152fa12099
Update to ordering
Pim van Pelt
2022-03-25 13:56:04 +00:00
a068f25f19
Re-order the Pruning flow
Pim van Pelt
2022-03-25 13:35:14 +00:00
0a31a22e7e
Add docstrings, reorder functions. Rename prune_addresses_set_interface_down() to merely prune_interfaces_down(), and make distinction on setting down and pruning addresses, so we don't do it twice.
Pim van Pelt
2022-03-25 11:55:30 +00:00
864c78ddfe
Only change link and MTU if they differ from the vpp_iface
Pim van Pelt
2022-03-25 00:29:57 +00:00
250aae5210
Prune step 8: Remove qinx, dot1ad/dot1q, and set phys to default if they are not in the config
Pim van Pelt
2022-03-25 00:15:41 +00:00
33aedd585f
Prune Step 7: Remove VXLAN tunnels that either aren't in the config, or have a mismatched src/dst/vni
Pim van Pelt
2022-03-24 23:42:46 +00:00
c381c7cbaa
Prune Step 6: Remove BondEthernets and their member interfaces that are not in the config
Pim van Pelt
2022-03-24 23:17:56 +00:00
731f7ecbb4
Implement Prune Step 5: Remove L2XC that are not in the config
Pim van Pelt
2022-03-24 22:50:22 +00:00
721ac690cd
Implement Prune Step 4: Remove members from bridgedomains, and remove bridgedomains not in the config
Pim van Pelt
2022-03-24 22:22:55 +00:00
cd4d44a2b1
Implement Prune Step 3 -- remove BVI and Loopback interfaces and IPs that are not in the config
Pim van Pelt
2022-03-24 22:02:31 +00:00
4666ba1611
Ensure bridgedomains exist in the YAML config before trying to look up BVIs in them
Pim van Pelt
2022-03-24 21:57:39 +00:00
3a74a07ee6
Add get_by_bvi_name() and add a few hints on the difference between 'bridgename' (bd*) and 'bvi interfacename' (bvi*)
Pim van Pelt
2022-03-24 21:38:13 +00:00
13f70758da
merge conflict
Pim van Pelt
2022-03-24 21:00:08 +00:00
15c54d5e1d
Implement Prune Step 2: Remove any mismatched LCP, in correct order
Pim van Pelt
2022-03-24 20:43:34 +00:00
d6e2e9765b
Implement Prune Step 2: Remove any mismatched LCP, in correct order
Pim van Pelt
2022-03-24 20:43:34 +00:00
de9ed1730d
Add get_by_lcp_name() plus tests. Correct behavior of sub-ints without explicit encap: they are exact-match
Pim van Pelt
2022-03-24 20:14:06 +00:00
95c08bbb29
Print an error if the number of errors is unexpected
Pim van Pelt
2022-03-24 20:12:36 +00:00
fe2e63ac0e
Prune Step1: remove addresses and set down, any interface not in the YAML config
Pim van Pelt
2022-03-24 17:16:29 +00:00
29a8bae899
Add get_bondethernets()
Pim van Pelt
2022-03-24 16:34:45 +00:00
de95e522ab
Move VPPApi into a Reconciler class, add (empty) prune() create() and sync() methods. Add --force flag to enable making progress after warnings are issued
Pim van Pelt
2022-03-24 15:57:12 +00:00
2e2f63e1dd
Fix reporting of YAML tests; send retval based on the bitflags of tests passing/failing
Pim van Pelt
2022-03-24 15:15:26 +00:00
cfcbec239c
Cosmetic rename instance of config/validator class
Pim van Pelt
2022-03-24 14:00:05 +00:00
672dd65f11
Rename validator/ to config/
Pim van Pelt
2022-03-24 13:56:04 +00:00
e8e41098be
Assert that all PHYs in the config also exist in VPP
Pim van Pelt
2022-03-24 12:29:16 +00:00
8129235031
Clean up logging a little bit
Pim van Pelt
2022-03-24 12:14:26 +00:00
b43d7903fd
Add a few additional useful functions
Pim van Pelt
2022-03-24 10:45:34 +00:00
ac5b8fcc8f
Simple VPPApi abstraction, which fetches the necessary info from VPP, and a few dumpers
Pim van Pelt
2022-03-23 23:29:19 +00:00
8ac9b50d94
Add some clarification to the reconsiliation algorithm
Pim van Pelt
2022-03-23 23:28:12 +00:00
f37b80c012
Break into three sections
Pim van Pelt
2022-03-23 17:16:29 +00:00
bcc4c8ff05
Merge branch 'main' of github.com:pimvanpelt/vppcfg into main
Pim van Pelt
2022-03-23 17:11:46 +00:00
7390322693
Add first stab approximation of the reconsiliation order
Pim van Pelt
2022-03-23 17:11:34 +00:00
613b4a27c7
Update README.md
Pim van Pelt
2022-03-22 23:03:22 +01:00
df1b1bbbef
Update README.md
Pim van Pelt
2022-03-22 22:58:38 +01:00
c37faecd3f
Buffer output, print when errors occur. Introduce debug/quiet flags
Pim van Pelt
2022-03-22 20:11:32 +00:00
4cb07cf2da
Add -d and -q flags
Pim van Pelt
2022-03-22 19:52:19 +00:00
0ab907f155
Add get_bridgedomains()
Pim van Pelt
2022-03-22 18:57:45 +00:00
27ce2351c7
Cosmetic: use '.. LCP' consistently
Pim van Pelt
2022-03-22 18:49:31 +00:00
97fef9bfd2
Assert get_by_name() with non-existent name returns a tuple of None,None
Pim van Pelt
2022-03-22 18:31:03 +00:00
5ecd1ef22c
Add unit tests for loopbacks; While here, fix a bug in get_by_name(), yaay
Pim van Pelt
2022-03-22 18:02:35 +00:00
36fbbf9b35
Add a full set of get_*_by_name() tests
Pim van Pelt
2022-03-22 17:53:40 +00:00
1e7227a52a
Allow for bridgedomains without any member interfaces
Pim van Pelt
2022-03-22 15:38:43 +00:00
7bf940be0a
Become a bit stricter: do full-line pattern match, and update unit tests to capture the full error output
Pim van Pelt
2022-03-22 15:10:40 +00:00
7303adb74a
Assert is_l2() on sub-ints cannot have address or LCP
Pim van Pelt
2022-03-22 15:02:38 +00:00
077d49cb88
Assert that is_l2() interfaces cannot have LCP or address; Fix consistency on 'be' vs 'have' an LCP.
Pim van Pelt
2022-03-22 14:54:09 +00:00
6688c6b243
Add the case of the ifname being the source of an l2xc to the is_l2() logic1
Pim van Pelt
2022-03-22 14:21:30 +00:00
5ebaf5e005
Add optional filtering of get_lcps() based on type of interface
Pim van Pelt
2022-03-22 14:17:36 +00:00
907412f49c
Fix bug in get_l2xc_interfaces(), and add tests for it
Pim van Pelt
2022-03-22 13:15:21 +00:00
7ae82c297c
Add get_lcps() to enumerate all LCP names in the system
Pim van Pelt
2022-03-22 13:04:56 +00:00
c18f04fa55
Refactor: stop trying to derive implicit LCP names. Make it mandatory and explicitly configured
Pim van Pelt
2022-03-21 11:06:15 +00:00
551b06bb67
Move the output around - first print the unexpected messages, only then fail the assertions
Pim van Pelt
2022-03-21 10:23:49 +00:00
58d0ebe71e
Complete test_qinx now that get_*_by_name() returns tuples
Pim van Pelt
2022-03-21 08:53:40 +00:00
ba22b1aad8
Refactor for *_get_by_name()
Pim van Pelt
2022-03-21 01:18:03 +00:00
5247e3a241
Add the beginning of a test_qinx() suite, will complete after a refactor in an upcoming commit
Pim van Pelt
2022-03-20 23:32:59 +00:00
e44db47989
Add interface.get_qinx_parent_by_name()
Pim van Pelt
2022-03-20 23:10:44 +00:00
c55fe93e16
Add unit tests for bridgedomain - move is_bridge_interface*() functions to validator/bridgedomain.py
Pim van Pelt
2022-03-20 22:41:19 +00:00
47757b702c
Correct name for LCP tests
Pim van Pelt
2022-03-20 22:17:56 +00:00
1f07f7eadf
Add unit tests for bondethernet
Pim van Pelt
2022-03-20 22:17:41 +00:00
31c3d13c12
Isolate LCP into its own tests
Pim van Pelt
2022-03-20 22:04:49 +00:00
14cd365ad3
Move LCP tests to their own test_*py file
Pim van Pelt
2022-03-20 22:01:51 +00:00
459346878a
Move to assertEqual
Pim van Pelt
2022-03-20 21:54:28 +00:00
8445140842
Add unittests for validator/interface.py
Pim van Pelt
2022-03-20 21:49:08 +00:00
e46cf3d3a8
Make the test.errors.count value explicit, update tests which had an implicit count
Pim van Pelt
2022-03-20 19:44:29 +00:00
1ff3ae95cc
Fully move yamltest to unittest framework, assert errors instead of printing them
Pim van Pelt
2022-03-20 19:27:23 +00:00
3291c60d9a
Start refactoring YAML tests into unittest framework
Pim van Pelt
2022-03-20 18:59:40 +00:00
2036795ef1
Move unittest YAML files into their own directory, pending more python unit tests in a followup commit
Pim van Pelt
2022-03-20 16:59:13 +00:00
dbd7bca8f3
Add get_encapsulation; refactor unique_encapsulation to use it. All tests pass.
Pim van Pelt
2022-03-20 16:45:03 +00:00
7a1dc2f326
Test the boundary of valid LCP namelen
Pim van Pelt
2022-03-17 00:37:46 +00:00
343c1097c7
Stop trying to police interface names -- they will be validated by get_by_name()
Pim van Pelt
2022-03-17 00:20:22 +00:00
f921b1721a
Expand autocreated LCP namelen to all possible (dot1q, qin*) scenarios. Allow manually set LCP to be 15char in length
Pim van Pelt
2022-03-17 00:15:18 +00:00
3663a04cde
Bugfix: check sub_iface instead of iface
Pim van Pelt
2022-03-16 23:57:47 +00:00
59cbc8b886
Add description len=64 to avoid runaway strings
Pim van Pelt
2022-03-16 23:23:28 +00:00
6b6207f028
define 'is_l2' the same way VPP does: in a bridge or as an L2XC target.
Pim van Pelt
2022-03-16 23:16:46 +00:00
8a1da516f3
Fix tests for upcoming LCP assertion that intermediate interfaces 'xe0.1000' must exist as an LCP in order for Qin* sub-interfaces 'xe0.1000.1234' to be allowed
Pim van Pelt
2022-03-16 22:43:13 +00:00
ccfb51189a
A few small refactors, using get_by_name() more, casting boolean return values, etc
Pim van Pelt
2022-03-16 22:20:51 +00:00
252fa989b2
Assert VXLAN local/remote is the same address family. Assert VXLAN VNI is unique.
Pim van Pelt
2022-03-15 22:57:09 +00:00
1e5b1e49ad
Assert that an interface cannot l2 cross connect to itself
Pim van Pelt
2022-03-15 22:36:48 +00:00
e7e3958ceb
Assert source/target L2XC are the same MTU
Pim van Pelt
2022-03-15 22:32:55 +00:00
686cd45158
Add first approximation of vxlan_tunnels
Pim van Pelt
2022-03-15 22:21:36 +00:00
05b3c5c157
Small refactor, to allow for more interface types to be added as l2xc targets later
Pim van Pelt
2022-03-15 21:56:29 +00:00
af90b37a33
bugfix: Use sub-interface name
Pim van Pelt
2022-03-15 21:52:44 +00:00
2947bbfd25
Get rid of ' characters in errors
Pim van Pelt
2022-03-15 21:13:42 +00:00
2bbcff2ca0
Also assert that targets of an L2XC do not have an address or LCP
Pim van Pelt
2022-03-15 21:07:47 +00:00
5876465327
A few cosmetic changes in logging
Pim van Pelt
2022-03-15 20:57:11 +00:00
6d3de72c00
A completely empty config is a valid config
Pim van Pelt
2022-03-15 20:52:09 +00:00
c5872880fe
Add l2xc support, including extensive tests to validate correct usage of the feature
Pim van Pelt
2022-03-15 20:45:27 +00:00
b9a7bb697e
Add validator to ensure that bridgedomain interfaces occur in at most one bridgedomain. Ironically, this caught a bug in the bridgedomain5 test, where Gi1/0/0 was added twice.
Pim van Pelt
2022-03-15 19:48:32 +00:00
9d8c201a06
Merge branch 'main' of github.com:pimvanpelt/vppcfg into main
Pim van Pelt
2022-03-14 00:19:32 +00:00
f43d5a5e87
Merge branch 'main' of github.com:pimvanpelt/vppcfg into main
Pim van Pelt
2022-03-14 00:18:51 +00:00
0e293217fd
Merge branch 'main' of github.com:pimvanpelt/vppcfg into main
Pim van Pelt
2022-03-14 00:18:51 +00:00
13f211f27a
Make clearer that 'is not allowed' actually means that the address conflicts with another
Pim van Pelt
2022-03-14 00:17:33 +00:00
a5a58c1261
Make clearer that 'is not allowed' actually means that the address conflicts with another
Pim van Pelt
2022-03-14 00:17:33 +00:00
b6ab172986
Merge branch 'main' of github.com:pimvanpelt/vppcfg into main
Pim van Pelt
2022-03-13 23:50:22 +00:00
bb57ed8e52
IP Address validator
Pim van Pelt
2022-03-13 23:45:40 +00:00
19bbd0e8a3
IP Address validator
Pim van Pelt
2022-03-13 23:45:40 +00:00
3f2b80172c
Add another schema validation test
Pim van Pelt
2022-03-13 21:18:08 +00:00
5c61259edd
Add copyright and license
Pim van Pelt
2022-03-13 21:08:32 +00:00
412ecfdbf7
Add important note :)
Pim van Pelt
2022-03-13 21:06:02 +00:00
9c88e2a0cc
Add a --quiet/-q flag, which only logs warnings and errors
Pim van Pelt
2022-03-13 21:01:59 +00:00