Designate/蓝图/TLD API
目录
概述
| Gerrit补丁 | [] |
|---|---|
| Launchpad蓝图 | [1] |
此蓝图建议提供一个仅限管理员的 API 调用,以动态管理 TLD 和有效 TLD。目前,TLD 列表位于配置文件中指定的 2 个文件中。在对 .config 文件进行任何更改之前,必须重新启动 Designate。一种可能的解决方案是使 .config 文件可重新加载,而无需重新启动 Designate 服务。但是,只有有限数量的运维人员可以访问 .config 文件以及 TLD 和有效 TLD 文件。最近,TLD 和有效 TLD 的添加越来越频繁。当客户需要在新的 TLD 中创建域时,需要快速完成。提供 API 调用将允许授予支持人员对此 API 调用的管理员权限,以便他们能够及时有效地进行更改,而无需尝试找到可以更改 .config 文件以及 TLD 和有效 TLD 文件的一两个人。
为了实现此管理功能,将创建一个新的 API 调用,以及一个新的数据库表来存储 TLD,它们将不再位于 .config 文件中指定的文件中。
API 资源
将公开一个新的资源 *tlds* 作为 Designate API 的一部分。TLD 资源将允许授权用户创建/删除新的 TLD 或有效 TLD。该资源名为“tlds”,而不是“tld”,以便与其他资源(“domains”、“servers”、“records”)类似。
TLD 资源提供以下数据
- id – 系统定义的 UUID,在首次创建 TLD 时分配 (必需)
- name – TLD 的名称 (必需)
- created_at – 创建 TLD 的时间戳 (必需)
- updated_at – 更新 TLD 条目的时间戳 (可以为空)
- description – UTF-8 文本字段 (可选)
API 详情:创建/列出/删除实例
| 动词 | 资源 | 描述 |
|---|---|---|
| GET | /tlds | 返回 TLD 列表 |
| GET | /tlds/{id} | 返回特定的 TLD |
| POST | /tlds | 根据请求体中提供的参数创建新的 tld 条目 |
| PUT | 无操作 | 不需要 PUT |
| DELETE | /tlds/{id} | 删除 tld 条目。请求中不期望消息体 |
获取 TLD (GET)
当未指定 id 时,将返回所有 TLD 条目。如果 URL 中指定了 id,则仅返回与该 id 对应的特定 TLD 条目。
两种情况下都没有请求消息体。
响应
{
“tlds”: [
{
“id”: "2e32e609-3a4f-45ba-bdef-e50eacd34560",
“name”: “com”,
"created_at": "2013-12-09T19:56:26.000000",
“description”: "obtained from http://data.iana.org/TLD/tlds-alpha-by-domain.txt"
},
{
“id”: "2e32e609-3a4f-45ba-bdef-e50eacd34561",
“name”: “co.uk”,
“created_at”: “2013-12-09T19:56:27.000000",
“description”: "obtained from http://mozilla.org/MPL/2.0/"
}
]
}
创建一个 TLD 条目 (POST)
创建 TLD 条目时,调用者必须提供 TLD 名称。通配符字符 * (星号) 只能用于域名的最高层级通配符。
请求
{
“tlds”: {
“name”: “*.bd”,
“description”: "obtained from http://publicsuffix.org"
}
}
响应
{
“tlds”: {
{
“id”: "2e32e609-3a4f-45ba-bdef-e50eacd34560",
“name”: “*.bd”,
"created_at": "2013-12-09T19:56:26.000000",
“description”: "obtained from http://publicsuffix.org"
}
}
}
更新一个 TLD (PUT)
无操作。不需要调用来更新单个 TLD 条目。用户可以删除他们不需要的 TLD,并在需要时添加一个新的 TLD。
删除一个 TLD (DELETE)
删除 TLD 条目时,用户必须在 url 中提供 id。请求体为空。返回体为空。
数据库模式
将在 Designate 数据库中创建一个新表:“tlds”,它将存储 TLD 名称以及其他数据。字段 id、version、created_at 和 updated_at 是继承的。
| 姓名 | 数据类型 | 长度 | 可为空 | 详情 |
|---|---|---|---|---|
| id | VARCHAR | 36 | 假 | 主键,生成的UUID |
| version | INTEGER | - | 假 | Designate API 版本 |
| created_at | DATETIME | - | 假 | 创建的 UTC 时间 |
| updated_at | DATETIME | - | 真 | 更新时间的 UTC 时间 |
| name | VARCHAR | 255 | 假 | TLD 名称 |
| description | VARCHAR | 160 | 真 | UTF-8 文本字段 |