From 2e72a708200c3630ab18f8d3ec4e2a6163724b8d Mon Sep 17 00:00:00 2001 From: Graham Hayes Date: Wed, 26 Aug 2015 15:26:38 -0700 Subject: [PATCH] Inital Spec - API Change-Id: I10257d311a7218bd2d9cca3a5d8ca3f0b4c3105c --- specs/liberty/api.rst | 279 ++++++++++++++++++++++++++++++++++ specs/liberty/placeholder.rst | 163 -------------------- 2 files changed, 279 insertions(+), 163 deletions(-) create mode 100644 specs/liberty/api.rst delete mode 100644 specs/liberty/placeholder.rst diff --git a/specs/liberty/api.rst b/specs/liberty/api.rst new file mode 100644 index 0000000..e5aa148 --- /dev/null +++ b/specs/liberty/api.rst @@ -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": "", + "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/ +------------------ + +Returns a GLSB + +/v0.1/gslbs//pools +------------------------ + +Returns GLSB's list of pools + +/v0.1/gslbs//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/ +------------------ + +Returns a pool + +/v0.1/pools//monitors +--------------------------- + +Returns a pool's list of monitors + +/v0.1/pools//pool_members +------------------------------- + +Returns a pool's list of members + +/v0.1/pools//pool_members/ +-------------------------------------- + +Returns a pool member + +/v0.1/pools//pool_members//status +--------------------------------------------- + +Returns a pool members status (Up/Down etc) + +/v0.1/pools//pool_members//monitors +----------------------------------------------- + +Returns a members list of monitors + +/v0.1/pools//status +------------------------- + +Returns the status of a pool + +/v0.1/monitors +-------------- + +Returns a list of health monitors + +/v0.1/monitors/ +--------------------- + +Returns a monitor + +Implementation +============== + +Assignee(s) +----------- + + +Primary assignee: + gslb-core diff --git a/specs/liberty/placeholder.rst b/specs/liberty/placeholder.rst deleted file mode 100644 index e8e7649..0000000 --- a/specs/liberty/placeholder.rst +++ /dev/null @@ -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: - - -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?