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,687 @@
{
"default_microversion": null,
"max_microversion": null,
"operations": [
{
"collection_key": null,
"introduced_in": "yoga",
"kind": "custom",
"method": "GET",
"operation_id": "watcher_versions",
"path": "/v1",
"requires_auth": true,
"requires_project": false,
"resource_type": "version",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "audit_templates",
"introduced_in": "dalmatian",
"kind": "collection",
"method": "GET",
"operation_id": "audit_template_list",
"path": "/v1/audit_templates",
"requires_auth": true,
"requires_project": true,
"resource_type": "audit_template",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "audit_templates",
"create_status": 201,
"introduced_in": "dalmatian",
"item_key": "audit_template",
"kind": "collection",
"method": "POST",
"operation_id": "audit_template_create",
"path": "/v1/audit_templates",
"requires_auth": true,
"requires_project": true,
"resource_type": "audit_template",
"service": "watcher",
"status_code": 201
},
{
"collection_key": "audit_templates",
"introduced_in": "dalmatian",
"item_key": "audit_template",
"kind": "item",
"method": "GET",
"operation_id": "audit_template_show",
"path": "/v1/audit_templates/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "audit_template",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "audit_templates",
"introduced_in": "dalmatian",
"item_key": "audit_template",
"kind": "item",
"method": "PUT",
"operation_id": "audit_template_update",
"path": "/v1/audit_templates/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "audit_template",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "audit_templates",
"introduced_in": "dalmatian",
"item_key": "audit_template",
"kind": "item",
"method": "PATCH",
"operation_id": "audit_template_patch",
"path": "/v1/audit_templates/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "audit_template",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "audit_templates",
"introduced_in": "dalmatian",
"kind": "item",
"method": "DELETE",
"operation_id": "audit_template_delete",
"path": "/v1/audit_templates/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "audit_template",
"service": "watcher",
"status_code": 204
},
{
"collection_key": "audits",
"introduced_in": "dalmatian",
"kind": "collection",
"method": "GET",
"operation_id": "audit_list",
"path": "/v1/audits",
"requires_auth": true,
"requires_project": true,
"resource_type": "audit",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "audits",
"create_status": 201,
"introduced_in": "dalmatian",
"item_key": "audit",
"kind": "collection",
"method": "POST",
"operation_id": "audit_create",
"path": "/v1/audits",
"requires_auth": true,
"requires_project": true,
"resource_type": "audit",
"service": "watcher",
"status_code": 201
},
{
"collection_key": "audits",
"introduced_in": "dalmatian",
"item_key": "audit",
"kind": "item",
"method": "GET",
"operation_id": "audit_show",
"path": "/v1/audits/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "audit",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "audits",
"introduced_in": "dalmatian",
"item_key": "audit",
"kind": "item",
"method": "PUT",
"operation_id": "audit_update",
"path": "/v1/audits/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "audit",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "audits",
"introduced_in": "dalmatian",
"item_key": "audit",
"kind": "item",
"method": "PATCH",
"operation_id": "audit_patch",
"path": "/v1/audits/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "audit",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "audits",
"introduced_in": "dalmatian",
"kind": "item",
"method": "DELETE",
"operation_id": "audit_delete",
"path": "/v1/audits/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "audit",
"service": "watcher",
"status_code": 204
},
{
"collection_key": "action_plans",
"introduced_in": "dalmatian",
"kind": "collection",
"method": "GET",
"operation_id": "action_plan_list",
"path": "/v1/action_plans",
"requires_auth": true,
"requires_project": true,
"resource_type": "action_plan",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "action_plans",
"create_status": 201,
"introduced_in": "dalmatian",
"item_key": "action_plan",
"kind": "collection",
"method": "POST",
"operation_id": "action_plan_create",
"path": "/v1/action_plans",
"requires_auth": true,
"requires_project": true,
"resource_type": "action_plan",
"service": "watcher",
"status_code": 201
},
{
"collection_key": "action_plans",
"introduced_in": "dalmatian",
"item_key": "action_plan",
"kind": "item",
"method": "GET",
"operation_id": "action_plan_show",
"path": "/v1/action_plans/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "action_plan",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "action_plans",
"introduced_in": "dalmatian",
"item_key": "action_plan",
"kind": "item",
"method": "PUT",
"operation_id": "action_plan_update",
"path": "/v1/action_plans/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "action_plan",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "action_plans",
"introduced_in": "dalmatian",
"item_key": "action_plan",
"kind": "item",
"method": "PATCH",
"operation_id": "action_plan_patch",
"path": "/v1/action_plans/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "action_plan",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "action_plans",
"introduced_in": "dalmatian",
"kind": "item",
"method": "DELETE",
"operation_id": "action_plan_delete",
"path": "/v1/action_plans/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "action_plan",
"service": "watcher",
"status_code": 204
},
{
"collection_key": "actions",
"introduced_in": "yoga",
"kind": "collection",
"method": "GET",
"operation_id": "action_list",
"path": "/v1/actions",
"requires_auth": true,
"requires_project": true,
"resource_type": "action",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "actions",
"create_status": 201,
"introduced_in": "yoga",
"item_key": "action",
"kind": "collection",
"method": "POST",
"operation_id": "action_create",
"path": "/v1/actions",
"requires_auth": true,
"requires_project": true,
"resource_type": "action",
"service": "watcher",
"status_code": 201
},
{
"collection_key": "actions",
"introduced_in": "yoga",
"item_key": "action",
"kind": "item",
"method": "GET",
"operation_id": "action_show",
"path": "/v1/actions/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "action",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "actions",
"introduced_in": "yoga",
"item_key": "action",
"kind": "item",
"method": "PUT",
"operation_id": "action_update",
"path": "/v1/actions/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "action",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "actions",
"introduced_in": "yoga",
"item_key": "action",
"kind": "item",
"method": "PATCH",
"operation_id": "action_patch",
"path": "/v1/actions/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "action",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "actions",
"introduced_in": "yoga",
"kind": "item",
"method": "DELETE",
"operation_id": "action_delete",
"path": "/v1/actions/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "action",
"service": "watcher",
"status_code": 204
},
{
"collection_key": "goals",
"introduced_in": "yoga",
"kind": "collection",
"method": "GET",
"operation_id": "goal_list",
"path": "/v1/goals",
"requires_auth": true,
"requires_project": true,
"resource_type": "goal",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "goals",
"create_status": 201,
"introduced_in": "yoga",
"item_key": "goal",
"kind": "collection",
"method": "POST",
"operation_id": "goal_create",
"path": "/v1/goals",
"requires_auth": true,
"requires_project": true,
"resource_type": "goal",
"service": "watcher",
"status_code": 201
},
{
"collection_key": "goals",
"introduced_in": "yoga",
"item_key": "goal",
"kind": "item",
"method": "GET",
"operation_id": "goal_show",
"path": "/v1/goals/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "goal",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "goals",
"introduced_in": "yoga",
"item_key": "goal",
"kind": "item",
"method": "PUT",
"operation_id": "goal_update",
"path": "/v1/goals/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "goal",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "goals",
"introduced_in": "yoga",
"item_key": "goal",
"kind": "item",
"method": "PATCH",
"operation_id": "goal_patch",
"path": "/v1/goals/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "goal",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "goals",
"introduced_in": "yoga",
"kind": "item",
"method": "DELETE",
"operation_id": "goal_delete",
"path": "/v1/goals/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "goal",
"service": "watcher",
"status_code": 204
},
{
"collection_key": "strategies",
"introduced_in": "yoga",
"kind": "collection",
"method": "GET",
"operation_id": "strategy_list",
"path": "/v1/strategies",
"requires_auth": true,
"requires_project": true,
"resource_type": "strategy",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "strategies",
"create_status": 201,
"introduced_in": "yoga",
"item_key": "strategy",
"kind": "collection",
"method": "POST",
"operation_id": "strategy_create",
"path": "/v1/strategies",
"requires_auth": true,
"requires_project": true,
"resource_type": "strategy",
"service": "watcher",
"status_code": 201
},
{
"collection_key": "strategies",
"introduced_in": "yoga",
"item_key": "strategy",
"kind": "item",
"method": "GET",
"operation_id": "strategy_show",
"path": "/v1/strategies/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "strategy",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "strategies",
"introduced_in": "yoga",
"item_key": "strategy",
"kind": "item",
"method": "PUT",
"operation_id": "strategy_update",
"path": "/v1/strategies/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "strategy",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "strategies",
"introduced_in": "yoga",
"item_key": "strategy",
"kind": "item",
"method": "PATCH",
"operation_id": "strategy_patch",
"path": "/v1/strategies/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "strategy",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "strategies",
"introduced_in": "yoga",
"kind": "item",
"method": "DELETE",
"operation_id": "strategy_delete",
"path": "/v1/strategies/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "strategy",
"service": "watcher",
"status_code": 204
},
{
"collection_key": "scoring_engines",
"introduced_in": "dalmatian",
"kind": "collection",
"method": "GET",
"operation_id": "scoring_engine_list",
"path": "/v1/scoring_engines",
"requires_auth": true,
"requires_project": true,
"resource_type": "scoring_engine",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "scoring_engines",
"create_status": 201,
"introduced_in": "dalmatian",
"item_key": "scoring_engine",
"kind": "collection",
"method": "POST",
"operation_id": "scoring_engine_create",
"path": "/v1/scoring_engines",
"requires_auth": true,
"requires_project": true,
"resource_type": "scoring_engine",
"service": "watcher",
"status_code": 201
},
{
"collection_key": "scoring_engines",
"introduced_in": "dalmatian",
"item_key": "scoring_engine",
"kind": "item",
"method": "GET",
"operation_id": "scoring_engine_show",
"path": "/v1/scoring_engines/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "scoring_engine",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "scoring_engines",
"introduced_in": "dalmatian",
"item_key": "scoring_engine",
"kind": "item",
"method": "PUT",
"operation_id": "scoring_engine_update",
"path": "/v1/scoring_engines/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "scoring_engine",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "scoring_engines",
"introduced_in": "dalmatian",
"item_key": "scoring_engine",
"kind": "item",
"method": "PATCH",
"operation_id": "scoring_engine_patch",
"path": "/v1/scoring_engines/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "scoring_engine",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "scoring_engines",
"introduced_in": "dalmatian",
"kind": "item",
"method": "DELETE",
"operation_id": "scoring_engine_delete",
"path": "/v1/scoring_engines/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "scoring_engine",
"service": "watcher",
"status_code": 204
},
{
"collection_key": "services",
"introduced_in": "yoga",
"kind": "collection",
"method": "GET",
"operation_id": "service_list",
"path": "/v1/services",
"requires_auth": true,
"requires_project": true,
"resource_type": "service",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "services",
"create_status": 201,
"introduced_in": "yoga",
"item_key": "service",
"kind": "collection",
"method": "POST",
"operation_id": "service_create",
"path": "/v1/services",
"requires_auth": true,
"requires_project": true,
"resource_type": "service",
"service": "watcher",
"status_code": 201
},
{
"collection_key": "services",
"introduced_in": "yoga",
"item_key": "service",
"kind": "item",
"method": "GET",
"operation_id": "service_show",
"path": "/v1/services/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "service",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "services",
"introduced_in": "yoga",
"item_key": "service",
"kind": "item",
"method": "PUT",
"operation_id": "service_update",
"path": "/v1/services/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "service",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "services",
"introduced_in": "yoga",
"item_key": "service",
"kind": "item",
"method": "PATCH",
"operation_id": "service_patch",
"path": "/v1/services/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "service",
"service": "watcher",
"status_code": 200
},
{
"collection_key": "services",
"introduced_in": "yoga",
"kind": "item",
"method": "DELETE",
"operation_id": "service_delete",
"path": "/v1/services/{id}",
"requires_auth": true,
"requires_project": true,
"resource_type": "service",
"service": "watcher",
"status_code": 204
}
],
"port": 9322,
"service": "watcher",
"type": "infra-optim",
"version_path": "/v1/"
}