migrate: stop deleting etcd

This commit is contained in:
Barak Michener 2015-02-12 19:35:33 -05:00
parent daf1a913bb
commit 02c52f175f

View File

@ -63,6 +63,24 @@ type node struct {
Children map[string]*node // for directory Children map[string]*node // for directory
} }
func deepCopyNode(n *node, parent *node) *node {
out := &node{
Path: n.Path,
CreatedIndex: n.CreatedIndex,
ModifiedIndex: n.ModifiedIndex,
Parent: parent,
ExpireTime: n.ExpireTime,
ACL: n.ACL,
Value: n.Value,
Children: make(map[string]*node),
}
for k, v := range n.Children {
out.Children[k] = deepCopyNode(v, out)
}
return out
}
func replacePathNames(n *node, s1, s2 string) { func replacePathNames(n *node, s1, s2 string) {
n.Path = path.Clean(strings.Replace(n.Path, s1, s2, 1)) n.Path = path.Clean(strings.Replace(n.Path, s1, s2, 1))
for _, c := range n.Children { for _, c := range n.Children {
@ -142,7 +160,12 @@ func fixEtcd(n *node) {
} }
n.Children["members"].Children[m.ID.String()] = newNode n.Children["members"].Children[m.ID.String()] = newNode
} }
delete(n.Children, "machines")
for k, _ := range n.Children {
if k != "members" {
delete(n.Children, k)
}
}
} }
@ -157,10 +180,11 @@ func mangleRoot(n *node) *node {
} }
newRoot.Children["1"] = n newRoot.Children["1"] = n
etcd := n.Children["_etcd"] etcd := n.Children["_etcd"]
delete(n.Children, "_etcd") newEtcd := deepCopyNode(etcd, newRoot)
replacePathNames(n, "/", "/1/") replacePathNames(n, "/", "/1/")
fixEtcd(etcd) fixEtcd(newEtcd)
newRoot.Children["0"] = etcd newRoot.Children["0"] = newEtcd
newRoot.Children["0"].Parent = newRoot
return newRoot return newRoot
} }