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:
@@ -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 = []
|
||||||
|
@@ -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):
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user