Skip to content

Commit

Permalink
cni wait for backup pod ip to be created
Browse files Browse the repository at this point in the history
  • Loading branch information
bobz965 committed Aug 16, 2023
1 parent 5e6e472 commit ed5b046
Showing 1 changed file with 25 additions and 17 deletions.
42 changes: 25 additions & 17 deletions pkg/daemon/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -331,25 +331,33 @@ func (csh cniServerHandler) handleAdd(req *restful.Request, resp *restful.Respon

func (csh cniServerHandler) UpdateIPCr(podRequest request.CniRequest, subnet, ip string) error {
ipCrName := ovs.PodNameToPortName(podRequest.PodName, podRequest.PodNamespace, podRequest.Provider)
oriIpCr, err := csh.KubeOvnClient.KubeovnV1().IPs().Get(context.Background(), ipCrName, metav1.GetOptions{})
if err != nil {
errMsg := fmt.Errorf("failed to get ip crd for %s, %v", ip, err)
klog.Error(errMsg)
return errMsg
} else {
ipCr := oriIpCr.DeepCopy()
ipCr.Spec.NodeName = csh.Config.NodeName
ipCr.Spec.AttachIPs = []string{}
ipCr.Labels[subnet] = ""
ipCr.Spec.AttachSubnets = []string{}
ipCr.Spec.AttachMacs = []string{}
if _, err := csh.KubeOvnClient.KubeovnV1().IPs().Update(context.Background(), ipCr, metav1.UpdateOptions{}); err != nil {
errMsg := fmt.Errorf("failed to update ip crd for %s, %v", ip, err)
klog.Error(errMsg)
return errMsg
var err error
for i := 0; i < 20; i++ {
oriIpCr, err := csh.KubeOvnClient.KubeovnV1().IPs().Get(context.Background(), ipCrName, metav1.GetOptions{})
if err != nil {
err = fmt.Errorf("failed to get ip crd for %s, %v", ip, err)
// maybe create a backup pod with previous annotations
klog.Error(err)
} else {
ipCr := oriIpCr.DeepCopy()
ipCr.Spec.NodeName = csh.Config.NodeName
ipCr.Spec.AttachIPs = []string{}
ipCr.Labels[subnet] = ""
ipCr.Spec.AttachSubnets = []string{}
ipCr.Spec.AttachMacs = []string{}
if _, err := csh.KubeOvnClient.KubeovnV1().IPs().Update(context.Background(), ipCr, metav1.UpdateOptions{}); err != nil {
err = fmt.Errorf("failed to update ip crd for %s, %v", ip, err)
klog.Error(err)
} else {
return nil
}
}
if err != nil {
klog.Warning("wait pod ip %s to be ready", ipCrName)
time.Sleep(1 * time.Second)
}
}
return nil
return err
}

func (csh cniServerHandler) handleDel(req *restful.Request, resp *restful.Response) {
Expand Down

0 comments on commit ed5b046

Please sign in to comment.