Heat/GrizzlySummit/HeatApiDraftDiscussion
Session Lead: Steven Dake
Session Title: Heat Orchestration API draft design session
Session Description:
Overview of the template format currently implemented in heat. Overview of the API heat provides for operating on templates.
In this design session, expect 75% of time spent in open community design session on improvements to API and template model.
Contents
Heat OpenStack API Reference
See https://github.com/openstack/heat/blob/master/docs/api.md for the latest version.
List Stacks
GET /v1/{tenant_id}/stacks
Parameters:
- `tenant_id` The unique identifier of the tenant or account
Create Stack
POST /v1/{tenant_id}/stacks { "stack_name": "{stack_name}", "template_url": "{template_url}", "parameters": { "{key1}": "{value1}", "{key2}": "{value2}" }, "timeout_mins": {timeout_mins} }
Parameters:
- `tenant_id` The unique identifier of the tenant or account
- `stack_name` The name of the stack to create
- `template_url` The URL of the template to instantiate
- `template` A JSON template to instantiate - this takes precendence over the `template_url` if both are supplied
- `keyn`, `valuen` User-defined parameters to pass to the Template
- `timeout_mins` The timeout for stack creation in minutes
Result:
HTTP/1.1 201 Created Location: http://heat.example.com:8004/v1/{tenant_id}/stacks/{stack_name}/{stack_id}
Find Stack ID
GET /v1/{tenant_id}/stacks/{stack_name}
Parameters:
- `stack_name` The name of the stack to look up
Result:
HTTP/1.1 302 Found Location: http://heat.example.com:8004/v1/{tenant_id}/stacks/{stack_name}/{stack_id}
This operation also works with verbs other than `GET`, so you can also use it to perform `PUT` and `DELETE` operations on a current stack. Just set your client to follow redirects. Note that when redirecting, the request method should not change, as defined in RFC2626. However, in many clients the default behaviour is to change the method to `GET` when receiving a 302 because this behaviour is ubiquitous in web browsers.
Get Stack Data
GET /v1/{tenant_id}/stacks/{stack_name}/{stack_id}
Parameters:
- `stack_name` The name of the stack to look up
- `stack_id` The unique identifier of the stack to look up
Retrieve Stack Template
GET /v1/{tenant_id}/stacks/{stack_name}/{stack_id}/template
Parameters:
- `stack_name` The name of the stack to look up
- `stack_id` The unique identifier of the stack to look up
Update Stack
PUT /v1/{tenant_id}/stacks/{stack_name}/{stack_id} { "template_url": "{template_url}", "parameters": { "{key1}": "{value1}", "{key2}": "{value2}" }, "timeout_mins": {timeout_mins} }
Parameters:
- `tenant_id` The unique identifier of the tenant or account
- `stack_name` The name of the stack to create
- `stack_id` The unique identifier of the stack to look up
- `template_url` The URL of the updated template
- `template` An updated JSON template - this takes precendence over the `template_url` if both are supplied
- `keyn`, `valuen` User-defined parameters to pass to the Template
- `timeout_mins` The timeout for stack creation in minutes
Result:
HTTP/1.1 202 Accepted
Delete Stack
DELETE /v1/{tenant_id}/stacks/{stack_name}/{stack_id}
Parameters:
- `tenant_id` The unique identifier of the tenant or account
- `stack_name` The name of the stack to create
- `stack_id` The unique identifier of the stack to look up
Result:
HTTP/1.1 204 No Content
Validate Template
POST /v1/{tenant_id}/validate { "template_url": "{template_url}", "parameters": { "{key1}": "{value1}", "{key2}": "{value2}" } }
Parameters:
- `tenant_id` The unique identifier of the tenant or account
- `template_url` The URL of the template to validate
- `template` A JSON template to validate - this takes precendence over the `template_url` if both are supplied.
- `keyn`, `valuen` User-defined parameters to pass to the Template