Difference between revisions of "Designate/Blueprints/Reverse"
< Designate | Blueprints
Line 20: | Line 20: | ||
! Verb !! Resource !! Description | ! Verb !! Resource !! Description | ||
|- | |- | ||
− | | GET || /reverse/floatingips || Returns the list of PTR records for Floating IPs | + | | GET || /reverse/floatingips || Returns the list of PTR records for Floating IPs which have a record in the db. |
|- | |- | ||
− | | GET || /reverse/floatingips/{ | + | | GET || /reverse/floatingips/{region}:{uuid} || Returns a specific PTR for the given Floating IP ID |
|- | |- | ||
| POST || /reverse || N/A || | | POST || /reverse || N/A || | ||
|- | |- | ||
− | | PUT || /reverse/floatingips/{ | + | | PUT || /reverse/floatingips/{uuid} || A PUT Create a PTR on the given ID / IP. |
|- | |- | ||
− | | DELETE || /reverse/floatingips/{ | + | | DELETE || /reverse/floatingips/{uuid} || Delete (unset) the reverse record. No message body is expected in the request |
|} | |} | ||
Line 35: | Line 35: | ||
==== Get PTR Records (GET) ==== | ==== Get PTR Records (GET) ==== | ||
− | + | List all PTRs for Floating IPs which have a record. | |
There is no request message body in either case. | There is no request message body in either case. | ||
Line 45: | Line 45: | ||
“id”: "2e32e609-3a4f-45ba-bdef-e50eacd345ad", | “id”: "2e32e609-3a4f-45ba-bdef-e50eacd345ad", | ||
“ptrdname”: “server1.mydomain.com.”, | “ptrdname”: “server1.mydomain.com.”, | ||
− | " | + | "address": "<insert ipv4 or ipv6 compliant address here>" |
− | |||
− | |||
− | |||
"created_at": "2012-11-02T19:56:26.000000", | "created_at": "2012-11-02T19:56:26.000000", | ||
"updated_at": null | "updated_at": null | ||
Line 56: | Line 53: | ||
“id”: "2e32e609-3a4f-45ba-bdef-e50eacd345ad", | “id”: "2e32e609-3a4f-45ba-bdef-e50eacd345ad", | ||
“ptrdname”: “server2.mydomain.com.”, | “ptrdname”: “server2.mydomain.com.”, | ||
− | " | + | "address": "<insert ipv4 or ipv6 compliant address here>", |
− | |||
− | |||
− | |||
"created_at": "2012-11-02T19:56:26.000000", | "created_at": "2012-11-02T19:56:26.000000", | ||
"updated_at": null | "updated_at": null | ||
Line 84: | Line 78: | ||
“id”: "<uuid>", | “id”: "<uuid>", | ||
“ptrdname”: “server.mydomain.com.”, | “ptrdname”: “server.mydomain.com.”, | ||
− | "address" " | + | "address": "<insert ipv4 or ipv6 compliant address here>", |
"ttl": 3600, | "ttl": 3600, | ||
"created_at": "2012-11-02T19:56:26.000000", | "created_at": "2012-11-02T19:56:26.000000", |
Revision as of 11:55, 19 November 2013
Contents
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 PTR records for Floating IPs which have a record in the db. | |
GET | /reverse/floatingips/{region}:{uuid} | Returns a specific PTR for the given Floating IP ID | |
POST | /reverse | N/A | |
PUT | /reverse/floatingips/{uuid} | A PUT Create a PTR on the given ID / IP. | |
DELETE | /reverse/floatingips/{uuid} | Delete (unset) the reverse record. No message body is expected in the request |
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”: "2e32e609-3a4f-45ba-bdef-e50eacd345ad", “ptrdname”: “server1.mydomain.com.”, "address": "<insert ipv4 or ipv6 compliant address here>" "created_at": "2012-11-02T19:56:26.000000", "updated_at": null “description”: null }, { “id”: "2e32e609-3a4f-45ba-bdef-e50eacd345ad", “ptrdname”: “server2.mydomain.com.”, "address": "<insert ipv4 or ipv6 compliant address here>", "created_at": "2012-11-02T19:56:26.000000", "updated_at": null “description”: null }, ] }
Set a PTR for a FloatingIP (PUT)
When creating a PTR, the caller must supply a name (Typically A or CNAME record).
Request
{ “floatingip”: { “ptrdname”: “server.mydomain.com.” "address": "<insert ipv4 or ipv6 compliant address here>", "ttl": 3600 } }
Response
{ “floatingip”: { “id”: "<uuid>", “ptrdname”: “server.mydomain.com.”, "address": "<insert ipv4 or ipv6 compliant address here>", "ttl": 3600, "created_at": "2012-11-02T19:56:26.000000", "updated_at": null, } }
Delete (Unset) a PTR for a address (DELETE)
To unset a PTR for a address ID, a user does a request with the Floating IP ID. The request body is empty. The return body is empty.
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 |