Commit 52b16129 authored by CJ Cullen's avatar CJ Cullen

Re-GET nodes during CIDR allocation (to avoid cascading bad resource version).

parent 32d844e5
...@@ -514,14 +514,20 @@ func (nc *NodeController) reconcileNodeCIDRs(nodes *api.NodeList) { ...@@ -514,14 +514,20 @@ func (nc *NodeController) reconcileNodeCIDRs(nodes *api.NodeList) {
} }
for _, node := range nodes.Items { for _, node := range nodes.Items {
if node.Spec.PodCIDR == "" { if node.Spec.PodCIDR == "" {
// Re-GET node (because ours might be stale by now).
n, err := nc.kubeClient.Core().Nodes().Get(node.Name)
if err != nil {
glog.Errorf("Failed to get node %q: %v", node.Name, err)
continue
}
podCIDR, found := availableCIDRs.PopAny() podCIDR, found := availableCIDRs.PopAny()
if !found { if !found {
nc.recordNodeStatusChange(&node, "CIDRNotAvailable") nc.recordNodeStatusChange(n, "CIDRNotAvailable")
continue continue
} }
glog.V(4).Infof("Assigning node %s CIDR %s", node.Name, podCIDR) glog.V(4).Infof("Assigning node %s CIDR %s", n.Name, podCIDR)
node.Spec.PodCIDR = podCIDR n.Spec.PodCIDR = podCIDR
if _, err := nc.kubeClient.Core().Nodes().Update(&node); err != nil { if _, err := nc.kubeClient.Core().Nodes().Update(n); err != nil {
nc.recordNodeStatusChange(&node, "CIDRAssignmentFailed") nc.recordNodeStatusChange(&node, "CIDRAssignmentFailed")
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment