@@ -36,6 +36,12 @@ import {
36
36
} from '@hashgraph/sdk'
37
37
import * as crypto from 'crypto'
38
38
39
+ /**
40
+ * @typedef {Object } NodeInfo
41
+ * @property {string } nodeName
42
+ * @property {string } accountId
43
+ */
44
+
39
45
/**
40
46
* Defines the core functionalities of 'node' command
41
47
*/
@@ -441,6 +447,7 @@ export class NodeCommand extends BaseCommand {
441
447
task : async ( ctx , task ) => {
442
448
self . configManager . update ( argv )
443
449
await prompts . execute ( task , self . configManager , [
450
+ // TODO expand this list (maybe store in an array constant
444
451
flags . namespace ,
445
452
flags . nodeIDs ,
446
453
flags . releaseTag ,
@@ -548,17 +555,6 @@ export class NodeCommand extends BaseCommand {
548
555
await self . _copyNodeKeys ( tlsKeyFiles , config . stagingKeysDir )
549
556
}
550
557
}
551
- } ,
552
- {
553
- title : 'Prepare config.txt for the network' ,
554
- task : async ( ctx , _ ) => {
555
- // TODO: move this to profile manager, the flags need to go to init and network commands
556
- const config = ctx . config
557
- const configTxtPath = `${ config . stagingDir } /config.txt`
558
- const template = `${ constants . RESOURCES_DIR } /templates/config.template`
559
- const appName = self . configManager . getFlag ( flags . app )
560
- await self . platformInstaller . prepareConfigTxt ( config . nodeIds , configTxtPath , config . releaseTag , config . chainId , template , appName || undefined )
561
- }
562
558
}
563
559
]
564
560
@@ -1122,31 +1118,38 @@ export class NodeCommand extends BaseCommand {
1122
1118
task : async ( ctx , task ) => {
1123
1119
self . configManager . update ( argv )
1124
1120
await prompts . execute ( task , self . configManager , [
1125
- flags . namespace ,
1126
- flags . nodeIDs ,
1127
- flags . releaseTag ,
1121
+ // TODO expand this list
1122
+ flags . app ,
1128
1123
flags . cacheDir ,
1129
1124
flags . chainId ,
1125
+ flags . chartDirectory ,
1126
+ flags . fstChartVersion ,
1130
1127
flags . generateGossipKeys ,
1131
1128
flags . generateTlsKeys ,
1132
- flags . keyFormat
1129
+ flags . keyFormat ,
1130
+ flags . namespace ,
1131
+ flags . nodeIDs ,
1132
+ flags . profileName ,
1133
+ flags . releaseTag
1133
1134
] )
1134
1135
1135
1136
const config = {
1136
- namespace : self . configManager . getFlag ( flags . namespace ) ,
1137
- nodeIds : helpers . parseNodeIds ( self . configManager . getFlag ( flags . nodeIDs ) ) ,
1138
- existingNodeIds : [ ] ,
1139
- releaseTag : self . configManager . getFlag ( flags . releaseTag ) ,
1137
+ appName : self . configManager . getFlag ( flags . app ) ,
1140
1138
cacheDir : self . configManager . getFlag ( flags . cacheDir ) ,
1141
- force : self . configManager . getFlag ( flags . force ) ,
1142
1139
chainId : self . configManager . getFlag ( flags . chainId ) ,
1140
+ chartDir : self . configManager . getFlag ( flags . chartDirectory ) ,
1141
+ curDate : new Date ( ) ,
1142
+ devMode : self . configManager . getFlag ( flags . devMode ) ,
1143
+ existingNodeIds : [ ] ,
1144
+ force : self . configManager . getFlag ( flags . force ) ,
1145
+ fstChartVersion : self . configManager . getFlag ( flags . fstChartVersion ) ,
1143
1146
generateGossipKeys : self . configManager . getFlag ( flags . generateGossipKeys ) ,
1144
1147
generateTlsKeys : self . configManager . getFlag ( flags . generateTlsKeys ) ,
1145
1148
keyFormat : self . configManager . getFlag ( flags . keyFormat ) ,
1146
- devMode : self . configManager . getFlag ( flags . devMode ) ,
1147
- chartDir : self . configManager . getFlag ( flags . chartDirectory ) ,
1148
- curDate : new Date ( ) ,
1149
- fstChartVersion : self . configManager . getFlag ( flags . fstChartVersion )
1149
+ namespace : self . configManager . getFlag ( flags . namespace ) ,
1150
+ nodeIds : helpers . parseNodeIds ( self . configManager . getFlag ( flags . nodeIDs ) ) ,
1151
+ profileName : self . configManager . getFlag ( flags . profileName ) ,
1152
+ releaseTag : self . configManager . getFlag ( flags . releaseTag )
1150
1153
}
1151
1154
1152
1155
await self . initializeSetup ( config , self . configManager , self . k8 )
@@ -1179,32 +1182,48 @@ export class NodeCommand extends BaseCommand {
1179
1182
title : 'Deploy new network node' ,
1180
1183
task : async ( ctx , task ) => {
1181
1184
const values = { hedera : { nodes : [ ] } }
1182
- let maxNum
1185
+ let maxAccountNumber = 0
1186
+ /** @type {Map<string,NodeInfo> } **/
1187
+ const nodeMap = new Map ( )
1188
+
1183
1189
for ( /** @type {NetworkNodeServices } **/ const networkNodeServices of ctx . config . serviceMap . values ( ) ) {
1184
1190
values . hedera . nodes . push ( {
1185
1191
accountId : networkNodeServices . accountId ,
1186
1192
name : networkNodeServices . nodeName
1187
1193
} )
1188
- maxNum = maxNum > AccountId . fromString ( networkNodeServices . accountId ) . num
1189
- ? maxNum
1194
+ maxAccountNumber = maxAccountNumber > AccountId . fromString ( networkNodeServices . accountId ) . num
1195
+ ? maxAccountNumber
1190
1196
: AccountId . fromString ( networkNodeServices . accountId ) . num
1197
+ nodeMap . set ( networkNodeServices . nodeName , {
1198
+ nodeName : networkNodeServices . nodeName ,
1199
+ accountId : networkNodeServices . accountId
1200
+ } )
1191
1201
}
1202
+
1192
1203
for ( const nodeId of ctx . config . nodeIds ) {
1193
1204
const accountId = AccountId . fromString ( values . hedera . nodes [ 0 ] . accountId )
1194
- accountId . num = ++ maxNum
1205
+ accountId . num = ++ maxAccountNumber
1195
1206
values . hedera . nodes . push ( {
1196
1207
accountId : accountId . toString ( ) ,
1197
1208
name : nodeId
1198
1209
} )
1210
+ nodeMap . set ( nodeId , {
1211
+ nodeName : nodeId ,
1212
+ accountId : accountId . toString ( )
1213
+ } )
1199
1214
}
1200
1215
1201
1216
let valuesArg = ''
1202
1217
let index = 0
1218
+
1203
1219
for ( const node of values . hedera . nodes ) {
1204
1220
valuesArg += ` --set "hedera.nodes[${ index } ].accountId=${ node . accountId } " --set "hedera.nodes[${ index } ].name=${ node . name } "`
1205
1221
index ++
1206
1222
}
1207
1223
1224
+ const valuesFilePath = await this . profileManager . prepareValuesForNodeAdd ( ctx . config . profileName , nodeMap )
1225
+ valuesArg += this . prepareValuesFiles ( valuesFilePath )
1226
+
1208
1227
await self . chartManager . upgrade (
1209
1228
ctx . config . namespace ,
1210
1229
constants . FULLSTACK_DEPLOYMENT_CHART ,
@@ -1308,16 +1327,6 @@ export class NodeCommand extends BaseCommand {
1308
1327
await self . _copyNodeKeys ( tlsKeyFiles , config . stagingKeysDir )
1309
1328
}
1310
1329
}
1311
- } ,
1312
- {
1313
- title : 'Prepare config.txt for the network' ,
1314
- task : async ( ctx , _ ) => {
1315
- // TODO: move this to profile manager, the flags need to go to init and network commands
1316
- const config = ctx . config
1317
- const configTxtPath = `${ config . stagingDir } /config.txt`
1318
- const template = `${ constants . RESOURCES_DIR } /templates/config.template`
1319
- await self . platformInstaller . prepareConfigTxt ( config . allNodeIds , configTxtPath , config . releaseTag , config . chainId , template )
1320
- }
1321
1330
}
1322
1331
]
1323
1332
@@ -1577,23 +1586,23 @@ export class NodeCommand extends BaseCommand {
1577
1586
command : 'setup' ,
1578
1587
desc : 'Setup node with a specific version of Hedera platform' ,
1579
1588
builder : y => flags . setCommandFlags ( y ,
1580
- flags . namespace ,
1581
- flags . nodeIDs ,
1582
- flags . releaseTag ,
1583
- flags . generateGossipKeys ,
1584
- flags . generateTlsKeys ,
1589
+ flags . apiPermissionProperties , // TODO move
1590
+ flags . app ,
1591
+ flags . appConfig ,
1592
+ flags . applicationProperties , // TODO move
1593
+ flags . bootstrapProperties , // TODO move
1585
1594
flags . cacheDir ,
1586
1595
flags . chainId ,
1587
1596
flags . force ,
1597
+ flags . generateGossipKeys ,
1598
+ flags . generateTlsKeys ,
1588
1599
flags . keyFormat ,
1589
- flags . applicationProperties ,
1590
- flags . apiPermissionProperties ,
1591
- flags . bootstrapProperties ,
1592
- flags . settingTxt ,
1593
1600
flags . localBuildPath ,
1594
- flags . app ,
1595
- flags . appConfig ,
1596
- flags . log4j2Xml
1601
+ flags . log4j2Xml , // TODO move
1602
+ flags . namespace ,
1603
+ flags . nodeIDs ,
1604
+ flags . releaseTag ,
1605
+ flags . settingTxt // TODO move
1597
1606
) ,
1598
1607
handler : argv => {
1599
1608
nodeCmd . logger . debug ( '==== Running \'node setup\' ===' )
@@ -1717,20 +1726,21 @@ export class NodeCommand extends BaseCommand {
1717
1726
command : 'add' ,
1718
1727
desc : 'Adds a node with a specific version of Hedera platform' ,
1719
1728
builder : y => flags . setCommandFlags ( y ,
1720
- flags . namespace ,
1721
- flags . nodeIDs ,
1722
- flags . releaseTag ,
1723
- flags . generateGossipKeys ,
1724
- flags . generateTlsKeys ,
1729
+ // TODO expand this list?
1730
+ flags . apiPermissionProperties ,
1731
+ flags . applicationProperties ,
1732
+ flags . bootstrapProperties ,
1725
1733
flags . cacheDir ,
1726
1734
flags . chainId ,
1727
1735
flags . force ,
1736
+ flags . generateGossipKeys ,
1737
+ flags . generateTlsKeys ,
1728
1738
flags . keyFormat ,
1729
- flags . applicationProperties ,
1730
- flags . apiPermissionProperties ,
1731
- flags . bootstrapProperties ,
1732
- flags . settingTxt ,
1733
- flags . log4j2Xml
1739
+ flags . log4j2Xml ,
1740
+ flags . namespace ,
1741
+ flags . nodeIDs ,
1742
+ flags . releaseTag ,
1743
+ flags . settingTxt
1734
1744
) ,
1735
1745
handler : argv => {
1736
1746
nodeCmd . logger . debug ( '==== Running \'node add\' ===' )
0 commit comments