6033967e6a
Ship Keystone auth, multi-service handlers (Yoga→Dalmatian), Compose/Helm packaging, API contract packs, and pytest/Pulumi coverage labs.
2.4 KiB
2.4 KiB
Language / Язык: English | Русский
Architecture
Components
┌─────────────┐ ┌──────────────────┐ ┌────────────┐
│ Clients │────▶│ api-gateway │────▶│ simulator │
│ SDK / CLI │ │ nginx multi-port│ │ FastAPI │
│ Web UI │ │ :5000,:8774,… │ │ :8080 │
└─────────────┘ └──────────────────┘ └─────┬──────┘
│
┌─────▼──────┐
│ PostgreSQL │
└────────────┘
| Piece | Responsibility |
|---|---|
| api-gateway | Publish OpenStack default ports; set X-OpenStack-Service / X-Forwarded-Port |
| ServiceDispatchMiddleware | Rewrite to /_os/<service>/… |
| Specialized routers | Stateful Keystone, Nova, Neutron, Glance, Cinder, Heat, Swift, Ironic, Octavia, Placement |
| Schema engine | Surface-complete ops from contracts/openstack/<series>/ |
| PostgreSQL | Identity, IaaS tables, os_api_objects generic store |
Request lifecycle
- Client hits e.g.
http://host:8774/v2.1/servers. - Gateway injects service headers.
- Dispatch mounts the request under
/_os/nova/…. - Specialized Nova handler or schema pack operation runs.
- Reads/writes go to PostgreSQL (typed tables or
os_api_objects).
Contract packs
- Generated inventory →
contracts/openstack/{yoga,antelope,caracal,dalmatian}/ - Hot-swap via Web UI /
/ui/api/openstack/contracts/activate - Coverage report: api_coverage.md
Seed profiles
| Profile | Contents |
|---|---|
minimal |
Small Keystone + few IaaS resources |
demo |
~1000 servers, multi-project topology, nested collections |
Details: seed-profiles.md.
Deployment model
| Mode | Gateway | DB |
|---|---|---|
| Compose | nginx container | bundled Postgres |
| Helm | nginx Deployment + multi-port Service | bundled StatefulSet or external |
| Ingress | TLS terminates at Ingress → gateway:5000 | — |
See kubernetes.md.