diff --git a/README.md b/README.md index aa10518..a1dc5d4 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ Running through the following commands will install the latest release of OctoDN ```shell $ mkdir dns $ cd dns -$ virtualenv env +$ python -m venv env ... $ source env/bin/activate $ pip install octodns diff --git a/octodns/provider/azuredns.py b/octodns/provider/azuredns.py index aff7a25..bbc6973 100644 --- a/octodns/provider/azuredns.py +++ b/octodns/provider/azuredns.py @@ -650,14 +650,12 @@ class AzureProvider(BaseProvider): if azrecord.a_records is None: if azrecord.target_resource.id: return self._data_for_dynamic(azrecord) - else: - # dynamic record alias is broken, return dummy value and apply - # will likely overwrite/fix it - self.log.warn('_data_for_A: Missing Traffic Manager ' - 'alias for dynamic A record %s, forcing ' - 're-link by setting an invalid value', - azrecord.fqdn) - return {'values': ['255.255.255.255']} + + # dynamic record alias is broken, return dummy value and apply + # will likely overwrite/fix it + self.log.warn('_data_for_A: Missing Traffic Manager alias for ' + 'dynamic record %s', azrecord.fqdn) + return {'values': []} return {'values': [ar.ipv4_address for ar in azrecord.a_records]} @@ -665,14 +663,12 @@ class AzureProvider(BaseProvider): if azrecord.aaaa_records is None: if azrecord.target_resource.id: return self._data_for_dynamic(azrecord) - else: - # dynamic record alias is broken, return dummy value and apply - # will likely overwrite/fix it - self.log.warn('_data_for_AAAA: Missing Traffic Manager ' - 'alias for dynamic AAAA record %s, forcing ' - 're-link by setting an invalid value', - azrecord.fqdn) - return {'values': ['::1']} + + # dynamic record alias is broken, return dummy value and apply + # will likely overwrite/fix it + self.log.warn('_data_for_AAAA: Missing Traffic Manager alias for ' + 'dynamic record %s', azrecord.fqdn) + return {'values': []} return {'values': [ar.ipv6_address for ar in azrecord.aaaa_records]} @@ -692,14 +688,12 @@ class AzureProvider(BaseProvider): if azrecord.cname_record is None: if azrecord.target_resource.id: return self._data_for_dynamic(azrecord) - else: - # dynamic record alias is broken, return dummy value and apply - # will likely overwrite/fix it - self.log.warn('_data_for_CNAME: Missing Traffic Manager ' - 'alias for dynamic CNAME record %s, forcing ' - 're-link by setting an invalid value', - azrecord.fqdn) - return {'value': 'iam.invalid.'} + + # dynamic record alias is broken, return dummy value and apply + # will likely overwrite/fix it + self.log.warn('_data_for_CNAME: Missing Traffic Manager alias for ' + 'dynamic record %s', azrecord.fqdn) + return {'value': None} return {'value': _check_endswith_dot(azrecord.cname_record.cname)} diff --git a/script/bootstrap b/script/bootstrap index b135122..543d7b7 100755 --- a/script/bootstrap +++ b/script/bootstrap @@ -15,15 +15,18 @@ if [ ! -d "$VENV_NAME" ]; then if [ -z "$VENV_PYTHON" ]; then VENV_PYTHON=$(command -v python3) fi - virtualenv --python="$VENV_PYTHON" "$VENV_NAME" + "$VENV_PYTHON" -m venv "$VENV_NAME" fi . "$VENV_NAME/bin/activate" -pip install -U 'pip>=10.0.1' -pip install -r requirements.txt +# We're in the venv now, so use the first Python in $PATH. In particular, don't +# use $VENV_PYTHON - that's the Python that *created* the venv, not the python +# *inside* the venv +python -m pip install -U 'pip>=10.0.1' +python -m pip install -r requirements.txt if [ "$ENV" != "production" ]; then - pip install -r requirements-dev.txt + python -m pip install -r requirements-dev.txt fi if [ ! -L ".git/hooks/pre-commit" ]; then diff --git a/script/cibuild b/script/cibuild index a2dc527..f356a84 100755 --- a/script/cibuild +++ b/script/cibuild @@ -8,9 +8,7 @@ script/bootstrap echo "## environment & versions ######################################################" python --version -pip --version -VVER=$(virtualenv --version) -echo "virtualenv $VVER" +python -m pip --version if [ -z "$VENV_NAME" ]; then VENV_NAME="env" diff --git a/tests/test_octodns_provider_azuredns.py b/tests/test_octodns_provider_azuredns.py index 708b229..64bd3ec 100644 --- a/tests/test_octodns_provider_azuredns.py +++ b/tests/test_octodns_provider_azuredns.py @@ -1934,8 +1934,8 @@ class TestAzureDnsProvider(TestCase): ttl=60, target_resource=SubResource(id=None)) azrecord.name = record.name or '@' azrecord.type = f'Microsoft.Network/dnszones/{record._type}' - record2 = provider._populate_record(zone, azrecord) - self.assertEqual(record2.values, ['255.255.255.255']) + record2 = provider._populate_record(zone, azrecord, lenient=True) + self.assertEqual(record2.values, []) # test that same record gets populated back from traffic managers tm_list = provider._tm_client.profiles.list_by_resource_group @@ -2016,8 +2016,8 @@ class TestAzureDnsProvider(TestCase): ttl=60, target_resource=SubResource(id=None)) azrecord.name = record.name or '@' azrecord.type = f'Microsoft.Network/dnszones/{record._type}' - record2 = provider._populate_record(zone, azrecord) - self.assertEqual(record2.values, ['::1']) + record2 = provider._populate_record(zone, azrecord, lenient=True) + self.assertEqual(record2.values, []) # test that same record gets populated back from traffic managers tm_list = provider._tm_client.profiles.list_by_resource_group @@ -2259,8 +2259,8 @@ class TestAzureDnsProvider(TestCase): azrecord.name = record1.name or '@' azrecord.type = f'Microsoft.Network/dnszones/{record1._type}' - record2 = provider._populate_record(zone, azrecord) - self.assertEqual(record2.value, 'iam.invalid.') + record2 = provider._populate_record(zone, azrecord, lenient=True) + self.assertIsNone(record2.value) change = Update(record2, record1) provider._apply_Update(change)