Self-contained, interactive courses on the cloud services we run. Each one follows a
single real request end to end through the actual source code, with scroll-based
modules, animated message flows, glossaries, quizzes, and an ops check
panel at every step showing exactly what to look at (database rows,
openstack CLI output, queues) to confirm the system is where it should be.
Pick a service below.
Follow a single request as it travels between nova-api,
conductor, scheduler and compute, and
out over REST to Placement, Neutron, Cinder, Glance and Cyborg. Every excerpt is an exact
quote from the Nova source on branch nectar/2024.1 (OpenStack 2024.1 /
Caracal); the reservation course also quotes warre and
blazar. Start with Booting a server for the
foundations: the two message channels (RPC on the queue versus REST over HTTP) and the
cast of services.
From POST /servers to vm_state=ACTIVE: the six services and two message channels that turn one command into a running VM. The best place to start.
Moving an instance to a new flavor or host. The migration UUID that custodies Placement allocations, the source/destination compute handshake, and the confirm-or-revert dance.
A zero-downtime move. The nested "can we migrate?" handshake (two blocking calls), the late network cutover, the Cinder attachment swap, and the JOB_COMPLETED point of no return.
Four device models kept distinct: legacy PCI alias, PCI-in-Placement, vGPU/mdev, and Cyborg accelerators. From flavor extra-specs to the libvirt <hostdev>.
Cinder's three-step attachment handshake (create → update → complete), the BlockDeviceMapping spine, the os-brick connector, and libvirt live hot-plug, both directions.
How nova-scheduler picks a host: request filters that mutate the spec, Placement allocation candidates, pass/fail filters, scoring weighers, and claim-based placement with alternates. Includes an interactive aggregate-isolation map.
Reserving capacity end to end: warre books the slot, blazar fences the hosts with a private flavor, an aggregate and a CUSTOM_RESERVATION_* resource class, and nova/placement enforce it. Includes a troubleshooting playbook.
Also here Aggregate Routing Board: who lands where? — a standalone worked example of host-aggregate routing, companion to the scheduling course.
Real requests traced through neutron-server, the
ML2 OVN mechanism driver, the OVN Northbound and Southbound
databases and the per-hypervisor ovn-controller and
metadata agent. Every excerpt is an exact quote from the Neutron source
on branch nectar/2024.1. Start with Booting an instance for
the boot-time story; the second course covers the network's shape.
From POST /v2.0/ports to network-vif-plugged: port creation, binding, the provisioning-block checklist, the OVSDB event chain, native DHCP and the metadata namespace. The best place to start.
Five API calls become rows: Logical_Switch, distributed Logical_Router, gateway-chassis election, SNAT, and the dnat_and_snat rule behind every floating IP. Ends with three packet walks and a debugging playbook.
The researcher-facing services that sit on top of Nova, Neutron and Cinder. First up: the Virtual Desktop Service (codename Bumblebee), the Django app that gives researchers a full desktop in the browser. More Nectar services will be added here over time.