本作品采用知识共享署名 3.0 非移植许可协议授权。 http://creativecommons.org/licenses/by/3.0/legalcode
服务器池存储¶
https://blueprints.launchpad.net/designate/+spec/server-pools-storage
本规范概述了支持服务器池所需的中央、存储和兼容性更改。
问题描述¶
对于服务器池,需要一个新的对象来封装池。当本规范实施后,池对象将由后端驱动程序用于获取名称服务器,作为兼容性更改。中央将继续调用后端驱动程序。其他的服务器池规范将解决使用整个池对象的问题。这是这些其他规范的基础。
提议的变更¶
当数据库首次初始化时,将创建一个名为“default”的池。这是默认池。默认池将没有 also-notify 主机,也没有名称服务器。将向中央添加新的方法来创建、查找、获取、更新和删除池,这些方法在中央更改部分中描述。支持池所需的数据库更改在存储更改部分中描述。最后,可以使用兼容性更改部分中描述的 V1 服务器端点将名称服务器添加到默认池。
API 变更¶
无
Central 变更¶
Designate 配置的 [service:central] 部分将有一个新的选项
参数 |
默认值 |
必需 |
注意事项 |
|---|---|---|---|
default_pool_name |
‘default’ |
是 |
默认池的池名称 |
此值需要设置为默认池的池名称,即‘default’。
将实现池对象。
中央服务中为池对象实现的新方法是
create_pool(context, pool)¶
参数 |
描述 |
必需 |
|---|---|---|
context |
安全上下文信息。 |
是 |
pool |
designate 池对象。 |
是 |
返回值¶
创建的池。
find_pools(context, criterion, marker, limit, sort_key, sort_dir)¶
参数 |
描述 |
必需 |
|---|---|---|
context |
安全上下文信息。 |
是 |
criterion |
搜索标准。 |
否 |
marker |
请求页面后将开始的资源 ID。 |
否 |
limit |
请求页面后标记后的对象数量限制。 |
否 |
sort_key |
用于排序的键。 |
否 |
sort_dir |
使用 sort_key 排序的方向。 |
否 |
返回值¶
找到的池。
get_pool(context, pool_id)¶
参数 |
描述 |
必需 |
|---|---|---|
context |
安全上下文信息。 |
是 |
pool_id |
池 ID。 |
是 |
返回值¶
请求的池。
update_pool(context, pool)¶
参数 |
描述 |
必需 |
|---|---|---|
context |
安全上下文信息。 |
是 |
pool |
designate 池对象。 |
是 |
返回值¶
更新的池。
delete_pool(context, pool_id)¶
参数 |
描述 |
必需 |
|---|---|---|
context |
安全上下文信息。 |
是 |
pool_id |
池 ID。 |
是 |
返回值¶
无返回值。
Storage 变更¶
需要一个新的池表。另一个新的表 pool_attributes 将用于存储 also-notify 和名称服务器值,以及支持服务器池的未来增强功能。domains 表将被修改以支持池。
新表 - pools¶
列 |
类型 |
可为空? |
唯一? |
注意事项 |
|---|---|---|---|---|
id |
CHAR(32) |
否 |
是 |
PK |
created_at |
DATETIME |
是 |
否 |
创建 UTC 时间 |
updated_at |
DATETIME |
是 |
否 |
上次更新 UTC 时间 |
version |
INT(11) |
否 |
否 |
Designate API 版本 |
name |
VARCHAR(50) |
否 |
是 |
服务器池名称 |
description |
VARCHAR(255) |
是 |
否 |
服务器池描述 |
project_id |
VARCHAR(36) |
否 |
否 |
创建池的租户 ID |
provisioner |
ENUM |
否 |
否 |
目前仅支持 ‘unmanaged’ provisioner |
新表 - pool_attributes¶
列 |
类型 |
可为空? |
唯一? |
注意事项 |
|---|---|---|---|---|
id |
CHAR(32) |
否 |
是 |
PK |
键 |
VARCHAR(255) |
否 |
否 |
池属性键(also-notify、名称服务器等) |
value |
VARCHAR(255) |
否 |
否 |
池属性值 |
pool_id |
CHAR(32) |
否 |
否 |
FK 到 pools 表上的 ID |
修改表 - domains¶
列 |
类型 |
可为空? |
唯一? |
注意事项 |
操作 |
|---|---|---|---|---|---|
pool_id |
CHAR(32) |
否 |
是 |
FK 到 pools 表上的 ID |
添加 |
兼容性更改¶
在使用 V1 服务器端点添加名称服务器时,将在 pool_attributes 表中为名称服务器创建一个条目。使用的列和值将是
列 |
值 |
|---|---|
键 |
‘name_server’ |
value |
<名称服务器的 FQDN> |
pool_id |
<默认池 ID> |
在使用 V1 domains 端点创建域时,domains 表条目将包含默认池的池 ID。
后端驱动程序将被修改为使用 pool_attributes 表中默认池定义的名称服务器,而不是 servers 表。
中央服务器的所有方法都将被删除。
servers 表将被删除,并且存储的所有 servers 方法都将被删除。
现有的服务器对象将被删除。
其他变更¶
无
替代方案¶
无
实现¶
负责人¶
里程碑¶
- 完成目标里程碑
Kilo-1
工作项¶
中央更改
存储更改
兼容性更改
依赖项¶
无