Browse Source

Fix wrong re-use of sources for dynamic zones

pull/1069/head
Viranch Mehta 2 years ago
parent
commit
e92c1079c9
No known key found for this signature in database GPG Key ID: D83D1392AE9F93B4
3 changed files with 19 additions and 5 deletions
  1. +2
    -2
      octodns/manager.py
  2. +11
    -1
      tests/config/dynamic-config.yaml
  3. +6
    -2
      tests/test_octodns_manager.py

+ 2
- 2
octodns/manager.py View File

@ -516,11 +516,11 @@ class Manager(object):
# we've found a dynamic config element
# find its sources
sources = sources or self._get_sources(
found_sources = sources or self._get_sources(
name, config, eligible_sources
)
self.log.info('sync: dynamic zone=%s, sources=%s', name, sources)
for source in sources:
for source in found_sources:
if not hasattr(source, 'list_zones'):
raise ManagerException(
f'dynamic zone={name} includes a source, {source.id}, that does not support `list_zones`'


+ 11
- 1
tests/config/dynamic-config.yaml View File

@ -3,17 +3,27 @@ providers:
class: octodns.provider.yaml.YamlProvider
directory: tests/config
in2:
class: octodns.provider.yaml.YamlProvider
directory: tests/config/split
dump:
class: octodns.provider.yaml.YamlProvider
directory: env/YAML_TMP_DIR
zones:
'*':
'*.one':
sources:
- in
targets:
- dump
'*.two':
sources:
- in2
targets:
- dump
subzone.unit.tests.:
sources:
- in


+ 6
- 2
tests/test_octodns_manager.py View File

@ -997,10 +997,14 @@ class TestManager(TestCase):
manager = Manager(get_config_filename('dynamic-config.yaml'))
# just unit.tests. which should have been dynamically configured via
# two zones which should have been dynamically configured via
# list_zones
self.assertEqual(
23, manager.sync(eligible_zones=['unit.tests.'], dry_run=False)
29,
manager.sync(
eligible_zones=['unit.tests.', 'dynamic.tests.'],
dry_run=False,
),
)
# just subzone.unit.tests. which was explicitly configured


Loading…
Cancel
Save