diff --git a/octodns/manager.py b/octodns/manager.py index cca1cd7..d9e0180 100644 --- a/octodns/manager.py +++ b/octodns/manager.py @@ -17,7 +17,7 @@ from sys import stdout import logging from . import __VERSION__ -from .idna import IdnaDict, idna_decode +from .idna import IdnaDict, idna_decode, idna_encode from .provider.base import BaseProvider from .provider.plan import Plan from .provider.yaml import SplitYamlProvider, YamlProvider @@ -754,6 +754,7 @@ class Manager(object): def validate_configs(self): # TODO: this code can probably be shared with stuff in sync for zone_name, config in self.config['zones'].items(): + decoded_zone_name = idna_decode(zone_name) zone = Zone(zone_name, self.configured_sub_zones(zone_name)) source_zone = config.get('alias') @@ -761,7 +762,7 @@ class Manager(object): if source_zone not in self.config['zones']: self.log.exception('Invalid alias zone') raise ManagerException( - f'Invalid alias zone {zone_name}: ' + f'Invalid alias zone {decoded_zone_name}: ' f'source zone {source_zone} does ' 'not exist' ) @@ -769,7 +770,7 @@ class Manager(object): if 'alias' in self.config['zones'][source_zone]: self.log.exception('Invalid alias zone') raise ManagerException( - f'Invalid alias zone {zone_name}: ' + f'Invalid alias zone {decoded_zone_name}: ' 'source zone {source_zone} is an ' 'alias zone' ) @@ -783,7 +784,9 @@ class Manager(object): try: sources = config['sources'] except KeyError: - raise ManagerException(f'Zone {zone_name} is missing sources') + raise ManagerException( + f'Zone {decoded_zone_name} is missing sources' + ) try: # rather than using a list comprehension, we break this @@ -795,7 +798,7 @@ class Manager(object): sources = collected except KeyError: raise ManagerException( - f'Zone {zone_name}, unknown source: ' + source + f'Zone {decoded_zone_name}, unknown source: ' + source ) for source in sources: @@ -810,19 +813,21 @@ class Manager(object): collected.append(self.processors[processor]) except KeyError: raise ManagerException( - f'Zone {zone_name}, unknown ' f'processor: {processor}' + f'Zone {decoded_zone_name}, unknown ' + f'processor: {processor}' ) def get_zone(self, zone_name): if not zone_name[-1] == '.': raise ManagerException( - f'Invalid zone name {zone_name}, missing ' 'ending dot' + f'Invalid zone name {idna_decode(zone_name)}, missing ' + 'ending dot' ) zone = self.config['zones'].get(zone_name) if zone: return Zone( - idna_decode(zone_name), self.configured_sub_zones(zone_name) + idna_encode(zone_name), self.configured_sub_zones(zone_name) ) - raise ManagerException(f'Unknown zone name {zone_name}') + raise ManagerException(f'Unknown zone name {idna_decode(zone_name)}')