diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..a5c2315 Binary files /dev/null and b/.DS_Store differ diff --git a/octodns/manager.py b/octodns/manager.py index 0e76132..f52457d 100644 --- a/octodns/manager.py +++ b/octodns/manager.py @@ -600,7 +600,12 @@ class Manager(object): aliased_zones = {} delayed_arpa = [] futures = [] + for zone_name, config in zones.items(): + if config is None: + raise ManagerException( + f'Passed zone: {zone_name} not found in config' + ) decoded_zone_name = idna_decode(zone_name) self.log.info('sync: zone=%s', decoded_zone_name) if 'alias' in config: diff --git a/tests/config/missing-zone-config.yaml b/tests/config/missing-zone-config.yaml new file mode 100644 index 0000000..8b509cc --- /dev/null +++ b/tests/config/missing-zone-config.yaml @@ -0,0 +1,10 @@ +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: {} \ No newline at end of file diff --git a/tests/test_octodns_manager.py b/tests/test_octodns_manager.py index 79f4318..7db4fde 100644 --- a/tests/test_octodns_manager.py +++ b/tests/test_octodns_manager.py @@ -79,6 +79,11 @@ class TestManager(TestCase): ) self.assertTrue('missing sources' in str(ctx.exception)) + def test_missing_zone(self): + with self.assertRaises(ManagerException) as ctx: + Manager(get_config_filename('missing-zone-config.yaml')).sync() + self.assertTrue('Passed zone:' in str(ctx.exception)) + def test_missing_targets(self): with self.assertRaises(ManagerException) as ctx: Manager(get_config_filename('provider-problems.yaml')).sync(