From 3f5bd39ba7e97fe8f77107e7fe9284ab705978d3 Mon Sep 17 00:00:00 2001 From: lut777 Date: Wed, 11 Jan 2023 21:40:32 +0800 Subject: [PATCH] fix: ovnic del old AZ after establish the new as name (#2229) --- Makefile | 4 ++-- pkg/controller/ovn-ic.go | 13 +++++++------ test/e2e/ovn-ic/e2e_test.go | 8 ++++++++ 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index 703942eac0a..af652178388 100644 --- a/Makefile +++ b/Makefile @@ -236,8 +236,8 @@ kind-init-ipv4: kind-clean @$(MAKE) kind-create .PHONY: kind-init-ovn-ic -kind-init-ovn-ic: kind-clean-ovn-ic kind-init-single - @single=true $(MAKE) kind-generate-config +kind-init-ovn-ic: kind-clean-ovn-ic kind-init-ha + @ha=true $(MAKE) kind-generate-config $(call kind_create_cluster,yamls/kind.yaml,kube-ovn1) .PHONY: kind-init-iptables diff --git a/pkg/controller/ovn-ic.go b/pkg/controller/ovn-ic.go index 030d2c83738..12fcede35f0 100644 --- a/pkg/controller/ovn-ic.go +++ b/pkg/controller/ovn-ic.go @@ -106,16 +106,17 @@ func (c *Controller) resyncInterConnection() { } c.ovnLegacyClient.OvnICSbAddress = genHostAddress(cm.Data["ic-db-host"], cm.Data["ic-sb-port"]) - if err := c.RemoveOldChassisInSbDB(); err != nil { - klog.Errorf("failed to remove remote chassis: %v", err) - } - c.ovnLegacyClient.OvnICNbAddress = genHostAddress(cm.Data["ic-db-host"], cm.Data["ic-nb-port"]) klog.Info("start to reestablish ovn-ic") if err := c.establishInterConnection(cm.Data); err != nil { klog.Errorf("failed to reestablish ovn-ic, %v", err) return } + + if err := c.RemoveOldChassisInSbDB(lastIcCm["az-name"]); err != nil { + klog.Errorf("failed to remove remote chassis: %v", err) + } + icEnabled = "true" lastIcCm = cm.Data klog.Info("finish reestablishing ovn-ic") @@ -400,8 +401,8 @@ func (c *Controller) SynRouteToPolicy() { c.syncOneRouteToPolicy(util.OvnICKey, util.OvnICStatic) } -func (c *Controller) RemoveOldChassisInSbDB() error { - azUUID, err := c.ovnLegacyClient.GetAzUUID(lastIcCm["az-name"]) +func (c *Controller) RemoveOldChassisInSbDB(azName string) error { + azUUID, err := c.ovnLegacyClient.GetAzUUID(azName) if err != nil { klog.Errorf("failed to get UUID of AZ %s: %v", lastIcCm["az-name"], err) } diff --git a/test/e2e/ovn-ic/e2e_test.go b/test/e2e/ovn-ic/e2e_test.go index 030737f434b..8af31657612 100644 --- a/test/e2e/ovn-ic/e2e_test.go +++ b/test/e2e/ovn-ic/e2e_test.go @@ -194,6 +194,14 @@ var _ = framework.OrderedDescribe("[group:ovn-ic]", func() { ginkgo.By("Waiting for new az names to be applied") time.Sleep(10 * time.Second) + pods, err := clientSets[0].CoreV1().Pods("kube-system").List(context.TODO(), metav1.ListOptions{LabelSelector: "app=ovs"}) + framework.ExpectNoError(err, "failed to get ovs-ovn pods") + cmd := "ovn-appctl -t ovn-controller inc-engine/recompute" + for _, pod := range pods.Items { + execPodOrDie(frameworks[0].KubeContext, "kube-system", pod.Name, cmd) + } + time.Sleep(2 * time.Second) + ginkgo.By("Ensuring logical switch ts exists in cluster " + clusters[0]) output := execOrDie(frameworks[0].KubeContext, "ko nbctl show ts") for _, az := range azNames {