mirror of
https://github.com/github/octodns.git
synced 2024-05-11 05:55:00 +00:00
Apply sub-zones before parents
This commit is contained in:
@@ -65,6 +65,13 @@ class MainThreadExecutor(object):
|
||||
class Manager(object):
|
||||
log = logging.getLogger('Manager')
|
||||
|
||||
@classmethod
|
||||
def _plan_keyer(cls, p):
|
||||
try:
|
||||
return len(p[1].changes[0].record.zone.name)
|
||||
except (AttributeError, IndexError):
|
||||
return 0
|
||||
|
||||
def __init__(self, config_file, max_workers=None, include_meta=False):
|
||||
self.log.info('__init__: config_file=%s', config_file)
|
||||
|
||||
@@ -288,6 +295,13 @@ class Manager(object):
|
||||
# plan pairs.
|
||||
plans = [p for f in futures for p in f.result()]
|
||||
|
||||
# Best effort sort plans children first so that we create/update
|
||||
# children zones before parents which should allow us to more safely
|
||||
# extract things into sub-zones. Combining a child back into a parent
|
||||
# can't really be done all that safely in general so we'll optimize for
|
||||
# this direction.
|
||||
plans.sort(key=self._plan_keyer, reverse=True)
|
||||
|
||||
for output in self.plan_outputs.values():
|
||||
output.run(plans=plans, log=self.log)
|
||||
|
||||
|
Reference in New Issue
Block a user