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:
@@ -0,0 +1,528 @@
|
||||
{
|
||||
"default_microversion": null,
|
||||
"max_microversion": null,
|
||||
"operations": [
|
||||
{
|
||||
"collection_key": null,
|
||||
"introduced_in": "yoga",
|
||||
"kind": "custom",
|
||||
"method": "GET",
|
||||
"operation_id": "heat_versions",
|
||||
"path": "/v1",
|
||||
"requires_auth": true,
|
||||
"requires_project": false,
|
||||
"resource_type": "version",
|
||||
"service": "heat",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"collection_key": "stacks",
|
||||
"introduced_in": "yoga",
|
||||
"kind": "collection",
|
||||
"method": "GET",
|
||||
"operation_id": "stack_list",
|
||||
"path": "/v1/{tenant_id}/stacks",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "stack",
|
||||
"service": "heat",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"collection_key": "stacks",
|
||||
"create_status": 201,
|
||||
"introduced_in": "yoga",
|
||||
"item_key": "stack",
|
||||
"kind": "collection",
|
||||
"method": "POST",
|
||||
"operation_id": "stack_create",
|
||||
"path": "/v1/{tenant_id}/stacks",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "stack",
|
||||
"service": "heat",
|
||||
"status_code": 201
|
||||
},
|
||||
{
|
||||
"collection_key": "stacks",
|
||||
"introduced_in": "yoga",
|
||||
"item_key": "stack",
|
||||
"kind": "item",
|
||||
"method": "GET",
|
||||
"operation_id": "stack_show",
|
||||
"path": "/v1/{tenant_id}/stacks/{id}",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "stack",
|
||||
"service": "heat",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"collection_key": "stacks",
|
||||
"introduced_in": "yoga",
|
||||
"item_key": "stack",
|
||||
"kind": "item",
|
||||
"method": "PUT",
|
||||
"operation_id": "stack_update",
|
||||
"path": "/v1/{tenant_id}/stacks/{id}",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "stack",
|
||||
"service": "heat",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"collection_key": "stacks",
|
||||
"introduced_in": "yoga",
|
||||
"item_key": "stack",
|
||||
"kind": "item",
|
||||
"method": "PATCH",
|
||||
"operation_id": "stack_patch",
|
||||
"path": "/v1/{tenant_id}/stacks/{id}",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "stack",
|
||||
"service": "heat",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"collection_key": "stacks",
|
||||
"introduced_in": "yoga",
|
||||
"kind": "item",
|
||||
"method": "DELETE",
|
||||
"operation_id": "stack_delete",
|
||||
"path": "/v1/{tenant_id}/stacks/{id}",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "stack",
|
||||
"service": "heat",
|
||||
"status_code": 204
|
||||
},
|
||||
{
|
||||
"collection_key": "stacks",
|
||||
"introduced_in": "yoga",
|
||||
"kind": "custom",
|
||||
"method": "GET",
|
||||
"operation_id": "stack_list_detail",
|
||||
"path": "/v1/{tenant_id}/stacks/detail",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "stack",
|
||||
"service": "heat",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"collection_key": "stack",
|
||||
"introduced_in": "yoga",
|
||||
"kind": "custom",
|
||||
"method": "GET",
|
||||
"operation_id": "stack_show_by_name",
|
||||
"path": "/v1/{tenant_id}/stacks/{stack_name}/{stack_id}",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "stack",
|
||||
"service": "heat",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"introduced_in": "yoga",
|
||||
"kind": "custom",
|
||||
"method": "DELETE",
|
||||
"operation_id": "stack_delete_by_name",
|
||||
"path": "/v1/{tenant_id}/stacks/{stack_name}/{stack_id}",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "stack",
|
||||
"service": "heat",
|
||||
"status_code": 204
|
||||
},
|
||||
{
|
||||
"collection_key": "resources",
|
||||
"introduced_in": "yoga",
|
||||
"kind": "collection",
|
||||
"method": "GET",
|
||||
"operation_id": "stack_resource_list",
|
||||
"path": "/v1/{tenant_id}/stacks/{stack_name}/{stack_id}/resources",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "stack_resource",
|
||||
"service": "heat",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"collection_key": "resources",
|
||||
"create_status": 201,
|
||||
"introduced_in": "yoga",
|
||||
"item_key": "resource",
|
||||
"kind": "collection",
|
||||
"method": "POST",
|
||||
"operation_id": "stack_resource_create",
|
||||
"path": "/v1/{tenant_id}/stacks/{stack_name}/{stack_id}/resources",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "stack_resource",
|
||||
"service": "heat",
|
||||
"status_code": 201
|
||||
},
|
||||
{
|
||||
"collection_key": "resources",
|
||||
"introduced_in": "yoga",
|
||||
"item_key": "resource",
|
||||
"kind": "item",
|
||||
"method": "GET",
|
||||
"operation_id": "stack_resource_show",
|
||||
"path": "/v1/{tenant_id}/stacks/{stack_name}/{stack_id}/resources/{id}",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "stack_resource",
|
||||
"service": "heat",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"collection_key": "resources",
|
||||
"introduced_in": "yoga",
|
||||
"item_key": "resource",
|
||||
"kind": "item",
|
||||
"method": "PUT",
|
||||
"operation_id": "stack_resource_update",
|
||||
"path": "/v1/{tenant_id}/stacks/{stack_name}/{stack_id}/resources/{id}",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "stack_resource",
|
||||
"service": "heat",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"collection_key": "resources",
|
||||
"introduced_in": "yoga",
|
||||
"item_key": "resource",
|
||||
"kind": "item",
|
||||
"method": "PATCH",
|
||||
"operation_id": "stack_resource_patch",
|
||||
"path": "/v1/{tenant_id}/stacks/{stack_name}/{stack_id}/resources/{id}",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "stack_resource",
|
||||
"service": "heat",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"collection_key": "resources",
|
||||
"introduced_in": "yoga",
|
||||
"kind": "item",
|
||||
"method": "DELETE",
|
||||
"operation_id": "stack_resource_delete",
|
||||
"path": "/v1/{tenant_id}/stacks/{stack_name}/{stack_id}/resources/{id}",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "stack_resource",
|
||||
"service": "heat",
|
||||
"status_code": 204
|
||||
},
|
||||
{
|
||||
"collection_key": "events",
|
||||
"introduced_in": "yoga",
|
||||
"kind": "collection",
|
||||
"method": "GET",
|
||||
"operation_id": "stack_event_list",
|
||||
"path": "/v1/{tenant_id}/stacks/{stack_name}/{stack_id}/events",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "stack_event",
|
||||
"service": "heat",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"collection_key": "events",
|
||||
"create_status": 201,
|
||||
"introduced_in": "yoga",
|
||||
"item_key": "event",
|
||||
"kind": "collection",
|
||||
"method": "POST",
|
||||
"operation_id": "stack_event_create",
|
||||
"path": "/v1/{tenant_id}/stacks/{stack_name}/{stack_id}/events",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "stack_event",
|
||||
"service": "heat",
|
||||
"status_code": 201
|
||||
},
|
||||
{
|
||||
"collection_key": "events",
|
||||
"introduced_in": "yoga",
|
||||
"item_key": "event",
|
||||
"kind": "item",
|
||||
"method": "GET",
|
||||
"operation_id": "stack_event_show",
|
||||
"path": "/v1/{tenant_id}/stacks/{stack_name}/{stack_id}/events/{id}",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "stack_event",
|
||||
"service": "heat",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"collection_key": "events",
|
||||
"introduced_in": "yoga",
|
||||
"item_key": "event",
|
||||
"kind": "item",
|
||||
"method": "PUT",
|
||||
"operation_id": "stack_event_update",
|
||||
"path": "/v1/{tenant_id}/stacks/{stack_name}/{stack_id}/events/{id}",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "stack_event",
|
||||
"service": "heat",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"collection_key": "events",
|
||||
"introduced_in": "yoga",
|
||||
"item_key": "event",
|
||||
"kind": "item",
|
||||
"method": "PATCH",
|
||||
"operation_id": "stack_event_patch",
|
||||
"path": "/v1/{tenant_id}/stacks/{stack_name}/{stack_id}/events/{id}",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "stack_event",
|
||||
"service": "heat",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"collection_key": "events",
|
||||
"introduced_in": "yoga",
|
||||
"kind": "item",
|
||||
"method": "DELETE",
|
||||
"operation_id": "stack_event_delete",
|
||||
"path": "/v1/{tenant_id}/stacks/{stack_name}/{stack_id}/events/{id}",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "stack_event",
|
||||
"service": "heat",
|
||||
"status_code": 204
|
||||
},
|
||||
{
|
||||
"collection_key": "software_configs",
|
||||
"introduced_in": "yoga",
|
||||
"kind": "collection",
|
||||
"method": "GET",
|
||||
"operation_id": "software_config_list",
|
||||
"path": "/v1/{tenant_id}/software_configs",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "software_config",
|
||||
"service": "heat",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"collection_key": "software_configs",
|
||||
"create_status": 201,
|
||||
"introduced_in": "yoga",
|
||||
"item_key": "software_config",
|
||||
"kind": "collection",
|
||||
"method": "POST",
|
||||
"operation_id": "software_config_create",
|
||||
"path": "/v1/{tenant_id}/software_configs",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "software_config",
|
||||
"service": "heat",
|
||||
"status_code": 201
|
||||
},
|
||||
{
|
||||
"collection_key": "software_configs",
|
||||
"introduced_in": "yoga",
|
||||
"item_key": "software_config",
|
||||
"kind": "item",
|
||||
"method": "GET",
|
||||
"operation_id": "software_config_show",
|
||||
"path": "/v1/{tenant_id}/software_configs/{id}",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "software_config",
|
||||
"service": "heat",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"collection_key": "software_configs",
|
||||
"introduced_in": "yoga",
|
||||
"item_key": "software_config",
|
||||
"kind": "item",
|
||||
"method": "PUT",
|
||||
"operation_id": "software_config_update",
|
||||
"path": "/v1/{tenant_id}/software_configs/{id}",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "software_config",
|
||||
"service": "heat",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"collection_key": "software_configs",
|
||||
"introduced_in": "yoga",
|
||||
"item_key": "software_config",
|
||||
"kind": "item",
|
||||
"method": "PATCH",
|
||||
"operation_id": "software_config_patch",
|
||||
"path": "/v1/{tenant_id}/software_configs/{id}",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "software_config",
|
||||
"service": "heat",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"collection_key": "software_configs",
|
||||
"introduced_in": "yoga",
|
||||
"kind": "item",
|
||||
"method": "DELETE",
|
||||
"operation_id": "software_config_delete",
|
||||
"path": "/v1/{tenant_id}/software_configs/{id}",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "software_config",
|
||||
"service": "heat",
|
||||
"status_code": 204
|
||||
},
|
||||
{
|
||||
"collection_key": "software_deployments",
|
||||
"introduced_in": "yoga",
|
||||
"kind": "collection",
|
||||
"method": "GET",
|
||||
"operation_id": "software_deployment_list",
|
||||
"path": "/v1/{tenant_id}/software_deployments",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "software_deployment",
|
||||
"service": "heat",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"collection_key": "software_deployments",
|
||||
"create_status": 201,
|
||||
"introduced_in": "yoga",
|
||||
"item_key": "software_deployment",
|
||||
"kind": "collection",
|
||||
"method": "POST",
|
||||
"operation_id": "software_deployment_create",
|
||||
"path": "/v1/{tenant_id}/software_deployments",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "software_deployment",
|
||||
"service": "heat",
|
||||
"status_code": 201
|
||||
},
|
||||
{
|
||||
"collection_key": "software_deployments",
|
||||
"introduced_in": "yoga",
|
||||
"item_key": "software_deployment",
|
||||
"kind": "item",
|
||||
"method": "GET",
|
||||
"operation_id": "software_deployment_show",
|
||||
"path": "/v1/{tenant_id}/software_deployments/{id}",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "software_deployment",
|
||||
"service": "heat",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"collection_key": "software_deployments",
|
||||
"introduced_in": "yoga",
|
||||
"item_key": "software_deployment",
|
||||
"kind": "item",
|
||||
"method": "PUT",
|
||||
"operation_id": "software_deployment_update",
|
||||
"path": "/v1/{tenant_id}/software_deployments/{id}",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "software_deployment",
|
||||
"service": "heat",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"collection_key": "software_deployments",
|
||||
"introduced_in": "yoga",
|
||||
"item_key": "software_deployment",
|
||||
"kind": "item",
|
||||
"method": "PATCH",
|
||||
"operation_id": "software_deployment_patch",
|
||||
"path": "/v1/{tenant_id}/software_deployments/{id}",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "software_deployment",
|
||||
"service": "heat",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"collection_key": "software_deployments",
|
||||
"introduced_in": "yoga",
|
||||
"kind": "item",
|
||||
"method": "DELETE",
|
||||
"operation_id": "software_deployment_delete",
|
||||
"path": "/v1/{tenant_id}/software_deployments/{id}",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "software_deployment",
|
||||
"service": "heat",
|
||||
"status_code": 204
|
||||
},
|
||||
{
|
||||
"collection_key": "resource_types",
|
||||
"introduced_in": "yoga",
|
||||
"kind": "custom",
|
||||
"method": "GET",
|
||||
"operation_id": "heat_resource_types",
|
||||
"path": "/v1/{tenant_id}/resource_types",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "resource_type",
|
||||
"service": "heat",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"collection_key": "services",
|
||||
"introduced_in": "yoga",
|
||||
"kind": "custom",
|
||||
"method": "GET",
|
||||
"operation_id": "heat_services",
|
||||
"path": "/v1/{tenant_id}/services",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "service",
|
||||
"service": "heat",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"collection_key": "stack",
|
||||
"introduced_in": "yoga",
|
||||
"kind": "custom",
|
||||
"method": "POST",
|
||||
"operation_id": "stack_preview",
|
||||
"path": "/v1/{tenant_id}/stacks/preview",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "stack",
|
||||
"service": "heat",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"collection_key": null,
|
||||
"introduced_in": "yoga",
|
||||
"kind": "custom",
|
||||
"method": "POST",
|
||||
"operation_id": "template_validate",
|
||||
"path": "/v1/{tenant_id}/validate",
|
||||
"requires_auth": true,
|
||||
"requires_project": true,
|
||||
"resource_type": "template",
|
||||
"service": "heat",
|
||||
"status_code": 200
|
||||
}
|
||||
],
|
||||
"port": 8004,
|
||||
"service": "heat",
|
||||
"type": "orchestration",
|
||||
"version_path": "/v1/"
|
||||
}
|
||||
Reference in New Issue
Block a user