Browse Source

Add GeoCodes.parse and move Move Dyn dynamnic over to use it

pull/312/head
Ross McFarland 7 years ago
parent
commit
a169d50fcf
No known key found for this signature in database GPG Key ID: 61C10C4FC8FE4A89
4 changed files with 36 additions and 6 deletions
  1. +2
    -1
      octodns/provider/dyn.py
  2. +0
    -5
      octodns/record/__init__.py
  3. +17
    -0
      octodns/record/geo.py
  4. +17
    -0
      tests/test_octodns_record_geo.py

+ 2
- 1
octodns/provider/dyn.py View File

@ -18,6 +18,7 @@ from threading import Lock
from uuid import uuid4 from uuid import uuid4
from ..record import Record, Update from ..record import Record, Update
from ..record.geo import GeoCodes
from .base import BaseProvider from .base import BaseProvider
@ -1109,7 +1110,7 @@ class DynProvider(BaseProvider):
criteria_type = 'always' criteria_type = 'always'
try: try:
for geo in rule.data['geos']: for geo in rule.data['geos']:
geo = new.geo_parse(geo)
geo = GeoCodes.geo_parse(geo)
pprint(geo) pprint(geo)
criteria_type = 'geoip' criteria_type = 'geoip'
if geo['subdivision_code']: if geo['subdivision_code']:


+ 0
- 5
octodns/record/__init__.py View File

@ -568,11 +568,6 @@ class _DynamicMixin(object):
return reasons return reasons
@classmethod
def geo_parse(cls, code):
match = cls.geo_re.match(code)
return match.groupdict()
def __init__(self, zone, name, data, *args, **kwargs): def __init__(self, zone, name, data, *args, **kwargs):
super(_DynamicMixin, self).__init__(zone, name, data, *args, super(_DynamicMixin, self).__init__(zone, name, data, *args,
**kwargs) **kwargs)


+ 17
- 0
octodns/record/geo.py View File

@ -33,3 +33,20 @@ class GeoCodes(object):
reasons.append('{}unknown province code "{}"'.format(prefix, code)) reasons.append('{}unknown province code "{}"'.format(prefix, code))
return reasons return reasons
@classmethod
def parse(cls, code):
pieces = code.split('-')
try:
country_code = pieces[1]
except IndexError:
country_code = None
try:
province_code = pieces[2]
except IndexError:
province_code = None
return {
'continent_code': pieces[0],
'country_code': country_code,
'province_code': province_code,
}

+ 17
- 0
tests/test_octodns_record_geo.py View File

@ -51,3 +51,20 @@ class TestRecordGeoCodes(TestCase):
# Bad province code, good continent and country # Bad province code, good continent and country
self.assertEquals(['xyz unknown province code "NA-US-XX"'], self.assertEquals(['xyz unknown province code "NA-US-XX"'],
GeoCodes.validate('NA-US-XX', prefix)) GeoCodes.validate('NA-US-XX', prefix))
def test_parse(self):
self.assertEquals({
'continent_code': 'NA',
'country_code': None,
'province_code': None,
}, GeoCodes.parse('NA'))
self.assertEquals({
'continent_code': 'NA',
'country_code': 'US',
'province_code': None,
}, GeoCodes.parse('NA-US'))
self.assertEquals({
'continent_code': 'NA',
'country_code': 'US',
'province_code': 'CA',
}, GeoCodes.parse('NA-US-CA'))

Loading…
Cancel
Save