Jump to: navigation, search

Difference between revisions of "Designate/Blueprints/Reverse"

(Overview)
 
(7 intermediate revisions by 3 users not shown)
Line 3: Line 3:
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! Gerrit Patch || []
+
! Gerrit Patch || [https://review.openstack.org/#/c/58316/]
 
|-
 
|-
! Launchpad Blueprint || [https://blueprints.launchpad.net/designate/+spec/reverse]
+
! Launchpad Blueprint || [https://blueprints.launchpad.net/designate/+spec/floating-ip-ptrs]
 
|}
 
|}
  
Line 11: Line 11:
  
 
== API Resource - General ==
 
== API Resource - General ==
One new general endpoint called "/reverse" will be created for the Designate REST API. We will outline 2 different Sub-URLs.
+
One new general endpoint called "/reverse" will be created for the Designate REST API.  
  
  
 
== API Resource - Public / FloatingIPs ==
 
== API Resource - Public / FloatingIPs ==
=== API Details: Create / List / Delete Instance ===
+
=== API Details: Set / Unset / List ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
Line 37: Line 37:
  
 
==== Get PTR Records (GET) ====
 
==== Get PTR Records (GET) ====
List all PTRs for Floating IPs which have a record.  
+
List all Floating IPs which the user can assign a record to.
  
 
There is no request message body in either case.
 
There is no request message body in either case.
Line 52: Line 52:
 
                 "updated_at": null
 
                 "updated_at": null
 
                 “description”: null
 
                 “description”: null
                 "links": {"self": "http://endpoint/v2/reverse/floatingips/<region>:<uuid>"}
+
                 "links": {
 +
                    "self": "http://endpoint/v2/reverse/floatingips/<region>:<uuid>",
 +
                    "next": "https://endpoint/v2/reverse/floatingips?marker=<region>:<uuid>&limit=2",
 +
                    "previous": "https://endpoint/v2/reverse/floatingips?marker=<region>:<uuid>&limit=2"
 +
                }
 
             },
 
             },
 
             {
 
             {
Line 62: Line 66:
 
                 "updated_at": null
 
                 "updated_at": null
 
                 “description”: null
 
                 “description”: null
                 "links": {"self": "http://endpoint/v2/reverse/floatingips/<region>:<uuid>"}
+
                 "links": {
 +
                    "self": "http://endpoint/v2/reverse/floatingips/<region>:<uuid>",
 +
                    "next": "https://endpoint/v2/reverse/floatingips?marker=<region>:<uuid>&limit=2",
 +
                    "previous": "https://endpoint/v2/reverse/floatingips?marker=<region>:<uuid>&limit=2"
 +
                }
 
             },
 
             },
 
           ]
 
           ]
Line 99: Line 107:
 
      
 
      
  
 +
== '''**Following is cut-and-paste gone bad :-). Should be fixed**''' ==
 
== Database Schema ==
 
== Database Schema ==
A new table will be created in the Designate database: blacklist, which will store the blacklisted domain name, along with other data.
+
We will extend Records with the following information
  
 
{| class="wikitable"
 
{| class="wikitable"
Line 106: Line 115:
 
! Name!! Data Type !! Length !! Nullable!! Details
 
! Name!! Data Type !! Length !! Nullable!! Details
 
|-
 
|-
| id || VARCHAR || 36 || False || Primary Key, Generated UUID
+
| managed_resource_region || VARCHAR || 100 || True || The region where the resource lives
 
|-  
 
|-  
| name || VARCHAR || 255 || False || Domain name to be blacklisted
+
| managed_tenant_id || VARCHAR || 36 || True || Tenant ID owning the resource
|-
 
| created_at || DATETIME ||  -  || False || UTC time of creation
 
|-
 
| description || VARCHAR || 160 || True || UTF-8 text field
 
 
|}
 
|}

Latest revision as of 18:29, 15 January 2014

Overview

Gerrit Patch [1]
Launchpad Blueprint [2]

Provide a simple interface towards a entities PTR records based on allocated Floating IPs and in future Internal IPs.

API Resource - General

One new general endpoint called "/reverse" will be created for the Designate REST API.


API Resource - Public / FloatingIPs

API Details: Set / Unset / List

Verb Resource Description
GET /reverse/floatingips Returns the list of Floating IPs which are looked up in the users service catalog upon the request with or without PTR assigned.
GET /reverse/floatingips/{region}:{floating ip uuid} Returns the record for the given Floating IP.
POST /reverse/floatingips N/A
PUT /reverse/floatingips/{region}:{floating ip uuid} N/A
PATCH /reverse/floatingips/{region}:{floating ip uuid} A PATCH on the given Floating IP to set or unset it.
DELETE /reverse/floatingips/{region}:{floating ip uuid} N/A

Create a PTR (POST)

N/A

Get PTR Records (GET)

List all Floating IPs which the user can assign a record to.

There is no request message body in either case.

Response

   {
       “floatingips”: [
           {
               “id”: "<uuid>",
               “ptrdname”: “server1.mydomain.com.”,
               "address": "<insert ipv4 or ipv6 compliant address here>"
               "ttl": 3600,
               "created_at": "2012-11-02T19:56:26.000000",      
               "updated_at": null
               “description”: null
               "links": {
                    "self": "http://endpoint/v2/reverse/floatingips/<region>:<uuid>",
                   "next": "https://endpoint/v2/reverse/floatingips?marker=<region>:<uuid>&limit=2",
                   "previous": "https://endpoint/v2/reverse/floatingips?marker=<region>:<uuid>&limit=2" 
               }
           },
           {
               “id”: "<uuid>",
               “ptrdname”: “server2.mydomain.com.”,
               "address": "<insert ipv4 or ipv6 compliant address here>",
               "ttl": 3600,
               "created_at": "2012-11-02T19:56:26.000000",      
               "updated_at": null
               “description”: null
               "links": {
                    "self": "http://endpoint/v2/reverse/floatingips/<region>:<uuid>",
                   "next": "https://endpoint/v2/reverse/floatingips?marker=<region>:<uuid>&limit=2",
                   "previous": "https://endpoint/v2/reverse/floatingips?marker=<region>:<uuid>&limit=2" 
               }
           },
         ]
   }

Set a PTR for a FloatingIP (PATCH)

When creating a PTR, the caller must supply a name (Typically A or CNAME record).

Request

   {
       “floatingip”: {
           “ptrdname”: “server.mydomain.com.”,
           "ttl": 3600
       }
    }

Response

   {
       “floatingip”: {
               “id”: "2e32e609-3a4f-45ba-bdef-e50eacd345ad",
               “ptrdname”: “server.mydomain.com.”,
               "address": "<insert ipv4 or ipv6 compliant address here>"
               "created_at": "2012-11-02T19:56:26.000000",
               "ttl": 3600,
               "updated_at": null
               “description”: null,
               "links": {"self": "http://endpoint/v2/reverse/floatingips/<region>:<uuid>"}
       }
   }

Unset a PTR for a address - PATCH

To unset a PTR for a address ID, a user does a PATCH on the Floating IP url with a null ptrdname like: Request

   {"floatingip": {"ptrdname": null}}

Response


**Following is cut-and-paste gone bad :-). Should be fixed**

Database Schema

We will extend Records with the following information

Name Data Type Length Nullable Details
managed_resource_region VARCHAR 100 True The region where the resource lives
managed_tenant_id VARCHAR 36 True Tenant ID owning the resource