Skip to content

Commit 12ca463

Browse files
committed
add force for snapshot save, avoid setting flags for signing info
1 parent c6eaa72 commit 12ca463

23 files changed

+477
-689
lines changed

client/client.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,10 @@ type Client interface {
5252
AttachPeer(ctx context.Context, nodeName string) (*rpcpb.AttachPeerResponse, error)
5353
SendOutboundMessage(ctx context.Context, nodeName string, peerID string, op uint32, msgBody []byte) (*rpcpb.SendOutboundMessageResponse, error)
5454
Close() error
55-
SaveSnapshot(ctx context.Context, snapshotName string) (*rpcpb.SaveSnapshotResponse, error)
55+
SaveSnapshot(ctx context.Context, snapshotName string, force bool) (*rpcpb.SaveSnapshotResponse, error)
5656
LoadSnapshot(ctx context.Context, snapshotName string, opts ...OpOption) (*rpcpb.LoadSnapshotResponse, error)
5757
RemoveSnapshot(ctx context.Context, snapshotName string) (*rpcpb.RemoveSnapshotResponse, error)
58-
GetSnapshotNames(ctx context.Context) ([]string, error)
58+
ListSnapshots(ctx context.Context) ([]string, error)
5959
ListSubnets(ctx context.Context) ([]string, error)
6060
ListBlockchains(ctx context.Context) ([]*rpcpb.CustomChainInfo, error)
6161
ListRpcs(ctx context.Context) ([]*rpcpb.BlockchainRpcs, error)
@@ -362,9 +362,9 @@ func (c *client) SendOutboundMessage(ctx context.Context, nodeName string, peerI
362362
})
363363
}
364364

