Unverified Commit 6acee2e2 authored by Chris Kim's avatar Chris Kim Committed by GitHub

No-op when etcd member was already removed and use existing name for etcd controller (#4015)

Signed-off-by: 's avatarChris Kim <oats87g@gmail.com>
parent 863512e0
...@@ -17,8 +17,8 @@ func RegisterMemberHandlers(ctx context.Context, etcd *ETCD, nodes controllerv1. ...@@ -17,8 +17,8 @@ func RegisterMemberHandlers(ctx context.Context, etcd *ETCD, nodes controllerv1.
nodeController: nodes, nodeController: nodes,
ctx: ctx, ctx: ctx,
} }
nodes.OnChange(ctx, "managed-etcd-member-controller", e.sync) nodes.OnChange(ctx, "managed-etcd-controller", e.sync)
nodes.OnRemove(ctx, "managed-etcd-member-controller", e.onRemove) nodes.OnRemove(ctx, "managed-etcd-controller", e.onRemove)
} }
var ( var (
...@@ -99,7 +99,19 @@ func (e *etcdMemberHandler) onRemove(key string, node *v1.Node) (*v1.Node, error ...@@ -99,7 +99,19 @@ func (e *etcdMemberHandler) onRemove(key string, node *v1.Node) (*v1.Node, error
logrus.Debugf("Node %s was not labeled etcd node, skipping etcd member removal", key) logrus.Debugf("Node %s was not labeled etcd node, skipping etcd member removal", key)
return node, nil return node, nil
} }
logrus.Infof("Removing etcd member %s from cluster", key)
if removalRequested, ok := node.Annotations[removalAnnotation]; ok {
if strings.ToLower(removalRequested) == "true" {
if removedNodeName, ok := node.Annotations[removedNodeNameAnnotation]; ok {
if len(removedNodeName) > 0 {
// If we received a node to delete that has already been removed via annotation, it will be missing
// the corresponding node name and address annotations.
logrus.Infof("etcd member %s was already removed as member name %s via annotation from the cluster", key, removedNodeName)
return node, nil
}
}
}
}
name, ok := node.Annotations[NodeNameAnnotation] name, ok := node.Annotations[NodeNameAnnotation]
if !ok { if !ok {
return node, fmt.Errorf("node name annotation for node %s not found", key) return node, fmt.Errorf("node name annotation for node %s not found", key)
...@@ -108,6 +120,5 @@ func (e *etcdMemberHandler) onRemove(key string, node *v1.Node) (*v1.Node, error ...@@ -108,6 +120,5 @@ func (e *etcdMemberHandler) onRemove(key string, node *v1.Node) (*v1.Node, error
if !ok { if !ok {
return node, fmt.Errorf("node address annotation for node %s not found", key) return node, fmt.Errorf("node address annotation for node %s not found", key)
} }
return node, e.etcd.RemovePeer(e.ctx, name, address, true) return node, e.etcd.RemovePeer(e.ctx, name, address, true)
} }
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