src/providers/helm/helm.provider.ts
Properties |
|
Methods |
|
constructor(kubernetesProvider: KubernetesProvider)
|
||||||
|
Defined in src/providers/helm/helm.provider.ts:14
|
||||||
|
Parameters :
|
| Async createService | ||||||
createService(spec: any)
|
||||||
|
Defined in src/providers/helm/helm.provider.ts:53
|
||||||
|
Parameters :
Returns :
Promise<literal type>
|
| Async deleteService |
deleteService(name: string, namespace: string)
|
|
Defined in src/providers/helm/helm.provider.ts:107
|
|
Returns :
Promise<literal type>
|
| getService | ||||||||||||||||||
getService(group: string, version: string, namespace: string, plural: string, name: string)
|
||||||||||||||||||
|
Defined in src/providers/helm/helm.provider.ts:34
|
||||||||||||||||||
|
Parameters :
Returns :
Promise<literal type>
|
| Async getServiceStatus |
getServiceStatus(name: string, namespace: string)
|
|
Defined in src/providers/helm/helm.provider.ts:18
|
|
Returns :
Promise<object>
|
| Async updateService | ||||||
updateService(spec: any)
|
||||||
|
Defined in src/providers/helm/helm.provider.ts:74
|
||||||
|
Parameters :
Returns :
Promise<literal type>
|
| Private HELM_CRD_GROUP |
Type : string
|
Default value : "helm.cattle.io"
|
|
Defined in src/providers/helm/helm.provider.ts:12
|
| Private HELM_CRD_PLURAL |
Type : string
|
Default value : "helmcharts"
|
|
Defined in src/providers/helm/helm.provider.ts:14
|
| Private HELM_CRD_VERSION |
Type : string
|
Default value : "v1"
|
|
Defined in src/providers/helm/helm.provider.ts:13
|
import {
HttpException,
Injectable,
InternalServerErrorException,
} from "@nestjs/common";
import { KubernetesProvider } from "../kubernetes/kubernetes.provider";
import { KubernetesResourceSpecDto } from "../kubernetes/dto/resource-spec.dto";
import { IncomingMessage } from "http";
@Injectable()
export class HelmProvider {
private HELM_CRD_GROUP = "helm.cattle.io";
private HELM_CRD_VERSION = "v1";
private HELM_CRD_PLURAL = "helmcharts";
constructor(private readonly kubernetesProvider: KubernetesProvider) {}
async getServiceStatus(name: string, namespace: string): Promise<object> {
try {
const deployment = await this.kubernetesProvider.getDeployment(
name,
namespace,
);
return deployment.body.status;
} catch (error) {
if (error.body) {
throw new HttpException(error.body.message, error.statusCode);
} else {
throw new InternalServerErrorException(error.message);
}
}
}
getService(
group: string,
version: string,
namespace: string,
plural: string,
name: string,
): Promise<{
response: IncomingMessage;
body: object;
}> {
return this.kubernetesProvider.getCRDObject(
group,
version,
namespace,
plural,
name,
);
}
async createService(spec: any): Promise<{
response: IncomingMessage;
body: object;
}> {
try {
return await this.kubernetesProvider.createCRDObject(
this.HELM_CRD_GROUP,
this.HELM_CRD_VERSION,
spec.metadata.namespace,
this.HELM_CRD_PLURAL,
spec,
);
} catch (error) {
if (error.body) {
throw new HttpException(error.body.message, error.statusCode);
} else {
throw new InternalServerErrorException(error.message);
}
}
}
async updateService(spec: any): Promise<{
response: IncomingMessage;
body: object;
}> {
try {
const service = await this.getService(
this.HELM_CRD_GROUP,
this.HELM_CRD_VERSION,
spec.metadata.namespace,
this.HELM_CRD_PLURAL,
spec.metadata.name,
).then((response) => {
return response.body as KubernetesResourceSpecDto;
});
// metadata.resourceVersion is required when we do replace kubernetes object using api
spec.metadata.resourceVersion = service.metadata.resourceVersion;
return await this.kubernetesProvider.updateCRDObject(
this.HELM_CRD_GROUP,
this.HELM_CRD_VERSION,
spec.metadata.namespace,
this.HELM_CRD_PLURAL,
spec.metadata.name,
spec,
);
} catch (error) {
if (error.body) {
throw new HttpException(error.body.message, error.statusCode);
} else {
throw new InternalServerErrorException(error.message);
}
}
}
async deleteService(
name: string,
namespace: string,
): Promise<{
response: IncomingMessage;
body: object;
}> {
try {
return await this.kubernetesProvider.deleteCRDObject(
this.HELM_CRD_GROUP,
this.HELM_CRD_VERSION,
namespace,
this.HELM_CRD_VERSION,
name,
);
} catch (error) {
if (error.body) {
throw new HttpException(error.body.message, error.statusCode);
} else {
throw new InternalServerErrorException(error.message);
}
}
}
}