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
@@ -0,0 +1,474 @@
{
"default_microversion": "1.0",
"max_microversion": "1.37",
"operations": [
{
"collection_key": null,
"introduced_in": "yoga",
"kind": "custom",
"method": "GET",
"microversion_max": "1.37",
"microversion_min": "1.0",
"operation_id": "placement_root",
"path": "/",
"requires_auth": true,
"requires_project": false,
"resource_type": "version",
"service": "placement",
"status_code": 200
},
{
"collection_key": "resource_providers",
"introduced_in": "yoga",
"kind": "collection",
"method": "GET",
"microversion_max": "1.37",
"microversion_min": "1.0",
"operation_id": "resource_provider_list",
"path": "/resource_providers",
"requires_auth": true,
"requires_project": true,
"resource_type": "resource_provider",
"service": "placement",
"status_code": 200
},
{
"collection_key": "resource_providers",
"create_status": 201,
"introduced_in": "yoga",
"item_key": "resource_provider",
"kind": "collection",
"method": "POST",
"microversion_max": "1.37",
"microversion_min": "1.0",
"operation_id": "resource_provider_create",
"path": "/resource_providers",
"requires_auth": true,
"requires_project": true,
"resource_type": "resource_provider",
"service": "placement",
"status_code": 201
},
{
"collection_key": "resource_providers",
"introduced_in": "yoga",
"item_key": "resource_provider",
"kind": "item",
"method": "GET",
"microversion_max": "1.37",
"microversion_min": "1.0",
"operation_id": "resource_provider_show",
"path": "/resource_providers/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "resource_provider",
"service": "placement",
"status_code": 200
},
{
"collection_key": "resource_providers",
"introduced_in": "yoga",
"item_key": "resource_provider",
"kind": "item",
"method": "PUT",
"microversion_max": "1.37",
"microversion_min": "1.0",
"operation_id": "resource_provider_update",
"path": "/resource_providers/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "resource_provider",
"service": "placement",
"status_code": 200
},
{
"collection_key": "resource_providers",
"introduced_in": "yoga",
"item_key": "resource_provider",
"kind": "item",
"method": "PATCH",
"microversion_max": "1.37",
"microversion_min": "1.0",
"operation_id": "resource_provider_patch",
"path": "/resource_providers/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "resource_provider",
"service": "placement",
"status_code": 200
},
{
"collection_key": "resource_providers",
"introduced_in": "yoga",
"kind": "item",
"method": "DELETE",
"microversion_max": "1.37",
"microversion_min": "1.0",
"operation_id": "resource_provider_delete",
"path": "/resource_providers/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "resource_provider",
"service": "placement",
"status_code": 204
},
{
"collection_key": "resource_classes",
"introduced_in": "yoga",
"kind": "collection",
"method": "GET",
"microversion_max": "1.37",
"microversion_min": "1.0",
"operation_id": "resource_class_list",
"path": "/resource_classes",
"requires_auth": true,
"requires_project": true,
"resource_type": "resource_class",
"service": "placement",
"status_code": 200
},
{
"collection_key": "resource_classes",
"create_status": 201,
"introduced_in": "yoga",
"item_key": "resource_classe",
"kind": "collection",
"method": "POST",
"microversion_max": "1.37",
"microversion_min": "1.0",
"operation_id": "resource_class_create",
"path": "/resource_classes",
"requires_auth": true,
"requires_project": true,
"resource_type": "resource_class",
"service": "placement",
"status_code": 201
},
{
"collection_key": "resource_classes",
"introduced_in": "yoga",
"item_key": "resource_classe",
"kind": "item",
"method": "GET",
"microversion_max": "1.37",
"microversion_min": "1.0",
"operation_id": "resource_class_show",
"path": "/resource_classes/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "resource_class",
"service": "placement",
"status_code": 200
},
{
"collection_key": "resource_classes",
"introduced_in": "yoga",
"item_key": "resource_classe",
"kind": "item",
"method": "PUT",
"microversion_max": "1.37",
"microversion_min": "1.0",
"operation_id": "resource_class_update",
"path": "/resource_classes/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "resource_class",
"service": "placement",
"status_code": 200
},
{
"collection_key": "resource_classes",
"introduced_in": "yoga",
"item_key": "resource_classe",
"kind": "item",
"method": "PATCH",
"microversion_max": "1.37",
"microversion_min": "1.0",
"operation_id": "resource_class_patch",
"path": "/resource_classes/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "resource_class",
"service": "placement",
"status_code": 200
},
{
"collection_key": "resource_classes",
"introduced_in": "yoga",
"kind": "item",
"method": "DELETE",
"microversion_max": "1.37",
"microversion_min": "1.0",
"operation_id": "resource_class_delete",
"path": "/resource_classes/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "resource_class",
"service": "placement",
"status_code": 204
},
{
"collection_key": "traits",
"introduced_in": "yoga",
"kind": "collection",
"method": "GET",
"microversion_max": "1.37",
"microversion_min": "1.0",
"operation_id": "trait_list",
"path": "/traits",
"requires_auth": true,
"requires_project": true,
"resource_type": "trait",
"service": "placement",
"status_code": 200
},
{
"collection_key": "traits",
"create_status": 201,
"introduced_in": "yoga",
"item_key": "trait",
"kind": "collection",
"method": "POST",
"microversion_max": "1.37",
"microversion_min": "1.0",
"operation_id": "trait_create",
"path": "/traits",
"requires_auth": true,
"requires_project": true,
"resource_type": "trait",
"service": "placement",
"status_code": 201
},
{
"collection_key": "traits",
"introduced_in": "yoga",
"item_key": "trait",
"kind": "item",
"method": "GET",
"microversion_max": "1.37",
"microversion_min": "1.0",
"operation_id": "trait_show",
"path": "/traits/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "trait",
"service": "placement",
"status_code": 200
},
{
"collection_key": "traits",
"introduced_in": "yoga",
"item_key": "trait",
"kind": "item",
"method": "PUT",
"microversion_max": "1.37",
"microversion_min": "1.0",
"operation_id": "trait_update",
"path": "/traits/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "trait",
"service": "placement",
"status_code": 200
},
{
"collection_key": "traits",
"introduced_in": "yoga",
"item_key": "trait",
"kind": "item",
"method": "PATCH",
"microversion_max": "1.37",
"microversion_min": "1.0",
"operation_id": "trait_patch",
"path": "/traits/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "trait",
"service": "placement",
"status_code": 200
},
{
"collection_key": "traits",
"introduced_in": "yoga",
"kind": "item",
"method": "DELETE",
"microversion_max": "1.37",
"microversion_min": "1.0",
"operation_id": "trait_delete",
"path": "/traits/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "trait",
"service": "placement",
"status_code": 204
},
{
"collection_key": "allocations",
"introduced_in": "yoga",
"kind": "custom",
"method": "GET",
"microversion_max": "1.37",
"microversion_min": "1.0",
"operation_id": "allocation_show",
"path": "/allocations/{consumer_uuid}",
"requires_auth": true,
"requires_project": true,
"resource_type": "allocation",
"service": "placement",
"status_code": 200
},
{
"collection_key": null,
"introduced_in": "yoga",
"kind": "custom",
"method": "PUT",
"microversion_max": "1.37",
"microversion_min": "1.0",
"operation_id": "allocation_set",
"path": "/allocations/{consumer_uuid}",
"requires_auth": true,
"requires_project": true,
"resource_type": "allocation",
"service": "placement",
"status_code": 204
},
{
"introduced_in": "yoga",
"kind": "custom",
"method": "DELETE",
"microversion_max": "1.37",
"microversion_min": "1.0",
"operation_id": "allocation_delete",
"path": "/allocations/{consumer_uuid}",
"requires_auth": true,
"requires_project": true,
"resource_type": "allocation",
"service": "placement",
"status_code": 204
},
{
"collection_key": "allocation_requests",
"introduced_in": "yoga",
"kind": "custom",
"method": "GET",
"microversion_max": "1.37",
"microversion_min": "1.0",
"operation_id": "allocation_candidates",
"path": "/allocation_candidates",
"requires_auth": true,
"requires_project": true,
"resource_type": "allocation_candidate",
"service": "placement",
"status_code": 200
},
{
"collection_key": "usages",
"introduced_in": "yoga",
"kind": "custom",
"method": "GET",
"microversion_max": "1.37",
"microversion_min": "1.0",
"operation_id": "usages",
"path": "/usages",
"requires_auth": true,
"requires_project": true,
"resource_type": "usage",
"service": "placement",
"status_code": 200
},
{
"collection_key": "inventories",
"introduced_in": "yoga",
"kind": "custom",
"method": "GET",
"microversion_max": "1.37",
"microversion_min": "1.0",
"operation_id": "rp_inventories",
"path": "/resource_providers/{id}/inventories",
"requires_auth": true,
"requires_project": true,
"resource_type": "inventory",
"service": "placement",
"status_code": 200
},
{
"collection_key": null,
"introduced_in": "yoga",
"kind": "custom",
"method": "PUT",
"microversion_max": "1.37",
"microversion_min": "1.0",
"operation_id": "rp_inventories_set",
"path": "/resource_providers/{id}/inventories",
"requires_auth": true,
"requires_project": true,
"resource_type": "inventory",
"service": "placement",
"status_code": 204
},
{
"collection_key": "aggregates",
"introduced_in": "yoga",
"kind": "custom",
"method": "GET",
"microversion_max": "1.37",
"microversion_min": "1.0",
"operation_id": "rp_aggregates",
"path": "/resource_providers/{id}/aggregates",
"requires_auth": true,
"requires_project": true,
"resource_type": "aggregate",
"service": "placement",
"status_code": 200
},
{
"collection_key": "traits",
"introduced_in": "yoga",
"kind": "custom",
"method": "GET",
"microversion_max": "1.37",
"microversion_min": "1.0",
"operation_id": "rp_traits",
"path": "/resource_providers/{id}/traits",
"requires_auth": true,
"requires_project": true,
"resource_type": "trait",
"service": "placement",
"status_code": 200
},
{
"collection_key": "usages",
"introduced_in": "yoga",
"kind": "custom",
"method": "GET",
"microversion_max": "1.37",
"microversion_min": "1.0",
"operation_id": "rp_usages",
"path": "/resource_providers/{id}/usages",
"requires_auth": true,
"requires_project": true,
"resource_type": "usage",
"service": "placement",
"status_code": 200
},
{
"collection_key": "allocations",
"introduced_in": "yoga",
"kind": "custom",
"method": "GET",
"microversion_max": "1.37",
"microversion_min": "1.0",
"operation_id": "rp_allocations",
"path": "/resource_providers/{id}/allocations",
"requires_auth": true,
"requires_project": true,
"resource_type": "allocation",
"service": "placement",
"status_code": 200
}
],
"port": 8003,
"service": "placement",
"type": "placement",
"version_path": "/"
}