From 6acecb6046b8ee929582c69831593f34f476bfff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=A5=96=E5=BB=BA?= Date: Mon, 5 Jun 2023 13:16:09 +0800 Subject: [PATCH] kube-ovn-controller: fix subnet update (#2882) --- pkg/controller/init.go | 4 ++-- pkg/controller/subnet.go | 23 +++++++---------------- 2 files changed, 9 insertions(+), 18 deletions(-) diff --git a/pkg/controller/init.go b/pkg/controller/init.go index 2ee4fa47acc..900d645a817 100644 --- a/pkg/controller/init.go +++ b/pkg/controller/init.go @@ -104,7 +104,7 @@ func (c *Controller) initDefaultLogicalSwitch() error { if util.CheckProtocol(c.config.DefaultCIDR) == kubeovnv1.ProtocolDual { subnet := subnet.DeepCopy() subnet.Spec.CIDRBlock = c.config.DefaultCIDR - if err := formatSubnet(subnet, c); err != nil { + if _, err = formatSubnet(subnet, c); err != nil { klog.Errorf("init format subnet %s failed: %v", c.config.DefaultLogicalSwitch, err) return err } @@ -158,7 +158,7 @@ func (c *Controller) initNodeSwitch() error { // single-stack upgrade to dual-stack subnet := subnet.DeepCopy() subnet.Spec.CIDRBlock = c.config.NodeSwitchCIDR - if err := formatSubnet(subnet, c); err != nil { + if _, err = formatSubnet(subnet, c); err != nil { klog.Errorf("init format subnet %s failed: %v", c.config.NodeSwitch, err) return err } diff --git a/pkg/controller/subnet.go b/pkg/controller/subnet.go index c6a832d5c39..bf6fe546b6a 100644 --- a/pkg/controller/subnet.go +++ b/pkg/controller/subnet.go @@ -260,13 +260,13 @@ func (c *Controller) processNextDeleteSubnetWorkItem() bool { return true } -func formatSubnet(subnet *kubeovnv1.Subnet, c *Controller) error { +func formatSubnet(subnet *kubeovnv1.Subnet, c *Controller) (*kubeovnv1.Subnet, error) { var err error changed := false changed, err = checkSubnetChanged(subnet) if err != nil { - return err + return nil, err } if subnet.Spec.Provider == "" { subnet.Spec.Provider = util.OvnProvider @@ -296,7 +296,7 @@ func formatSubnet(subnet *kubeovnv1.Subnet, c *Controller) error { if _, err := c.vlansLister.Get(subnet.Spec.Vlan); err != nil { err = fmt.Errorf("failed to get vlan %s: %s", subnet.Spec.Vlan, err) klog.Error(err) - return err + return nil, err } } } @@ -313,13 +313,13 @@ func formatSubnet(subnet *kubeovnv1.Subnet, c *Controller) error { klog.Infof("format subnet %v, changed %v", subnet.Name, changed) if changed { - _, err = c.config.KubeOvnClient.KubeovnV1().Subnets().Update(context.Background(), subnet, metav1.UpdateOptions{}) + subnet, err = c.config.KubeOvnClient.KubeovnV1().Subnets().Update(context.Background(), subnet, metav1.UpdateOptions{}) if err != nil { klog.Errorf("failed to update subnet %s, %v", subnet.Name, err) - return err + return nil, err } } - return nil + return subnet.DeepCopy(), nil } func genNatOutgoingPolicyRulesStatus(subnet *kubeovnv1.Subnet) error { @@ -642,17 +642,8 @@ func (c *Controller) handleAddOrUpdateSubnet(key string) error { } klog.V(4).Infof("handle add or update subnet %s", cachedSubnet.Name) - subnet := cachedSubnet.DeepCopy() - if err = formatSubnet(subnet, c); err != nil { - return err - } - - subnet, err = c.subnetsLister.Get(key) + subnet, err := formatSubnet(cachedSubnet.DeepCopy(), c) if err != nil { - if k8serrors.IsNotFound(err) { - return nil - } - klog.Errorf("failed to get subnet %s error %v", key, err) return err }