@hashgraph/solo
Version:
An opinionated CLI tool to deploy and manage private Hedera Networks.
53 lines • 1.95 kB
JavaScript
// SPDX-License-Identifier: Apache-2.0
import { K8ClientIngressClass } from './k8-client-ingress-class.js';
import { SoloError } from '../../../../../core/errors/solo-error.js';
import { ResourceCreateError, ResourceDeleteError } from '../../../errors/resource-operation-errors.js';
import { ResourceType } from '../../../resources/resource-type.js';
export class K8ClientIngressClasses {
networkingApi;
constructor(networkingApi) {
this.networkingApi = networkingApi;
}
async list() {
try {
const response = await this.networkingApi.listIngressClass();
const ingressClasses = [];
if (response?.items?.length > 0) {
for (const item of response.items) {
ingressClasses.push(new K8ClientIngressClass(item.metadata?.name));
}
}
return ingressClasses;
}
catch (error) {
throw new SoloError('Failed to list IngressClasses:', error);
}
}
async create(ingressClassName, controllerName) {
const ingressClass = {
apiVersion: 'networking.k8s.io/v1',
kind: 'IngressClass',
metadata: {
name: ingressClassName,
},
spec: {
controller: controllerName,
},
};
try {
await this.networkingApi.createIngressClass({ body: ingressClass });
}
catch (error) {
throw new ResourceCreateError(ResourceType.INGRESS_CLASS, undefined, ingressClassName, error);
}
}
async delete(ingressClassName) {
try {
await this.networkingApi.deleteIngressClass({ name: ingressClassName });
}
catch (error) {
throw new ResourceDeleteError(ResourceType.INGRESS_CLASS, undefined, ingressClassName, error);
}
}
}
//# sourceMappingURL=k8-client-ingress-classes.js.map