### Scenario ###
1) Start remote BIND
Use some external host as a DNS server to tor AXFR the Zone from.
Note: BIND9 on RHEL is provided in attached doc.
2) From your setup check that AXFR is possible
dig @10.9.95.132 debuntu.foo axfr
3) Create a Secondary zone with:
openstack zone create debuntu.foo. --type SECONDARY --master 10.9.95.132
### Expected result ###
Secondary zone is created and ACTIVE
### Actual Result ###
Secondary zone gets into the ERROR statuses + Error in log
journalctl -f -u devstack@designate-mdns
Aug 25 12:56:43 seal08 designate-mdns[116065]: INFO designate.dnsutils [None req-0fcfe0f2-b8cb-4eec-ae42-9ea88e089c69 None None] Doing AXFR for debuntu.foo. from {'zone_id': 'ccadec69-4723-4c24-987f-7cb1587cff2c', 'host': '10.35.64.8', 'port': 53, 'id': 'ba2932b2-3f81-4ad5-985c-86ce081fe62d', 'created_at': datetime.datetime(2021, 8, 25, 9, 56, 44), 'updated_at': None, 'version': 1}
Aug 25 12:56:43 seal08 designate-mdns[116065]: ERROR designate.dnsutils [None req-0fcfe0f2-b8cb-4eec-ae42-9ea88e089c69 None None] Problem doing AXFR debuntu.foo. from {'zone_id': 'ccadec69-4723-4c24-987f-7cb1587cff2c', 'host': '10.35.64.8', 'port': 53, 'id': 'ba2932b2-3f81-4ad5-985c-86ce081fe62d', 'created_at': datetime.datetime(2021, 8, 25, 9, 56, 44), 'updated_at': None, 'version': 1}. Trying next server.: TypeError: '>' not supported between instances of 'float' and 'NoneType'
Aug 25 12:56:43 seal08 designate-mdns[116065]: ERROR designate.dnsutils Traceback (most recent call last):
Aug 25 12:56:43 seal08 designate-mdns[116065]: ERROR designate.dnsutils File "/opt/stack/designate/designate/dnsutils.py", line 358, in do_axfr
Aug 25 12:56:43 seal08 designate-mdns[116065]: ERROR designate.dnsutils raw_zone = dns.zone.from_xfr(xfr, relativize=False)
Aug 25 12:56:43 seal08 designate-mdns[116065]: ERROR designate.dnsutils File "/usr/local/lib/python3.8/dist-packages/dns/zone.py", line 1106, in from_xfr
Aug 25 12:56:43 seal08 designate-mdns[116065]: ERROR designate.dnsutils for r in xfr:
Aug 25 12:56:43 seal08 designate-mdns[116065]: ERROR designate.dnsutils File "/usr/local/lib/python3.8/dist-packages/dns/query.py", line 611, in xfr
Aug 25 12:56:43 seal08 designate-mdns[116065]: ERROR designate.dnsutils if mexpiration is None or mexpiration > expiration:
Aug 25 12:56:43 seal08 designate-mdns[116065]: ERROR designate.dnsutils TypeError: '>' not supported between instances of 'float' and 'NoneType'
Aug 25 12:56:43 seal08 designate-mdns[116065]: ERROR designate.dnsutils
Aug 25 12:56:43 seal08 designate-mdns[116065]: WARNING designate.mdns.xfr [None req-0fcfe0f2-b8cb-4eec-ae42-9ea88e089c69 None None] XFR failed for debuntu.foo.. No servers in [{'zone_id': 'ccadec69-4723-4c24-987f-7cb1587cff2c', 'host': '10.35.64.8', 'port': 53, 'id': 'ba2932b2-3f81-4ad5-985c-86ce081fe62d', 'created_at': datetime.datetime(2021, 8, 25, 9, 56, 44), 'updated_at': None, 'version': 1}] was reached.: designate.exceptions.XFRFailure: XFR failed for debuntu.foo.. No servers in [{'zone_id': 'ccadec69-4723-4c24-987f-7cb1587cff2c', 'host': '10.35.64.8', 'port': 53, 'id': 'ba2932b2-3f81-4ad5-985c-86ce081fe62d', 'created_at': datetime.datetime(2021, 8, 25, 9, 56, 44), 'updated_at': None, 'version': 1}] was reached.
Aug 25 12:56:43 seal08 designate-mdns[116064]: DEBUG designate.service [None req-b13130f1-3391-4bbc-b026-22f6ffefa71e None None] Handling UDP Request from: 10.35.64.8:38424 {{(pid=116064) _dns_handle_udp /opt/stack/designate/designate/service.py:317}}
Aug 25 12:56:44 seal08 designate-mdns[116064]: DEBUG designate.storage.impl_sqlalchemy [None req-97b992fe-cf4f-4c84-bc3d-88556d9b9abc None None] Fetched zone <Zone id:'ccadec69-4723-4c24-987f-7cb1587cff2c' type:'SECONDARY' name:'debuntu.foo.' pool_id:'794ccc2c-d751-44fe-b57f-8894c9f5c842' serial:'1' action:'CREATE' status:'PENDING'> {{(pid=116064) _find_zones /opt/stack/designate/designate/storage/impl_sqlalchemy/__init__.py:252}}
Aug 25 12:56:44 seal08 designate-mdns[116058]: DEBUG designate.service [None req-df0d9bc9-e4d6-43ff-b108-05b4005b4357 None None] Handling TCP Request from: 10.35.64.8:49715 {{(pid=116058) _dns_handle_tcp /opt/stack/designate/designate/service.py:203}}
Aug 25 12:56:44 seal08 designate-mdns[116058]: DEBUG designate.storage.impl_sqlalchemy [None req-e1f94cdb-a9dc-434c-907c-54769d7375b8 None None] Fetched zone <Zone id:'ccadec69-4723-4c24-987f-7cb1587cff2c' type:'SECONDARY' name:'debuntu.foo.' pool_id:'794ccc2c-d751-44fe-b57f-8894c9f5c842' serial:'1' action:'CREATE' status:'PENDING'> {{(pid=116058) _find_zones /opt/stack/designate/designate/storage/impl_sqlalchemy/__init__.py:252}}
Note:
Michael has already found the reason.
From:Michael Johnson
Aug 26, 2021, 8:13 PM (3 days ago)
to me
Ok, so this is a bug in the "dnspython" library designate uses.
Version 1.16 which you had installed has:
if mexpiration is None or mexpiration > expiration: mexpiration = expiration
Which is broken.
Version 2.0.0rc1 has: (https://github.com/rthalley/dnspython/blob/v2.0.0rc1/dns/query.py#L925)
if mexpiration is None or \ (expiration is not None and mexpiration > expiration): mexpiration = expiration
Which works.
### Scenario ###
1) Start remote BIND
Use some external host as a DNS server to tor AXFR the Zone from.
Note: BIND9 on RHEL is provided in attached doc.
2) From your setup check that AXFR is possible
dig @10.9.95.132 debuntu.foo axfr
3) Create a Secondary zone with:
openstack zone create debuntu.foo. --type SECONDARY --master 10.9.95.132
### Expected result ###
Secondary zone is created and ACTIVE
### Actual Result ###
Secondary zone gets into the ERROR statuses + Error in log
journalctl -f -u devstack@ designate- mdns mdns[116065] : INFO designate.dnsutils [None req-0fcfe0f2- b8cb-4eec- ae42-9ea88e089c 69 None None] Doing AXFR for debuntu.foo. from {'zone_id': 'ccadec69- 4723-4c24- 987f-7cb1587cff 2c', 'host': '10.35.64.8', 'port': 53, 'id': 'ba2932b2- 3f81-4ad5- 985c-86ce081fe6 2d', 'created_at': datetime. datetime( 2021, 8, 25, 9, 56, 44), 'updated_at': None, 'version': 1} mdns[116065] : ERROR designate.dnsutils [None req-0fcfe0f2- b8cb-4eec- ae42-9ea88e089c 69 None None] Problem doing AXFR debuntu.foo. from {'zone_id': 'ccadec69- 4723-4c24- 987f-7cb1587cff 2c', 'host': '10.35.64.8', 'port': 53, 'id': 'ba2932b2- 3f81-4ad5- 985c-86ce081fe6 2d', 'created_at': datetime. datetime( 2021, 8, 25, 9, 56, 44), 'updated_at': None, 'version': 1}. Trying next server.: TypeError: '>' not supported between instances of 'float' and 'NoneType' mdns[116065] : ERROR designate.dnsutils Traceback (most recent call last): mdns[116065] : ERROR designate.dnsutils File "/opt/stack/ designate/ designate/ dnsutils. py", line 358, in do_axfr mdns[116065] : ERROR designate.dnsutils raw_zone = dns.zone. from_xfr( xfr, relativize=False) mdns[116065] : ERROR designate.dnsutils File "/usr/local/ lib/python3. 8/dist- packages/ dns/zone. py", line 1106, in from_xfr mdns[116065] : ERROR designate.dnsutils for r in xfr: mdns[116065] : ERROR designate.dnsutils File "/usr/local/ lib/python3. 8/dist- packages/ dns/query. py", line 611, in xfr mdns[116065] : ERROR designate.dnsutils if mexpiration is None or mexpiration > expiration: mdns[116065] : ERROR designate.dnsutils TypeError: '>' not supported between instances of 'float' and 'NoneType' mdns[116065] : ERROR designate.dnsutils mdns[116065] : WARNING designate.mdns.xfr [None req-0fcfe0f2- b8cb-4eec- ae42-9ea88e089c 69 None None] XFR failed for debuntu.foo.. No servers in [{'zone_id': 'ccadec69- 4723-4c24- 987f-7cb1587cff 2c', 'host': '10.35.64.8', 'port': 53, 'id': 'ba2932b2- 3f81-4ad5- 985c-86ce081fe6 2d', 'created_at': datetime. datetime( 2021, 8, 25, 9, 56, 44), 'updated_at': None, 'version': 1}] was reached.: designate. exceptions. XFRFailure: XFR failed for debuntu.foo.. No servers in [{'zone_id': 'ccadec69- 4723-4c24- 987f-7cb1587cff 2c', 'host': '10.35.64.8', 'port': 53, 'id': 'ba2932b2- 3f81-4ad5- 985c-86ce081fe6 2d', 'created_at': datetime. datetime( 2021, 8, 25, 9, 56, 44), 'updated_at': None, 'version': 1}] was reached. mdns[116064] : DEBUG designate.service [None req-b13130f1- 3391-4bbc- b026-22f6ffefa7 1e None None] Handling UDP Request from: 10.35.64.8:38424 {{(pid=116064) _dns_handle_udp /opt/stack/ designate/ designate/ service. py:317} } mdns[116064] : DEBUG designate. storage. impl_sqlalchemy [None req-97b992fe- cf4f-4c84- bc3d-88556d9b9a bc None None] Fetched zone <Zone id:'ccadec69- 4723-4c24- 987f-7cb1587cff 2c' type:'SECONDARY' name:'debuntu.foo.' pool_id: '794ccc2c- d751-44fe- b57f-8894c9f5c8 42' serial:'1' action:'CREATE' status:'PENDING'> {{(pid=116064) _find_zones /opt/stack/ designate/ designate/ storage/ impl_sqlalchemy /__init_ _.py:252} } mdns[116058] : DEBUG designate.service [None req-df0d9bc9- e4d6-43ff- b108-05b4005b43 57 None None] Handling TCP Request from: 10.35.64.8:49715 {{(pid=116058) _dns_handle_tcp /opt/stack/ designate/ designate/ service. py:203} } mdns[116058] : DEBUG designate. storage. impl_sqlalchemy [None req-e1f94cdb- a9dc-434c- 907c-54769d7375 b8 None None] Fetched zone <Zone id:'ccadec69- 4723-4c24- 987f-7cb1587cff 2c' type:'SECONDARY' name:'debuntu.foo.' pool_id: '794ccc2c- d751-44fe- b57f-8894c9f5c8 42' serial:'1' action:'CREATE' status:'PENDING'> {{(pid=116058) _find_zones /opt/stack/ designate/ designate/ storage/ impl_sqlalchemy /__init_ _.py:252} }
Aug 25 12:56:43 seal08 designate-
Aug 25 12:56:43 seal08 designate-
Aug 25 12:56:43 seal08 designate-
Aug 25 12:56:43 seal08 designate-
Aug 25 12:56:43 seal08 designate-
Aug 25 12:56:43 seal08 designate-
Aug 25 12:56:43 seal08 designate-
Aug 25 12:56:43 seal08 designate-
Aug 25 12:56:43 seal08 designate-
Aug 25 12:56:43 seal08 designate-
Aug 25 12:56:43 seal08 designate-
Aug 25 12:56:43 seal08 designate-
Aug 25 12:56:43 seal08 designate-
Aug 25 12:56:44 seal08 designate-
Aug 25 12:56:44 seal08 designate-
Aug 25 12:56:44 seal08 designate-
Note:
Michael has already found the reason.
From:Michael Johnson
Aug 26, 2021, 8:13 PM (3 days ago)
to me
Ok, so this is a bug in the "dnspython" library designate uses.
Version 1.16 which you had installed has:
mexpiratio n = expiration /github. com/rthalley/ dnspython/ blob/v2. 0.0rc1/ dns/query. py#L925)
(expiration is not None and mexpiration > expiration):
mexpiration = expiration
if mexpiration is None or mexpiration > expiration:
Which is broken.
Version 2.0.0rc1 has: (https:/
if mexpiration is None or \
Which works.