365-
func (c *client) SaveSnapshot(ctx context.Context, snapshotName string) (*rpcpb.SaveSnapshotResponse, error) {
365+
func (c *client) SaveSnapshot(ctx context.Context, snapshotName string, force bool) (*rpcpb.SaveSnapshotResponse, error) {
366366
c.log.Info("save snapshot", zap.String("snapshot-name", snapshotName))
367-
return c.controlc.SaveSnapshot(ctx, &rpcpb.SaveSnapshotRequest{SnapshotName: snapshotName})
367+
return c.controlc.SaveSnapshot(ctx, &rpcpb.SaveSnapshotRequest{SnapshotName: snapshotName, Force: force})
368368
}
369369

370370
func (c *client) LoadSnapshot(ctx context.Context, snapshotName string, opts ...OpOption) (*rpcpb.LoadSnapshotResponse, error) {
@@ -398,8 +398,8 @@ func (c *client) RemoveSnapshot(ctx context.Context, snapshotName string) (*rpcp
398398
return c.controlc.RemoveSnapshot(ctx, &rpcpb.RemoveSnapshotRequest{SnapshotName: snapshotName})
399399
}
400400

401-
func (c *client) GetSnapshotNames(ctx context.Context) ([]string, error) {
402-
c.log.Info("get snapshot names")
401+
func (c *client) ListSnapshots(ctx context.Context) ([]string, error) {
402+
c.log.Info("list snapshots")
403403
resp, err := c.controlc.GetSnapshotNames(ctx, &rpcpb.GetSnapshotNamesRequest{})
404404
if err != nil {
405405
return nil, err

cmd/control/control.go

+14-7
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ func NewCommand() *cobra.Command {
8080
newSaveSnapshotCommand(),
8181
newLoadSnapshotCommand(),
8282
newRemoveSnapshotCommand(),
83-
newGetSnapshotNamesCommand(),
83+
newListSnapshotsCommand(),
8484
newVMIDCommand(),
8585
newListSubnetsCommand(),
8686
newListBlockchainsCommand(),
@@ -105,6 +105,7 @@ var (
105105
reassignPortsIfUsed bool
106106
dynamicPorts bool
107107
networkID uint32
108+
force bool
108109
)
109110

110111
func setLogs() error {
@@ -1198,6 +1199,12 @@ func newSaveSnapshotCommand() *cobra.Command {
11981199
RunE: saveSnapshotFunc,
11991200
Args: cobra.ExactArgs(1),
12001201
}
1202+
cmd.PersistentFlags().BoolVar(
1203+
&force,
1204+
"force",
1205+
false,
1206+
"overwrite snapshot if it already exists",
1207+
)
12011208
return cmd
12021209
}
12031210

@@ -1209,7 +1216,7 @@ func saveSnapshotFunc(_ *cobra.Command, args []string) error {
12091216
defer cli.Close()
12101217

12111218
ctx, cancel := context.WithTimeout(context.Background(), requestTimeout)
1212-
resp, err := cli.SaveSnapshot(ctx, args[0])
1219+
resp, err := cli.SaveSnapshot(ctx, args[0], force)
12131220
cancel()
12141221
if err != nil {
12151222
return err
@@ -1363,24 +1370,24 @@ func removeSnapshotFunc(_ *cobra.Command, args []string) error {
13631370
return nil
13641371
}
13651372

1366-
func newGetSnapshotNamesCommand() *cobra.Command {
1373+
func newListSnapshotsCommand() *cobra.Command {
13671374
return &cobra.Command{
1368-
Use: "get-snapshot-names [options]",
1375+
Use: "list-snapshots [options]",
13691376
Short: "Lists available snapshots.",
1370-
RunE: getSnapshotNamesFunc,
1377+
RunE: listSnapshotsFunc,
13711378
Args: cobra.ExactArgs(0),
13721379
}
13731380
}
13741381

1375-
func getSnapshotNamesFunc(*cobra.Command, []string) error {
1382+
func listSnapshotsFunc(*cobra.Command, []string) error {
13761383
cli, err := newClient()
13771384
if err != nil {
13781385
return err
13791386
}
13801387
defer cli.Close()
13811388

13821389
ctx, cancel := context.WithTimeout(context.Background(), requestTimeout)
1383-
snapshotNames, err := cli.GetSnapshotNames(ctx)
1390+
snapshotNames, err := cli.ListSnapshots(ctx)
13841391
cancel()
13851392
if err != nil {
13861393
return err

go.mod

+8-9
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ require (
1919
golang.org/x/exp v0.0.0-20231127185646-65229373498e
2020
golang.org/x/mod v0.14.0
2121
golang.org/x/sync v0.6.0
22-
google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80
23-
google.golang.org/grpc v1.62.0
22+
google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237
23+
google.golang.org/grpc v1.64.0
2424
google.golang.org/protobuf v1.33.0
2525
)
2626

@@ -59,7 +59,7 @@ require (
5959
github.com/go-stack/stack v1.8.1 // indirect
6060
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect
6161
github.com/gogo/protobuf v1.3.2 // indirect
62-
github.com/golang/protobuf v1.5.3 // indirect
62+
github.com/golang/protobuf v1.5.4 // indirect
6363
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect
6464
github.com/google/btree v1.1.2 // indirect
6565
github.com/google/go-cmp v0.6.0 // indirect
@@ -130,16 +130,15 @@ require (
130130
go.opentelemetry.io/otel/trace v1.22.0 // indirect
131131
go.opentelemetry.io/proto/otlp v1.0.0 // indirect
132132
go.uber.org/mock v0.4.0 // indirect
133-
golang.org/x/crypto v0.18.0 // indirect
134-
golang.org/x/net v0.20.0 // indirect
135-
golang.org/x/sys v0.16.0 // indirect
136-
golang.org/x/term v0.16.0 // indirect
133+
golang.org/x/crypto v0.21.0 // indirect
134+
golang.org/x/net v0.22.0 // indirect
135+
golang.org/x/sys v0.18.0 // indirect
136+
golang.org/x/term v0.18.0 // indirect
137137
golang.org/x/text v0.14.0 // indirect
138138
golang.org/x/time v0.3.0 // indirect
139139
golang.org/x/tools v0.16.0 // indirect
140140
gonum.org/v1/gonum v0.11.0 // indirect
141-
google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect
142-
google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect
141+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect
143142
gopkg.in/ini.v1 v1.67.0 // indirect
144143
gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect
145144
gopkg.in/yaml.v2 v2.4.0 // indirect

go.sum

+16-18
Original file line numberDiff line numberDiff line change
@@ -248,8 +248,8 @@ github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw
248248
github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
249249
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
250250
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
251-
github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
252-
github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
251+
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
252+
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
253253
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
254254
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk=
255255
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
@@ -626,8 +626,8 @@ golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm
626626
golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
627627
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
628628
golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
629-
golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc=
630-
golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg=
629+
golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA=
630+
golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
631631
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
632632
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
633633
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -712,8 +712,8 @@ golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qx
712712
golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
713713
golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
714714
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
715-
golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo=
716-
golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY=
715+
golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc=
716+
golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
717717
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
718718
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
719719
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -801,12 +801,12 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc
801801
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
802802
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
803803
golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
804-
golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU=
805-
golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
804+
golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
805+
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
806806
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
807807
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
808-
golang.org/x/term v0.16.0 h1:m+B6fahuftsE9qjo0VWp2FW0mB3MTJvR0BaMQrq0pmE=
809-
golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY=
808+
golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8=
809+
golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58=
810810
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
811811
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
812812
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -953,12 +953,10 @@ google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6D
953953
google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
954954
google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
955955
google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24=
956-
google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ=
957-
google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro=
958-
google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 h1:Lj5rbfG876hIAYFjqiJnPHfhXbv+nzTWfm04Fg/XSVU=
959-
google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA=
960-
google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 h1:AjyfHzEPEFp/NpvfN5g+KDla3EMojjhRVZc1i7cj+oM=
961-
google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s=
956+
google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 h1:RFiFrvy37/mpSpdySBDrUdipW/dHwsRwh3J3+A9VgT4=
957+
google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237/go.mod h1:Z5Iiy3jtmioajWHDGFk7CeugTyHtPvMHA4UTmUkyalE=
958+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc=
959+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY=
962960
google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
963961
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
964962
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
@@ -977,8 +975,8 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv
977975
google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=
978976
google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
979977
google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
980-
google.golang.org/grpc v1.62.0 h1:HQKZ/fa1bXkX1oFOvSjmZEUL8wLSaZTjCcLAlmZRtdk=
981-
google.golang.org/grpc v1.62.0/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE=
978+
google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY=
979+
google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg=
982980
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
983981
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
984982
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

local/helpers.go

+6-4
Original file line numberDiff line numberDiff line change
@@ -45,19 +45,19 @@ func writeFiles(networkID uint32, genesis []byte, nodeRootDir string, nodeConfig
4545
}
4646
files := []file{
4747
{
48-
flagValue: filepath.Join(nodeRootDir, "staking", stakingKeyFileName),
48+
flagValue: "",
4949
path: filepath.Join(nodeRootDir, "staking", stakingKeyFileName),
5050
pathKey: config.StakingTLSKeyPathKey,
5151
contents: []byte(nodeConfig.StakingKey),
5252
},
5353
{
54-
flagValue: filepath.Join(nodeRootDir, "staking", stakingCertFileName),
54+
flagValue: "",
5555
path: filepath.Join(nodeRootDir, "staking", stakingCertFileName),
5656
pathKey: config.StakingCertPathKey,
5757
contents: []byte(nodeConfig.StakingCert),
5858
},
5959
{
60-
flagValue: filepath.Join(nodeRootDir, "staking", stakingSigningKeyFileName),
60+
flagValue: "",
6161
path: filepath.Join(nodeRootDir, "staking", stakingSigningKeyFileName),
6262
pathKey: config.StakingSignerKeyPathKey,
6363
contents: decodedStakingSigningKey,
@@ -73,7 +73,9 @@ func writeFiles(networkID uint32, genesis []byte, nodeRootDir string, nodeConfig
7373
}
7474
flags := map[string]string{}
7575
for _, f := range files {
76-
flags[f.pathKey] = f.flagValue
76+
if f.flagValue != "" {
77+
flags[f.pathKey] = f.flagValue
78+
}
7779
if err := createFileAndWrite(f.path, f.contents); err != nil {
7880
return nil, fmt.Errorf("couldn't write file at %q: %w", f.path, err)
7981
}

local/network.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ const (
4444
defaultNodeNamePrefix = "node"
4545
configFileName = "config.json"
4646
upgradeConfigFileName = "upgrade.json"
47-
stakingKeyFileName = "staking.key"
48-
stakingCertFileName = "staking.crt"
47+
stakingKeyFileName = "staker.key"
48+
stakingCertFileName = "staker.crt"
4949
stakingSigningKeyFileName = "signer.key"
5050
genesisFileName = "genesis.json"
5151
stopTimeout = 30 * time.Second
@@ -294,15 +294,15 @@ func loadDefaultNetworkFiles() (map[string]interface{}, []byte, []*utils.NodeKey
294294
nodeKeys := []*utils.NodeKeys{}
295295
for i := 0; i < constants.DefaultNumNodes; i++ {
296296
nodeDir := fmt.Sprintf("node%d", i+1)
297-
stakingKey, err := fs.ReadFile(configsDir, filepath.Join(nodeDir, "staking.key"))
297+
stakingKey, err := fs.ReadFile(configsDir, filepath.Join(nodeDir, stakingKeyFileName))
298298
if err != nil {
299299
return nil, nil, nil, err
300300
}
301-
stakingCert, err := fs.ReadFile(configsDir, filepath.Join(nodeDir, "staking.crt"))
301+
stakingCert, err := fs.ReadFile(configsDir, filepath.Join(nodeDir, stakingCertFileName))
302302
if err != nil {
303303
return nil, nil, nil, err
304304
}
305-
blsKey, err := fs.ReadFile(configsDir, filepath.Join(nodeDir, "signer.key"))
305+
blsKey, err := fs.ReadFile(configsDir, filepath.Join(nodeDir, stakingSigningKeyFileName))
306306
if err != nil {
307307
return nil, nil, nil, err
308308
}

local/snapshot.go

+22-8
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ func (ln *localNetwork) persistNetwork() error {
173173

174174
// Save network snapshot
175175
// Network is stopped in order to do a safe preservation
176-
func (ln *localNetwork) SaveSnapshot(ctx context.Context, snapshotName string) (string, error) {
176+
func (ln *localNetwork) SaveSnapshot(ctx context.Context, snapshotName string, force bool) (string, error) {
177177
ln.lock.Lock()
178178
defer ln.lock.Unlock()
179179

@@ -185,7 +185,11 @@ func (ln *localNetwork) SaveSnapshot(ctx context.Context, snapshotName string) (
185185
}
186186
// check if snapshot already exists
187187
snapshotDir := filepath.Join(ln.snapshotsDir, snapshotPrefix+snapshotName)
188+
exists := false
188189
if _, err := os.Stat(snapshotDir); err == nil {
190+
exists = true
191+
}
192+
if !force && exists {
189193
return "", fmt.Errorf("snapshot %q already exists", snapshotName)
190194
}
191195
if err := ln.persistNetwork(); err != nil {
@@ -195,6 +199,10 @@ func (ln *localNetwork) SaveSnapshot(ctx context.Context, snapshotName string) (
195199
if err := ln.stop(ctx); err != nil {
196200
return "", err
197201
}
202+
// remove if force save
203+
if force && exists {
204+
ln.RemoveSnapshot(snapshotName)
205+
}
198206
// copy all info
199207
if err := dircopy.Copy(ln.rootDir, snapshotDir); err != nil {
200208
return "", fmt.Errorf("failure saving data dir %s: %w", ln.rootDir, err)
@@ -269,14 +277,20 @@ func (ln *localNetwork) loadSnapshot(
269277
return err
270278
}
271279
}
272-
// load data dir
280+
// load snapshot dir
281+
if err := dircopy.Copy(snapshotDir, ln.rootDir); err != nil {
282+
return fmt.Errorf("failure loading snapshot root dir: %w", err)
283+
}
284+
// configure each node data dir
273285
for _, nodeConfig := range networkConfig.NodeConfigs {
274-
sourceDataDir := filepath.Join(snapshotDir, nodeConfig.Name)
275-
targetDataDir := filepath.Join(ln.rootDir, nodeConfig.Name)
276-
if err := dircopy.Copy(sourceDataDir, targetDataDir); err != nil {
277-
return fmt.Errorf("failure loading node %q data dir: %w", nodeConfig.Name, err)
278-
}
279-
nodeConfig.Flags[config.DataDirKey] = targetDataDir
286+
/*
287+
sourceDataDir := filepath.Join(snapshotDir, nodeConfig.Name)
288+
targetDataDir := filepath.Join(ln.rootDir, nodeConfig.Name)
289+
if err := dircopy.Copy(sourceDataDir, targetDataDir); err != nil {
290+
return fmt.Errorf("failure loading node %q data dir: %w", nodeConfig.Name, err)
291+
}
292+
*/
293+
nodeConfig.Flags[config.DataDirKey] = filepath.Join(ln.rootDir, nodeConfig.Name)
280294
}
281295
// replace binary path
282296
if binaryPath != "" {

network/network.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ type Network interface {
100100
// Save network snapshot
101101
// Network is stopped in order to do a safe preservation
102102
// Returns the full local path to the snapshot dir
103-
SaveSnapshot(context.Context, string) (string, error)
103+
SaveSnapshot(context.Context, string, bool) (string, error)
104104
// Remove network snapshot
105105
RemoveSnapshot(string) error
106106
// Get name of available snapshots

0 commit comments

Comments
 (0)