diff --git a/cluster/remove.go b/cluster/remove.go index 3d80eac3..74d944d8 100644 --- a/cluster/remove.go +++ b/cluster/remove.go @@ -24,6 +24,7 @@ type Remover struct { timeout time.Duration control Control client *Client + creds *Credentials log *log.Logger } @@ -38,6 +39,11 @@ func NewRemover(client *Client, timeout time.Duration, control Control) *Remover } } +// SetCredentials sets the credentials for the Remover. +func (r *Remover) SetCredentials(creds *Credentials) { + r.creds = creds +} + // Do executes the node-removal operation. func (r *Remover) Do(id string, confirm bool) error { rn := &command.RemoveNodeRequest{ @@ -53,7 +59,7 @@ func (r *Remover) Do(id string, confirm bool) error { } r.log.Printf("removing node %s from cluster via leader at %s", id, laddr) - if innerErr = r.client.RemoveNode(rn, laddr, nil, r.timeout); innerErr != nil { + if innerErr = r.client.RemoveNode(rn, laddr, r.creds, r.timeout); innerErr != nil { r.log.Printf("failed to remove node %s from cluster via leader at %s: %s", id, laddr, innerErr) return innerErr } diff --git a/cmd/rqlited/main.go b/cmd/rqlited/main.go index b45bcc92..efac3dab 100644 --- a/cmd/rqlited/main.go +++ b/cmd/rqlited/main.go @@ -195,6 +195,7 @@ func main() { if cfg.RaftClusterRemoveOnShutdown { remover := cluster.NewRemover(clstrClient, 5*time.Second, str) + remover.SetCredentials(credentialsFor(credStr, cfg.JoinAs)) log.Printf("initiating removal of this node from cluster before shutdown") if err := remover.Do(cfg.NodeID, true); err != nil { log.Fatalf("failed to remove this node from cluster before shutdown: %s", err.Error())