src/cost/cost.provider.ts
Properties |
|
Methods |
| getCostProvider | ||||||
getCostProvider(provider: string)
|
||||||
|
Defined in src/cost/cost.provider.ts:50
|
||||||
|
Parameters :
Returns :
any
|
| getCostProviderCategories |
getCostProviderCategories()
|
|
Defined in src/cost/cost.provider.ts:54
|
|
Returns :
any
|
| Private costProvider |
Type : object
|
Default value : {
[provider.kubecost]: new KubecostProvider(),
[provider.aws]: new AWSCostProvider(),
[provider.azure]: new AzureProvider(),
[provider.openai]: new OpenAIProvider(this.opentelemetryProvider),
[provider.anthropic]: new AnthropicProvider(this.opentelemetryProvider),
}
|
|
Defined in src/cost/cost.provider.ts:19
|
| Private costProviderCategoryMap |
Type : object
|
Default value : {
[CostProviderCategory.cloud]: {
title: "Cloud services",
subtitle: "Infrastructures",
description:
"Monitor spending on cloud infrastructure and services such as computing resources, storage, and data transfer.",
providers: [provider.kubecost, provider.aws, provider.azure],
},
[CostProviderCategory.llm]: {
title: "LLMs",
subtitle: "3rd party services",
description: "Monitor spending on LLMs models usage.",
providers: [provider.openai, provider.anthropic],
},
// [CostProviderCategory.other]: {
// title: "Other services",
// subtitle: "3rd party services",
// description:
// "Monitor spending using a generic connection through an OpenTelemetry endpoint",
// providers: [],
// },
}
|
|
Defined in src/cost/cost.provider.ts:27
|
| Private opentelemetryProvider |
Default value : new OpentelemetryProvider(
new InfluxDbProvider(),
)
|
|
Defined in src/cost/cost.provider.ts:16
|
import { AWSCostProvider } from "../providers/aws/aws.provider";
import { AzureProvider } from "../providers/azure/azure.provider";
import { KubecostProvider } from "../providers/kubecost/kubecost.provider";
import { Injectable } from "@nestjs/common";
import {
CostProvider as provider,
CostProviderCategory,
} from "./types/cost-provider.enum";
import { OpentelemetryProvider } from "../providers/opentelemetry/opentelemetry.provider";
import { InfluxDbProvider } from "../providers/influxDB/influxdb.provider";
import { OpenAIProvider } from "../providers/openai/openai.provider";
import { AnthropicProvider } from "../providers/anthropic/anthropic.provider";
@Injectable()
export class CostProvider {
private opentelemetryProvider = new OpentelemetryProvider(
new InfluxDbProvider(),
);
private costProvider = {
[provider.kubecost]: new KubecostProvider(),
[provider.aws]: new AWSCostProvider(),
[provider.azure]: new AzureProvider(),
[provider.openai]: new OpenAIProvider(this.opentelemetryProvider),
[provider.anthropic]: new AnthropicProvider(this.opentelemetryProvider),
};
private costProviderCategoryMap = {
[CostProviderCategory.cloud]: {
title: "Cloud services",
subtitle: "Infrastructures",
description:
"Monitor spending on cloud infrastructure and services such as computing resources, storage, and data transfer.",
providers: [provider.kubecost, provider.aws, provider.azure],
},
[CostProviderCategory.llm]: {
title: "LLMs",
subtitle: "3rd party services",
description: "Monitor spending on LLMs models usage.",
providers: [provider.openai, provider.anthropic],
},
// [CostProviderCategory.other]: {
// title: "Other services",
// subtitle: "3rd party services",
// description:
// "Monitor spending using a generic connection through an OpenTelemetry endpoint",
// providers: [],
// },
};
getCostProvider(provider: string) {
return this.costProvider[provider];
}
getCostProviderCategories() {
return Object.keys(this.costProviderCategoryMap).map((key) => {
return {
id: key,
...this.costProviderCategoryMap[key],
};
});
}
}