UNPKG

@hashgraph/solo

Version:

An opinionated CLI tool to deploy and manage private Hedera Networks.

141 lines 15.1 kB
// SPDX-License-Identifier: Apache-2.0 var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; var ConsensusCommandDefinition_1; import { inject, injectable } from 'tsyringe-neo'; import { InjectTokens } from '../../core/dependency-injection/inject-tokens.js'; import { patchInject } from '../../core/dependency-injection/container-helper.js'; import { BaseCommandDefinition } from './base-command-definition.js'; import { CommandBuilder, CommandGroup, Subcommand } from '../../core/command-path-builders/command-builder.js'; import { NodeCommand } from '../node/index.js'; import { NetworkCommand } from '../network.js'; import * as NodeFlags from '../node/flags.js'; import * as constants from '../../core/constants.js'; let ConsensusCommandDefinition = class ConsensusCommandDefinition extends BaseCommandDefinition { static { ConsensusCommandDefinition_1 = this; } logger; nodeCommand; networkCommand; constructor(logger, nodeCommand, networkCommand) { super(); this.logger = logger; this.nodeCommand = nodeCommand; this.networkCommand = networkCommand; this.nodeCommand = patchInject(nodeCommand, InjectTokens.NodeCommand, this.constructor.name); this.networkCommand = patchInject(networkCommand, InjectTokens.NetworkCommand, this.constructor.name); this.logger = patchInject(logger, InjectTokens.SoloLogger, this.constructor.name); } static COMMAND_NAME = 'consensus'; static DESCRIPTION = 'Consensus Node operations for creating, modifying, and destroying resources. ' + 'These commands require the presence of an existing deployment.'; static NETWORK_SUBCOMMAND_NAME = 'network'; static NETWORK_SUBCOMMAND_DESCRIPTION = 'Ledger/network wide consensus operations such as freeze, upgrade, ' + 'and deploy. Operates on the entire ledger and all consensus node instances.'; static NODE_SUBCOMMAND_NAME = 'node'; static NODE_SUBCOMMAND_DESCRIPTION = 'List, create, manage, or destroy consensus node instances. Operates on a single consensus node instance at a time.'; static STATE_SUBCOMMAND_NAME = 'state'; static STATE_SUBCOMMAND_DESCRIPTION = 'List, download, and upload consensus node state backups to/from individual consensus node instances.'; static DEV_NODE_ADD_SUBCOMMAND_NAME = 'dev-node-add'; static DEV_NODE_ADD_SUBCOMMAND_DESCRIPTION = 'Dev operations for adding consensus nodes.'; static DEV_NODE_UPDATE_SUBCOMMAND_NAME = 'dev-node-update'; static DEV_NODE_UPDATE_SUBCOMMAND_DESCRIPTION = 'Dev operations for updating consensus nodes'; static DEV_NODE_UPGRADE_SUBCOMMAND_NAME = 'dev-node-upgrade'; static DEV_NODE_UPGRADE_SUBCOMMAND_DESCRIPTION = 'Dev operations for upgrading consensus nodes'; static DEV_NODE_DELETE_SUBCOMMAND_NAME = 'dev-node-delete'; static DEV_NODE_DELETE_SUBCOMMAND_DESCRIPTION = 'Dev operations for delete consensus nodes'; static DEV_FREEZE_SUBCOMMAND_NAME = 'dev-freeze'; static DEV_FREEZE_SUBCOMMAND_DESCRIPTION = 'Dev operations for freezing consensus nodes'; static DEV_NODE_PREPARE = 'prepare'; static DEV_NODE_SUBMIT_TRANSACTION = 'submit-transactions'; static DEV_NODE_EXECUTE = 'execute'; static DEV_FREEZE_PREPARE_UPGRADE = 'prepare-upgrade'; static DEV_FREEZE_FREEZE_UPGRADE = 'freeze-upgrade'; static NODE_SETUP = 'setup'; static NODE_START = 'start'; static NODE_STOP = 'stop'; static NODE_RESTART = 'restart'; static NODE_REFRESH = 'refresh'; static NODE_LOGS = 'logs'; static NODE_STATES = 'states'; static NODE_ADD = 'add'; static NODE_UPDATE = 'update'; static NODE_DESTROY = 'destroy'; static COLLECT_JFR = 'collect-jfr'; static NETWORK_DEPLOY = 'deploy'; static NETWORK_DESTROY = 'destroy'; static NETWORK_UPGRADE = 'upgrade'; static NETWORK_FREEZE = 'freeze'; static STATE_DOWNLOAD = 'download'; static SETUP_COMMAND = `${ConsensusCommandDefinition_1.COMMAND_NAME} ${ConsensusCommandDefinition_1.NODE_SUBCOMMAND_NAME} ${ConsensusCommandDefinition_1.NODE_SETUP}`; static START_COMMAND = `${ConsensusCommandDefinition_1.COMMAND_NAME} ${ConsensusCommandDefinition_1.NODE_SUBCOMMAND_NAME} ${ConsensusCommandDefinition_1.NODE_START}`; static DEPLOY_COMMAND = `${ConsensusCommandDefinition_1.COMMAND_NAME} ${ConsensusCommandDefinition_1.NETWORK_SUBCOMMAND_NAME} ${ConsensusCommandDefinition_1.NETWORK_DEPLOY}`; static DESTROY_COMMAND = `${ConsensusCommandDefinition_1.COMMAND_NAME} ${ConsensusCommandDefinition_1.NETWORK_SUBCOMMAND_NAME} ${ConsensusCommandDefinition_1.NETWORK_DESTROY}`; getCommandDefinition() { return (new CommandBuilder(ConsensusCommandDefinition_1.COMMAND_NAME, ConsensusCommandDefinition_1.DESCRIPTION, this.logger) // NETWORK SUBCOMMANDS .addCommandGroup(new CommandGroup(ConsensusCommandDefinition_1.NETWORK_SUBCOMMAND_NAME, ConsensusCommandDefinition_1.NETWORK_SUBCOMMAND_DESCRIPTION) .addSubcommand(new Subcommand(ConsensusCommandDefinition_1.NETWORK_DEPLOY, 'Installs and configures all consensus nodes for the deployment.', this.networkCommand, this.networkCommand.deploy, NetworkCommand.DEPLOY_FLAGS_LIST, [...constants.BASE_DEPENDENCIES])) .addSubcommand(new Subcommand(ConsensusCommandDefinition_1.NETWORK_DESTROY, 'Removes all consensus network components from the deployment.', this.networkCommand, this.networkCommand.destroy, NetworkCommand.DESTROY_FLAGS_LIST, [...constants.BASE_DEPENDENCIES])) .addSubcommand(new Subcommand(ConsensusCommandDefinition_1.NETWORK_FREEZE, 'Initiates a network freeze for scheduled maintenance or upgrades', this.nodeCommand.handlers, this.nodeCommand.handlers.freeze, NodeFlags.FREEZE_FLAGS, [])) .addSubcommand(new Subcommand(ConsensusCommandDefinition_1.NETWORK_UPGRADE, 'Upgrades the software version running on all consensus nodes.', this.nodeCommand.handlers, this.nodeCommand.handlers.upgrade, NodeFlags.UPGRADE_FLAGS, [...constants.BASE_DEPENDENCIES]))) // NODE SUBCOMMANDS .addCommandGroup(new CommandGroup(ConsensusCommandDefinition_1.NODE_SUBCOMMAND_NAME, ConsensusCommandDefinition_1.NODE_SUBCOMMAND_DESCRIPTION) .addSubcommand(new Subcommand(ConsensusCommandDefinition_1.NODE_SETUP, 'Setup node with a specific version of Hedera platform', this.nodeCommand.handlers, this.nodeCommand.handlers.setup, NodeFlags.SETUP_FLAGS, [])) .addSubcommand(new Subcommand(ConsensusCommandDefinition_1.NODE_START, 'Start a node', this.nodeCommand.handlers, this.nodeCommand.handlers.start, NodeFlags.START_FLAGS, [...constants.BASE_DEPENDENCIES])) .addSubcommand(new Subcommand(ConsensusCommandDefinition_1.NODE_STOP, 'Stop a node', this.nodeCommand.handlers, this.nodeCommand.handlers.stop, NodeFlags.STOP_FLAGS, [...constants.BASE_DEPENDENCIES])) .addSubcommand(new Subcommand(ConsensusCommandDefinition_1.NODE_RESTART, 'Restart all nodes of the network', this.nodeCommand.handlers, this.nodeCommand.handlers.restart, NodeFlags.RESTART_FLAGS, [...constants.BASE_DEPENDENCIES])) .addSubcommand(new Subcommand(ConsensusCommandDefinition_1.NODE_REFRESH, 'Reset and restart a node', this.nodeCommand.handlers, this.nodeCommand.handlers.refresh, NodeFlags.REFRESH_FLAGS, [])) .addSubcommand(new Subcommand(ConsensusCommandDefinition_1.NODE_ADD, 'Adds a node with a specific version of Hedera platform', this.nodeCommand.handlers, this.nodeCommand.handlers.add, NodeFlags.ADD_FLAGS, [...constants.BASE_DEPENDENCIES])) .addSubcommand(new Subcommand(ConsensusCommandDefinition_1.NODE_UPDATE, 'Update a node with a specific version of Hedera platform', this.nodeCommand.handlers, this.nodeCommand.handlers.update, NodeFlags.UPDATE_FLAGS, [...constants.BASE_DEPENDENCIES])) .addSubcommand(new Subcommand(ConsensusCommandDefinition_1.NODE_DESTROY, 'Delete a node with a specific version of Hedera platform', this.nodeCommand.handlers, this.nodeCommand.handlers.destroy, NodeFlags.DESTROY_FLAGS, [...constants.BASE_DEPENDENCIES])) .addSubcommand(new Subcommand(ConsensusCommandDefinition_1.COLLECT_JFR, 'Collect Java Flight Recorder (JFR) files from a node for diagnostics and performance analysis. ' + 'Requires the node to be running with Java Flight Recorder enabled.', this.nodeCommand.handlers, this.nodeCommand.handlers.collectJavaFlightRecorderLogs, NodeFlags.COLLECT_JFR_FLAGS, [...constants.BASE_DEPENDENCIES]))) // STATE SUBCOMMANDS .addCommandGroup(new CommandGroup(ConsensusCommandDefinition_1.STATE_SUBCOMMAND_NAME, ConsensusCommandDefinition_1.STATE_SUBCOMMAND_DESCRIPTION).addSubcommand(new Subcommand(ConsensusCommandDefinition_1.STATE_DOWNLOAD, 'Downloads a signed state from consensus node/nodes.', this.nodeCommand.handlers, this.nodeCommand.handlers.states, NodeFlags.STATES_FLAGS))) // DEV NODE ADD SUBCOMMANDS .addCommandGroup(new CommandGroup(ConsensusCommandDefinition_1.DEV_NODE_ADD_SUBCOMMAND_NAME, ConsensusCommandDefinition_1.DEV_NODE_ADD_SUBCOMMAND_DESCRIPTION) .addSubcommand(new Subcommand(ConsensusCommandDefinition_1.DEV_NODE_PREPARE, 'Prepares the addition of a node with a specific version of Hedera platform', this.nodeCommand.handlers, this.nodeCommand.handlers.addPrepare, NodeFlags.ADD_PREPARE_FLAGS)) .addSubcommand(new Subcommand(ConsensusCommandDefinition_1.DEV_NODE_SUBMIT_TRANSACTION, 'Submits NodeCreateTransaction and Upgrade transactions to the network nodes', this.nodeCommand.handlers, this.nodeCommand.handlers.addSubmitTransactions, NodeFlags.ADD_SUBMIT_TRANSACTIONS_FLAGS)) .addSubcommand(new Subcommand(ConsensusCommandDefinition_1.DEV_NODE_EXECUTE, 'Executes the addition of a previously prepared node', this.nodeCommand.handlers, this.nodeCommand.handlers.addExecute, NodeFlags.ADD_EXECUTE_FLAGS))) // DEV NODE UPDATE SUBCOMMANDS .addCommandGroup(new CommandGroup(ConsensusCommandDefinition_1.DEV_NODE_UPDATE_SUBCOMMAND_NAME, ConsensusCommandDefinition_1.DEV_NODE_UPDATE_SUBCOMMAND_DESCRIPTION) .addSubcommand(new Subcommand(ConsensusCommandDefinition_1.DEV_NODE_PREPARE, 'Prepare the deployment to update a node with a specific version of Hedera platform', this.nodeCommand.handlers, this.nodeCommand.handlers.updatePrepare, NodeFlags.UPDATE_PREPARE_FLAGS)) .addSubcommand(new Subcommand(ConsensusCommandDefinition_1.DEV_NODE_SUBMIT_TRANSACTION, 'Submit transactions for updating a node with a specific version of Hedera platform', this.nodeCommand.handlers, this.nodeCommand.handlers.updateSubmitTransactions, NodeFlags.UPDATE_SUBMIT_TRANSACTIONS_FLAGS)) .addSubcommand(new Subcommand(ConsensusCommandDefinition_1.DEV_NODE_EXECUTE, 'Executes the updating of a node with a specific version of Hedera platform', this.nodeCommand.handlers, this.nodeCommand.handlers.updateExecute, NodeFlags.UPDATE_EXECUTE_FLAGS))) // DEV NODE UPGRADE SUBCOMMANDS .addCommandGroup(new CommandGroup(ConsensusCommandDefinition_1.DEV_NODE_UPGRADE_SUBCOMMAND_NAME, ConsensusCommandDefinition_1.DEV_NODE_UPGRADE_SUBCOMMAND_DESCRIPTION) .addSubcommand(new Subcommand(ConsensusCommandDefinition_1.DEV_NODE_PREPARE, 'Prepare for upgrading network', this.nodeCommand.handlers, this.nodeCommand.handlers.upgradePrepare, NodeFlags.UPGRADE_PREPARE_FLAGS)) .addSubcommand(new Subcommand(ConsensusCommandDefinition_1.DEV_NODE_SUBMIT_TRANSACTION, 'Submit transactions for upgrading network', this.nodeCommand.handlers, this.nodeCommand.handlers.upgradeSubmitTransactions, NodeFlags.UPGRADE_SUBMIT_TRANSACTIONS_FLAGS)) .addSubcommand(new Subcommand(ConsensusCommandDefinition_1.DEV_NODE_EXECUTE, 'Executes the upgrading the network', this.nodeCommand.handlers, this.nodeCommand.handlers.upgradeExecute, NodeFlags.UPGRADE_EXECUTE_FLAGS))) // DEV NODE DELETE SUBCOMMANDS .addCommandGroup(new CommandGroup(ConsensusCommandDefinition_1.DEV_NODE_DELETE_SUBCOMMAND_NAME, ConsensusCommandDefinition_1.DEV_NODE_DELETE_SUBCOMMAND_DESCRIPTION) .addSubcommand(new Subcommand(ConsensusCommandDefinition_1.DEV_NODE_PREPARE, 'Prepares the deletion of a node with a specific version of Hedera platform', this.nodeCommand.handlers, this.nodeCommand.handlers.destroyPrepare, NodeFlags.DESTROY_PREPARE_FLAGS)) .addSubcommand(new Subcommand(ConsensusCommandDefinition_1.DEV_NODE_SUBMIT_TRANSACTION, 'Submits transactions to the network nodes for deleting a node', this.nodeCommand.handlers, this.nodeCommand.handlers.destroySubmitTransactions, NodeFlags.DESTROY_SUBMIT_TRANSACTIONS_FLAGS)) .addSubcommand(new Subcommand(ConsensusCommandDefinition_1.DEV_NODE_EXECUTE, 'Executes the deletion of a previously prepared node', this.nodeCommand.handlers, this.nodeCommand.handlers.destroyExecute, NodeFlags.DESTROY_EXECUTE_FLAGS))) // DEV FREEZE SUBCOMMANDS .addCommandGroup(new CommandGroup(ConsensusCommandDefinition_1.DEV_FREEZE_SUBCOMMAND_NAME, ConsensusCommandDefinition_1.DEV_FREEZE_SUBCOMMAND_DESCRIPTION) .addSubcommand(new Subcommand(ConsensusCommandDefinition_1.DEV_FREEZE_PREPARE_UPGRADE, 'Prepare the network for a Freeze Upgrade operation', this.nodeCommand.handlers, this.nodeCommand.handlers.prepareUpgrade, NodeFlags.PREPARE_UPGRADE_FLAGS)) .addSubcommand(new Subcommand(ConsensusCommandDefinition_1.DEV_FREEZE_FREEZE_UPGRADE, 'Performs a Freeze Upgrade operation with on the network after it has been prepared with prepare-upgrade', this.nodeCommand.handlers, this.nodeCommand.handlers.freezeUpgrade, NodeFlags.PREPARE_UPGRADE_FLAGS))) .build()); } }; ConsensusCommandDefinition = ConsensusCommandDefinition_1 = __decorate([ injectable(), __param(0, inject(InjectTokens.SoloLogger)), __param(1, inject(InjectTokens.NodeCommand)), __param(2, inject(InjectTokens.NetworkCommand)), __metadata("design:paramtypes", [Object, NodeCommand, NetworkCommand]) ], ConsensusCommandDefinition); export { ConsensusCommandDefinition }; //# sourceMappingURL=consensus-command-definition.js.map