src/providers/kubecost/kubecost.provider.ts
Properties |
|
Methods |
|
| Async decryptConfig | ||||||
decryptConfig(kubecostConfig: KubecostConfig)
|
||||||
|
Parameters :
Returns :
unknown
|
| Async encryptConfig | ||||||
encryptConfig(kubecostConfig: KubecostConfig)
|
||||||
|
Parameters :
Returns :
unknown
|
| Async getAllocation |
getAllocation(url: string, params: string, headers: any)
|
|
Returns :
unknown
|
| getResourcesByTags | |||||||||
getResourcesByTags(kubecostConfig: KubecostConfig, getResourceInput: any)
|
|||||||||
|
Parameters :
Returns :
{ ResourceTagMappingList: {}; }
|
| Async getTagsData | ||||||||||||||||
getTagsData(kubecostConfig: KubecostConfig, getTagsInput: any, useNextToken: boolean)
|
||||||||||||||||
|
Parameters :
Returns :
unknown
|
| maskConfigSecret | ||||||
maskConfigSecret(kubecostConfig: KubecostConfig)
|
||||||
|
Parameters :
Returns :
KubecostConfig
|
| Async testConnection | ||||||
testConnection(kubecostConfig: KubecostConfig)
|
||||||
|
Parameters :
Returns :
unknown
|
| Private ALLOCATION_API |
Type : string
|
Default value : "/model/allocation"
|
| Private HEALTH_CHEACK_API |
Type : string
|
Default value : "/model/healthz"
|
import { decryptText, encryptText } from "../../common/helper";
import { Injectable } from "@nestjs/common";
import { KubecostConfig } from "./kubecost.types";
import { KubeCostConnectionError } from "./kubecost.errors";
@Injectable()
export class KubecostProvider {
private HEALTH_CHEACK_API = "/model/healthz";
private ALLOCATION_API = "/model/allocation";
// get tags data with kubecost
async getTagsData(
kubecostConfig: KubecostConfig,
getTagsInput: any,
useNextToken: boolean = false,
) {
// to fix lint errors
console.log(kubecostConfig.endpoint, getTagsInput, useNextToken);
return [];
}
// test connection with kubecost
async testConnection(kubecostConfig: KubecostConfig) {
const headers = {
Authorization:
"Basic " +
Buffer.from(
kubecostConfig.keyID + ":" + kubecostConfig.secret,
).toString("base64"),
};
const response = await fetch(
kubecostConfig.endpoint + this.HEALTH_CHEACK_API,
{
method: "GET",
headers: headers,
},
);
if (response.ok) {
return response.statusText;
}
throw new KubeCostConnectionError(
`Failed to fetch allocation data: ${response.statusText}`
);
}
// query kubecost
async getAllocation(url: string, params: string, headers: any) {
const response = await fetch(url + this.ALLOCATION_API + "?" + params, {
method: "GET",
headers: headers,
});
if (response.ok) {
return response.json();
}
throw new KubeCostConnectionError(
`Failed to fetch allocation data: ${response.statusText}`
);
}
getResourcesByTags(kubecostConfig: KubecostConfig, getResourceInput: any) {
// to fix lint errors
console.log(kubecostConfig.endpoint, getResourceInput);
return {
ResourceTagMappingList: [],
};
}
async encryptConfig(kubecostConfig: KubecostConfig) {
if (kubecostConfig.hasOwnProperty("secret") && kubecostConfig["secret"]) {
kubecostConfig["secret"] = await encryptText(kubecostConfig["secret"]);
}
return kubecostConfig;
}
async decryptConfig(kubecostConfig: KubecostConfig) {
if (kubecostConfig.hasOwnProperty("secret") && kubecostConfig["secret"]) {
kubecostConfig["secret"] = await decryptText(kubecostConfig["secret"]);
}
return kubecostConfig;
}
maskConfigSecret(kubecostConfig: KubecostConfig) {
if (kubecostConfig.hasOwnProperty("secret")) {
delete kubecostConfig["secret"];
}
return kubecostConfig;
}
}