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

Commit

Permalink
perform weave connect replace on node delete with empty peer list
Browse files Browse the repository at this point in the history
  • Loading branch information
murali-reddy committed Oct 30, 2018
1 parent ea42375 commit f334575
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 0 deletions.
7 changes: 7 additions & 0 deletions api/router.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,17 @@ package api
import (
"fmt"
"net"
"net/url"
)

// Expose calls the router to assign the given IP addr to the weave bridge.
func (client *Client) Expose(ipAddr *net.IPNet) error {
_, err := client.httpVerb("POST", fmt.Sprintf("/expose/%s", ipAddr), nil)
return err
}

// ReplacePeers replace the current set of peers
func (client *Client) ReplacePeers(peers []string) error {
_, err := client.httpVerb("POST", "/connect", url.Values{"replace": {"true"}, "peer": peers})
return err
}
14 changes: 14 additions & 0 deletions prog/kube-utils/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,16 @@ func reclaimPeer(weave weaveClient, cml *configMapAnnotations, storedPeerList *p
return true, err
}

// resetPeers replaces the peers list with empty list of peers
func resetPeers() error {
weave := weaveapi.NewClient(os.Getenv("WEAVE_HTTP_ADDR"), common.Log)
err := weave.ReplacePeers(nil)
if err != nil {
return err
}
return nil
}

// regiesters with Kubernetes API server for node delete events. Node delete event handler
// invokes reclaimRemovedPeers to remove it from IPAM so that IP space is reclaimed
func registerForNodeUpdates(client *kubernetes.Clientset, stopCh <-chan struct{}, nodeName, peerName string) {
Expand All @@ -219,6 +229,10 @@ func registerForNodeUpdates(client *kubernetes.Clientset, stopCh <-chan struct{}
if err != nil {
common.Log.Fatalf("[kube-peers] Error while reclaiming space: %v", err)
}
err = resetPeers()
if err != nil {
common.Log.Fatalf("[kube-peers] Error resetting peer list: %v", err)
}
},
})
informerFactory.WaitForCacheSync(stopCh)
Expand Down

0 comments on commit f334575

Please sign in to comment.