Add multinode test suite which starts the ovn-ic process. This enables to testing of transit routers created using ovn-ic-nbctl with ovn-fake-multinode.
Signed-off-by: Mairtin O'Loingsigh <[email protected]> --- NEWS | 1 + tests/automake.mk | 29 ++++ tests/multinode-ic-testsuite.at | 27 ++++ tests/multinode-ic.at | 256 ++++++++++++++++++++++++++++++++ tests/multinode-macros.at | 24 +++ 5 files changed, 337 insertions(+) create mode 100644 tests/multinode-ic-testsuite.at create mode 100644 tests/multinode-ic.at diff --git a/NEWS b/NEWS index a4c8557ee..b439a1e65 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,6 @@ Post v25.09.0 ------------- + - Added new testsuite which enables ovn-ic. - Added support for TLS Server Name Indication (SNI) with the new --ssl-server-name option in OVN utilities and daemons. This allows specifying the server name for SNI, which is useful when connecting diff --git a/tests/automake.mk b/tests/automake.mk index 8ae310547..92a357fec 100644 --- a/tests/automake.mk +++ b/tests/automake.mk @@ -7,12 +7,14 @@ EXTRA_DIST += \ $(SYSTEM_USERSPACE_TESTSUITE_AT) \ $(PERF_TESTSUITE_AT) \ $(MULTINODE_TESTSUITE_AT) \ + $(MULTINODE_IC_TESTSUITE_AT) \ $(TESTSUITE) \ $(SYSTEM_DPDK_TESTSUITE) \ $(SYSTEM_KMOD_TESTSUITE) \ $(SYSTEM_USERSPACE_TESTSUITE) \ $(PERF_TESTSUITE) \ $(MULTINODE_TESTSUITE) \ + $(MULTINODE_IC_TESTSUITE) \ tests/atlocal.in \ $(srcdir)/package.m4 \ $(srcdir)/tests/testsuite \ @@ -77,6 +79,12 @@ MULTINODE_TESTSUITE_AT = \ tests/multinode-macros.at \ tests/multinode.at +MULTINODE_IC_TESTSUITE_AT = \ + tests/multinode-bgp-macros.at \ + tests/multinode-ic-testsuite.at \ + tests/multinode-macros.at \ + tests/multinode-ic.at + check_SCRIPTS += tests/atlocal TESTSUITE = $(srcdir)/tests/testsuite @@ -93,6 +101,10 @@ MULTINODE_TESTSUITE = $(srcdir)/tests/multinode-testsuite MULTINODE_TESTSUITE_DIR = $(abs_top_builddir)/tests/multinode-testsuite.dir MULTINODE_TESTSUITE_RESULTS = $(MULTINODE_TESTSUITE_DIR)/results AUTOTEST_PATH = $(ovs_builddir)/utilities:$(ovs_builddir)/vswitchd:$(ovs_builddir)/ovsdb:$(ovs_builddir)/vtep:tests:$(PTHREAD_WIN32_DIR_DLL):$(SSL_DIR):controller-vtep:northd:utilities:controller:ic:br-controller +MULTINODE_IC_TESTSUITE = $(srcdir)/tests/multinode-ic-testsuite +MULTINODE_IC_TESTSUITE_DIR = $(abs_top_builddir)/tests/multinode-ic-testsuite.dir +MULTINODE_IC_TESTSUITE_RESULTS = $(MULTINODE_IC_TESTSUITE_DIR)/results +AUTOTEST_PATH = $(ovs_builddir)/utilities:$(ovs_builddir)/vswitchd:$(ovs_builddir)/ovsdb:$(ovs_builddir)/vtep:tests:$(PTHREAD_WIN32_DIR_DLL):$(SSL_DIR):controller-vtep:northd:utilities:controller:ic export ovs_srcdir export ovs_builddir @@ -233,6 +245,19 @@ check-multinode: all @cat $(MULTINODE_TESTSUITE_RESULTS) @echo @echo "Results can be found in $(MULTINODE_TESTSUITE_RESULTS)" + +check-multinode-ic: all + @mkdir -p $(MULTINODE_IC_TESTSUITE_DIR) + @echo > $(MULTINODE_IC_TESTSUITE_RESULTS) + set $(SHELL) '$(MULTINODE_IC_TESTSUITE)' -C tests AUTOTEST_PATH='$(AUTOTEST_PATH)'; \ + "$$@" $(TESTSUITEFLAGS) -j1 || (test X'$(RECHECK)' = Xyes && "$$@" --recheck) + @echo + @echo '## -------------------- ##' + @echo '## Multinode test Results ##' + @echo '## -------------------- ##' + @cat $(MULTINODE_IC_TESTSUITE_RESULTS) + @echo + @echo "Results can be found in $(MULTINODE_IC_TESTSUITE_RESULTS)" AUTOTEST = $(AUTOM4TE) --language=autotest @@ -267,6 +292,10 @@ $(MULTINODE_TESTSUITE): package.m4 $(MULTINODE_TESTSUITE_AT) $(COMMON_MACROS_AT) $(AM_V_GEN)$(AUTOTEST) -I '$(srcdir)' -o [email protected] [email protected] $(AM_V_at)mv [email protected] $@ +$(MULTINODE_IC_TESTSUITE): package.m4 $(MULTINODE_IC_TESTSUITE_AT) $(COMMON_MACROS_AT) + $(AM_V_GEN)$(AUTOTEST) -I '$(srcdir)' -o [email protected] [email protected] + $(AM_V_at)mv [email protected] $@ + # The `:;' works around a Bash 3.2 bug when the output is not writeable. $(srcdir)/package.m4: $(top_srcdir)/configure.ac $(AM_V_GEN):;{ \ diff --git a/tests/multinode-ic-testsuite.at b/tests/multinode-ic-testsuite.at new file mode 100644 index 000000000..a75cc8b0c --- /dev/null +++ b/tests/multinode-ic-testsuite.at @@ -0,0 +1,27 @@ +AT_INIT + +AT_COPYRIGHT([Copyright (c) 2025 Red Hat, + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at: + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.]) + +m4_ifdef([AT_COLOR_TESTS], [AT_COLOR_TESTS]) +AT_ARG_OPTION([rebuild], [Do not use cached versions of databases]) + +m4_include([tests/ovs-macros.at]) +m4_include([tests/ovsdb-macros.at]) +m4_include([tests/ofproto-macros.at]) +m4_include([tests/ovn-macros.at]) +m4_include([tests/system-common-macros.at]) +m4_include([tests/multinode-macros.at]) + +m4_include([tests/multinode-ic.at]) diff --git a/tests/multinode-ic.at b/tests/multinode-ic.at new file mode 100644 index 000000000..d6a52d882 --- /dev/null +++ b/tests/multinode-ic.at @@ -0,0 +1,256 @@ +AT_BANNER([ovn multinode interconnect system tests using ovn-fake-multinode]) + +AT_SETUP([ovn multinode - Transit Router using basic functionality]) + +# Check that ovn-fake-multinode setup is up and running +check_fake_multinode_setup + +# Delete the multinode NB and OVS resources before starting the test. +cleanup_multinode_resources + +# Network topology +# ┌─────────────────────────────────┐ ┌────────────────────────────────┐ +# │ │ │ │ +# │ ┌───────────────────┐ AZ1 │ │ AZ2 ┌───────────────────┐ │ +# │ │ external │ │ │ │ │ │ +# │ │ │ │ │ │ │ │ +# │ │ 192.168.100.10/24 │ │ │ │ ................. │ │ +# │ │ 1000::10/64 │ │ │ │ │ │ +# │ └─────────┬─────────┘ │ │ └─────────┬─────────┘ │ +# │ │ │ │ │ │ +# │ │ │ │ │ │ +# │ ┌─────────┴─────────┐ │ │ ┌─────────┴─────────┐ │ +# │ │ 192.168.100.1/24 │ │ │ │ 192.168.100.2/24 │ │ +# │ │ 1000::1/64 │ │ │ │ 1000::2/64 │ │ +# │ │ │ │ │ │ │ │ +# │ │ GW │ │ │ │ GW │ │ +# │ │ │ │ │ │ │ │ +# │ │ 100.65.0.1/30 │ │ │ │ 100.65.0.5/30 │ │ +# │ │ 100:65::1/126 │ │ │ │ 100:65::5/126 │ │ +# │ └─────────┬─────────┘ │ │ └───────────────────┘ │ +# │ │ │ │ │ │ +# │ │ Peer ports │ │ │ Peer ports │ +# │ │ │ │ │ │ +# │ ┌─────────┴──────────────────│─────│──────────────────┴─────────┐ │ +# │ │ 100.65.0.2/30 │ │ 100.65.0.6/30 │ │ +# │ │ 100:65::2/126 │ │ 100:65::6/126 │ │ +# │ │ │ │ │ │ +# │ │ │ TR │ │ │ +# │ │ │ │ │ │ +# │ │ 10.100.200.1/24 │ │ 10.100.200.1/24 │ │ +# │ │ 10:200::1/64 │ │ 10:200::1/64 │ │ +# │ └─────────┬──────────────────│─────│────────────────────────────┘ │ +# │ │ │ │ │ │ +# │ │ │ │ │ │ +# │ │ │ │ │ │ +# │ ┌─────────┴──────────────────│─────│────────────────────────────┐ │ +# │ │ │ TS │ │ │ +# │ └─────────┬──────────────────│─────│────────────────────────────┘ │ +# │ │ │ │ │ │ +# │ │ │ │ │ │ +# │ │ │ │ │ │ +# │ ┌─────────┴─────────┐ │ │ ┌─────────┴─────────┐ │ +# │ │ pod10 │ │ │ │ pod20 │ │ +# │ │ │ │ │ │ │ │ +# │ │ 10.100.200.10/24 │ │ │ │ 10.100.200.20/24 │ │ +# │ │ 10:200::10/64 │ │ │ │ 10:200::20/64 │ │ +# │ └───────────────────┘ │ │ └───────────────────┘ │ +# └─────────────────────────────────┘ └────────────────────────────────┘ + +for i in 1 2; do + chassis="ovn-chassis-$i" + multinode_setup_northd $chassis + multinode_setup_ic $chassis +done + +for i in 1 2; do + chassis="ovn-chassis-$i" + ip=$(m_as $chassis ip -4 addr show eth1 | grep inet | awk '{print $2}' | cut -d'/' -f1) + + #multinode_setup_northd $chassis + multinode_setup_controller $chassis $chassis $ip $ip + + check m_as $chassis ovs-vsctl set open . external_ids:ovn-monitor-all=true + check m_as $chassis ovs-vsctl set open . external_ids:ovn-is-interconn=true + + OVS_WAIT_UNTIL([m_as ovn-chassis-1 sleep 1]) + + check m_as $chassis ovn-nbctl ls-add public + + check m_as $chassis ovn-nbctl lsp-add public public-gw + check m_as $chassis ovn-nbctl lsp-set-type public-gw router + check m_as $chassis ovn-nbctl lsp-set-addresses public-gw router + check m_as $chassis ovn-nbctl lsp-set-options public-gw router-port=gw-public + + check m_as $chassis ovn-nbctl lr-add gw + check m_as $chassis ovn-nbctl lrp-add gw gw-public 00:00:00:00:20:00 192.168.100.$i/24 1000::$i/64 + + check m_as $chassis ovn-nbctl set logical_router gw options:chassis=$chassis + + # Add TR and set the same tunnel key for both chassis + check m_as $chassis ovn-nbctl ls-add ts + check m_as $chassis ovn-nbctl set logical_switch ts other_config:requested-tnl-key=10 + + check m_as $chassis ovn-nbctl lsp-add ts ts-tr + check m_as $chassis ovn-nbctl lsp-set-type ts-tr router + check m_as $chassis ovn-nbctl lsp-set-addresses ts-tr router + check m_as $chassis ovn-nbctl lsp-set-options ts-tr router-port=tr-ts + + # Add TS pods, with the same tunnel keys on both sides + check m_as $chassis ovn-nbctl lsp-add ts pod10 + check m_as $chassis ovn-nbctl lsp-set-addresses pod10 "00:00:00:00:10:10 10.100.200.10 10:200::10" + check m_as $chassis ovn-nbctl set logical_switch_port pod10 options:requested-tnl-key=10 + + check m_as $chassis ovn-nbctl lsp-add ts pod20 + check m_as $chassis ovn-nbctl lsp-set-addresses pod20 "00:00:00:00:10:20 10.100.200.20 10:200::20" + check m_as $chassis ovn-nbctl set logical_switch_port pod20 options:requested-tnl-key=20 + + # Add mgmt pod + check m_as $chassis ovn-nbctl lsp-add ts mgmt + check m_as $chassis ovn-nbctl lsp-set-addresses mgmt "00:00:00:00:10:11 10.100.200.11 10:200::11" + check m_as $chassis ovn-nbctl set logical_switch_port mgmt options:requested-tnl-key=11 +done + +check m_as ovn-chassis-1 ovn-ic-nbctl --db=tcp:170.168.0.2:6645 tr-add tr + +check m_as ovn-chassis-1 ovn-nbctl lrp-add tr tr-ts 00:00:00:00:10:00 10.100.200.1/24 10:200::1/64 +check m_as ovn-chassis-1 ovn-nbctl set logical_router tr options:requested-tnl-key=20 +check m_as ovn-chassis-1 ovn-nbctl lrp-set-gateway-chassis tr-ts ovn-chassis-1 + +check m_as ovn-chassis-2 ovn-nbctl lrp-add tr tr-ts 00:00:00:00:10:00 10.100.200.1/24 10:200::1/64 +check m_as ovn-chassis-2 ovn-nbctl set logical_router tr options:requested-tnl-key=20 +check m_as ovn-chassis-2 ovn-nbctl lrp-set-gateway-chassis tr-ts ovn-chassis-2 + +OVS_WAIT_UNTIL([m_as ovn-chassis-1 ovn-nbctl lrp-list tr | grep tr-ts]) +OVS_WAIT_UNTIL([m_as ovn-chassis-2 ovn-nbctl lrp-list tr | grep tr-ts]) + +# Add SNAT for the GW router that corresponds to "gw-tr" LRP IP +check m_as ovn-chassis-1 ovn-nbctl lr-nat-add gw snat 100.65.0.1 192.168.100.0/24 +check m_as ovn-chassis-1 ovn-nbctl lr-nat-add gw snat 100:65::1 1000::/64 +check m_as ovn-chassis-2 ovn-nbctl lr-nat-add gw snat 100.65.0.5 192.168.100.0/24 +check m_as ovn-chassis-2 ovn-nbctl lr-nat-add gw snat 100:65::5 1000::/64 + +# Add peer ports between GW and TR +check m_as ovn-chassis-1 ovn-nbctl lrp-add gw gw-tr 00:00:00:00:30:01 100.65.0.1/30 100:65::1/126 peer=tr-gw +check m_as ovn-chassis-1 ovn-nbctl lrp-add tr tr-gw 00:00:00:00:30:02 100.65.0.2/30 100:65::2/126 peer=gw-tr + +check m_as ovn-chassis-2 ovn-nbctl lrp-add gw gw-tr 00:00:00:00:30:05 100.65.0.5/30 100:65::5/126 peer=tr-gw +check m_as ovn-chassis-2 ovn-nbctl lrp-add tr tr-gw 00:00:00:00:30:06 100.65.0.6/30 100:65::6/126 peer=gw-tr + +# Add routes for the TS subnet +check m_as ovn-chassis-1 ovn-nbctl lr-route-add gw 10.100.200.0/24 100.65.0.2 +check m_as ovn-chassis-1 ovn-nbctl lr-route-add gw 10:200::/64 100:65::2 +check m_as ovn-chassis-2 ovn-nbctl lr-route-add gw 10.100.200.0/24 100.65.0.6 +check m_as ovn-chassis-2 ovn-nbctl lr-route-add gw 10:200::/64 100:65::6 + +# Add LB on TS and condition NAT +check m_as ovn-chassis-1 ovn-nbctl lb-add lb0 172.16.0.5:5656 10.100.200.10:2324 tcp +check m_as ovn-chassis-1 ovn-nbctl ls-lb-add ts lb0 +check m_as ovn-chassis-1 ovn-nbctl --match="eth.dst == 00:00:00:00:10:11" lr-nat-add tr snat 172.16.0.2 10.100.200.0/24 +check m_as ovn-chassis-1 ovn-nbctl set logical_router tr options:ct-commit-all="true" + +# Add mutual remote ports +check m_as ovn-chassis-1 ovn-nbctl lrp-add tr tr-az2 00:00:00:00:30:06 100.65.0.6/30 100:65::6/126 +check m_as ovn-chassis-1 ovn-nbctl set logical_router_port tr-az2 options:requested-chassis=ovn-chassis-2 + +check m_as ovn-chassis-2 ovn-nbctl lrp-add tr tr-az1 00:00:00:00:30:02 100.65.0.2/30 100:65::2/126 +check m_as ovn-chassis-2 ovn-nbctl set logical_router_port tr-az1 options:requested-chassis=ovn-chassis-1 + +# Important set the proper tunnel keys +check m_as ovn-chassis-1 ovn-nbctl set logical_router_port tr-gw options:requested-tnl-key=10 +check m_as ovn-chassis-1 ovn-nbctl set logical_router_port tr-az2 options:requested-tnl-key=20 + +check m_as ovn-chassis-2 ovn-nbctl set logical_router_port tr-gw options:requested-tnl-key=20 +check m_as ovn-chassis-2 ovn-nbctl set logical_router_port tr-az1 options:requested-tnl-key=10 + +check m_as ovn-chassis-1 ovn-nbctl lsp-add public external +check m_as ovn-chassis-1 ovn-nbctl lsp-set-addresses external "00:00:00:00:20:10 192.168.100.10 1000::10" + +# Add mutual chassis +m_as ovn-chassis-1 ovn-sbctl chassis-add ovn-chassis-2 geneve $(m_as ovn-chassis-2 ip -4 addr show eth1 | grep inet | awk '{print $2}' | cut -d'/' -f1) +m_as ovn-chassis-1 ovn-sbctl set chassis ovn-chassis-2 other_config:is-remote=true + +m_as ovn-chassis-2 ovn-sbctl chassis-add ovn-chassis-1 geneve $(m_as ovn-chassis-1 ip -4 addr show eth1 | grep inet | awk '{print $2}' | cut -d'/' -f1) +m_as ovn-chassis-2 ovn-sbctl set chassis ovn-chassis-1 other_config:is-remote=true + +# Configure ports on the transit switch as remotes +check m_as ovn-chassis-1 ovn-nbctl lsp-set-type pod20 remote +check m_as ovn-chassis-1 ovn-nbctl lsp-set-options pod10 requested-chassis=ovn-chassis-1 +check m_as ovn-chassis-1 ovn-nbctl lsp-set-options mgmt requested-chassis=ovn-chassis-1 +check m_as ovn-chassis-1 ovn-nbctl lsp-set-options pod20 requested-chassis=ovn-chassis-2 + +check m_as ovn-chassis-2 ovn-nbctl lsp-set-type pod10 remote +check m_as ovn-chassis-2 ovn-nbctl lsp-set-type mgmt remote +check m_as ovn-chassis-2 ovn-nbctl lsp-set-options pod10 requested-chassis=ovn-chassis-1 +check m_as ovn-chassis-2 ovn-nbctl lsp-set-options mgmt requested-chassis=ovn-chassis-1 +check m_as ovn-chassis-2 ovn-nbctl lsp-set-options pod20 requested-chassis=ovn-chassis-2 + +m_as ovn-chassis-1 /data/create_fake_vm.sh external external 00:00:00:00:20:10 1500 192.168.100.10 24 192.168.100.1 1000::10/64 1000::1 +m_as ovn-chassis-1 /data/create_fake_vm.sh pod10 pod10 00:00:00:00:10:10 1500 10.100.200.10 24 10.100.200.1 10:200::10/64 10:200::1 +m_as ovn-chassis-1 /data/create_fake_vm.sh mgmt mgmt 00:00:00:00:10:11 1500 10.100.200.11 24 10.100.200.1 10:200::11/64 10:200::1 +m_as ovn-chassis-2 /data/create_fake_vm.sh pod20 pod20 00:00:00:00:10:20 1500 10.100.200.20 24 10.100.200.1 10:200::20/64 10:200::1 + +# We cannot use any of the helpers as they assume that there is only single ovn-northd instance running +check m_as ovn-chassis-1 ovn-nbctl --wait=hv sync +OVS_WAIT_UNTIL([test -n "$(m_as ovn-chassis-1 ovn-sbctl --bare --columns _uuid find Port_Binding logical_port=external up=true)"]) +OVS_WAIT_UNTIL([test -n "$(m_as ovn-chassis-1 ovn-sbctl --bare --columns _uuid find Port_Binding logical_port=pod10 up=true)"]) +check m_as ovn-chassis-2 ovn-nbctl --wait=hv sync +OVS_WAIT_UNTIL([test -n "$(m_as ovn-chassis-2 ovn-sbctl --bare --columns _uuid find Port_Binding logical_port=pod20 up=true)"]) + +M_NS_CHECK_EXEC([ovn-chassis-1], [external], [ping -q -c 5 -i 0.3 -w 2 10.100.200.20 | FORMAT_PING], \ +[0], [dnl +5 packets transmitted, 5 received, 0% packet loss, time 0ms +]) + +M_NS_CHECK_EXEC([ovn-chassis-1], [external], [ping -q -c 5 -i 0.3 -w 2 10:200::20 | FORMAT_PING], \ +[0], [dnl +5 packets transmitted, 5 received, 0% packet loss, time 0ms +]) + +M_NS_CHECK_EXEC([ovn-chassis-1], [mgmt], [ip a a 172.16.100.2/24 dev mgmt]) +M_NS_DAEMONIZE([ovn-chassis-1], [pod10], [nc -e /bin/cat -v -l -o server.log 10.100.200.10 2324], [pod10.pid]) +M_START_TCPDUMP([ovn-chassis-1], [-neei pod10-p ip], [pod10]) +M_START_TCPDUMP([ovn-chassis-1], [-neei mgmt-p ip], [mgmt]) + +m_as ovn-chassis-1 sh -c 'echo -e "Hello\nHello" > msg.expected' +check m_as ovn-chassis-1 ovn-nbctl --policy="src-ip" lr-route-add tr 10.100.200.0/24 10.100.200.11 + +check test $(m_as ovn-chassis-1 grep -c "skipping output to input port" \ + /var/log/openvswitch/ovs-vswitchd.log) -eq 0 +check test $(m_as ovn-chassis-2 grep -c "skipping output to input port" \ + /var/log/openvswitch/ovs-vswitchd.log) -eq 0 + +M_NS_CHECK_EXEC([ovn-chassis-1], [mgmt], [sh -c '(echo "Hello"; sleep 3) | nc -s 172.16.100.2 -o client.log 172.16.0.5 5656'], [0], [ignore], [ignore]) +check m_as ovn-chassis-1 cmp server.log msg.expected +check m_as ovn-chassis-1 cmp client.log msg.expected + +echo "Chassis1" +m_as ovn-chassis-1 ovn-sbctl show +m_as ovn-chassis-1 ovn-nbctl show +m_as ovn-chassis-1 ovs-vsctl show + +echo "Chassis2" +a_as ovn-chassis-2 ovn-sbctl show +m_as ovn-chassis-2 ovn-nbctl show +m_as ovn-chassis-2 ovs-vsctl show + +m_as ovn-central-az1 ovn-ic-nbctl tr-del tr + +for i in 1 2; do + chassis="ovn-chassis-$i" + multinode_cleanup_ic $chassis +done + +# Connect the chassis back to the original northd and remove northd per chassis. +for i in 1 2; do + chassis="ovn-chassis-$i" + ip=$(m_as $chassis ip -4 addr show eth1 | grep inet | awk '{print $2}' | cut -d'/' -f1) + + multinode_setup_controller $chassis $chassis $ip "170.168.0.2" + multinode_cleanup_northd $chassis +done + +m_as ovn-chassis-1 killall tcpdump +#cleanup_multinode_resources + +AT_CLEANUP diff --git a/tests/multinode-macros.at b/tests/multinode-macros.at index 487696a62..4a86cef4a 100644 --- a/tests/multinode-macros.at +++ b/tests/multinode-macros.at @@ -142,6 +142,7 @@ check_fake_multinode_setup_by_nodes() { --ovn-northd-ssl-key=${SSL_CERTS_PATH}/ovn-privkey.pem \ --ovn-northd-ssl-cert=${SSL_CERTS_PATH}/ovn-cert.pem \ --ovn-northd-ssl-ca-cert=${SSL_CERTS_PATH}/pki/switchca/cacert.pem" + else REMOTE_PROT=tcp CONTROLLER_SSL_ARGS="" @@ -184,6 +185,9 @@ cleanup_multinode_resources_by_nodes() { for i in $(m_as $c ovs-vsctl --bare --columns name list port | grep patch); do m_as $c ovs-vsctl del-port $i; done + for i in $(m_as $c ip -o link show | awk -F': ' '{print $2}' | grep sw0p | awk -F'@' '{print $1}'); do + m_as $c ip link delete $i; + done done } @@ -217,6 +221,26 @@ multinode_setup_northd() { m_as $c ovn-sbctl set-connection p${REMOTE_PROT}:6642 } +# multinode_cleanup_ic NODE +# +# Removes previously set nothd on specified node +multinode_cleanup_ic() { + c=$1 + # Cleanup existing one + m_as $c /usr/share/ovn/scripts/ovn-ctl stop_ic +} + +# multinode_setup_ic NODE +# +# Sets up ovn_ic on specified node. +multinode_setup_ic() { + c=$1 + + check m_as $c ovn-nbctl set NB_Global . name=$c + m_as $c ovs-vsctl set open_vswitch . external_ids:ovn-is-interconn=true + m_as $c /usr/share/ovn/scripts/ovn-ctl start_ic --ovn-ic-nb-db=tcp:170.168.0.2:6645 --ovn-ic-sb-db=tcp:170.168.0.2:6646 +} + # multinode_setup_controller NODE ENCAP_IP REMOTE_IP [ENCAP_TYPE] # # Sets up controller on specified node. -- 2.51.1 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
