File

src/providers/kubecost/kubecost.provider.ts

Index

Properties
Methods

Methods

Async decryptConfig
decryptConfig(kubecostConfig: KubecostConfig)
Parameters :
Name Type Optional
kubecostConfig KubecostConfig No
Returns : unknown
Async encryptConfig
encryptConfig(kubecostConfig: KubecostConfig)
Parameters :
Name Type Optional
kubecostConfig KubecostConfig No
Returns : unknown
Async getAllocation
getAllocation(url: string, params: string, headers: any)
Parameters :
Name Type Optional
url string No
params string No
headers any No
Returns : unknown
getResourcesByTags
getResourcesByTags(kubecostConfig: KubecostConfig, getResourceInput: any)
Parameters :
Name Type Optional
kubecostConfig KubecostConfig No
getResourceInput any No
Returns : { ResourceTagMappingList: {}; }
Async getTagsData
getTagsData(kubecostConfig: KubecostConfig, getTagsInput: any, useNextToken: boolean)
Parameters :
Name Type Optional Default value
kubecostConfig KubecostConfig No
getTagsInput any No
useNextToken boolean No false
Returns : unknown
maskConfigSecret
maskConfigSecret(kubecostConfig: KubecostConfig)
Parameters :
Name Type Optional
kubecostConfig KubecostConfig No
Returns : KubecostConfig
Async testConnection
testConnection(kubecostConfig: KubecostConfig)
Parameters :
Name Type Optional
kubecostConfig KubecostConfig No
Returns : unknown

Properties

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;
  }
}

results matching ""

    No results matching ""