Skip to content

Commit 0680097

Browse files
committed
fix(p2p): qri bootstrap addrs config migration
1 parent 27aabf5 commit 0680097

File tree

6 files changed

+171
-9
lines changed

6 files changed

+171
-9
lines changed

config/config.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import (
1818

1919
// CurrentConfigRevision is the latest configuration revision configurations
2020
// that don't match this revision number should be migrated up
21-
const CurrentConfigRevision = 2
21+
const CurrentConfigRevision = 3
2222

2323
// Config encapsulates all configuration details for qri
2424
type Config struct {

config/migrate/migrate.go

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,11 @@ func RunMigrations(streams ioes.IOStreams, cfg *config.Config, shouldRun func()
5151
return err
5252
}
5353
}
54+
if cfg.Revision == 2 {
55+
if err := TwoToThree(cfg); err != nil {
56+
return err
57+
}
58+
}
5459
streams.PrintErr("done!\n")
5560

5661
if errorOnSuccess {
@@ -161,6 +166,48 @@ func oneToTwoConfig(cfg *config.Config) error {
161166
return nil
162167
}
163168

169+
// TwoToThree migrates a configuration from Revision 2 to Revision 3
170+
func TwoToThree(cfg *config.Config) error {
171+
if cfg.P2P != nil {
172+
removes := map[string]bool{
173+
"/ip4/35.239.80.82/tcp/4001/ipfs/QmdpGkbqDYRPCcwLYnEm8oYGz2G9aUZn9WwPjqvqw3XUAc": true, // red
174+
"/ip4/35.225.152.38/tcp/4001/ipfs/QmTRqTLbKndFC2rp6VzpyApxHCLrFV35setF1DQZaRWPVf": true, // orange
175+
"/ip4/35.202.155.225/tcp/4001/ipfs/QmegNYmwHUQFc3v3eemsYUVf3WiSg4RcMrh3hovA5LncJ2": true, // yellow
176+
"/ip4/35.238.10.180/tcp/4001/ipfs/QmessbA6uGLJ7HTwbUJ2niE49WbdPfzi27tdYXdAaGRB4G": true, // green
177+
"/ip4/35.238.105.35/tcp/4001/ipfs/Qmc353gHY5Wx5iHKHPYj3QDqHP4hVA1MpoSsT6hwSyVx3r": true, // blue
178+
"/ip4/35.239.138.186/tcp/4001/ipfs/QmT9YHJF2YkysLqWhhiVTL5526VFtavic3bVueF9rCsjVi": true, // indigo
179+
"/ip4/35.226.44.58/tcp/4001/ipfs/QmQS2ryqZrjJtPKDy9VTkdPwdUSpTi1TdpGUaqAVwfxcNh": true, // violet
180+
}
181+
182+
adds := map[string]bool{}
183+
for _, addr := range config.DefaultP2P().QriBootstrapAddrs {
184+
adds[addr] = true
185+
}
186+
187+
res := []string{}
188+
189+
for _, addr := range cfg.P2P.QriBootstrapAddrs {
190+
if removes[addr] || adds[addr] {
191+
continue
192+
}
193+
res = append(res, addr)
194+
}
195+
196+
res = append(res, config.DefaultP2P().QriBootstrapAddrs...)
197+
198+
cfg.P2P.QriBootstrapAddrs = res
199+
}
200+
201+
cfg.Revision = 3
202+
203+
if err := safeWriteConfig(cfg); err != nil {
204+
rollbackConfigWrite(cfg)
205+
return err
206+
}
207+
208+
return nil
209+
}
210+
164211
func rollbackConfigWrite(cfg *config.Config) {
165212
cfgPath := cfg.Path()
166213
if len(cfgPath) == 0 {

config/migrate/migrate_test.go

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"path/filepath"
1010
"testing"
1111

12+
"github.com/google/go-cmp/cmp"
1213
"github.com/qri-io/ioes"
1314
"github.com/qri-io/qri/config"
1415
"github.com/qri-io/qri/config/migrate"
@@ -53,6 +54,49 @@ func TestOneToTwo(t *testing.T) {
5354
buildrepo.New(ctx, repoPath, cfg)
5455
}
5556

57+
func TestTwoToThree(t *testing.T) {
58+
// setup a repo in the v2 arrangement
59+
dir, err := ioutil.TempDir("", "testTwoToThree")
60+
if err != nil {
61+
t.Fatal(err)
62+
}
63+
defer os.RemoveAll(dir)
64+
repoPath := filepath.Join(dir, "qri")
65+
os.MkdirAll(repoPath, 0774)
66+
67+
input, err := ioutil.ReadFile("testdata/two_to_three/qri_config.yaml")
68+
if err != nil {
69+
t.Fatal(err)
70+
}
71+
72+
ioutil.WriteFile(filepath.Join(repoPath, "config.yaml"), input, 0774)
73+
74+
cfg, err := config.ReadFromFile(filepath.Join(repoPath, "config.yaml"))
75+
if err != nil {
76+
t.Fatal(err)
77+
}
78+
79+
// call TwoToThree
80+
if err := migrate.RunMigrations(ioes.NewStdIOStreams(), cfg, func() bool { return true }, false); err != nil {
81+
t.Error(err)
82+
}
83+
84+
expect := []string{
85+
"/ip4/1.2.3.4/tcp/4001/ipfs/QmTestPersistingManuallyAddedBootstrappers", // should persist unknown
86+
"/ip4/35.231.230.13/tcp/4001/ipfs/QmdpGkbqDYRPCcwLYnEm8oYGz2G9aUZn9WwPjqvqw3XUAc", // red
87+
"/ip4/34.75.40.163/tcp/4001/ipfs/QmTRqTLbKndFC2rp6VzpyApxHCLrFV35setF1DQZaRWPVf", // orange
88+
"/ip4/35.237.172.74/tcp/4001/ipfs/QmegNYmwHUQFc3v3eemsYUVf3WiSg4RcMrh3hovA5LncJ2", // yellow
89+
"/ip4/35.231.155.111/tcp/4001/ipfs/QmessbA6uGLJ7HTwbUJ2niE49WbdPfzi27tdYXdAaGRB4G", // green
90+
"/ip4/35.237.232.64/tcp/4001/ipfs/Qmc353gHY5Wx5iHKHPYj3QDqHP4hVA1MpoSsT6hwSyVx3r", // blue
91+
"/ip4/35.185.20.61/tcp/4001/ipfs/QmT9YHJF2YkysLqWhhiVTL5526VFtavic3bVueF9rCsjVi", // indigo
92+
"/ip4/35.231.246.50/tcp/4001/ipfs/QmQS2ryqZrjJtPKDy9VTkdPwdUSpTi1TdpGUaqAVwfxcNh", // violet
93+
}
94+
95+
if diff := cmp.Diff(cfg.P2P.QriBootstrapAddrs, expect); diff != "" {
96+
t.Errorf("config.p2p.QriBootstrapAddrs result mismatch. (-want +got):%s\n", diff)
97+
}
98+
}
99+
56100
func unzipFile(sourceZip, destDir string) {
57101
r, err := zip.OpenReader(sourceZip)
58102
if err != nil {
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
API:
2+
address: /ip4/127.0.0.1/tcp/2503
3+
allowedorigins:
4+
- electron://local.qri.io
5+
- http://app.qri.io
6+
- https://app.qri.io
7+
disablewebui: false
8+
enabled: true
9+
readonly: false
10+
serveremotetraffic: false
11+
websocketaddress: /ip4/127.0.0.1/tcp/2506
12+
CLI:
13+
colorizeoutput: true
14+
Filesystems:
15+
- config:
16+
path: /Users/test/.qri/ipfs
17+
type: ipfs
18+
- type: local
19+
- type: http
20+
Logging:
21+
levels:
22+
lib: info
23+
qriapi: info
24+
qrip2p: error
25+
P2P:
26+
addrs: null
27+
autoNAT: false
28+
bootstrapaddrs: null
29+
enabled: true
30+
peerid: QmTCc3annoyEniMyz6to8cZLGPbXLh64oVzVMiMBoXp2u9
31+
port: 0
32+
privkey: CAASpwkwggSjAgEAAoIBAQDwntvAyYXW2KjWsttn0EydRgqlIJuITqUhWV41g5+AvEUYwGpFuKYvi5bW28cWUaeFKTAx9i3lX/J+Wq4XSH+yM4Tr+QhvtR0E/hFMU++ZpyBBk/v6RnusIAFwnKYgrrGIoK2o4UPcook1pKF+ptMlnQ6+a8GbijXR4iq8BOCNY9JcaaUXjqQ3cXPTkqeG4QlsReG/ERSUJo+Rx0lOtgI5IGgEisp6XceDsWzjXwTEoGagOsBQPH1KvGivp1myf9Sf1H+7RiswXiOXOmLaLc7VOGyuHtyvXxMP62B00hzuhcZB4nxtN1W2rA+fJ1xz2tSYxUeJV4SZ28hmSgje3FFhAgMBAAECggEBALaLXh3xBMeMkPJouEkW3rjGJVdG2JfdSit1uCITHBO3QRhZCYahYfpaBPI1w+Dry5IbQEP3BrSoSLiRJNfnGXFg4mt+/2Z32W8rLIZiezhvcOovUY96n2Ji2ZTMUsAip+8GLxka5Lfi2wNGRXpnJ3K2pzPRXg0ZGmGDGnaPoKfB5YSIvJGXMr1dt5HrA1gpxXT5wSomWgV9qtaPFWf3HHY9VnzL3I23+q+E4FzkwjNtJy39ANxL9btnE80Xowkwa95em65ixpmqUNcw9skRn0uzkVGQqhjTiqqqxcz+pK0OoFYdpSQTArtMU1KUTgz4LkcvY8H/ljYcCjDK8fm70U0CgYEA+U9yS8dL0UnzCIQsy+9wT7g/9RIOKtE3UcilP6XPkEjPNWdnEYDbkZIXDfOX+XKkDSfx9jzeA785/E3WuZkNEcjaZSVK/QGVphNi8s6W0g/EBMtFCi92QXQRmr9ESGvByCTqo32FdZR1xAVh0/rj4covVyNseDzrBPi3DtM4t3MCgYEA9xO4Zb8bycPM74bEPIeaAvQLP29oJpDqCgr3uVS5AjcduFS+YnBJZoGHQjOb5posCSvkzYy1tow18KRXlA/lB/nBbeKpdOAY+IFLONFOj4EJTXtQ7eERDM9o7QB+mJq+HZxL2ywh3FpMlka0qsX4kF9z56XoSZHtSUvNMmw+ltsCgYBrC0SM6t5P10uFbZL6YS083WSAqibxFXGGKPtiz6PGVKy7RlGHv2cHIs3JTL0E+scbavpF+q5st2+DODyo5eEpsK6s3Q1MgqCpdQt4K2GwgdptIIXdMLG6usZQRi1gVvwWHluspNlnub2y04jEhqXPrYsUA/6vxaA3Oz8GG4TvpwKBgHaMgrxm/tlHVkxTOFLmqVHjcIYmWS2v+GuLKaNF8GMMuPjZyGOJBt7lJVXxV0tFC/32jpjFe+azzanB4LeNDNJP1qx3xeDrKXAK8WG4o94dBq6jjYglpj2kQu78fsGP9cpVVNw7h5+nv/mWwVbzGDmFYyJxq0upddXmRfV8lGdjAoGAGC7BoXWYGi7bAaRFZM48h8mxSEaff0SrD5ryeQ+Uzd2BR36tu3tRL7jbh7iBdb/J3K74UOIYN/XQTqq7JMQvYzVc+uVTWKmh2RNJV6iy3Nbb5T26uOtmMmWJx85tKDKXUbFZlVboKPE2Fpr+GGpPabOQRxi3XSpRCQL6LWwrn8w=
33+
qribootstrapaddrs:
34+
- /ip4/35.239.80.82/tcp/4001/ipfs/QmdpGkbqDYRPCcwLYnEm8oYGz2G9aUZn9WwPjqvqw3XUAc
35+
- /ip4/35.225.152.38/tcp/4001/ipfs/QmTRqTLbKndFC2rp6VzpyApxHCLrFV35setF1DQZaRWPVf
36+
- /ip4/35.202.155.225/tcp/4001/ipfs/QmegNYmwHUQFc3v3eemsYUVf3WiSg4RcMrh3hovA5LncJ2
37+
- /ip4/35.238.10.180/tcp/4001/ipfs/QmessbA6uGLJ7HTwbUJ2niE49WbdPfzi27tdYXdAaGRB4G
38+
- /ip4/35.238.105.35/tcp/4001/ipfs/Qmc353gHY5Wx5iHKHPYj3QDqHP4hVA1MpoSsT6hwSyVx3r
39+
- /ip4/35.239.138.186/tcp/4001/ipfs/QmT9YHJF2YkysLqWhhiVTL5526VFtavic3bVueF9rCsjVi
40+
- /ip4/35.226.44.58/tcp/4001/ipfs/QmQS2ryqZrjJtPKDy9VTkdPwdUSpTi1TdpGUaqAVwfxcNh
41+
- /ip4/1.2.3.4/tcp/4001/ipfs/QmTestPersistingManuallyAddedBootstrappers
42+
Profile:
43+
color: ""
44+
created: "2020-01-15T23:03:22Z"
45+
description: ""
46+
email: brendan+rm_me_1@qri.io
47+
homeurl: ""
48+
id: QmTCc3annoyEniMyz6to8cZLGPbXLh64oVzVMiMBoXp2u9
49+
name: ""
50+
peername: rm_me_1
51+
photo: https://qri-user-images.storage.googleapis.com/1570029806838.png
52+
poster: ""
53+
privkey: CAASpwkwggSjAgEAAoIBAQDwntvAyYXW2KjWsttn0EydRgqlIJuITqUhWV41g5+AvEUYwGpFuKYvi5bW28cWUaeFKTAx9i3lX/J+Wq4XSH+yM4Tr+QhvtR0E/hFMU++ZpyBBk/v6RnusIAFwnKYgrrGIoK2o4UPcook1pKF+ptMlnQ6+a8GbijXR4iq8BOCNY9JcaaUXjqQ3cXPTkqeG4QlsReG/ERSUJo+Rx0lOtgI5IGgEisp6XceDsWzjXwTEoGagOsBQPH1KvGivp1myf9Sf1H+7RiswXiOXOmLaLc7VOGyuHtyvXxMP62B00hzuhcZB4nxtN1W2rA+fJ1xz2tSYxUeJV4SZ28hmSgje3FFhAgMBAAECggEBALaLXh3xBMeMkPJouEkW3rjGJVdG2JfdSit1uCITHBO3QRhZCYahYfpaBPI1w+Dry5IbQEP3BrSoSLiRJNfnGXFg4mt+/2Z32W8rLIZiezhvcOovUY96n2Ji2ZTMUsAip+8GLxka5Lfi2wNGRXpnJ3K2pzPRXg0ZGmGDGnaPoKfB5YSIvJGXMr1dt5HrA1gpxXT5wSomWgV9qtaPFWf3HHY9VnzL3I23+q+E4FzkwjNtJy39ANxL9btnE80Xowkwa95em65ixpmqUNcw9skRn0uzkVGQqhjTiqqqxcz+pK0OoFYdpSQTArtMU1KUTgz4LkcvY8H/ljYcCjDK8fm70U0CgYEA+U9yS8dL0UnzCIQsy+9wT7g/9RIOKtE3UcilP6XPkEjPNWdnEYDbkZIXDfOX+XKkDSfx9jzeA785/E3WuZkNEcjaZSVK/QGVphNi8s6W0g/EBMtFCi92QXQRmr9ESGvByCTqo32FdZR1xAVh0/rj4covVyNseDzrBPi3DtM4t3MCgYEA9xO4Zb8bycPM74bEPIeaAvQLP29oJpDqCgr3uVS5AjcduFS+YnBJZoGHQjOb5posCSvkzYy1tow18KRXlA/lB/nBbeKpdOAY+IFLONFOj4EJTXtQ7eERDM9o7QB+mJq+HZxL2ywh3FpMlka0qsX4kF9z56XoSZHtSUvNMmw+ltsCgYBrC0SM6t5P10uFbZL6YS083WSAqibxFXGGKPtiz6PGVKy7RlGHv2cHIs3JTL0E+scbavpF+q5st2+DODyo5eEpsK6s3Q1MgqCpdQt4K2GwgdptIIXdMLG6usZQRi1gVvwWHluspNlnub2y04jEhqXPrYsUA/6vxaA3Oz8GG4TvpwKBgHaMgrxm/tlHVkxTOFLmqVHjcIYmWS2v+GuLKaNF8GMMuPjZyGOJBt7lJVXxV0tFC/32jpjFe+azzanB4LeNDNJP1qx3xeDrKXAK8WG4o94dBq6jjYglpj2kQu78fsGP9cpVVNw7h5+nv/mWwVbzGDmFYyJxq0upddXmRfV8lGdjAoGAGC7BoXWYGi7bAaRFZM48h8mxSEaff0SrD5ryeQ+Uzd2BR36tu3tRL7jbh7iBdb/J3K74UOIYN/XQTqq7JMQvYzVc+uVTWKmh2RNJV6iy3Nbb5T26uOtmMmWJx85tKDKXUbFZlVboKPE2Fpr+GGpPabOQRxi3XSpRCQL6LWwrn8w=
54+
thumb: ""
55+
twitter: ""
56+
type: peer
57+
updated: "2020-01-15T18:01:36.486248-05:00"
58+
RPC:
59+
address: /ip4/127.0.0.1/tcp/2504
60+
enabled: true
61+
Registry:
62+
location: http://localhost:3100
63+
Remote: null
64+
Remotes: null
65+
Repo:
66+
type: fs
67+
Revision: 2
68+
Stats:
69+
cache:
70+
maxsize: 25600
71+
type: fs

config/p2p.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,13 @@ func DefaultP2P() *P2P {
5959
// One day it would be super nice to bootstrap from a stored history & only
6060
// use these for first-round bootstrapping.
6161
QriBootstrapAddrs: []string{
62-
"/ip4/35.231.230.13/tcp/4001/ipfs/Qmf2p5hQcHn2Xmk7UaVcAS1AWfa9rBCJDjbuKsDHBHyTyq", // red
63-
"/ip4/34.75.40.163/tcp/4001/ipfs/QmRq4aByaHmL8He2Hhu4V4oJa2xp6G95DrZHq9xPqDCfBQ", // orange
64-
"/ip4/35.237.172.74/tcp/4001/ipfs/QmQciAsxw5BsLuyboZf1FrrHHWuF9e4J6CzgsDE6Yegtkz", // yellow
65-
"/ip4/35.231.155.111/tcp/4001/ipfs/QmYhNKGNs4ch4m6njFAN4EHJWYizVuNj8gsipApcd95Aw4", // green
66-
"/ip4/35.237.232.64/tcp/4001/ipfs/QmdvY8c34q6n6Af1rbcNNip41dY4Tufi5C56KVTqeo81Ar", // blue
67-
"/ip4/35.185.20.61/tcp/4001/ipfs/QmbGfe4Pf81jLqbJg9KsketSXfdXZtBfemtSwxma5QZ2jK", // indigo
68-
"/ip4/35.231.246.50/tcp/4001/ipfs/QmeBjgMZjAVk1ChFqqjDM2J6hjE4AaXEJuAGm2qnzUArEf", // violet
62+
"/ip4/35.231.230.13/tcp/4001/ipfs/QmdpGkbqDYRPCcwLYnEm8oYGz2G9aUZn9WwPjqvqw3XUAc", // red
63+
"/ip4/34.75.40.163/tcp/4001/ipfs/QmTRqTLbKndFC2rp6VzpyApxHCLrFV35setF1DQZaRWPVf", // orange
64+
"/ip4/35.237.172.74/tcp/4001/ipfs/QmegNYmwHUQFc3v3eemsYUVf3WiSg4RcMrh3hovA5LncJ2", // yellow
65+
"/ip4/35.231.155.111/tcp/4001/ipfs/QmessbA6uGLJ7HTwbUJ2niE49WbdPfzi27tdYXdAaGRB4G", // green
66+
"/ip4/35.237.232.64/tcp/4001/ipfs/Qmc353gHY5Wx5iHKHPYj3QDqHP4hVA1MpoSsT6hwSyVx3r", // blue
67+
"/ip4/35.185.20.61/tcp/4001/ipfs/QmT9YHJF2YkysLqWhhiVTL5526VFtavic3bVueF9rCsjVi", // indigo
68+
"/ip4/35.231.246.50/tcp/4001/ipfs/QmQS2ryqZrjJtPKDy9VTkdPwdUSpTi1TdpGUaqAVwfxcNh", // violet
6969
},
7070
}
7171
return p2p

config/testdata/simple.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,5 @@ Registry: null
2323
Remote: null
2424
Remotes: null
2525
Repo: null
26-
Revision: 2
26+
Revision: 3
2727
Stats: null

0 commit comments

Comments
 (0)