@hashgraph/solo
Version:
An opinionated CLI tool to deploy and manage private Hedera Networks.
126 lines (114 loc) • 6.02 kB
text/typescript
// SPDX-License-Identifier: Apache-2.0
import {type HelmClient} from './helm-client.js';
/**
* HelmClientBuilder is used to construct instances of HelmClient. This interface defines the standard
* methods which all HelmClient builders must implement.
*
* @implNote The build() method is responsible for extracting the appropriate Helm executable
* from the package. The Helm executable should be extracted to a temporary directory which is supplied to the
* HelmClient implementation.
* @see HelmClient
*/
export interface HelmClientBuilder {
/**
* Sets the default namespace for the HelmClient instance.
*
* @param namespace the Kubernetes namespace to use by default.
* @returns the HelmClientBuilder instance.
* @implNote The kubernetes cluster's default namespace is used if the namespace is not explicitly provided.
* @implSpec This value should be used to set the --namespace <namespace> flag for all Helm commands unless
* overridden by a specific HelmClient method.
*/
defaultNamespace(namespace: string): HelmClientBuilder;
/**
* Sets the working directory for the HelmClient instance.
* @param workingDirectory the working directory.
* @returns the HelmClientBuilder instance.
* @implNote The working directory is set to the pwd if not explicitly provided, if that fails it will use the
* parent folder of the helm executable.
*/
workingDirectory(workingDirectory: string): HelmClientBuilder;
/**
* Sets the Kubernetes API server address and port number for the HelmClient instance.
*
* @param kubeApiServer the Kubernetes API server address and port number.
* @returns the HelmClientBuilder instance.
* @implNote The Kubernetes API server address and port number are read from the Kubernetes configuration file if not
* explicitly provided.
* @implSpec This value should be used to set the --kube-apiserver <kubeApiServer> flag for all Helm commands.
*/
kubeApiServer(kubeApiServer: string): HelmClientBuilder;
/**
* Sets the path to the Kubernetes CA certificate file for the HelmClient instance.
*
* @param kubeCAFile the path to the Kubernetes API server CA certificate file.
* @returns the HelmClientBuilder instance.
* @implNote The Kubernetes CA certificate file path is read from the Kubernetes configuration file if not explicitly
* provided.
* @implSpec This value should be used to set the --kube-ca-file <kubeCAFile> flag for all Helm commands.
*/
kubeCAFile(kubeCAFile: string): HelmClientBuilder;
/**
* Sets the context defined in the kube config file to use for the HelmClient instance. If this value is not
* provided, the current context is used.
*
* @param kubeContext the name of the context defined in the kube config file to use.
* @returns the HelmClientBuilder instance.
* @implNote The Kubernetes context is read from the Kubernetes configuration file if not explicitly provided.
* @implSpec This value should be used to set the --kube-context <kubeContext> flag for all Helm commands.
*/
kubeContext(kubeContext: string): HelmClientBuilder;
/**
* Sets whether to skip TLS verification when communicating with the Kubernetes API server for the HelmClient
* instance.
*
* @param kubeSkipTlsVerification indicates whether to skip TLS verification when communicating with the Kubernetes API
* server. This value may be null to indicate that the default value should be
* used.
* @returns the HelmClientBuilder instance.
* @implNote The Kubernetes skip TLS verification flag is read from the Kubernetes configuration file if not explicitly
* provided.
* @implSpec This value should be used to set the --kube-skip-tls-verification <kubeSkipTlsVerification> flag
* for all Helm commands.
*/
kubeSkipTlsVerification(kubeSkipTlsVerification: boolean | null): HelmClientBuilder;
/**
* Sets the server name to use for certificate verification of the Kubernetes API server for the HelmClient
* instance.
*
* @param kubeTlsServerName the server name to use for certificate verification of the Kubernetes API server.
* @returns the HelmClientBuilder instance.
* @implNote The Kubernetes TLS server name is read from the Kubernetes configuration file if not explicitly provided.
* @implSpec This value should be used to set the --kube-tls-server-name <kubeTlsServerName> flag for all Helm
* commands.
*/
kubeTlsServerName(kubeTlsServerName: string): HelmClientBuilder;
/**
* Sets the kubernetes bearer token for the HelmClient instance.
*
* @param kubeToken the kubernetes bearer token.
* @returns the HelmClientBuilder instance.
* @implNote The Kubernetes bearer token is read from the Kubernetes configuration file if not explicitly provided.
* @implSpec This value should be used to set the --kube-token <kubeToken> flag for all Helm commands.
*/
kubeToken(kubeToken: string): HelmClientBuilder;
/**
* Sets the path to the Kubernetes configuration file for the HelmClient instance.
*
* @param kubeConfig the path to the Kubernetes configuration file.
* @returns the HelmClientBuilder instance.
* @implNote The Kubernetes configuration file is read from the default location if not explicitly provided.
* @implSpec This value should be used to set the --kubeconfig <kubeConfig> flag for all Helm commands.
*/
kubeConfig(kubeConfig: string): HelmClientBuilder;
/**
* Constructs an instance of the HelmClient with the provided configuration.
*
* @returns the HelmClient instance.
* @throws HelmConfigurationException if the HelmClient instance cannot be constructed.
* @implNote This method is responsible for extracting the appropriate Helm executable from the package to a
* temporary working directory. The temporary working directory should be supplied to the HelmClient instance.
* @see HelmClient
*/
build(): Promise<HelmClient>;
}