Use common logic for the plans

This commit is contained in:
Matt Aitken
2024-07-04 17:59:51 +01:00
parent fd27821beb
commit adad268c44
3 changed files with 49 additions and 32 deletions
+3 -8
View File
@@ -193,14 +193,9 @@ const EnvironmentSchema = z.object({
USAGE_EVENT_URL: z.string().optional(),
PROD_USAGE_HEARTBEAT_INTERVAL_MS: z.coerce.number().int().optional(),
CENTS_PER_HOUR_MICRO: z.coerce.number().default(0),
CENTS_PER_HOUR_SMALL_1X: z.coerce.number().default(0),
CENTS_PER_HOUR_SMALL_2X: z.coerce.number().default(0),
CENTS_PER_HOUR_MEDIUM_1X: z.coerce.number().default(0),
CENTS_PER_HOUR_MEDIUM_2X: z.coerce.number().default(0),
CENTS_PER_HOUR_LARGE_1X: z.coerce.number().default(0),
CENTS_PER_HOUR_LARGE_2X: z.coerce.number().default(0),
BASE_RUN_COST_IN_CENTS: z.coerce.number().default(0),
CENTS_PER_VCPU_SECOND: z.coerce.number().default(0),
CENTS_PER_GB_RAM_SECOND: z.coerce.number().default(0),
CENTS_PER_RUN: z.coerce.number().default(0),
USAGE_OPEN_METER_API_KEY: z.string().optional(),
USAGE_OPEN_METER_BASE_URL: z.string().optional(),
+45 -23
View File
@@ -1,43 +1,65 @@
import { machineDefinition } from "@trigger.dev/billing/v3";
import { MachineConfig, MachinePreset, MachinePresetName } from "@trigger.dev/core/v3";
import { env } from "~/env.server";
import { logger } from "~/services/logger.server";
export const presets = {
micro: {
const presets = {
micro: machineDefinition({
code: "micro",
title: "Micro",
cpu: 0.25,
memory: 0.25,
centsPerMs: env.CENTS_PER_HOUR_MICRO / 3_600_000,
},
"small-1x": {
centsPerVCpuSecond: env.CENTS_PER_VCPU_SECOND,
centsPerGbRamSecond: env.CENTS_PER_GB_RAM_SECOND,
}),
"small-1x": machineDefinition({
code: "small-1x",
title: "Small 1x",
cpu: 0.5,
memory: 0.5,
centsPerMs: env.CENTS_PER_HOUR_SMALL_1X / 3_600_000,
},
"small-2x": {
centsPerVCpuSecond: env.CENTS_PER_VCPU_SECOND,
centsPerGbRamSecond: env.CENTS_PER_GB_RAM_SECOND,
}),
"small-2x": machineDefinition({
code: "small-2x",
title: "Small 2x",
cpu: 1,
memory: 1,
centsPerMs: env.CENTS_PER_HOUR_SMALL_2X / 3_600_000,
},
"medium-1x": {
centsPerVCpuSecond: env.CENTS_PER_VCPU_SECOND,
centsPerGbRamSecond: env.CENTS_PER_GB_RAM_SECOND,
}),
"medium-1x": machineDefinition({
code: "medium-1x",
title: "Medium 1x",
cpu: 1,
memory: 2,
centsPerMs: env.CENTS_PER_HOUR_MEDIUM_1X / 3_600_000,
},
"medium-2x": {
centsPerVCpuSecond: env.CENTS_PER_VCPU_SECOND,
centsPerGbRamSecond: env.CENTS_PER_GB_RAM_SECOND,
}),
"medium-2x": machineDefinition({
code: "medium-2x",
title: "Medium 2x",
cpu: 2,
memory: 4,
centsPerMs: env.CENTS_PER_HOUR_MEDIUM_2X / 3_600_000,
},
"large-1x": {
centsPerVCpuSecond: env.CENTS_PER_VCPU_SECOND,
centsPerGbRamSecond: env.CENTS_PER_GB_RAM_SECOND,
}),
"large-1x": machineDefinition({
code: "large-1x",
title: "Large 1x",
cpu: 4,
memory: 8,
centsPerMs: env.CENTS_PER_HOUR_LARGE_1X / 3_600_000,
},
"large-2x": {
centsPerVCpuSecond: env.CENTS_PER_VCPU_SECOND,
centsPerGbRamSecond: env.CENTS_PER_GB_RAM_SECOND,
}),
"large-2x": machineDefinition({
code: "large-2x",
title: "Large 2x",
cpu: 8,
memory: 16,
centsPerMs: env.CENTS_PER_HOUR_LARGE_2X / 3_600_000,
},
centsPerVCpuSecond: env.CENTS_PER_VCPU_SECOND,
centsPerGbRamSecond: env.CENTS_PER_GB_RAM_SECOND,
}),
};
export function machinePresetFromConfig(config: unknown): MachinePreset {
@@ -62,7 +84,7 @@ export function machinePresetFromConfig(config: unknown): MachinePreset {
return machinePresetFromName("small-1x");
}
export function machinePresetFromName(name: MachinePresetName): MachinePreset {
function machinePresetFromName(name: MachinePresetName): MachinePreset {
return {
name,
...presets[name],
@@ -412,7 +412,7 @@ export class SharedQueueConsumer {
lockedById: backgroundTask.id,
lockedToVersionId: deployment.worker.id,
startedAt: existingTaskRun.startedAt ?? new Date(),
baseCostInCents: env.BASE_RUN_COST_IN_CENTS,
baseCostInCents: env.CENTS_PER_RUN,
machinePreset: machinePresetFromConfig(backgroundTask.machineConfig ?? {}).name,
},
include: {