123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.monthlyMinInstanceCost = exports.canCalculateMinInstanceCost = exports.V2_FREE_TIER = exports.V1_FREE_TIER = exports.V2_RATES = exports.V1_RATES = void 0;
- const backend = require("./backend");
- const V1_REGION_TO_TIER = {
- "us-central1": 1,
- "us-east1": 1,
- "us-east4": 1,
- "europe-west1": 1,
- "europe-west2": 1,
- "asia-east2": 1,
- "asia-northeast1": 1,
- "asia-northeast2": 1,
- "us-west2": 2,
- "us-west3": 2,
- "us-west4": 2,
- "northamerica-northeast1": 2,
- "southamerica-east1": 2,
- "europe-west3": 2,
- "europe-west6": 2,
- "europe-central2": 2,
- "australia-southeast1": 2,
- "asia-south1": 2,
- "asia-southeast2": 2,
- "asia-northeast3": 2,
- };
- const V2_REGION_TO_TIER = {
- "asia-east1": 1,
- "asia-northeast1": 1,
- "asia-northeast2": 1,
- "europe-north1": 1,
- "europe-west1": 1,
- "europe-west4": 1,
- "us-central1": 1,
- "us-east1": 1,
- "us-east4": 1,
- "us-west1": 1,
- "asia-east2": 2,
- "asia-northeast3": 2,
- "asia-southeast1": 2,
- "asia-southeast2": 2,
- "asia-south1": 2,
- "australia-southeast1": 2,
- "europe-central2": 2,
- "europe-west2": 2,
- "europe-west3": 2,
- "europe-west6": 2,
- "northamerica-northeast1": 2,
- "southamerica-east1": 2,
- "us-west2": 2,
- "us-west3": 2,
- "us-west4": 2,
- };
- exports.V1_RATES = {
- invocations: 4e-7,
- memoryGb: {
- 1: 0.0000025,
- 2: 0.0000035,
- },
- cpuGhz: {
- 1: 0.00001,
- 2: 0.000014,
- },
- idleCpuGhz: {
- 1: 0.000001,
- 2: 0.00000145,
- },
- egress: 0.12,
- };
- exports.V2_RATES = {
- invocations: 4e-7,
- memoryGb: {
- 1: 0.0000025,
- 2: 0.0000035,
- },
- vCpu: {
- 1: 0.000024,
- 2: 0.0000336,
- },
- idleVCpu: {
- 1: 0.0000025,
- 2: 0.0000035,
- },
- };
- exports.V1_FREE_TIER = {
- invocations: 2000000,
- memoryGb: 400000,
- cpuGhz: 200000,
- egress: 5,
- };
- exports.V2_FREE_TIER = {
- invocations: 2000000,
- memoryGb: 360000,
- vCpu: 180000,
- egress: 1,
- };
- const VCPU_TO_GHZ = 2.4;
- const MB_TO_GHZ = {
- 128: 0.2,
- 256: 0.4,
- 512: 0.8,
- 1024: 1.4,
- 2048: 1 * VCPU_TO_GHZ,
- 4096: 2 * VCPU_TO_GHZ,
- 8192: 2 * VCPU_TO_GHZ,
- 16384: 4 * VCPU_TO_GHZ,
- 32768: 8 * VCPU_TO_GHZ,
- };
- function canCalculateMinInstanceCost(endpoint) {
- if (!endpoint.minInstances) {
- return true;
- }
- if (endpoint.platform === "gcfv1") {
- if (!MB_TO_GHZ[endpoint.availableMemoryMb || backend.DEFAULT_MEMORY]) {
- return false;
- }
- if (!V1_REGION_TO_TIER[endpoint.region]) {
- return false;
- }
- return true;
- }
- if (!V2_REGION_TO_TIER[endpoint.region]) {
- return false;
- }
- return true;
- }
- exports.canCalculateMinInstanceCost = canCalculateMinInstanceCost;
- const SECONDS_PER_MONTH = 30 * 24 * 60 * 60;
- function monthlyMinInstanceCost(endpoints) {
- const usage = {
- gcfv1: { 1: { ram: 0, cpu: 0 }, 2: { ram: 0, cpu: 0 } },
- gcfv2: { 1: { ram: 0, cpu: 0 }, 2: { ram: 0, cpu: 0 } },
- };
- for (const endpoint of endpoints) {
- if (!endpoint.minInstances) {
- continue;
- }
- const ramMb = endpoint.availableMemoryMb || backend.DEFAULT_MEMORY;
- const ramGb = ramMb / 1024;
- if (endpoint.platform === "gcfv1") {
- const cpu = MB_TO_GHZ[ramMb];
- const tier = V1_REGION_TO_TIER[endpoint.region];
- usage["gcfv1"][tier].ram =
- usage["gcfv1"][tier].ram + ramGb * SECONDS_PER_MONTH * endpoint.minInstances;
- usage["gcfv1"][tier].cpu =
- usage["gcfv1"][tier].cpu + cpu * SECONDS_PER_MONTH * endpoint.minInstances;
- }
- else {
- const tier = V2_REGION_TO_TIER[endpoint.region];
- usage["gcfv2"][tier].ram =
- usage["gcfv2"][tier].ram + ramGb * SECONDS_PER_MONTH * endpoint.minInstances;
- usage["gcfv2"][tier].cpu =
- usage["gcfv2"][tier].cpu +
- endpoint.cpu * SECONDS_PER_MONTH * endpoint.minInstances;
- }
- }
- let v1MemoryBill = usage["gcfv1"][1].ram * exports.V1_RATES.memoryGb[1] + usage["gcfv1"][2].ram * exports.V1_RATES.memoryGb[2];
- v1MemoryBill -= exports.V1_FREE_TIER.memoryGb * exports.V1_RATES.memoryGb[1];
- v1MemoryBill = Math.max(v1MemoryBill, 0);
- let v1CpuBill = usage["gcfv1"][1].cpu * exports.V1_RATES.idleCpuGhz[1] + usage["gcfv1"][2].cpu * exports.V1_RATES.idleCpuGhz[2];
- v1CpuBill -= exports.V1_FREE_TIER.cpuGhz * exports.V1_RATES.cpuGhz[1];
- v1CpuBill = Math.max(v1CpuBill, 0);
- let v2MemoryBill = usage["gcfv2"][1].ram * exports.V2_RATES.memoryGb[1] + usage["gcfv2"][2].ram * exports.V2_RATES.memoryGb[2];
- v2MemoryBill -= exports.V2_FREE_TIER.memoryGb * exports.V2_RATES.memoryGb[1];
- v2MemoryBill = Math.max(v2MemoryBill, 0);
- let v2CpuBill = usage["gcfv2"][1].cpu * exports.V2_RATES.idleVCpu[1] + usage["gcfv2"][2].cpu * exports.V2_RATES.idleVCpu[2];
- v2CpuBill -= exports.V2_FREE_TIER.vCpu * exports.V2_RATES.vCpu[1];
- v2CpuBill = Math.max(v2CpuBill, 0);
- return v1MemoryBill + v1CpuBill + v2MemoryBill + v2CpuBill;
- }
- exports.monthlyMinInstanceCost = monthlyMinInstanceCost;
|