This series adds support to run multiple ovn-controller instances using the same vswitchd instance. This may be used to reuse a single host level vswitchd installation to run multiple CMS (e.g. k8s and openstack), each having its own OVN stack running on a separate integration bridge.
This setup may, in some instances, simplify administration of the system, since the admin no longer needs to maintain separate vswitchd installations (e.g. in separate containers). This is also helpful when running different datapath types for the mixed setup. v1: initial series v2: change tunnel port naming scheme: include "chassis index" instead of its name for source chassis. v2: formatting adjustments. v3: fixed build due to ovs_abort missing arguments. v3: added documentation to CLI and system-id-override file. v3: added documentation for chassis specific db config options. v3: documented the ability to run multiple controllers on the same host, while mentioning that this support is highly experimental. v3: updated NEWS file to include the note about the new experimental issue. v3: rebased. v4: fixed a memory leak in get_chassis_idx. v5: actually fix the leak... v6: fix race condition in new test cases where ssl db configuration was removed before ovn-controller has a chance to read it from db, making it fail to start and process ports v7: addresses Mark's comments from v6, specifically: - 1/7: Clean up allocated index on exit - 1/7: Remove hardcoded 16 with sizeof(CHASSIS_IDX_PREFIX) - 1 - 1/7: Explain in comments why the first chassis uses an empty string index and not “0” - 2/7: Document that requested-chassis should use unique chassis names, not hostnames - 2/7: Document that unique own-bridges should be used for multiple co-hosted controllers - 2/7: Reworked logic for get_chassis_external_value functions to avoid duplication with smap_get_<type> functions - 2/7: Use wait_column in tests - 3/7: Add information about the directory where system-id-override file is located - 3/7: Use FILE * functions from stdio.h instead of Unix lower level equivalents - 3/7: Use wait_column in tests - 4/7: Also validate that CLI takes precedence over override file, not only db - 4/7: Use wait_column in tests - 5/7: - (no changes) - 6/7: Move start_virtual_controller to ovn-macros.at to avoid code duplication - 6/7: Added comments explaining why test cases running two controllers use the same sandbox name for both - 7/7: - (no changes) v8: - 1/7: fixed test case for ovn-chassis-idx population - 1/7: fixed SIGSEGV errors in chassis_cleanup for chassis index v9: - 5/8: fixed tunnel ports cleanup test (it wasn't catching regressions) - 6/8: include "Don't delete patch ports that don't belong to br-int" patch similar to the one for tunnel ports - 8/8: explicitly mention in the documentation that stateful ACLs won't work as-is with the new feature. Ihar Hrachyshka (8): Include "chassis index" into tunnel port name Support ovn-...-<chassis> specific global ovsdb options Allow to override system-id via file Support passing chassis name via CLI Don't touch tunnel ports from a different br-int Don't delete patch ports that don't belong to br-int Add connectivity test for 2 controllers on the same host Document experimental support for co-hosted controllers NEWS | 2 + controller/chassis.c | 280 ++++++++++++++++++++----- controller/chassis.h | 15 +- controller/encaps.c | 76 +++---- controller/encaps.h | 1 - controller/ovn-controller.8.xml | 36 +++- controller/ovn-controller.c | 186 ++++++++++++----- controller/patch.c | 42 +++- controller/patch.h | 2 +- controller/physical.c | 2 +- lib/ovn-util.c | 79 +++++++ lib/ovn-util.h | 26 +++ ovn-nb.xml | 8 + tests/automake.mk | 1 + tests/ovn-macros.at | 36 +++- tests/ovn.at | 360 ++++++++++++++++++++++++++++++++ tests/ovs-macros.at | 2 + 17 files changed, 992 insertions(+), 162 deletions(-) -- 2.38.1 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev