@hashgraph/solo
Version:
An opinionated CLI tool to deploy and manage private Hedera Networks.
58 lines (57 loc) • 3.35 kB
TypeScript
import { Listr } from 'listr2';
import { type ConfigManager } from './config_manager.js';
import { type K8Factory } from '../core/kube/k8_factory.js';
import { type SoloLogger } from './logging.js';
import { type PodRef } from './kube/resources/pod/pod_ref.js';
import { type ConsensusNode } from './model/consensus_node.js';
/** PlatformInstaller install platform code in the root-container of a network pod */
export declare class PlatformInstaller {
private logger?;
private k8Factory?;
private configManager?;
constructor(logger?: SoloLogger, k8Factory?: K8Factory, configManager?: ConfigManager);
private _getNamespace;
validatePlatformReleaseDir(releaseDir: string): void;
/** Fetch and extract platform code into the container */
fetchPlatform(podRef: PodRef, tag: string, context?: string): Promise<boolean>;
/**
* Copy a list of files to a directory in the container
* @param podRef - pod reference
* @param srcFiles - list of source files
* @param destDir - destination directory
* @param [container] - name of the container
* @param [context]
* @returns a list of paths of the copied files insider the container
*/
copyFiles(podRef: PodRef, srcFiles: string[], destDir: string, container?: import("./kube/resources/container/container_name.js").ContainerName, context?: string): Promise<string[]>;
copyGossipKeys(consensusNode: ConsensusNode, stagingDir: string, consensusNodes: ConsensusNode[]): Promise<void>;
copyTLSKeys(consensusNodes: ConsensusNode[], stagingDir: string, contexts: string[]): Promise<void>;
setPathPermission(podRef: PodRef, destPath: string, mode?: string, recursive?: boolean, container?: import("./kube/resources/container/container_name.js").ContainerName, context?: string): Promise<boolean>;
setPlatformDirPermissions(podRef: PodRef, context?: string): Promise<boolean>;
/** Return a list of task to perform node directory setup */
taskSetup(podRef: PodRef, stagingDir: string, isGenesis: boolean, context?: string): Listr<any, "default", "simple">;
/**
* Copy configuration files to the network consensus node pod
* @param stagingDir - staging directory path
* @param podRef - pod reference
* @param isGenesis - true if this is `solo node setup` and we are at genesis
* @private
*/
private copyConfigurationFiles;
/**
* Return a list of task to copy the node keys to the staging directory
*
* It assumes the staging directory has the following files and resources:
* <li>${staging}/keys/s-public-<nodeAlias>.pem: private signing key for a node</li>
* <li>${staging}/keys/s-private-<nodeAlias>.pem: public signing key for a node</li>
* <li>${staging}/keys/a-public-<nodeAlias>.pem: private agreement key for a node</li>
* <li>${staging}/keys/a-private-<nodeAlias>.pem: public agreement key for a node</li>
* <li>${staging}/keys/hedera-<nodeAlias>.key: gRPC TLS key for a node</li>
* <li>${staging}/keys/hedera-<nodeAlias>.crt: gRPC TLS cert for a node</li>
*
* @param stagingDir staging directory path
* @param consensusNodes list of consensus nodes
* @param contexts list of k8s contexts
*/
copyNodeKeys(stagingDir: string, consensusNodes: ConsensusNode[], contexts: string[]): any[];
}