perform weave connect replace on node delete with empty peer list

This commit is contained in:
Murali Reddy committed 2018-10-30 11:54:59 +05:30
1 parent ea423755cc
commit f334575e69
2 files changed
+21

No files matched your search

+7
View File
@@ -3,6 +3,7 @@ package api
import (
"fmt"
"net"
"net/url"
)
// Expose calls the router to assign the given IP addr to the weave bridge.
@@ -10,3 +11,9 @@ 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
View File
@@ -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) {
@@ -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)