Inital Spec - API
Change-Id: I10257d311a7218bd2d9cca3a5d8ca3f0b4c3105c
This commit is contained in:
parent
68efa29e49
commit
2e72a70820
279
specs/liberty/api.rst
Normal file
279
specs/liberty/api.rst
Normal file
@ -0,0 +1,279 @@
|
|||||||
|
..
|
||||||
|
|
||||||
|
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
|
||||||
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||||
|
|
||||||
|
..
|
||||||
|
This template should be in ReSTructured text. The filename in the git
|
||||||
|
repository should match the launchpad URL, for example a URL of
|
||||||
|
https://blueprints.launchpad.net/gslb/+spec/awesome-thing should be named
|
||||||
|
awesome-thing.rst . Please do not delete any of the sections in this
|
||||||
|
template. If you have nothing to say for a whole section, just write: None
|
||||||
|
For help with syntax, see http://sphinx-doc.org/rest.html
|
||||||
|
To test out your formatting, see http://www.tele3.cz/jbar/rest/rest.html
|
||||||
|
|
||||||
|
=====
|
||||||
|
API
|
||||||
|
=====
|
||||||
|
|
||||||
|
https://blueprints.launchpad.net/kosmos/+spec/api
|
||||||
|
|
||||||
|
We need an API, so defining it is a good start.
|
||||||
|
|
||||||
|
Example JSON Snippets
|
||||||
|
=====================
|
||||||
|
|
||||||
|
Load Balancer JSON Snippet
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
.. code-block:: json
|
||||||
|
|
||||||
|
{
|
||||||
|
"id": "f9fc6210-8efa-4492-9b4f-d87ba98f35b8",
|
||||||
|
"name": "Main Website",
|
||||||
|
"fqdn": "www.gslb.example.com.",
|
||||||
|
"domain_name": "example.com.",
|
||||||
|
"flavor": "example_1",
|
||||||
|
"status": "ACTIVE",
|
||||||
|
"links": {
|
||||||
|
"self": "http://example.gslb.openstack.org/v0.1/gslbs/f9fc6210-8efa-4492-9b4f-d87ba98f35b8",
|
||||||
|
"pools": "http://example.gslb.openstack.org/v0.1/gslbs/f9fc6210-8efa-4492-9b4f-d87ba98f35b8/pools",
|
||||||
|
"status": "http://example.gslb.openstack.org/v0.1/gslbs/f9fc6210-8efa-4492-9b4f-d87ba98f35b8/status"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Pool JSON Snippet
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
.. code-block:: json
|
||||||
|
|
||||||
|
{
|
||||||
|
"id": "f9fc6210-8efa-4492-9b4f-d87ba98f35b8",
|
||||||
|
"name": "Main Website Pool",
|
||||||
|
"flavor": "example_1",
|
||||||
|
"status": "ACTIVE",
|
||||||
|
"members":["SEE MEMBER SNIPPETS BELOW"],
|
||||||
|
"links": {
|
||||||
|
"self": "http://example.gslb.openstack.org/v0.1/pools/f9fc6210-8efa-4492-9b4f-d87ba98f35b8",
|
||||||
|
"pool_members": "http://example.gslb.openstack.org/v0.1/pools/f9fc6210-8efa-4492-9b4f-d87ba98f35b8/pool_members",
|
||||||
|
"status": "http://example.gslb.openstack.org/v0.1/pools/f9fc6210-8efa-4492-9b4f-d87ba98f35b8/status"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Pool Member JSON Snippet - Neutron LBaaS
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. code-block:: json
|
||||||
|
|
||||||
|
{
|
||||||
|
"id": "f9fc6210-8efa-4492-9b4f-d87ba98f35b8",
|
||||||
|
"name": "Main Website",
|
||||||
|
"type": "neutron_lbaas_v2",
|
||||||
|
"region": "RegionTwo",
|
||||||
|
"neutron_id": "df40954c-982a-4778-a1b2-32b93cf75af9",
|
||||||
|
"status": "ACTIVE",
|
||||||
|
"endpoints": [
|
||||||
|
"10.10.0.1"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Pool Member JSON Snippet - Neutron Port
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. code-block:: json
|
||||||
|
|
||||||
|
{
|
||||||
|
"id": "f9fc6210-8efa-4492-9b4f-d87ba98f35b8",
|
||||||
|
"name": "Main Website",
|
||||||
|
"type": "neutron_port",
|
||||||
|
"region": "RegionTwo",
|
||||||
|
"neutron_id": "78fa9c7f-f200-49df-912b-ae4679fd21e9",
|
||||||
|
"status": "ACTIVE",
|
||||||
|
"endpoints": [
|
||||||
|
"10.10.0.1"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
Pool Member JSON Snippet - IP
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. code-block:: json
|
||||||
|
|
||||||
|
{
|
||||||
|
"id": "f9fc6210-8efa-4492-9b4f-d87ba98f35b8",
|
||||||
|
"name": "Main Website",
|
||||||
|
"type": "IP",
|
||||||
|
"status": "ACTIVE",
|
||||||
|
"endpoints": [
|
||||||
|
"10.10.0.1"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Monitor JSON Snippet - TCP Basic
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. code-block:: json
|
||||||
|
|
||||||
|
{
|
||||||
|
"id" : "f9fc6210-8efa-4492-9b4f-d87ba98f35b8",
|
||||||
|
"type" : "TCP",
|
||||||
|
"delay" : 20,
|
||||||
|
"timeout": 10,
|
||||||
|
"max_retries": 3,
|
||||||
|
"port" : 22,
|
||||||
|
"name": "ssh_generic"
|
||||||
|
}
|
||||||
|
|
||||||
|
Monitor JSON Snippet - Ping Basic
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. code-block:: json
|
||||||
|
|
||||||
|
{
|
||||||
|
"id" : "f9fc6210-8efa-4492-9b4f-d87ba98f35b8",
|
||||||
|
"type" : "PING",
|
||||||
|
"delay" : 20,
|
||||||
|
"timeout": 10,
|
||||||
|
"max_retries": 3,
|
||||||
|
"name": "ping_generic"
|
||||||
|
}
|
||||||
|
|
||||||
|
Monitor JSON Snippet - HTTP
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. code-block:: json
|
||||||
|
|
||||||
|
{
|
||||||
|
"id" : "f9fc6210-8efa-4492-9b4f-d87ba98f35b8",
|
||||||
|
"delay": 20,
|
||||||
|
"timeout": 10,
|
||||||
|
"max_retries": 3,
|
||||||
|
"type": "HTTP",
|
||||||
|
"http_method": "GET",
|
||||||
|
"url_path": "/healthchecks",
|
||||||
|
"receive_string": "SUCCESS",
|
||||||
|
"expected_codes": [
|
||||||
|
200,
|
||||||
|
202
|
||||||
|
],
|
||||||
|
"name": "http-generic",
|
||||||
|
"port" : 80
|
||||||
|
}
|
||||||
|
|
||||||
|
Monitor JSON Snippet - HTTPS
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. code-block:: json
|
||||||
|
|
||||||
|
{
|
||||||
|
"id" : "f9fc6210-8efa-4492-9b4f-d87ba98f35b8",
|
||||||
|
"delay": 20,
|
||||||
|
"timeout": 10,
|
||||||
|
"max_retries": 3,
|
||||||
|
"type": "HTTPS",
|
||||||
|
"insecure": false,
|
||||||
|
"http_method": "POST",
|
||||||
|
"payload": {
|
||||||
|
"content_type" : "application/json",
|
||||||
|
"content": "{'demo': 'JSON', 'Blob': 'of data'}"
|
||||||
|
},
|
||||||
|
"ca_cert": "<CA_CERT_BLOB>",
|
||||||
|
"url_path": "/healthchecks",
|
||||||
|
"receive_string" "SUCCESS",
|
||||||
|
"expected_codes": [
|
||||||
|
200,
|
||||||
|
202
|
||||||
|
],
|
||||||
|
"name": "https-generic",
|
||||||
|
"port" : 443
|
||||||
|
}
|
||||||
|
|
||||||
|
Endpoints
|
||||||
|
=========
|
||||||
|
|
||||||
|
All of these endpoints will have the usual CRUD methods available
|
||||||
|
|
||||||
|
/v0.1/gslbs
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Returns a list of GLSBs
|
||||||
|
|
||||||
|
/v0.1/gslbs/<uuid>
|
||||||
|
------------------
|
||||||
|
|
||||||
|
Returns a GLSB
|
||||||
|
|
||||||
|
/v0.1/gslbs/<uuid>/pools
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
Returns GLSB's list of pools
|
||||||
|
|
||||||
|
/v0.1/gslbs/<uuid>/history
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
Returns GLSB's history (up/down/degraded etc)
|
||||||
|
|
||||||
|
.. note:: This may or may not make MVP. This should only be a limited history, and for MVP my just be a "last updated" field
|
||||||
|
|
||||||
|
/v0.1/pools
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Returns a list of Pools
|
||||||
|
|
||||||
|
/v0.1/pools/<uuid>
|
||||||
|
------------------
|
||||||
|
|
||||||
|
Returns a pool
|
||||||
|
|
||||||
|
/v0.1/pools/<uuid>/monitors
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
Returns a pool's list of monitors
|
||||||
|
|
||||||
|
/v0.1/pools/<uuid>/pool_members
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
Returns a pool's list of members
|
||||||
|
|
||||||
|
/v0.1/pools/<uuid>/pool_members/<uuid>
|
||||||
|
--------------------------------------
|
||||||
|
|
||||||
|
Returns a pool member
|
||||||
|
|
||||||
|
/v0.1/pools/<uuid>/pool_members/<uuid>/status
|
||||||
|
---------------------------------------------
|
||||||
|
|
||||||
|
Returns a pool members status (Up/Down etc)
|
||||||
|
|
||||||
|
/v0.1/pools/<uuid>/pool_members/<uuid>/monitors
|
||||||
|
-----------------------------------------------
|
||||||
|
|
||||||
|
Returns a members list of monitors
|
||||||
|
|
||||||
|
/v0.1/pools/<uuid>/status
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
Returns the status of a pool
|
||||||
|
|
||||||
|
/v0.1/monitors
|
||||||
|
--------------
|
||||||
|
|
||||||
|
Returns a list of health monitors
|
||||||
|
|
||||||
|
/v0.1/monitors/<uuid>
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
Returns a monitor
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
==============
|
||||||
|
|
||||||
|
Assignee(s)
|
||||||
|
-----------
|
||||||
|
|
||||||
|
|
||||||
|
Primary assignee:
|
||||||
|
gslb-core
|
@ -1,163 +0,0 @@
|
|||||||
..
|
|
||||||
|
|
||||||
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
|
|
||||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
|
||||||
|
|
||||||
..
|
|
||||||
This template should be in ReSTructured text. The filename in the git
|
|
||||||
repository should match the launchpad URL, for example a URL of
|
|
||||||
https://blueprints.launchpad.net/gslb/+spec/awesome-thing should be named
|
|
||||||
awesome-thing.rst . Please do not delete any of the sections in this
|
|
||||||
template. If you have nothing to say for a whole section, just write: None
|
|
||||||
For help with syntax, see http://sphinx-doc.org/rest.html
|
|
||||||
To test out your formatting, see http://www.tele3.cz/jbar/rest/rest.html
|
|
||||||
|
|
||||||
=============================
|
|
||||||
The title of your blueprint
|
|
||||||
=============================
|
|
||||||
|
|
||||||
Include the URL of your launchpad blueprint:
|
|
||||||
|
|
||||||
https://blueprints.launchpad.net/kosmos/+spec/example
|
|
||||||
|
|
||||||
Introduction paragraph -- why are we doing anything?
|
|
||||||
|
|
||||||
|
|
||||||
Problem description
|
|
||||||
===================
|
|
||||||
|
|
||||||
A detailed description of the problem.
|
|
||||||
|
|
||||||
Proposed change
|
|
||||||
===============
|
|
||||||
|
|
||||||
Here is where you cover the change you propose to make in detail. How do you
|
|
||||||
propose to solve this problem?
|
|
||||||
|
|
||||||
If this is one part of a larger effort make it clear where this piece ends. In
|
|
||||||
other words, what's the scope of this effort?
|
|
||||||
|
|
||||||
Include where in the designate tree hierarchy this will reside.
|
|
||||||
|
|
||||||
API Changes
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Include API Changes here. If you are adding endpoints / add major modifications
|
|
||||||
please ensure you have examples for calls / results - eg:
|
|
||||||
|
|
||||||
POST /v2/doohickey
|
|
||||||
^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
This creates a doohicky.
|
|
||||||
|
|
||||||
It returns an ID and the doohickey
|
|
||||||
|
|
||||||
.. code-block:: http
|
|
||||||
|
|
||||||
POST /v2/doohickey HTTP/1.1
|
|
||||||
Accept: application/json
|
|
||||||
Content-Type: application/json
|
|
||||||
|
|
||||||
{
|
|
||||||
"doohickey":{
|
|
||||||
"foo":"bar"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
HTTP/1.1 201 Created
|
|
||||||
Content-Type: application/json; charset=UTF-8
|
|
||||||
Location: /v2/doohickey/cddda8f0-f558-11e3-a3ac-0800200c9a66
|
|
||||||
|
|
||||||
{
|
|
||||||
"doohickey":{
|
|
||||||
"id":"cddda8f0-f558-11e3-a3ac-0800200c9a66",
|
|
||||||
"foo":"bar",
|
|
||||||
"links":{
|
|
||||||
"self" : "/v2/doohickey/cddda8f0-f558-11e3-a3ac-0800200c9a66"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
It may be usefull to add a table with the parameters, and a info about them
|
|
||||||
|
|
||||||
+-----------+--------------------------------+----------+
|
|
||||||
| Parameter | Description | Required |
|
|
||||||
+===========+================================+==========+
|
|
||||||
| foo | the foo value for the doohicky | Yes |
|
|
||||||
+-----------+--------------------------------+----------+
|
|
||||||
|
|
||||||
Central Changes
|
|
||||||
---------------
|
|
||||||
|
|
||||||
Any changes to the central service
|
|
||||||
|
|
||||||
Storage Changes
|
|
||||||
---------------
|
|
||||||
|
|
||||||
Any changes to the DB. This should be a table (if creating a new table)
|
|
||||||
eg:
|
|
||||||
|
|
||||||
|
|
||||||
New Table - DooHickey
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
+-----+---------+-----------+---------+
|
|
||||||
| Row | Type | Nullable? | Unique? |
|
|
||||||
+=====+=========+===========+=========+
|
|
||||||
| id | uuid | No | Yes |
|
|
||||||
+-----+---------+-----------+---------+
|
|
||||||
| foo | VARCHAR | No | No |
|
|
||||||
+-----+---------+-----------+---------+
|
|
||||||
|
|
||||||
Other Changes
|
|
||||||
-------------
|
|
||||||
|
|
||||||
Any other changes to Designate, broken down by which sub system is being
|
|
||||||
changed
|
|
||||||
|
|
||||||
Alternatives
|
|
||||||
------------
|
|
||||||
|
|
||||||
This is an optional section, where it does apply we'd just like a demonstration
|
|
||||||
that some thought has been put into why the proposed approach is the best one.
|
|
||||||
|
|
||||||
Implementation
|
|
||||||
==============
|
|
||||||
|
|
||||||
Assignee(s)
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Who is leading the writing of the code? Or is this a blueprint where you're
|
|
||||||
throwing it out there to see who picks it up?
|
|
||||||
|
|
||||||
If more than one person is working on the implementation, please designate the
|
|
||||||
primary author and contact.
|
|
||||||
|
|
||||||
Primary assignee:
|
|
||||||
<launchpad-id or None>
|
|
||||||
|
|
||||||
Can optionally can list additional ids if they intend on doing
|
|
||||||
substantial implementation work on this blueprint.
|
|
||||||
|
|
||||||
Milestones
|
|
||||||
----------
|
|
||||||
|
|
||||||
Target Milestone for completion:
|
|
||||||
Juno-1
|
|
||||||
|
|
||||||
Work Items
|
|
||||||
----------
|
|
||||||
|
|
||||||
Work items or tasks -- break the feature up into the things that need to be
|
|
||||||
done to implement it. Those parts might end up being done by different people,
|
|
||||||
but we're mostly trying to understand the timeline for implementation.
|
|
||||||
|
|
||||||
|
|
||||||
Dependencies
|
|
||||||
============
|
|
||||||
|
|
||||||
- Include specific references to specs and/or blueprints in designate, or in other
|
|
||||||
projects, that this one either depends on or is related to.
|
|
||||||
|
|
||||||
- Does this feature require any new library dependencies or code otherwise not
|
|
||||||
included in OpenStack? Or does it depend on a specific version of library?
|
|
Loading…
Reference in New Issue
Block a user