UNPKG

@hashgraph/solo

Version:

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

41 lines (36 loc) 1.38 kB
// SPDX-License-Identifier: Apache-2.0 import {container} from 'tsyringe-neo'; import {InjectTokens} from '../../../../../core/dependency-injection/inject-tokens.js'; import {type SoloLogger} from '../../../../../core/logging/solo-logger.js'; import {type ApiextensionsV1Api} from '@kubernetes/client-node'; import {type Crds} from '../../../resources/crd/crds.js'; import {KubeApiResponse} from '../../../kube-api-response.js'; import {ResourceOperation} from '../../../resources/resource-operation.js'; import {ResourceType} from '../../../resources/resource-type.js'; export class K8ClientCrds implements Crds { private readonly logger: SoloLogger; public constructor(private readonly networkingApi: ApiextensionsV1Api) { this.logger = container.resolve(InjectTokens.SoloLogger); } public async ifExists(crdName: string): Promise<boolean> { try { await this.networkingApi.readCustomResourceDefinition({ name: crdName, }); this.logger.debug(`CRD ${crdName} exists.`); } catch (error) { if (KubeApiResponse.isNotFound(error)) { this.logger.info(`CRD ${crdName} does not exist.`); return false; } KubeApiResponse.throwError( error, ResourceOperation.READ, ResourceType.CLUSTER_ROLE_DEFINITION, undefined, crdName, ); } return true; } }