Use common logic for the plans
This commit is contained in:
@@ -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(),
|
||||
|
||||
@@ -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: {
|
||||
|
||||
Reference in New Issue
Block a user