1
0
mirror of https://github.com/github/octodns.git synced 2024-05-11 05:55:00 +00:00

lenient param to populate needs to be optoinal

This commit is contained in:
Ross McFarland
2020-06-24 18:37:22 -07:00
parent ccc4d8dfc0
commit c25dd38d4f
2 changed files with 32 additions and 1 deletions

View File

@@ -8,6 +8,7 @@ from __future__ import absolute_import, division, print_function, \
from concurrent.futures import ThreadPoolExecutor from concurrent.futures import ThreadPoolExecutor
from importlib import import_module from importlib import import_module
from os import environ from os import environ
from six import text_type
import logging import logging
from .provider.base import BaseProvider from .provider.base import BaseProvider
@@ -228,7 +229,14 @@ class Manager(object):
zone = Zone(zone_name, zone = Zone(zone_name,
sub_zones=self.configured_sub_zones(zone_name)) sub_zones=self.configured_sub_zones(zone_name))
for source in sources: for source in sources:
source.populate(zone, lenient=lenient) try:
source.populate(zone, lenient=lenient)
except TypeError as e:
if "keyword argument 'lenient'" not in text_type(e):
raise
self.log.warn(': provider %s does not accept lenient param',
source.__class__.__name__)
source.populate(zone)
self.log.debug('sync: planning, zone=%s', zone_name) self.log.debug('sync: planning, zone=%s', zone_name)
plans = [] plans = []

View File

@@ -278,6 +278,29 @@ class TestManager(TestCase):
.validate_configs() .validate_configs()
self.assertTrue('unknown source' in text_type(ctx.exception)) self.assertTrue('unknown source' in text_type(ctx.exception))
def test_populate_lenient_fallback(self):
with TemporaryDirectory() as tmpdir:
environ['YAML_TMP_DIR'] = tmpdir.dirname
# Only allow a target that doesn't exist
manager = Manager(get_config_filename('simple.yaml'))
class NoLenient(SimpleProvider):
def populate(self, zone, source=False):
pass
# This should be ok, we'll fall back to not passing it
manager._populate_and_plan('unit.tests.', [NoLenient()], [])
class NoZone(SimpleProvider):
def populate(self, lenient=False):
pass
# This will blow up, we don't fallback for source
with self.assertRaises(TypeError):
manager._populate_and_plan('unit.tests.', [NoZone()], [])
class TestMainThreadExecutor(TestCase): class TestMainThreadExecutor(TestCase):