Skip to content
This repository has been archived by the owner on Jun 20, 2024. It is now read-only.

Commit

Permalink
addressing review comments
Browse files Browse the repository at this point in the history
  • Loading branch information
murali-reddy committed Oct 24, 2018
1 parent df467be commit 4a40380
Showing 1 changed file with 16 additions and 7 deletions.
23 changes: 16 additions & 7 deletions prog/kube-utils/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,8 @@ type weaveClient interface {

// For each of those peers that is no longer listed as a node by
// Kubernetes, remove it from Weave IPAM
func reclaimRemovedPeers(kube kubernetes.Interface, weave weaveClient, cml *configMapAnnotations, myPeerName, myNodeName string) error {
func reclaimRemovedPeers(kube kubernetes.Interface, cml *configMapAnnotations, myPeerName, myNodeName string) error {
weave := weaveapi.NewClient(os.Getenv("WEAVE_HTTP_ADDR"), common.Log)
for loopsWhenNothingChanged := 0; loopsWhenNothingChanged < 3; loopsWhenNothingChanged++ {
if err := cml.Init(); err != nil {
return err
Expand Down Expand Up @@ -209,8 +210,18 @@ func registerForNodeUpdates(client *kubernetes.Clientset, stopCh <-chan struct{}
common.Log.Debugln("registering for updates for node delete events")
nodeInformer.AddEventHandler(cache.ResourceEventHandlerFuncs{
DeleteFunc: func(obj interface{}) {
node := obj.(*v1core.Node)
common.Log.Debugln("[kube-peers] Nodes deleted:", node.Name)
nodeObj, ok := obj.(*v1core.Node)
if !ok {
tombstone, ok := obj.(cache.DeletedFinalStateUnknown)
if !ok {
common.Log.Fatalf("[kube-peers] Couldn't get node object from tombstone: %#v", obj)
}
nodeObj, ok = tombstone.Obj.(*v1core.Node)
if !ok {
common.Log.Fatalf("[kube-peers] Tombstone contained object that is not a Node: %#v", obj)
}
}
common.Log.Debugln("[kube-peers] Nodes deleted:", nodeObj.Name)
config, err := rest.InClusterConfig()
if err != nil {
common.Log.Fatalf("[kube-peers] Could not get cluster config: %v", err)
Expand All @@ -220,14 +231,13 @@ func registerForNodeUpdates(client *kubernetes.Clientset, stopCh <-chan struct{}
common.Log.Fatalf("[kube-peers] Could not make Kubernetes connection: %v", err)
}
cml := newConfigMapAnnotations(configMapNamespace, configMapName, client)
weave := weaveapi.NewClient(os.Getenv("WEAVE_HTTP_ADDR"), common.Log)

// add random delay to avoid all nodes acting on node delete event at the same
// time leading to contention to use `weave-net` configmap
r := rand.Intn(5000)
time.Sleep(time.Duration(r) * time.Millisecond)

err = reclaimRemovedPeers(client, weave, cml, peerName, nodeName)
err = reclaimRemovedPeers(client, cml, peerName, nodeName)
if err != nil {
common.Log.Fatalf("[kube-peers] Error while reclaiming space: %v", err)
}
Expand Down Expand Up @@ -296,8 +306,7 @@ func main() {
}
common.Log.Infoln("[kube-peers] Added myself to peer list", list)

weave := weaveapi.NewClient(os.Getenv("WEAVE_HTTP_ADDR"), common.Log)
err = reclaimRemovedPeers(c, weave, cml, peerName, nodeName)
err = reclaimRemovedPeers(c, cml, peerName, nodeName)
if err != nil {
common.Log.Fatalf("[kube-peers] Error while reclaiming space: %v", err)
}
Expand Down

0 comments on commit 4a40380

Please sign in to comment.