47 lines
2.4 KiB
Text
47 lines
2.4 KiB
Text
let s = import "../../prov_lib/nickel/provider_catalog.ncl" in
|
||
|
||
# Hetzner Cloud catalog declaration consumed by fleet-protocol's Provider
|
||
# contract. Snapshot pricing in cents-per-hour (1 EUR = 10_000 Cents).
|
||
# Live prices come from the hcloud API via hetzner/nulib/hetzner/prices.nu;
|
||
# this file is the declarative reference the daemon and fleet-sim use when
|
||
# offline. Refresh periodically against the public Hetzner price list.
|
||
#
|
||
# Hetzner billing semantics (2026-05):
|
||
# - Per-hour granularity, no per-second.
|
||
# - Monthly cap at 730h (~30.4 days × 24h). Hours beyond that are free.
|
||
# - Power-off still incurs charge for IPs + volumes but server compute
|
||
# freezes — modelled here as stop_start_free=false (conservative).
|
||
{
|
||
catalog = {
|
||
name = "hetzner",
|
||
|
||
billing_policy = {
|
||
granularity_s = 3600,
|
||
minimum_s = 3600,
|
||
monthly_cap_hours = 730,
|
||
rounding = "ceil_hour",
|
||
} | s.BillingPolicy,
|
||
|
||
supports = {
|
||
resize = true,
|
||
resize_needs_reboot = true,
|
||
stop_start_free = false,
|
||
spot = false,
|
||
sustained_use_discount = false,
|
||
} | s.Supports,
|
||
|
||
# ARM (cax*) + x86 (cpx*) shared-vCPU lineup. Add/remove rows as Hetzner
|
||
# publishes new SKUs. hourly_cents = EUR/h × 10_000.
|
||
instance_types = [
|
||
{ id = "cax11", arch = "arm64", cpu = 2, ram_gb = 4, disk_gb = 40, hourly_cents = 48 } | s.InstanceType,
|
||
{ id = "cax21", arch = "arm64", cpu = 4, ram_gb = 8, disk_gb = 80, hourly_cents = 86 } | s.InstanceType,
|
||
{ id = "cax31", arch = "arm64", cpu = 8, ram_gb = 16, disk_gb = 160, hourly_cents = 223 } | s.InstanceType,
|
||
{ id = "cax41", arch = "arm64", cpu = 16, ram_gb = 32, disk_gb = 320, hourly_cents = 458 } | s.InstanceType,
|
||
{ id = "cpx11", arch = "x86_64", cpu = 2, ram_gb = 2, disk_gb = 40, hourly_cents = 52 } | s.InstanceType,
|
||
{ id = "cpx21", arch = "x86_64", cpu = 3, ram_gb = 4, disk_gb = 80, hourly_cents = 80 } | s.InstanceType,
|
||
{ id = "cpx31", arch = "x86_64", cpu = 4, ram_gb = 8, disk_gb = 160, hourly_cents = 155 } | s.InstanceType,
|
||
{ id = "cpx41", arch = "x86_64", cpu = 8, ram_gb = 16, disk_gb = 240, hourly_cents = 275 } | s.InstanceType,
|
||
{ id = "cpx51", arch = "x86_64", cpu = 16, ram_gb = 32, disk_gb = 360, hourly_cents = 555 } | s.InstanceType,
|
||
],
|
||
} | s.ProviderCatalog,
|
||
}
|