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

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.
This commit is contained in:
Pieter Lexis
2020-11-19 09:39:33 +01:00
parent 07b8c19acc
commit e02a8b3858
2 changed files with 16 additions and 1 deletions

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

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.',