Initial commit: stateful OpenStack API laboratory simulator.

Ship Keystone auth, multi-service handlers (Yoga→Dalmatian), Compose/Helm
packaging, API contract packs, and pytest/Pulumi coverage labs.
This commit is contained in:
2026-07-18 04:26:48 +03:00
commit 6033967e6a
509 changed files with 464404 additions and 0 deletions
+22
View File
@@ -0,0 +1,22 @@
**Language / Язык:** [English](README.md) | [Русский](../ru/domains/README.md)
# OpenStack service domains
Guides for the main specialized surfaces. Pack-only services (Barbican, Manila,
Designate, …) are covered generically by the schema engine and seeded into
`os_api_objects` — see [api-surface.md](../api-surface.md) and
[api_coverage.md](../api_coverage.md).
| Guide | Service | Port |
|---|---|---|
| [keystone.md](keystone.md) | Identity | 5000 |
| [nova.md](nova.md) | Compute | 8774 |
| [neutron.md](neutron.md) | Network | 9696 |
| [glance.md](glance.md) | Image | 9292 |
| [cinder.md](cinder.md) | Block storage | 8776 |
| [placement.md](placement.md) | Placement | 8003 |
| [heat.md](heat.md) | Orchestration | 8004 |
| [swift.md](swift.md) | Object storage | 8080 |
| [ironic.md](ironic.md) | Bare metal | 6385 |
| [octavia.md](octavia.md) | Load balancer | 9876 |
| [schema-services.md](schema-services.md) | Remaining pack services | various |
+10
View File
@@ -0,0 +1,10 @@
**Language / Язык:** [English](cinder.md) | [Русский](../ru/domains/cinder.md)
# Cinder (block storage)
Port **8776**. Paths under `/v3/` (and `/v3/{project_id}/…`).
## Stateful
Volumes CRUD. Demo cloud: ~600 volumes (`in-use` / `available`).
Snapshots, types, backups, and related collections are pack/schema-backed.
+10
View File
@@ -0,0 +1,10 @@
**Language / Язык:** [English](glance.md) | [Русский](../ru/domains/glance.md)
# Glance (image)
Port **9292**. Paths under `/v2/`.
## Stateful
Image list/show/create/update/delete; public + project-owned images.
Members/tags served from `os_api_objects` in the demo seed.
+11
View File
@@ -0,0 +1,11 @@
**Language / Язык:** [English](heat.md) | [Русский](../ru/domains/heat.md)
# Heat (orchestration)
Port **8004**. Paths `/v1/{tenant_id}/…`.
## Stateful
Stacks in `os_stacks`. Demo seed adds stacks plus nested
`stack_resource` / `stack_event` / `software_config` / `software_deployment`
rows for pack GET probes.
+10
View File
@@ -0,0 +1,10 @@
**Language / Язык:** [English](ironic.md) | [Русский](../ru/domains/ironic.md)
# Ironic (bare metal)
Port **6385**.
## Stateful
Nodes in `os_nodes`. Demo seed creates a pool of ironic nodes; ports/chassis/
allocations are schema-backed samples.
+21
View File
@@ -0,0 +1,21 @@
**Language / Язык:** [English](keystone.md) | [Русский](../ru/domains/keystone.md)
# Keystone (identity)
Port **5000**. Paths under `/v3/`.
## Implemented (lab)
- `POST /v3/auth/tokens` — password auth, project scope
- Catalog with multi-port endpoints
- Projects, users, roles, role assignments (seeded + CRUD via pack/schema)
- Domains (Default)
## Seed
Minimal and demo profiles create `Default` domain, roles `admin`/`member`, and
users documented in [authentication.md](../authentication.md).
## Notes
Federation, application credentials, and full policy engine are out of scope.
+16
View File
@@ -0,0 +1,16 @@
**Language / Язык:** [English](neutron.md) | [Русский](../ru/domains/neutron.md)
# Neutron (network)
Port **9696**. Paths under `/v2.0/`.
## Stateful resources
Networks, subnets, ports, routers, security groups/rules, floating IPs, agents.
## Schema / seeded extensions
QoS, trunks, RBAC, address scopes, subnet pools, conntrack helpers, port
forwardings, FWaaS/VPNaaS/BGP VPN samples in demo seed.
Demo adds multiple nets/SGs/routers per project for realistic list density.
+20
View File
@@ -0,0 +1,20 @@
**Language / Язык:** [English](nova.md) | [Русский](../ru/domains/nova.md)
# Nova (compute)
Port **8774**. Paths under `/v2.1/`.
## Stateful resources
Servers, flavors, keypairs, server groups, AZ, hypervisors, aggregates,
services, migrations, volume/interface attachments, metadata, tags,
instance actions, consoles (lab URLs).
## Demo cloud
~1000 servers across projects, metadata/`_tags`, attachments linked to volumes
and ports.
## Microversions
Send `OpenStack-API-Version: compute X.Y` or Nova legacy header. Pack gates apply.
+10
View File
@@ -0,0 +1,10 @@
**Language / Язык:** [English](octavia.md) | [Русский](../ru/domains/octavia.md)
# Octavia (load balancer)
Port **9876**. Paths under `/v2/lbaas/…`.
## Stateful
Load balancers in `os_loadbalancers`. Listeners/pools/healthmonitors/providers/
flavors are served from `os_api_objects` (demo seed populates them).
+10
View File
@@ -0,0 +1,10 @@
**Language / Язык:** [English](placement.md) | [Русский](../ru/domains/placement.md)
# Placement
Port **8003**.
## Lab behaviour
- `GET /resource_providers` — from demo `os_api_objects` (or fallback stub)
- `GET/PUT /allocations/{consumer_uuid}` — persisted allocations with lab fallback
+14
View File
@@ -0,0 +1,14 @@
**Language / Язык:** [English](schema-services.md) | [Русский](../ru/domains/schema-services.md)
# Schema-backed services
These projects are primarily driven by contract packs + `os_api_objects`
(demo seed inserts multiple rows per resource type):
Barbican, Manila, Designate, Magnum, Zun, Trove, Mistral, Aodh, CloudKitty,
Freezer, Blazar, Vitrage, Masakari, Tacker, Adjutant, Watcher, Zaqar, Heat-CFN.
Ports: [ports.md](../ports.md). Operations: [api_coverage.md](../api_coverage.md).
CRUD lifecycle is exercised by `examples/python/openstack_surface_probe.py`
and `tests/openstack/conformance/`.
+10
View File
@@ -0,0 +1,10 @@
**Language / Язык:** [English](swift.md) | [Русский](../ru/domains/swift.md)
# Swift (object storage)
Port **8080** on the **gateway** (internal simulator remains on 8080 behind nginx).
## Stateful
Accounts/containers/objects in `os_swift_*` tables. Demo seed creates
`images` / `backups` / `artifacts` containers with a readme object per project.