diff --git a/octodns/manager.py b/octodns/manager.py index 0e76132..791b3ec 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'Requested 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/test_octodns_manager.py b/tests/test_octodns_manager.py index 79f4318..b93c9b8 100644 --- a/tests/test_octodns_manager.py +++ b/tests/test_octodns_manager.py @@ -79,6 +79,13 @@ 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('dynamic-config.yaml')).sync( + ['missing.zones.'] + ) + self.assertTrue('Requested zone ' in str(ctx.exception)) + def test_missing_targets(self): with self.assertRaises(ManagerException) as ctx: Manager(get_config_filename('provider-problems.yaml')).sync(