// Removes a node and all children func (me *mockEtcd) deleteNode(node *etcd.Node, parent *etcd.Node, recursive bool) (*etcd.Response, error) { for _, child := range me.nodes { if isChild, directChild := isChild(node, child); isChild { if recursive == false { return nil, me.newError(etcd.ErrorCodeDirNotEmpty, "Key %s not empty", node.Key) } if directChild { me.deleteNode(child, node, true) me.index += 1 node.ModifiedIndex = me.index } } } me.index += 1 resp := &etcd.Response{ Action: "delete", Node: me.copyNode(node, false), Index: me.index, } me.sendEvent(resp) delete(me.nodes, node.Key) return resp, nil }