From c3f0bf677a9775bcb55ce3a25b7f622deba6798d Mon Sep 17 00:00:00 2001 From: Ross McFarland Date: Wed, 23 Jun 2021 18:49:19 -0700 Subject: [PATCH] Validate processor config sections --- octodns/manager.py | 11 +++++++++-- tests/config/unknown-processor.yaml | 17 +++++++++++++++++ tests/test_octodns_manager.py | 5 +++++ 3 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 tests/config/unknown-processor.yaml diff --git a/octodns/manager.py b/octodns/manager.py index c7173c6..dcbf083 100644 --- a/octodns/manager.py +++ b/octodns/manager.py @@ -573,8 +573,15 @@ class Manager(object): if isinstance(source, YamlProvider): source.populate(zone) - # TODO: validate - # processors = config.get('processors', []) + # check that processors are in order if any are specified + processors = config.get('processors', []) + try: + # same as above, but for processors this time + for processor in processors: + collected.append(self.processors[processor]) + except KeyError: + raise ManagerException('Zone {}, unknown processor: {}' + .format(zone_name, processor)) def get_zone(self, zone_name): if not zone_name[-1] == '.': diff --git a/tests/config/unknown-processor.yaml b/tests/config/unknown-processor.yaml new file mode 100644 index 0000000..4aff713 --- /dev/null +++ b/tests/config/unknown-processor.yaml @@ -0,0 +1,17 @@ +manager: + max_workers: 2 +providers: + in: + class: octodns.provider.yaml.YamlProvider + directory: tests/config + dump: + class: octodns.provider.yaml.YamlProvider + directory: env/YAML_TMP_DIR +zones: + unit.tests.: + sources: + - in + processors: + - missing + targets: + - dump diff --git a/tests/test_octodns_manager.py b/tests/test_octodns_manager.py index 069bc0b..8bada06 100644 --- a/tests/test_octodns_manager.py +++ b/tests/test_octodns_manager.py @@ -339,6 +339,11 @@ class TestManager(TestCase): Manager(get_config_filename('simple-alias-zone.yaml')) \ .validate_configs() + with self.assertRaises(ManagerException) as ctx: + Manager(get_config_filename('unknown-processor.yaml')) \ + .validate_configs() + self.assertTrue('unknown processor' in text_type(ctx.exception)) + def test_get_zone(self): Manager(get_config_filename('simple.yaml')).get_zone('unit.tests.')