Designate/Blueprints/Reverse
< Designate | Blueprints
Contents
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 |