Jump to: navigation, search

Difference between revisions of "Designate/Blueprints/Reverse"

Line 26: Line 26:
 
| POST || /reverse/floatingips || N/A ||
 
| POST || /reverse/floatingips || N/A ||
 
|-
 
|-
| PUT || /reverse/floatingips/{region}:{floating ip uuid} || A PUT on the given Floating IP to set or unset it.
+
| PUT || /reverse/floatingips/{region}:{floating ip uuid} || N/A
 +
|-
 +
| PATCH || /reverse/floatingips/{region}:{floating ip uuid} || A PUT on the given Floating IP to set or unset it.
 
|-
 
|-
 
| DELETE || /reverse/floatingips/{region}:{floating ip uuid} || N/A
 
| DELETE || /reverse/floatingips/{region}:{floating ip uuid} || N/A
Line 65: Line 67:
 
     }
 
     }
  
==== Set a PTR for a FloatingIP (PUT) ====
+
==== Set a PTR for a FloatingIP (PATCH) ====
 
When creating a PTR, the caller must supply a name (Typically A or CNAME record).
 
When creating a PTR, the caller must supply a name (Typically A or CNAME record).
  
Line 71: Line 73:
 
     {
 
     {
 
         “floatingip”: {
 
         “floatingip”: {
             “ptrdname”: “server.mydomain.com.”
+
             “ptrdname”: “server.mydomain.com.”,
            "address": "<insert ipv4 or ipv6 compliant address here>",
 
 
             "ttl": 3600
 
             "ttl": 3600
 
         }
 
         }
Line 91: Line 92:
 
     }
 
     }
  
==== Unset a PTR for a address - PUT ====
+
==== Unset a PTR for a address - PATCH ====
 
To unset a PTR for a address ID, a user does a PUT on the Floating IP url with a null ptrdname like:
 
To unset a PTR for a address ID, a user does a PUT on the Floating IP url with a null ptrdname like:
 
'''Request'''
 
'''Request'''
     {"ptrdname": null}
+
     {"floatingip": {"ptrdname": null}}
 
'''Response'''
 
'''Response'''
 
      
 
      

Revision as of 14:08, 19 November 2013

Overview

Gerrit Patch []
Launchpad Blueprint [1]

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. We will outline 2 different Sub-URLs.


API Resource - Public / FloatingIPs

API Details: Create / List / Delete Instance

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 PUT 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 PTRs for Floating IPs which have a record.

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>"}
           },
           {
               “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>"}
           },
         ]
   }

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 PUT on the Floating IP url with a null ptrdname like: Request

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

Response


Database Schema

A new table will be created in the Designate database: blacklist, which will store the blacklisted domain name, along with other data.

Name Data Type Length Nullable Details
id VARCHAR 36 False Primary Key, Generated UUID
name VARCHAR 255 False Domain name to be blacklisted
created_at DATETIME - False UTC time of creation
description VARCHAR 160 True UTF-8 text field