diff --git a/integration/cluster_test.go b/integration/cluster_test.go index 89891a474..80d5b28d2 100644 --- a/integration/cluster_test.go +++ b/integration/cluster_test.go @@ -146,16 +146,7 @@ type cluster struct { Members []*member } -// NewCluster returns an unlaunched cluster of the given size which has been -// set to use static bootstrap. -func NewCluster(t *testing.T, size int) *cluster { - c := &cluster{} - ms := make([]*member, size) - for i := 0; i < size; i++ { - ms[i] = mustNewMember(t, c.name(i)) - } - c.Members = ms - +func fillClusterForMembers(ms []*member, cName string) error { addrs := make([]string, 0) for _, m := range ms { for _, l := range m.PeerListeners { @@ -165,11 +156,26 @@ func NewCluster(t *testing.T, size int) *cluster { clusterStr := strings.Join(addrs, ",") var err error for _, m := range ms { - m.Cluster, err = etcdserver.NewClusterFromString(clusterName, clusterStr) + m.Cluster, err = etcdserver.NewClusterFromString(cName, clusterStr) if err != nil { - t.Fatal(err) + return err } } + return nil +} + +// NewCluster returns an unlaunched cluster of the given size which has been +// set to use static bootstrap. +func NewCluster(t *testing.T, size int) *cluster { + c := &cluster{} + ms := make([]*member, size) + for i := 0; i < size; i++ { + ms[i] = mustNewMember(t, c.name(i)) + } + c.Members = ms + if err := fillClusterForMembers(c.Members, clusterName); err != nil { + t.Fatal(err) + } return c } diff --git a/integration/migration_test.go b/integration/migration_test.go new file mode 100644 index 000000000..639ef1817 --- /dev/null +++ b/integration/migration_test.go @@ -0,0 +1,34 @@ +package integration + +import ( + "github.com/coreos/etcd/pkg/types" + "net" + "os/exec" + "testing" +) + +func TestUpgradeMember(t *testing.T) { + defer afterTest(t) + m := mustNewMember(t, "integration046") + newPeerListeners := make([]net.Listener, 0) + newPeerListeners = append(newPeerListeners, newListenerWithAddr(t, "127.0.0.1:59892")) + m.PeerListeners = newPeerListeners + urls, err := types.NewURLs([]string{"http://127.0.0.1:59892"}) + if err != nil { + t.Fatal(err) + } + m.PeerURLs = urls + m.NewCluster = true + c := &cluster{} + c.Members = []*member{m} + fillClusterForMembers(c.Members, "etcd-cluster") + cmd := exec.Command("cp", "-r", "testdata/integration046_data/conf", "testdata/integration046_data/log", "testdata/integration046_data/snapshot", m.DataDir) + err = cmd.Run() + if err != nil { + t.Fatal(err) + } + + c.Launch(t) + defer c.Terminate(t) + clusterMustProgress(t, c) +} diff --git a/integration/testdata/integration046_data/conf b/integration/testdata/integration046_data/conf new file mode 100644 index 000000000..95106f8b1 --- /dev/null +++ b/integration/testdata/integration046_data/conf @@ -0,0 +1 @@ +{"commitIndex":1,"peers":[]} \ No newline at end of file diff --git a/integration/testdata/integration046_data/log b/integration/testdata/integration046_data/log new file mode 100644 index 000000000..1009d4512 Binary files /dev/null and b/integration/testdata/integration046_data/log differ diff --git a/integration/testdata/integration046_data/snapshot/1_90.ss b/integration/testdata/integration046_data/snapshot/1_90.ss new file mode 100644 index 000000000..6495a9c42 --- /dev/null +++ b/integration/testdata/integration046_data/snapshot/1_90.ss @@ -0,0 +1,2 @@ +ba1abde8 +{"lastIndex":90,"lastTerm":1,"peers":[{"name":"integration046","connectionString":""}],"state":"eyJSb290Ijp7IlBhdGgiOiIvIiwiQ3JlYXRlZEluZGV4IjowLCJNb2RpZmllZEluZGV4IjowLCJFeHBpcmVUaW1lIjoiMDAwMS0wMS0wMVQwMDowMDowMFoiLCJBQ0wiOiIiLCJWYWx1ZSI6IiIsIkNoaWxkcmVuIjp7Il9ldGNkIjp7IlBhdGgiOiIvX2V0Y2QiLCJDcmVhdGVkSW5kZXgiOjEsIk1vZGlmaWVkSW5kZXgiOjEsIkV4cGlyZVRpbWUiOiIwMDAxLTAxLTAxVDAwOjAwOjAwWiIsIkFDTCI6IiIsIlZhbHVlIjoiIiwiQ2hpbGRyZW4iOnsiY29uZmlnIjp7IlBhdGgiOiIvX2V0Y2QvY29uZmlnIiwiQ3JlYXRlZEluZGV4IjoyLCJNb2RpZmllZEluZGV4IjoyLCJFeHBpcmVUaW1lIjoiMDAwMS0wMS0wMVQwMDowMDowMFoiLCJBQ0wiOiIiLCJWYWx1ZSI6IntcImFjdGl2ZVNpemVcIjo5LFwicmVtb3ZlRGVsYXlcIjoxODAwLFwic3luY0ludGVydmFsXCI6NX0iLCJDaGlsZHJlbiI6bnVsbH0sIm1hY2hpbmVzIjp7IlBhdGgiOiIvX2V0Y2QvbWFjaGluZXMiLCJDcmVhdGVkSW5kZXgiOjEsIk1vZGlmaWVkSW5kZXgiOjEsIkV4cGlyZVRpbWUiOiIwMDAxLTAxLTAxVDAwOjAwOjAwWiIsIkFDTCI6IiIsIlZhbHVlIjoiIiwiQ2hpbGRyZW4iOnsiaW50ZWdyYXRpb24wNDYiOnsiUGF0aCI6Ii9fZXRjZC9tYWNoaW5lcy9pbnRlZ3JhdGlvbjA0NiIsIkNyZWF0ZWRJbmRleCI6MSwiTW9kaWZpZWRJbmRleCI6MSwiRXhwaXJlVGltZSI6IjAwMDEtMDEtMDFUMDA6MDA6MDBaIiwiQUNMIjoiIiwiVmFsdWUiOiJldGNkPWh0dHAlM0ElMkYlMkYxMjcuMC4wLjElM0E0MDAxXHUwMDI2cmFmdD1odHRwJTNBJTJGJTJGMTI3LjAuMC4xJTNBNTk4OTIiLCJDaGlsZHJlbiI6bnVsbH19fX19LCJxdXgiOnsiUGF0aCI6Ii9xdXgiLCJDcmVhdGVkSW5kZXgiOjMsIk1vZGlmaWVkSW5kZXgiOjMsIkV4cGlyZVRpbWUiOiIwMDAxLTAxLTAxVDAwOjAwOjAwWiIsIkFDTCI6IiIsIlZhbHVlIjoicXV1eCIsIkNoaWxkcmVuIjpudWxsfX19LCJXYXRjaGVySHViIjp7IkV2ZW50SGlzdG9yeSI6eyJRdWV1ZSI6eyJFdmVudHMiOlt7ImFjdGlvbiI6ImNyZWF0ZSIsIm5vZGUiOnsia2V5IjoiL19ldGNkL21hY2hpbmVzL2ludGVncmF0aW9uMDQ2IiwidmFsdWUiOiJldGNkPWh0dHAlM0ElMkYlMkYxMjcuMC4wLjElM0E0MDAxXHUwMDI2cmFmdD1odHRwJTNBJTJGJTJGMTI3LjAuMC4xJTNBNTk4OTIiLCJtb2RpZmllZEluZGV4IjoxLCJjcmVhdGVkSW5kZXgiOjF9fSx7ImFjdGlvbiI6InNldCIsIm5vZGUiOnsia2V5IjoiL19ldGNkL2NvbmZpZyIsInZhbHVlIjoie1wiYWN0aXZlU2l6ZVwiOjksXCJyZW1vdmVEZWxheVwiOjE4MDAsXCJzeW5jSW50ZXJ2YWxcIjo1fSIsIm1vZGlmaWVkSW5kZXgiOjIsImNyZWF0ZWRJbmRleCI6Mn19LHsiYWN0aW9uIjoic2V0Iiwibm9kZSI6eyJrZXkiOiIvcXV4IiwidmFsdWUiOiJxdXV4IiwibW9kaWZpZWRJbmRleCI6MywiY3JlYXRlZEluZGV4IjozfX0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbF0sIlNpemUiOjMsIkZyb250IjowLCJCYWNrIjozLCJDYXBhY2l0eSI6MTAwMH0sIlN0YXJ0SW5kZXgiOjEsIkxhc3RJbmRleCI6M319LCJDdXJyZW50SW5kZXgiOjMsIlN0YXRzIjp7ImdldHNTdWNjZXNzIjoyMCwiZ2V0c0ZhaWwiOjMsInNldHNTdWNjZXNzIjoyLCJzZXRzRmFpbCI6MCwiZGVsZXRlU3VjY2VzcyI6MCwiZGVsZXRlRmFpbCI6MCwidXBkYXRlU3VjY2VzcyI6MCwidXBkYXRlRmFpbCI6MCwiY3JlYXRlU3VjY2VzcyI6MSwiY3JlYXRlRmFpbCI6MCwiY29tcGFyZUFuZFN3YXBTdWNjZXNzIjowLCJjb21wYXJlQW5kU3dhcEZhaWwiOjAsImNvbXBhcmVBbmREZWxldGVTdWNjZXNzIjowLCJjb21wYXJlQW5kRGVsZXRlRmFpbCI6MCwiZXhwaXJlQ291bnQiOjAsIndhdGNoZXJzIjowfSwiQ3VycmVudFZlcnNpb24iOjJ9","path":"integration046.etcd/snapshot/1_90.ss"} \ No newline at end of file diff --git a/migrate/etcd4.go b/migrate/etcd4.go index cf0a2ee1e..559191a40 100644 --- a/migrate/etcd4.go +++ b/migrate/etcd4.go @@ -8,6 +8,7 @@ import ( pb "github.com/coreos/etcd/etcdserver/etcdserverpb" "github.com/coreos/etcd/pkg/pbutil" + "github.com/coreos/etcd/pkg/types" raftpb "github.com/coreos/etcd/raft/raftpb" "github.com/coreos/etcd/snap" "github.com/coreos/etcd/wal" @@ -125,12 +126,12 @@ func GuessNodeID(nodes map[string]uint64, snap4 *Snapshot4, cfg *Config4, name s if name != "" { log.Printf("Using suggested name %s", name) if val, ok := nodes[name]; ok { - log.Printf("Found ID %d", val) + log.Printf("Found ID %s", types.ID(val)) return val } if snapNodes != nil { if val, ok := snapNodes[name]; ok { - log.Printf("Found ID %d", val) + log.Printf("Found ID %s", types.ID(val)) return val } }