From 4081c7b31b1ea31855b94c1572cc18e5a46410b7 Mon Sep 17 00:00:00 2001 From: Ross McFarland Date: Fri, 5 Feb 2021 11:55:37 -0800 Subject: [PATCH 1/4] Add the number of changes and zone name to "making changes" --- octodns/provider/base.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/octodns/provider/base.py b/octodns/provider/base.py index ae87844..eb097a2 100644 --- a/octodns/provider/base.py +++ b/octodns/provider/base.py @@ -91,7 +91,10 @@ class BaseProvider(BaseSource): self.log.info('apply: disabled') return 0 - self.log.info('apply: making changes') + zone_name = plan.desired.name + num_changes = len(plan.changes) + self.log.info('apply: making %d changes to %s', num_changes, + zone_name) self._apply(plan) return len(plan.changes) From 39d86f023e411c0af869a14ce7f12eda41f4d649 Mon Sep 17 00:00:00 2001 From: Steven Honson Date: Fri, 12 Feb 2021 00:29:48 +1100 Subject: [PATCH 2/4] powerdns: deletes before replaces --- octodns/provider/powerdns.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/octodns/provider/powerdns.py b/octodns/provider/powerdns.py index de7743c..a7f150b 100644 --- a/octodns/provider/powerdns.py +++ b/octodns/provider/powerdns.py @@ -7,6 +7,7 @@ from __future__ import absolute_import, division, print_function, \ from requests import HTTPError, Session import logging +from operator import itemgetter from ..record import Create, Record from .base import BaseProvider @@ -381,6 +382,12 @@ class PowerDnsBaseProvider(BaseProvider): for change in changes: class_name = change.__class__.__name__ mods.append(getattr(self, '_mod_{}'.format(class_name))(change)) + + # Ensure that any DELETE modifications always occur before any REPLACE + # modifications. This ensures that an A record can be replaced by a + # CNAME record and vice-versa. + mods = sorted(mods, key=itemgetter('changetype')) + self.log.debug('_apply: sending change request') try: From fdf74f9dd36365674473d8ee8d110da92f99b2c8 Mon Sep 17 00:00:00 2001 From: Steven Honson Date: Fri, 12 Feb 2021 00:48:42 +1100 Subject: [PATCH 3/4] powerdns: sort in place --- octodns/provider/powerdns.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/octodns/provider/powerdns.py b/octodns/provider/powerdns.py index a7f150b..ec30559 100644 --- a/octodns/provider/powerdns.py +++ b/octodns/provider/powerdns.py @@ -386,7 +386,7 @@ class PowerDnsBaseProvider(BaseProvider): # Ensure that any DELETE modifications always occur before any REPLACE # modifications. This ensures that an A record can be replaced by a # CNAME record and vice-versa. - mods = sorted(mods, key=itemgetter('changetype')) + mods.sort(key=itemgetter('changetype')) self.log.debug('_apply: sending change request') From 6034e8022f24a83ca80d1c32e1fc0420ecaca606 Mon Sep 17 00:00:00 2001 From: Ross McFarland Date: Thu, 11 Feb 2021 17:05:42 -0800 Subject: [PATCH 4/4] Swap import order --- octodns/provider/powerdns.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/octodns/provider/powerdns.py b/octodns/provider/powerdns.py index ec30559..8ffff46 100644 --- a/octodns/provider/powerdns.py +++ b/octodns/provider/powerdns.py @@ -6,8 +6,8 @@ from __future__ import absolute_import, division, print_function, \ unicode_literals from requests import HTTPError, Session -import logging from operator import itemgetter +import logging from ..record import Create, Record from .base import BaseProvider