Browse Source

Merge pull request #1030 from octodns/remove-py-3-7-try

Require python 3.8, remove a p3.7 import work-around, address other minor TODOs as prep for 1.0
pull/1031/head
Ross McFarland 2 years ago
committed by GitHub
parent
commit
82bf9586b1
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 33 additions and 32 deletions
  1. +7
    -0
      CHANGELOG.md
  2. +0
    -6
      octodns/cmds/args.py
  3. +2
    -12
      octodns/manager.py
  4. +0
    -1
      octodns/provider/plan.py
  5. +6
    -2
      octodns/zone.py
  6. +1
    -1
      setup.py
  7. +8
    -9
      tests/test_octodns_provider_yaml.py
  8. +9
    -1
      tests/test_octodns_zone.py

+ 7
- 0
CHANGELOG.md View File

@ -1,3 +1,10 @@
## v1.0.0 - 2023-??-?? - The One
#### Stuff
* Removal of a Python 3.7 specific import work-around now that it's no longer an
active/supported version. Also bumps required minimum version of Python 3.8
## v1.0.0.rc1 - 2023-07-20 - The last one before the 1s
* Record and Zone validation now ensures there's no whitespace in names


+ 0
- 6
octodns/cmds/args.py View File

@ -101,9 +101,3 @@ class ArgumentParser(_Base):
# we still want plans to come out during quite so set the plan
# logger output to info in case the PlanLogger is being used
getLogger('Plan').setLevel(INFO)
# TODO: these should move out of octoDNS core...
# boto is noisy, set it to warn
getLogger('botocore').level = WARNING
# DynectSession is noisy too
getLogger('DynectSession').level = WARNING

+ 2
- 12
octodns/manager.py View File

@ -5,6 +5,8 @@
from collections import deque
from concurrent.futures import ThreadPoolExecutor
from importlib import import_module
from importlib.metadata import PackageNotFoundError
from importlib.metadata import version as module_version
from logging import getLogger
from os import environ
from sys import stdout
@ -19,18 +21,6 @@ from .record import Record
from .yaml import safe_load
from .zone import Zone
# TODO: this can go away once we no longer support python 3.7
try: # pragma: no cover
from importlib.metadata import PackageNotFoundError
from importlib.metadata import version as module_version
except ModuleNotFoundError: # pragma: no cover
class PackageNotFoundError(Exception):
pass
def module_version(*args, **kargs):
raise PackageNotFoundError('placeholder')
class _AggregateTarget(object):
id = 'aggregate'


+ 0
- 1
octodns/provider/plan.py View File

@ -79,7 +79,6 @@ class Plan(object):
)
def raise_if_unsafe(self):
# TODO: what is safe really?
if (
self.existing
and len(self.existing.records) >= self.MIN_EXISTING_RECORDS


+ 6
- 2
octodns/zone.py View File

@ -161,8 +161,12 @@ class Zone(object):
self._records[record.name].discard(record)
# TODO: delete this
_remove_record = remove_record
# TODO: delete this at v2.0.0rc0
def _remove_record(self, record):
self.log.warning(
'_remove_record: method has been deprecated, used remove_record instead'
)
return self.remove_record(record)
def changes(self, desired, target):
self.log.debug('changes: zone=%s, target=%s', self, target)


+ 1
- 1
setup.py View File

@ -99,7 +99,7 @@ setup(
long_description_content_type='text/markdown',
name='octodns',
packages=find_packages(),
python_requires='>=3.6',
python_requires='>=3.8',
tests_require=tests_require,
url='https://github.com/octodns/octodns',
version=version(),


+ 8
- 9
tests/test_octodns_provider_yaml.py View File

@ -139,32 +139,31 @@ class TestYamlProvider(TestCase):
with open(dynamic_yaml_file) as fh:
data = safe_load(fh.read())
# make sure new dynamic records made the trip
# make sure dynamic records made the trip
dyna = data.pop('a')
self.assertTrue('values' in dyna)
# self.assertTrue('dynamic' in dyna)
# TODO:
self.assertTrue('dynamic' in dyna)
# make sure new dynamic records made the trip
# make sure dynamic records made the trip
dyna = data.pop('aaaa')
self.assertTrue('values' in dyna)
# self.assertTrue('dynamic' in dyna)
self.assertTrue('dynamic' in dyna)
dyna = data.pop('cname')
self.assertTrue('value' in dyna)
# self.assertTrue('dynamic' in dyna)
self.assertTrue('dynamic' in dyna)
dyna = data.pop('real-ish-a')
self.assertTrue('values' in dyna)
# self.assertTrue('dynamic' in dyna)
self.assertTrue('dynamic' in dyna)
dyna = data.pop('simple-weighted')
self.assertTrue('value' in dyna)
# self.assertTrue('dynamic' in dyna)
self.assertTrue('dynamic' in dyna)
dyna = data.pop('pool-only-in-fallback')
self.assertTrue('value' in dyna)
# self.assertTrue('dynamic' in dyna)
self.assertTrue('dynamic' in dyna)
# make sure nothing is left
self.assertEqual([], list(data.keys()))


+ 9
- 1
tests/test_octodns_zone.py View File

@ -125,7 +125,7 @@ class TestZone(TestCase):
# add a record, delete a record -> [Delete, Create]
c = ARecord(before, 'c', {'ttl': 42, 'value': '1.1.1.1'})
after.add_record(c)
after._remove_record(b)
after.remove_record(b)
self.assertEqual(after.records, set([a, c]))
changes = before.changes(after, target)
self.assertEqual(2, len(changes))
@ -154,6 +154,14 @@ class TestZone(TestCase):
self.assertFalse(changed.changes(update.new, target))
update.__repr__()
def test_deprecated__remove_record(self):
zone = Zone('unit.tests.', [])
a = ARecord(zone, 'a', {'ttl': 42, 'value': '1.1.1.1'})
zone.add_record(a)
self.assertEqual({a}, zone.records)
zone._remove_record(a)
self.assertEqual(set(), zone.records)
def test_unsupporting(self):
class NoAaaaProvider(object):
id = 'no-aaaa'


Loading…
Cancel
Save