Browse Source

PowerDNS: Support pre-release versions

This commit strips any superfluous -alphaN (or beta or rc) from the
version number's minor number so it can be cast to an int. This will
allow octodns to sync to/from PowerDNS pre-releases.
pull/630/head
Pieter Lexis 5 years ago
parent
commit
e02a8b3858
2 changed files with 16 additions and 1 deletions
  1. +2
    -1
      octodns/provider/powerdns.py
  2. +14
    -0
      tests/test_octodns_provider_powerdns.py

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

@ -183,7 +183,8 @@ class PowerDnsBaseProvider(BaseProvider):
version = resp.json()['version']
self.log.debug('powerdns_version: got version %s from server',
version)
self._powerdns_version = [int(p) for p in version.split('.')]
self._powerdns_version = [
int(p.split('-')[0]) for p in version.split('.')[:3]]
return self._powerdns_version


+ 14
- 0
tests/test_octodns_provider_powerdns.py View File

@ -82,6 +82,20 @@ class TestPowerDnsProvider(TestCase):
provider._powerdns_version = None
self.assertNotEquals(provider.powerdns_version, [4, 1, 10])
# Test version detection with pre-releases
with requests_mock() as mock:
# Reset version, so detection will try again
provider._powerdns_version = None
mock.get('http://non.existent:8081/api/v1/servers/localhost',
status_code=200, json={'version': "4.4.0-alpha1"})
self.assertEquals(provider.powerdns_version, [4, 4, 0])
provider._powerdns_version = None
mock.get('http://non.existent:8081/api/v1/servers/localhost',
status_code=200,
json={'version': "4.5.0-alpha0.435.master.gcb114252b"})
self.assertEquals(provider.powerdns_version, [4, 5, 0])
def test_provider_version_config(self):
provider = PowerDnsProvider('test', 'non.existent', 'api-key',
nameserver_values=['8.8.8.8.',


Loading…
Cancel
Save