本作品采用知识共享署名 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。

实现

负责人

主要负责人

<https://launchpad.net/~endre-karlson>

里程碑

完成目标里程碑

Kilo-1

工作项

  • 将代码从 Zones 控制器提取到新的模块“dnsutils”/新的 central 方法。

  • 将 parse_zonefile 更改为调用 dnsutils.parse_zonefile(),并使用此结果调用 Central 的新方法。