Jump to: navigation, search

Difference between revisions of "Heat/GrizzlySummit/HeatApiDraftDiscussion"

(Add current API docs)
Line 9: Line 9:
  
 
In this design session, expect 75% of time spent in open community design session on improvements to API and template model.
 
In this design session, expect 75% of time spent in open community design session on improvements to API and template model.
 +
 +
== Heat [[OpenStack]] API Reference ==
 +
 +
''See https://github.com/heat-api/heat/blob/master/docs/api.md for the latest version.''
 +
 +
=== List Stacks ===
 +
 +
 +
<pre><nowiki>
 +
GET /v1/{tenant_id}/stacks
 +
</nowiki></pre>
 +
 +
 +
Parameters:
 +
 +
* `tenant_id` The unique identifier of the tenant or account
 +
 +
=== Create Stack ===
 +
 +
 +
<pre><nowiki>
 +
POST /v1/{tenant_id}/stacks
 +
 +
{
 +
    "stack_name": "{stack_name}",
 +
    "template_url": "{template_url}",
 +
    "parameters": {
 +
        "{key1}": "{value1}",
 +
        "{key2}": "{value2}"
 +
    },
 +
    "timeout_mins": {timeout_mins}
 +
}
 +
</nowiki></pre>
 +
 +
 +
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:
 +
 +
 +
<pre><nowiki>
 +
HTTP/1.1 201 Created
 +
Location: http://heat.example.com:8004/v1/{tenant_id}/stacks/{stack_name}/{stack_id}
 +
</nowiki></pre>
 +
 +
 +
=== Find Stack ID ===
 +
 +
 +
<pre><nowiki>
 +
GET /v1/{tenant_id}/stacks/{stack_name}
 +
</nowiki></pre>
 +
 +
 +
Parameters:
 +
 +
* `stack_name` The name of the stack to look up
 +
 +
Result:
 +
 +
 +
<pre><nowiki>
 +
HTTP/1.1 302 Found
 +
Location: http://heat.example.com:8004/v1/{tenant_id}/stacks/{stack_name}/{stack_id}
 +
</nowiki></pre>
 +
 +
 +
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](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.3). 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 ===
 +
 +
 +
<pre><nowiki>
 +
GET /v1/{tenant_id}/stacks/{stack_name}/{stack_id}
 +
</nowiki></pre>
 +
 +
 +
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 ===
 +
 +
 +
<pre><nowiki>
 +
GET /v1/{tenant_id}/stacks/{stack_name}/{stack_id}/template
 +
</nowiki></pre>
 +
 +
 +
Parameters:
 +
 +
* `stack_name` The name of the stack to look up
 +
* `stack_id` The unique identifier of the stack to look up
 +
 +
=== Update Stack ===
 +
 +
 +
<pre><nowiki>
 +
PUT /v1/{tenant_id}/stacks/{stack_name}/{stack_id}
 +
 +
{
 +
    "template_url": "{template_url}",
 +
    "parameters": {
 +
        "{key1}": "{value1}",
 +
        "{key2}": "{value2}"
 +
    },
 +
    "timeout_mins": {timeout_mins}
 +
}
 +
</nowiki></pre>
 +
 +
 +
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:
 +
 +
 +
<pre><nowiki>
 +
HTTP/1.1 202 Accepted
 +
</nowiki></pre>
 +
 +
 +
=== Delete Stack ===
 +
 +
 +
<pre><nowiki>
 +
DELETE /v1/{tenant_id}/stacks/{stack_name}/{stack_id}
 +
</nowiki></pre>
 +
 +
 +
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:
 +
 +
 +
<pre><nowiki>
 +
HTTP/1.1 204 No Content
 +
</nowiki></pre>
 +
 +
 +
=== Validate Template ===
 +
 +
 +
<pre><nowiki>
 +
POST /v1/{tenant_id}/validate
 +
 +
{
 +
    "template_url": "{template_url}",
 +
    "parameters": {
 +
        "{key1}": "{value1}",
 +
        "{key2}": "{value2}"
 +
    }
 +
}
 +
</nowiki></pre>
 +
 +
 +
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

Revision as of 14:40, 11 October 2012

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.

Heat OpenStack API Reference

See https://github.com/heat-api/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](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.3). 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