func()

in pkg/lbcontroller/lbcontroller.go [155:190]


func (c *LBController) RemoveIPFromNode(ctx context.Context, nodeName, volumeID string) error {
	node, err := c.nodeLister.Get(nodeName)
	if err != nil {
		if errors.IsNotFound(err) {
			klog.V(5).Infof("Node %q not found, skip RemoveIPFromNode for volume %q", nodeName, volumeID)
			return nil
		}
		return err
	}

	ip, ok := node.Annotations[NodeAnnotation]
	if !ok {
		klog.V(5).Infof("Node %q does not have annotation %q, skip RemoveIPFromNode for volume %q", nodeName, NodeAnnotation, volumeID)
		return nil
	}

	c.mutex.Lock()
	defer c.mutex.Unlock()

	if _, exists := c.ipMap[ip]; !exists {
		klog.V(5).Infof("%q does not exist in LB controller IP map, skip RemoveIPFromNode for volume %q", ip, volumeID)
		return nil
	}

	klog.V(5).Infof("Removing IP annotation %q from node %q for volume %q", ip, nodeName, volumeID)
	nodeCopy := node.DeepCopy()
	delete(nodeCopy.Annotations, NodeAnnotation)
	_, err = c.clientset.CoreV1().Nodes().Update(ctx, nodeCopy, metav1.UpdateOptions{})
	if err != nil {
		return err
	}

	c.ipMap[ip]--
	klog.V(6).Infof("RemoveIPFromNode: For volume %q, node %q, IP updated %q, LB controller IP map %v", volumeID, nodeName, ip, c.ipMap)
	return nil
}