Browse Source

Merge pull request #1069 from octodns/fix-multiple-dynamic-zones

Fix wrong re-use of sources for dynamic zones
pull/1071/head
Ross McFarland 2 years ago
committed by GitHub
parent
commit
4a7e488d2f
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 21 additions and 5 deletions
  1. +2
    -0
      CHANGELOG.md
  2. +2
    -2
      octodns/manager.py
  3. +11
    -1
      tests/config/dynamic-config.yaml
  4. +6
    -2
      tests/test_octodns_manager.py

+ 2
- 0
CHANGELOG.md View File

@ -2,6 +2,8 @@
* Fix crash bug when using the YamlProvider with a directory that contains a
mix of split and non-split zone yamls. See https://github.com/octodns/octodns/issues/1066
* Fix discovery of zones from different sources when there are multiple dynamic
zones. See https://github.com/octodns/octodns/issues/1068
## v1.1.1 - 2023-09-16 - Doh! Fix that one little thing


+ 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