Browse Source

Revert "Add support for zones aliases"

This reverts commit b926d78c5c.
pull/592/head
Jonathan Leroy 5 years ago
parent
commit
7bf0b31367
No known key found for this signature in database GPG Key ID: 7A0BCBE3934842EA
6 changed files with 16 additions and 84 deletions
  1. +7
    -27
      octodns/manager.py
  2. +6
    -9
      octodns/provider/yaml.py
  3. +1
    -2
      octodns/zone.py
  4. +0
    -17
      tests/config/bad-zone-aliases.yaml
  5. +0
    -17
      tests/config/simple-aliases.yaml
  6. +2
    -12
      tests/test_octodns_manager.py

+ 7
- 27
octodns/manager.py View File

@ -121,20 +121,6 @@ class Manager(object):
raise ManagerException('Incorrect provider config for {}'
.format(provider_name))
for zone_name, zone_config in self.config['zones'].copy().items():
if 'aliases' in zone_config:
for alias in zone_config['aliases']:
if alias in self.config['zones']:
self.log.exception('Invalid zone alias')
raise ManagerException('Invalid zone alias {}: '
'this zone already exists'
.format(alias))
self.config['zones'][alias] = zone_config
self.config['zones'][alias]['template_zone'] = zone_name
del self.config['zones'][zone_name]['aliases']
zone_tree = {}
# sort by reversed strings so that parent zones always come first
for name in sorted(self.config['zones'].keys(), key=lambda s: s[::-1]):
@ -236,14 +222,12 @@ class Manager(object):
self.log.debug('configured_sub_zones: subs=%s', sub_zone_names)
return set(sub_zone_names)
def _populate_and_plan(self, zone_name, template_zone, sources, targets,
lenient=False):
def _populate_and_plan(self, zone_name, sources, targets, lenient=False):
self.log.debug('sync: populating, zone=%s, template=%s, lenient=%s',
zone_name, template_zone, lenient)
self.log.debug('sync: populating, zone=%s, lenient=%s',
zone_name, lenient)
zone = Zone(zone_name,
sub_zones=self.configured_sub_zones(zone_name),
template_zone=template_zone)
sub_zones=self.configured_sub_zones(zone_name))
for source in sources:
try:
source.populate(zone, lenient=lenient)
@ -285,7 +269,6 @@ class Manager(object):
for zone_name, config in zones:
self.log.info('sync: zone=%s', zone_name)
lenient = config.get('lenient', False)
template_zone = config.get('template_zone', zone_name)
try:
sources = config['sources']
except KeyError:
@ -341,9 +324,8 @@ class Manager(object):
.format(zone_name, target))
futures.append(self._executor.submit(self._populate_and_plan,
zone_name, template_zone,
sources, targets,
lenient=lenient))
zone_name, sources,
targets, lenient=lenient))
# Wait on all results and unpack/flatten them in to a list of target &
# plan pairs.
@ -437,9 +419,7 @@ class Manager(object):
def validate_configs(self):
for zone_name, config in self.config['zones'].items():
template_zone = config.get('template_zone', zone_name)
zone = Zone(zone_name, self.configured_sub_zones(zone_name),
template_zone)
zone = Zone(zone_name, self.configured_sub_zones(zone_name))
try:
sources = config['sources']


+ 6
- 9
octodns/provider/yaml.py View File

@ -139,8 +139,8 @@ class YamlProvider(BaseProvider):
filename)
def populate(self, zone, target=False, lenient=False):
self.log.debug('populate: name=%s, template=%s, target=%s, lenient=%s',
zone.name, zone.template_zone, target, lenient)
self.log.debug('populate: name=%s, target=%s, lenient=%s', zone.name,
target, lenient)
if target:
# When acting as a target we ignore any existing records so that we
@ -148,9 +148,7 @@ class YamlProvider(BaseProvider):
return False
before = len(zone.records)
filename = join(self.directory, '{}yaml'.format(zone.template_zone
if zone.template_zone
else zone.name))
filename = join(self.directory, '{}yaml'.format(zone.name))
self._populate_from_file(filename, zone, lenient)
self.log.info('populate: found %s records, exists=False',
@ -245,12 +243,11 @@ class SplitYamlProvider(YamlProvider):
super(SplitYamlProvider, self).__init__(id, directory, *args, **kwargs)
def _zone_directory(self, zone):
return join(self.directory, zone.template_zone if zone.template_zone
else zone.name)
return join(self.directory, zone.name)
def populate(self, zone, target=False, lenient=False):
self.log.debug('populate: name=%s, template=%s, target=%s, lenient=%s',
zone.name, zone.template_zone, target, lenient)
self.log.debug('populate: name=%s, target=%s, lenient=%s', zone.name,
target, lenient)
if target:
# When acting as a target we ignore any existing records so that we


+ 1
- 2
octodns/zone.py View File

@ -35,14 +35,13 @@ def _is_eligible(record):
class Zone(object):
log = getLogger('Zone')
def __init__(self, name, sub_zones, template_zone=None):
def __init__(self, name, sub_zones):
if not name[-1] == '.':
raise Exception('Invalid zone name {}, missing ending dot'
.format(name))
# Force everything to lowercase just to be safe
self.name = text_type(name).lower() if name else name
self.sub_zones = sub_zones
self.template_zone = template_zone
# We're grouping by node, it allows us to efficiently search for
# duplicates and detect when CNAMEs co-exist with other records
self._records = defaultdict(set)


+ 0
- 17
tests/config/bad-zone-aliases.yaml View File

@ -1,17 +0,0 @@
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.:
aliases:
- unit.tests.
sources:
- in
targets:
- dump

+ 0
- 17
tests/config/simple-aliases.yaml View File

@ -1,17 +0,0 @@
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.:
aliases:
- unit-alias.tests.
sources:
- in
targets:
- dump

+ 2
- 12
tests/test_octodns_manager.py View File

@ -298,8 +298,7 @@ class TestManager(TestCase):
pass
# This should be ok, we'll fall back to not passing it
manager._populate_and_plan('unit.tests.', 'unit.tests.',
[NoLenient()], [])
manager._populate_and_plan('unit.tests.', [NoLenient()], [])
class NoZone(SimpleProvider):
@ -308,16 +307,7 @@ class TestManager(TestCase):
# This will blow up, we don't fallback for source
with self.assertRaises(TypeError):
manager._populate_and_plan('unit.tests.', 'unit.tests.',
[NoZone()], [])
def test_zone_aliases(self):
Manager(get_config_filename('simple-aliases.yaml')).validate_configs()
with self.assertRaises(ManagerException) as ctx:
Manager(get_config_filename('bad-zone-aliases.yaml')) \
.validate_configs()
self.assertTrue('Invalid zone alias' in text_type(ctx.exception))
manager._populate_and_plan('unit.tests.', [NoZone()], [])
class TestMainThreadExecutor(TestCase):


Loading…
Cancel
Save