Skip to content

slapos.cookbook: add CDN instance node infrastructure

Summary

Adds the slapos.cookbook recipes that the rapid-cdn instance-node architecture (MR !1975) depends on. Split out per Luke's suggestion in !1975#note_263179 to let the cookbook be released independently.

New recipes

  • slapos.recipe.localinstancedb — SQLite-backed local database tracking hosted child instances (deterministic ordering + diff computation against the SLAP master).
  • slapos.recipe.instancenode — generic recipe that runs between slapgrid cycles to manage child instance requests against the local DB. Includes the no-op-update timestamp-preservation fix to prevent bang loops.
  • slapos.recipe.cdninstancenode — CDN-specific extension: custom-domain DNS validation, configurable retention delay for stopped slaves (90-day default), automatic root-instance reprocessing after deployment (bang), and a dns-nameserver parameter that accepts ip:port / [ipv6]:port syntax for custom DNS resolver ports.

slapos.recipe.slapconfiguration extensions

  • Add deferred JSON schema validation that uses data from the instance-node DB.
  • Drop allow-invalid-instance parameter (the deferred-validation flow makes it redundant).

Tests

10 commits, 75 unit tests under slapos/test/recipe/test_{localinstancedb,instancenode,cdninstancenode}.py. All pass locally.

What's NOT in this MR

No setup.py version bump and no release commit — that step is the cookbook maintainer's.

Dependency direction

MR !1975 (rapid-cdn software release) will use the cookbook version published from this MR once it lands.

Merge request reports