11package cmd
22
33import (
4+ "fmt"
5+
46 "github.com/spf13/cobra"
57
68 "github.com/onflow/flow-go/cmd"
9+ "github.com/onflow/flow-go/cmd/util/cmd/common"
710 model "github.com/onflow/flow-go/model/bootstrap"
811 "github.com/onflow/flow-go/model/flow"
912)
@@ -65,7 +68,11 @@ func finalList(cmd *cobra.Command, args []string) {
6568 validateNodes (localNodes , registeredNodes )
6669
6770 // write node-config.json with the new list of nodes to be used for the `finalize` command
68- writeJSON (model .PathFinallist , model .ToPublicNodeInfoList (localNodes ))
71+ err := common .WriteJSON (model .PathFinallist , flagOutdir , model .ToPublicNodeInfoList (localNodes ))
72+ if err != nil {
73+ log .Fatal ().Err (err ).Msg ("failed to write json" )
74+ }
75+ log .Info ().Msgf ("wrote file %s/%s" , flagOutdir , model .PathFinallist )
6976}
7077
7178func validateNodes (localNodes []model.NodeInfo , registeredNodes []model.NodeInfo ) {
@@ -229,18 +236,25 @@ func checkMismatchingNodes(localNodes []model.NodeInfo, registeredNodes []model.
229236}
230237
231238func assembleInternalNodesWithoutWeight () []model.NodeInfo {
232- privInternals := readInternalNodes ()
239+ privInternals , err := common .ReadInternalNodeInfos (flagInternalNodePrivInfoDir )
240+ if err != nil {
241+ log .Fatal ().Err (err ).Msg ("failed to read internal node infos" )
242+ }
233243 log .Info ().Msgf ("read %v internal private node-info files" , len (privInternals ))
234244
235245 var nodes []model.NodeInfo
236246 for _ , internal := range privInternals {
237247 // check if address is valid format
238- validateAddressFormat ( internal .Address )
248+ common . ValidateAddressFormat ( log , internal .Address )
239249
240250 // validate every single internal node
241- nodeID := validateNodeID (internal .NodeID )
251+ err := common .ValidateNodeID (internal .NodeID )
252+ if err != nil {
253+ log .Fatal ().Err (err ).Msg (fmt .Sprintf ("invalid node ID: %s" , internal .NodeID ))
254+ }
255+
242256 node := model .NewPrivateNodeInfo (
243- nodeID ,
257+ internal . NodeID ,
244258 internal .Role ,
245259 internal .Address ,
246260 flow .DefaultInitialWeight ,
@@ -255,35 +269,50 @@ func assembleInternalNodesWithoutWeight() []model.NodeInfo {
255269}
256270
257271func assemblePartnerNodesWithoutWeight () []model.NodeInfo {
258- partners := readPartnerNodes ()
272+ partners , err := common .ReadPartnerNodeInfos (flagPartnerNodeInfoDir )
273+ if err != nil {
274+ log .Fatal ().Err (err ).Msg ("failed to read partner node infos" )
275+ }
259276 log .Info ().Msgf ("read %v partner node configuration files" , len (partners ))
260277 return createPublicNodeInfo (partners )
261278}
262279
263280func readStakingContractDetails () []model.NodeInfo {
264281 var stakingNodes []model.NodeInfoPub
265- readJSON (flagStakingNodesPath , & stakingNodes )
282+ err := common .ReadJSON (flagStakingNodesPath , & stakingNodes )
283+ if err != nil {
284+ log .Fatal ().Err (err ).Msg ("failed to read json" )
285+ }
266286 return createPublicNodeInfo (stakingNodes )
267287}
268288
269289func createPublicNodeInfo (nodes []model.NodeInfoPub ) []model.NodeInfo {
270290 var publicInfoNodes []model.NodeInfo
271291 for _ , n := range nodes {
272- validateAddressFormat ( n .Address )
292+ common . ValidateAddressFormat ( log , n .Address )
273293
274294 // validate every single partner node
275- nodeID := validateNodeID (n .NodeID )
276- networkPubKey := validateNetworkPubKey (n .NetworkPubKey )
277- stakingPubKey := validateStakingPubKey (n .StakingPubKey )
295+ err := common .ValidateNodeID (n .NodeID )
296+ if err != nil {
297+ log .Fatal ().Err (err ).Msg (fmt .Sprintf ("invalid node ID: %s" , n .NodeID ))
298+ }
299+ err = common .ValidateNetworkPubKey (n .NetworkPubKey )
300+ if err != nil {
301+ log .Fatal ().Err (err ).Msg (fmt .Sprintf ("invalid network public key: %s" , n .NetworkPubKey ))
302+ }
303+ err = common .ValidateStakingPubKey (n .StakingPubKey )
304+ if err != nil {
305+ log .Fatal ().Err (err ).Msg (fmt .Sprintf ("invalid staking public key: %s" , n .StakingPubKey ))
306+ }
278307
279- // all nodes should have equal weight
308+ // all nodes should have equal weight (this might change in the future)
280309 node := model .NewPublicNodeInfo (
281- nodeID ,
310+ n . NodeID ,
282311 n .Role ,
283312 n .Address ,
284313 flow .DefaultInitialWeight ,
285- networkPubKey ,
286- stakingPubKey ,
314+ n . NetworkPubKey ,
315+ n . StakingPubKey ,
287316 )
288317
289318 publicInfoNodes = append (publicInfoNodes , node )
0 commit comments