From b0efd5a9c16d3ad41ef1ee40178d5c7f11f892e4 Mon Sep 17 00:00:00 2001 From: hzma Date: Mon, 6 Nov 2023 15:20:57 +0800 Subject: [PATCH] delete check for existing ip cr (#3361) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 马洪贞 --- pkg/controller/init.go | 5 +---- pkg/controller/node.go | 24 ++++++++++-------------- pkg/controller/pod.go | 2 +- pkg/controller/subnet.go | 2 +- 4 files changed, 13 insertions(+), 20 deletions(-) diff --git a/pkg/controller/init.go b/pkg/controller/init.go index 01a88d6bb48..73eb732e1b4 100644 --- a/pkg/controller/init.go +++ b/pkg/controller/init.go @@ -319,9 +319,7 @@ func (c *Controller) InitIPAM() error { return err } - ipsMap := make(map[string]*kubeovnv1.IP, len(ips)) for _, ip := range ips { - ipsMap[ip.Name] = ip // recover sts and kubevirt vm ip, other ip recover in later pod loop if ip.Spec.PodType != "StatefulSet" && ip.Spec.PodType != util.VM { continue @@ -367,8 +365,7 @@ func (c *Controller) InitIPAM() error { if err != nil { klog.Errorf("failed to init pod %s.%s address %s: %v", podName, pod.Namespace, pod.Annotations[fmt.Sprintf(util.IPAddressAnnotationTemplate, podNet.ProviderName)], err) } else { - ipCR := ipsMap[portName] - err = c.createOrUpdateCrdIPs(podName, ip, mac, podNet.Subnet.Name, pod.Namespace, pod.Spec.NodeName, podNet.ProviderName, podType, &ipCR) + err = c.createOrUpdateCrdIPs(podName, ip, mac, podNet.Subnet.Name, pod.Namespace, pod.Spec.NodeName, podNet.ProviderName, podType) if err != nil { klog.Errorf("failed to create/update ips CR %s.%s with ip address %s: %v", podName, pod.Namespace, ip, err) } diff --git a/pkg/controller/node.go b/pkg/controller/node.go index 7ca4a77f60c..3615d6252c9 100644 --- a/pkg/controller/node.go +++ b/pkg/controller/node.go @@ -332,7 +332,7 @@ func (c *Controller) handleAddNode(key string) error { return err } - if err := c.createOrUpdateCrdIPs("", ipStr, mac, c.config.NodeSwitch, "", node.Name, "", "", nil); err != nil { + if err := c.createOrUpdateCrdIPs("", ipStr, mac, c.config.NodeSwitch, "", node.Name, "", ""); err != nil { klog.Errorf("failed to create or update IPs node-%s: %v", key, err) return err } @@ -630,7 +630,7 @@ func (c *Controller) handleUpdateNode(key string) error { return nil } -func (c *Controller) createOrUpdateCrdIPs(podName, ip, mac, subnetName, ns, nodeName, providerName, podType string, existingCR **kubeovnv1.IP) error { +func (c *Controller) createOrUpdateCrdIPs(podName, ip, mac, subnetName, ns, nodeName, providerName, podType string) error { var key, ipName string switch { @@ -647,19 +647,15 @@ func (c *Controller) createOrUpdateCrdIPs(podName, ip, mac, subnetName, ns, node var err error var ipCr *kubeovnv1.IP - if existingCR != nil { - ipCr = *existingCR - } else { - ipCr, err = c.ipsLister.Get(ipName) - if err != nil { - if !k8serrors.IsNotFound(err) { - errMsg := fmt.Errorf("failed to get ip CR %s: %v", ipName, err) - klog.Error(errMsg) - return errMsg - } - // the returned pointer is not nil if the CR does not exist - ipCr = nil + ipCr, err = c.ipsLister.Get(ipName) + if err != nil { + if !k8serrors.IsNotFound(err) { + errMsg := fmt.Errorf("failed to get ip CR %s: %v", ipName, err) + klog.Error(errMsg) + return errMsg } + // the returned pointer is not nil if the CR does not exist + ipCr = nil } v4IP, v6IP := util.SplitStringIP(ip) diff --git a/pkg/controller/pod.go b/pkg/controller/pod.go index e8e5110f589..9a32270f9cf 100644 --- a/pkg/controller/pod.go +++ b/pkg/controller/pod.go @@ -660,7 +660,7 @@ func (c *Controller) reconcileAllocateSubnets(cachedPod, pod *v1.Pod, needAlloca podType := getPodType(pod) podName := c.getNameByPod(pod) - if err := c.createOrUpdateCrdIPs(podName, ipStr, mac, subnet.Name, pod.Namespace, pod.Spec.NodeName, podNet.ProviderName, podType, nil); err != nil { + if err := c.createOrUpdateCrdIPs(podName, ipStr, mac, subnet.Name, pod.Namespace, pod.Spec.NodeName, podNet.ProviderName, podType); err != nil { err = fmt.Errorf("failed to create ips CR %s.%s: %v", podName, pod.Namespace, err) klog.Error(err) return nil, err diff --git a/pkg/controller/subnet.go b/pkg/controller/subnet.go index ef1333c42e5..8e954619239 100644 --- a/pkg/controller/subnet.go +++ b/pkg/controller/subnet.go @@ -1920,7 +1920,7 @@ func (c *Controller) reconcileU2OInterconnectionIP(subnet *kubeovnv1.Subnet) err case kubeovnv1.ProtocolDual: subnet.Status.U2OInterconnectionIP = fmt.Sprintf("%s,%s", v4ip, v6ip) } - if err := c.createOrUpdateCrdIPs(u2oInterconnName, subnet.Status.U2OInterconnectionIP, "", subnet.Name, "default", "", "", "", nil); err != nil { + if err := c.createOrUpdateCrdIPs(u2oInterconnName, subnet.Status.U2OInterconnectionIP, "", subnet.Name, "default", "", "", ""); err != nil { klog.Errorf("failed to create or update IPs of %s : %v", u2oInterconnLrpName, err) return err }