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 adns-nameserverparameter that acceptsip:port/[ipv6]:portsyntax 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-instanceparameter (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.