diff --git a/src/commands/flags.ts b/src/commands/flags.ts index ac84e0d09..8b0d46aa5 100644 --- a/src/commands/flags.ts +++ b/src/commands/flags.ts @@ -768,6 +768,16 @@ export const deploymentClusters: CommandFlag = { } } +export const pinger: CommandFlag = { + constName: 'pinger', + name: 'pinger', + definition: { + describe: 'Enable Pinger service in the Mirror node monitor', + defaultValue: false, + type: 'boolean' + } +} + //* ------------- Node Proxy Certificates ------------- !// export const grpcTlsCertificatePath: CommandFlag = { @@ -889,6 +899,7 @@ export const allFlags: CommandFlag[] = [ privateKey, profileFile, profileName, + pinger, relayReleaseTag, releaseTag, replicaCount, diff --git a/src/commands/mirror_node.ts b/src/commands/mirror_node.ts index 7de1fe1be..b7b760e59 100644 --- a/src/commands/mirror_node.ts +++ b/src/commands/mirror_node.ts @@ -57,7 +57,8 @@ export class MirrorNodeCommand extends BaseCommand { flags.quiet, flags.tlsClusterIssuerType, flags.valuesFile, - flags.mirrorNodeVersion + flags.mirrorNodeVersion, + flags.pinger ] } @@ -147,7 +148,8 @@ export class MirrorNodeCommand extends BaseCommand { chartPath: string valuesArg: string mirrorNodeVersion: string - getUnusedConfigs: () => string[] + getUnusedConfigs: () => string[], + pinger: boolean } interface Context { @@ -171,7 +173,8 @@ export class MirrorNodeCommand extends BaseCommand { flags.hederaExplorerVersion, flags.tlsClusterIssuerType, flags.valuesFile, - flags.mirrorNodeVersion + flags.mirrorNodeVersion, + flags.pinger ]) await prompts.execute(task, self.configManager, MirrorNodeCommand.DEPLOY_FLAGS_LIST) @@ -186,6 +189,20 @@ export class MirrorNodeCommand extends BaseCommand { ctx.config.valuesArg += this.prepareValuesFiles(constants.MIRROR_NODE_VALUES_FILE) + if (ctx.config.pinger) { + const startAccId = constants.HEDERA_NODE_ACCOUNT_ID_START + const networkPods = await this.k8.getPodsByLabel(['solo.hedera.com/type=network-node']) + + if (networkPods.length) { + const pod = networkPods[0] + ctx.config.valuesArg += ` --set monitor.config.hedera.mirror.monitor.nodes.0.accountId=${startAccId}` + ctx.config.valuesArg += ` --set monitor.config.hedera.mirror.monitor.nodes.0.host=${pod.status.podIP}` + + ctx.config.valuesArg += ` --set monitor.config.hedera.mirror.monitor.operator.accountId=${constants.OPERATOR_ID}` + ctx.config.valuesArg += ` --set monitor.config.hedera.mirror.monitor.operator.privateKey=${constants.OPERATOR_KEY}` + } + } + if (!await self.k8.hasNamespace(ctx.config.namespace)) { throw new SoloError(`namespace ${ctx.config.namespace} does not exist`) } diff --git a/src/commands/network.ts b/src/commands/network.ts index 5e7ed9fdf..93d8cbc16 100644 --- a/src/commands/network.ts +++ b/src/commands/network.ts @@ -567,8 +567,8 @@ export class NetworkCommand extends BaseCommand { config.namespace, constants.SOLO_DEPLOYMENT_CHART, constants.SOLO_TESTING_CHART_URL + constants.SOLO_DEPLOYMENT_CHART, - config.valuesArg, - config.soloChartVersion + config.soloChartVersion, + config.valuesArg ) } }, diff --git a/src/commands/node/tasks.ts b/src/commands/node/tasks.ts index cd5e1bc49..5624ebb70 100644 --- a/src/commands/node/tasks.ts +++ b/src/commands/node/tasks.ts @@ -1236,8 +1236,8 @@ export class NodeCommandTasks { await self.chartManager.upgrade( config.namespace, constants.SOLO_DEPLOYMENT_CHART, constants.SOLO_TESTING_CHART_URL + constants.SOLO_DEPLOYMENT_CHART, - valuesArg, - config.soloChartVersion + config.soloChartVersion, + valuesArg ) }, skip) } diff --git a/src/core/chart_manager.ts b/src/core/chart_manager.ts index e7fc1f01f..fb4e37b87 100644 --- a/src/core/chart_manager.ts +++ b/src/core/chart_manager.ts @@ -113,7 +113,7 @@ export class ChartManager { return true } - async upgrade (namespaceName: string, chartReleaseName: string, chartPath: string, valuesArg = '', version = '') { + async upgrade (namespaceName: string, chartReleaseName: string, chartPath: string, version = '', valuesArg = '') { const versionArg = version ? `--version ${version}` : '' try { diff --git a/test/e2e/commands/mirror_node.test.ts b/test/e2e/commands/mirror_node.test.ts index b8cc383f6..4a3ff002a 100644 --- a/test/e2e/commands/mirror_node.test.ts +++ b/test/e2e/commands/mirror_node.test.ts @@ -51,6 +51,7 @@ argv[flags.relayReleaseTag.name] = flags.relayReleaseTag.definition.defaultValue // set the env variable SOLO_CHARTS_DIR if developer wants to use local Solo charts argv[flags.chartDirectory.name] = process.env.SOLO_CHARTS_DIR ?? undefined argv[flags.quiet.name] = true +argv[flags.pinger.name] = true e2eTestSuite(testName, argv, undefined, undefined, undefined, undefined, undefined, undefined, true, (bootstrapResp) => { describe('MirrorNodeCommand', async () => {