@hashgraph/solo
Version:
An opinionated CLI tool to deploy and manage private Hedera Networks.
136 lines (135 loc) • 7.04 kB
TypeScript
/**
* SPDX-License-Identifier: Apache-2.0
*/
import { type AccountManager } from '../../core/account_manager.js';
import { type ConfigManager } from '../../core/config_manager.js';
import { type KeyManager } from '../../core/key_manager.js';
import { type ProfileManager } from '../../core/profile_manager.js';
import { type PlatformInstaller } from '../../core/platform_installer.js';
import { type K8Factory } from '../../core/kube/k8_factory.js';
import { type ChartManager } from '../../core/chart_manager.js';
import { type CertificateManager } from '../../core/certificate_manager.js';
import { Task } from '../../core/task.js';
import { type SoloLogger } from '../../core/logging.js';
import { type Listr, type ListrTaskWrapper } from 'listr2';
import { type ConfigBuilder, type NodeAlias, type NodeAliases, type SkipCheck } from '../../types/aliases.js';
import { NodeStatusCodes, NodeSubcommandType } from '../../core/enumerations.js';
import { type Lease } from '../../core/lease/lease.js';
import { type BaseCommand } from '../base.js';
import { type NamespaceName } from '../../core/kube/resources/namespace/namespace_name.js';
import { PodRef } from '../../core/kube/resources/pod/pod_ref.js';
import { type Optional } from '../../types/index.js';
import { ConsensusNode } from '../../core/model/consensus_node.js';
export declare class NodeCommandTasks {
private readonly accountManager;
private readonly configManager;
private readonly keyManager;
private readonly profileManager;
private readonly platformInstaller;
private readonly logger;
private readonly k8Factory;
private readonly parent;
private readonly chartManager;
private readonly certificateManager;
private readonly prepareValuesFiles;
constructor(opts: {
logger: SoloLogger;
accountManager: AccountManager;
configManager: ConfigManager;
k8Factory: K8Factory;
platformInstaller: PlatformInstaller;
keyManager: KeyManager;
profileManager: ProfileManager;
chartManager: ChartManager;
certificateManager: CertificateManager;
parent: BaseCommand;
});
private _prepareUpgradeZip;
private _uploadUpgradeZip;
private copyLocalBuildPathToNode;
_uploadPlatformSoftware(nodeAliases: NodeAliases, podRefs: Record<NodeAlias, PodRef>, task: ListrTaskWrapper<any, any, any>, localBuildPath: string, consensusNodes: Optional<ConsensusNode[]>): Listr<any, any, any>;
_fetchPlatformSoftware(nodeAliases: NodeAliases, podRefs: Record<NodeAlias, PodRef>, releaseTag: string, task: ListrTaskWrapper<any, any, any>, platformInstaller: PlatformInstaller, consensusNodes?: Optional<ConsensusNode[]>): Listr<any, any, any>;
_checkNodeActivenessTask(ctx: any, task: ListrTaskWrapper<any, any, any>, nodeAliases: NodeAliases, status?: NodeStatusCodes): Listr<any, any, any>;
_checkNetworkNodeActiveness(namespace: NamespaceName, nodeAlias: NodeAlias, task: ListrTaskWrapper<any, any, any>, title: string, index: number, status?: NodeStatusCodes, maxAttempts?: number, delay?: number, timeout?: number, context?: string): Promise<PodRef>;
/** Return task for check if node proxies are ready */
_checkNodesProxiesTask(ctx: any, task: ListrTaskWrapper<any, any, any>, nodeAliases: NodeAliases): Listr<any, any, any>;
/**
* When generating multiple all aliases are read from config.nodeAliases,
* When generating a single key the alias in config.nodeAlias is used
*/
_generateGossipKeys(generateMultiple: boolean): Task;
/**
* When generating multiple all aliases are read from config.nodeAliases,
* When generating a single key the alias in config.nodeAlias is used
*/
_generateGrpcTlsKeys(generateMultiple: boolean): Task;
copyGrpcTlsCertificates(): Task;
_addStake(namespace: NamespaceName, accountId: string, nodeAlias: NodeAlias, stakeAmount?: number, context?: string): Promise<void>;
prepareUpgradeZip(): Task;
loadAdminKey(): Task;
checkExistingNodesStakedAmount(): Task;
sendPrepareUpgradeTransaction(): Task;
sendFreezeUpgradeTransaction(): Task;
/** Download generated config files and key files from the network node */
downloadNodeGeneratedFiles(): Task;
downloadNodeUpgradeFiles(): Task;
taskCheckNetworkNodePods(ctx: any, task: ListrTaskWrapper<any, any, any>, nodeAliases: NodeAliases, maxAttempts?: any): Listr;
/** Check if the network node pod is running */
checkNetworkNodePod(namespace: NamespaceName, nodeAlias: NodeAlias, maxAttempts?: number, delay?: number, context?: Optional<string>): Promise<PodRef>;
identifyExistingNodes(): Task;
uploadStateFiles(skip: SkipCheck | boolean): Task;
identifyNetworkPods(maxAttempts?: number): Task;
fetchPlatformSoftware(aliasesField: string): Task;
populateServiceMap(): Task;
setupNetworkNodes(nodeAliasesProperty: string, isGenesis: boolean): Task;
private generateNodeOverridesJson;
/**
* Generate genesis network json file
* @private
* @param namespace - namespace
* @param consensusNodes - consensus nodes
* @param keysDir - keys directory
* @param stagingDir - staging directory
*/
private generateGenesisNetworkJson;
prepareStagingDirectory(nodeAliasesProperty: any): Task;
startNodes(nodeAliasesProperty: string): Task;
enablePortForwarding(): Task;
checkAllNodesAreActive(nodeAliasesProperty: string): Task;
checkAllNodesAreFrozen(nodeAliasesProperty: string): Task;
checkNodeProxiesAreActive(): Task;
checkAllNodeProxiesAreActive(): Task;
triggerStakeWeightCalculate(transactionType: NodeSubcommandType): Task;
addNodeStakes(): Task;
stakeNewNode(): Task;
stopNodes(): Task;
finalize(): Task;
dumpNetworkNodesSaveState(): Task;
getNodeLogsAndConfigs(): Task;
getNodeStateFiles(): Task;
checkPVCsEnabled(): Task;
determineNewNodeAccountNumber(): Task;
generateGossipKeys(): Task;
generateGossipKey(): Task;
generateGrpcTlsKeys(): Task;
generateGrpcTlsKey(): Task;
loadSigningKeyCertificate(): Task;
computeMTLSCertificateHash(): Task;
prepareGossipEndpoints(): Task;
refreshNodeList(): Task;
prepareGrpcServiceEndpoints(): Task;
sendNodeUpdateTransaction(): Task;
copyNodeKeysToSecrets(): Task;
updateChartWithConfigMap(title: string, transactionType: NodeSubcommandType, skip?: SkipCheck | boolean): Task;
saveContextData(argv: any, targetFile: string, parser: any): Task;
loadContextData(argv: any, targetFile: string, parser: any): Task;
killNodes(): Task;
killNodesAndUpdateConfigMap(): Task;
checkNodePodsAreRunning(): Task;
sleep(title: string, milliseconds: number): Task;
downloadLastState(): Task;
uploadStateToNewNode(): Task;
sendNodeDeleteTransaction(): Task;
sendNodeCreateTransaction(): Task;
initialize(argv: any, configInit: ConfigBuilder, lease: Lease | null, shouldLoadNodeClient?: boolean): Task;
}