Makes Orthos 2 compatible with Cobbler 4.0.0 and newer and removes support
for Cobbler 3.3.x.
orthos2/utils/cobbler.py: Cobbler 4.0.0 moved several System/Profile
attributes off the item itself into nested "Option" sub-objects
(power.*, tftp.next_server_v4/v6) and resolves System.profile/
Profile.distro by item *uid* rather than by name - update every affected
XML-RPC call (power management, TFTP next-server, profile assignment) to
match, and add regression coverage in test_cobbler.py asserting the
correct attribute-path/uid shape rather than just call counts.
compose.common.yaml: replace the bespoke, zypper-built single-container
Cobbler image (docker/cobbler/, now removed) with upstream's own
published container images (cobblerd/http-api/cobbler-tftp/cobbler-dhcp/
cobbler-dns, plus a new cobbler-dhcp6 sidecar for DHCPv6), wired into the
existing Traefik-fronted "orthos" network:
- cobblerd/http-api split per upstream's reference stack, with a custom
cobbler-settings config enabling DHCP/DNS management, managed forward/
reverse zones for orthos2.test/192.0.2.0/24/2001:db8::/64, and explicit
auto_migrate_settings/process_management.docker wiring so `cobbler
sync` can restart the dhcp/dns/dhcp6 sidecars by Docker label.
- Custom DHCPv4/v6 and named.conf templates (docker/orthos/cobbler-
templates/) covering the dev stack's 192.0.2.0/24/2001:db8::/64
networks plus a dummy subnet for the "orthos" bridge network itself
(pinned to a stable 172.20.0.0/16 so dhcpd has a subnet declaration to
bind to), registered via docker/orthos/setup_cobbler_dhcp_templates.py
and setup_cobbler_dns_templates.py - Cobbler 4.0 selects templates by
DB tag, not a fixed file path.
- A shared cobbler-dns-zones volume so bind.py's rendered zone files
actually reach the dns sidecar, and a logging_config.conf override so
cobblerd logs to stdout instead of an in-container file.
- docker/orthos/setup_fake_cobbler_distro.py seeds a fake distro/profile
for local machine-setup testing without a real distro tree.
Several real upstream Cobbler bugs surfaced while wiring this up and were
fixed on the Cobbler repo's own fix/dns-sidecar branch: dhcp6.template
referencing interface fields isc.py never populates, cobblerd's image
missing a dhcpd6.conf bind-mount symlink, and bind.py's named.conf
template lookup not preferring an "active"-tagged template over the
built-in one.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit makes Orthos 2 compatible with Cobbler 4.0.0 and newer and removes support for Cobbler 3.3.x.