本作品采用知识共享署名 3.0 非移植许可协议授权。 http://creativecommons.org/licenses/by/3.0/legalcode
区域导入重构¶
将区域导入代码从 designate.api.v2.controllers.zones 迁移到一个新的 designate.dnsutils 模块,并将功能移动到 Central。
术语¶
术语 |
含义 |
|---|---|
zone |
DNS 区域(也称为 DNS 域名) |
问题描述¶
目前,导入功能解析 API 中 POST 的区域,并从 API 侧运行区域及其记录的创建。如果任何创建失败,则无法保证事务性清理。
此外,将这些方法置于 API 之外,可以在 API 之外的任何组件中使用(例如 AXFR 支持)。
提议的变更¶
我们引入了一个名为 designate.dnsutils 的新模块,其中包含将区域/记录解析为 dnspython 对象以及将 dnspython 对象解析为 DesignateObjects 的函数。
区域文件解析的代码已经存在于 designate.api.v2.controller.ZoneController 中,可以轻松提取。
Central 变更¶
我们需要一个新的方法,它接收一个 Domain 和一个 RecordSetList 对象,然后将它们放入 Designate 中。
它应该能够同步现有的区域,或者在稍后的某个时间点与它的记录同步一个新的区域。
新模块 dnsutils¶
dnsutils.from_dnspython_zone(dnspython_zone)¶
接收一个 dnspython_zone 并创建一个 Domain 对象,还在区域中的每个记录上运行 records_to_recordset_list()。
参数 |
描述 |
必需 |
|---|---|---|
dnspython_zone |
DNS Python 区域 |
是 |
返回值¶
具有 recordset 关系属性的 Domain
dnsutils.dnspyrecords_to_recordsetlist(dnspython_records)¶
将 dnspython_zone.nodes 结构转换为 RecordSetList、Recordsets、RecordList 和 Records。
参数 |
描述 |
必需 |
|---|---|---|
dnspython_records |
DNS Python 记录 |
是 |
返回值¶
具有来自给定 dnspython 节点/记录的 designate.objects.record.RecordList 记录属性的 designate.objects.recordset.RecordSet。
dnsutils.dnspythonrecord_to_recordset(rname, rdataset)¶
参数 |
描述 |
必需 |
|---|---|---|
rname |
dnspy 节点名称/键 |
是 |
rdataset |
dnspy rr 数据集 |
是 |
返回值¶
具有来自给定 dnspython 节点/记录的 designate.objects.record.RecordList 记录属性的 designate.objects.recordset.RecordSet。
实现¶
负责人¶
里程碑¶
- 完成目标里程碑
Kilo-1
工作项¶
将代码从 Zones 控制器提取到新的模块“dnsutils”/新的 central 方法。
将 parse_zonefile 更改为调用 dnsutils.parse_zonefile(),并使用此结果调用 Central 的新方法。