summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.zuul.yaml1
-rw-r--r--designate/backend/impl_pdns4.py21
-rw-r--r--designate/storage/impl_sqlalchemy/migrate_repo/versions/070_liberty.py4
-rw-r--r--designate/tests/unit/backend/test_pdns4.py26
-rw-r--r--devstack/designate_plugins/backend-pdns422
-rw-r--r--lower-constraints.txt168
-rw-r--r--requirements.txt3
-rw-r--r--test-requirements.txt3
-rw-r--r--tox.ini7
9 files changed, 48 insertions, 207 deletions
diff --git a/.zuul.yaml b/.zuul.yaml
index b44bc67c..4f7e460e 100644
--- a/.zuul.yaml
+++ b/.zuul.yaml
@@ -153,7 +153,6 @@
templates:
- designate-devstack-jobs
- openstack-cover-jobs
- - openstack-lower-constraints-jobs
- openstack-python-jobs
- openstack-python3-train-jobs
- publish-openstack-docs-pti
diff --git a/designate/backend/impl_pdns4.py b/designate/backend/impl_pdns4.py
index 576dddd5..7149beba 100644
--- a/designate/backend/impl_pdns4.py
+++ b/designate/backend/impl_pdns4.py
@@ -106,10 +106,17 @@ class PDNS4Backend(base.Backend):
def delete_zone(self, context, zone):
"""Delete a DNS zone"""
- try:
- requests.delete(
- self._build_url(zone.name),
- headers=self.headers
- ).raise_for_status()
- except requests.HTTPError as e:
- raise exceptions.Backend(e)
+ # First verify that the zone exists -- If it's not present
+ # in the backend then we can just declare victory.
+ if self._check_zone_exists(zone):
+ try:
+ requests.delete(
+ self._build_url(zone.name),
+ headers=self.headers
+ ).raise_for_status()
+ except requests.HTTPError as e:
+ raise exceptions.Backend(e)
+ else:
+ LOG.warning("Trying to delete zone %s but that zone is not "
+ "present in the pdns backend. Assuming success.",
+ zone)
diff --git a/designate/storage/impl_sqlalchemy/migrate_repo/versions/070_liberty.py b/designate/storage/impl_sqlalchemy/migrate_repo/versions/070_liberty.py
index 748ca8da..f9e95518 100644
--- a/designate/storage/impl_sqlalchemy/migrate_repo/versions/070_liberty.py
+++ b/designate/storage/impl_sqlalchemy/migrate_repo/versions/070_liberty.py
@@ -21,10 +21,12 @@ from sqlalchemy import (Table, MetaData, Column, String, Text, Integer,
from oslo_config import cfg
from oslo_utils import timeutils
+from designate.conf import central
from designate.sqlalchemy.types import UUID
CONF = cfg.CONF
+central.register_opts(CONF)
RESOURCE_STATUSES = ['ACTIVE', 'PENDING', 'DELETED', 'ERROR']
RECORD_TYPES = ['A', 'AAAA', 'CNAME', 'MX', 'SRV', 'TXT', 'SPF', 'NS', 'PTR',
@@ -367,7 +369,7 @@ def default_shard(context, id_col):
def upgrade(migrate_engine):
metadata.bind = migrate_engine
- default_pool_id = cfg.CONF['service:central'].default_pool_id
+ default_pool_id = CONF['service:central'].default_pool_id
with migrate_engine.begin() as conn:
if migrate_engine.name == "mysql":
diff --git a/designate/tests/unit/backend/test_pdns4.py b/designate/tests/unit/backend/test_pdns4.py
index 2439d7f2..a04a28c8 100644
--- a/designate/tests/unit/backend/test_pdns4.py
+++ b/designate/tests/unit/backend/test_pdns4.py
@@ -285,6 +285,28 @@ class PDNS4BackendTestCase(designate.tests.TestCase):
req_mock.delete(
'%s/localhost/zones/example.com.' % self.base_address,
)
+ req_mock.get(
+ '%s/localhost/zones/%s' % (self.base_address, self.zone.name),
+ status_code=200,
+ )
+
+ self.backend.delete_zone(self.context, self.zone)
+
+ self.assertEqual(
+ req_mock.last_request.headers.get('X-API-Key'), 'api_key'
+ )
+
+ @requests_mock.mock()
+ def test_delete_zone_missing(self, req_mock):
+ req_mock.delete(
+ '%s/localhost/zones/example.com.' % self.base_address,
+ )
+
+ # pdns returns 422 if asked about a zone that doesn't exist.
+ req_mock.get(
+ '%s/localhost/zones/%s' % (self.base_address, self.zone.name),
+ status_code=422,
+ )
self.backend.delete_zone(self.context, self.zone)
@@ -298,6 +320,10 @@ class PDNS4BackendTestCase(designate.tests.TestCase):
'%s/localhost/zones/example.com.' % self.base_address,
status_code=500,
)
+ req_mock.get(
+ '%s/localhost/zones/%s' % (self.base_address, self.zone.name),
+ status_code=200,
+ )
self.assertRaisesRegexp(
exceptions.Backend,
diff --git a/devstack/designate_plugins/backend-pdns4 b/devstack/designate_plugins/backend-pdns4
index 577421ac..3b75b244 100644
--- a/devstack/designate_plugins/backend-pdns4
+++ b/devstack/designate_plugins/backend-pdns4
@@ -32,25 +32,6 @@ fi
# install_designate_backend - install any external requirements
function install_designate_backend {
if is_ubuntu; then
- GetOSVersion
- if [ "$os_CODENAME" = "trusty" ]; then
- sudo tee /etc/apt/sources.list.d/pdns.list > /dev/null <<EOF
-deb [arch=amd64] http://repo.powerdns.com/ubuntu trusty-auth-40 main
-EOF
- sudo tee /etc/apt/preferences.d/pdns > /dev/null <<EOF
-Package: pdns-*
-Pin: origin repo.powerdns.com
-Pin-Priority: 600
-EOF
- curl https://repo.powerdns.com/FD380FBB-pub.asc | sudo apt-key add - &&
- sudo apt-get update
- elif [ "$os_CODENAME" = "xenial" ]; then
- echo "Use PDNS4 from apt repo"
- elif [ "$os_CODENAME" = "bionic" ]; then
- echo "Use PDNS4 from apt repo"
- else
- die $LINENO "PDNS4 backend only supports bionic, trusty or xenial"
- fi
PDNS=pdns-server
else
die $LINENO "PDNS4 Backend plugin backend only supports Ubuntu"
@@ -118,7 +99,6 @@ slave=yes
cache-ttl=0
query-cache-ttl=0
negquery-cache-ttl=0
-out-of-zone-additional-processing=no
webserver=yes
webserver-address=$(ipv6_unquote $DESIGNATE_SERVICE_HOST)
webserver-allow-from=$(ipv6_unquote $DESIGNATE_SERVICE_HOST),127.0.0.1,::1
@@ -167,7 +147,7 @@ function init_designate_backend {
# (Re)create designate_pdns database
recreate_database designate_pdns utf8
if is_service_enabled mysql; then
- sudo mysql -u root designate_pdns < $DESIGNATE_PLUGINS/backend-pdns4-mysql-db.sql
+ sudo mysql -u$DATABASE_USER -p$DATABASE_PASSWORD -h$MYSQL_HOST designate_pdns < $DESIGNATE_PLUGINS/backend-pdns4-mysql-db.sql
elif is_service_enabled postgresql; then
sudo psql -U root -d designate_pdns -f $DESIGNATE_PLUGINS/backend-pdns4-pgsql-db.sql
else
diff --git a/lower-constraints.txt b/lower-constraints.txt
deleted file mode 100644
index 4cacf0ef..00000000
--- a/lower-constraints.txt
+++ /dev/null
@@ -1,168 +0,0 @@
-alabaster==0.7.10
-alembic==0.9.8
-amqp==2.2.2
-appdirs==1.4.3
-asn1crypto==0.24.0
-Babel==2.3.4
-bandit==1.1.0
-bcrypt==3.1.4
-beautifulsoup4==4.6.0
-blockdiag==1.5.3
-cachetools==2.0.1
-certifi==2018.1.18
-cffi==1.11.5
-chardet==3.0.4
-click==6.7
-cliff==2.11.0
-cmd2==0.8.1
-contextlib2==0.5.5
-coverage==4.0
-cryptography==2.1.4
-debtcollector==1.2.0
-decorator==4.2.1
-deprecation==2.0
-dnspython3==1.12.0
-dnspython==1.14.0
-doc8==0.6.0
-docutils==0.14
-dogpile.cache==0.6.5
-dulwich==0.19.0
-enum-compat==0.0.2
-eventlet==0.18.2
-extras==1.0.0
-fasteners==0.14.1
-fixtures==3.0.0
-flake8==2.5.5
-Flask==0.10
-funcparserlib==0.3.6
-future==0.16.0
-futurist==1.2.0
-gitdb2==2.0.3
-GitPython==2.1.8
-greenlet==0.4.10
-hacking==0.12.0
-idna==2.6
-imagesize==1.0.0
-iso8601==0.1.12
-itsdangerous==0.24
-Jinja2==2.10
-jmespath==0.9.3
-jsonpatch==1.21
-jsonpointer==2.0
-jsonschema==2.6.0
-kazoo==2.4.0
-keystoneauth1==3.4.0
-keystonemiddleware==4.17.0
-kombu==4.1.0
-linecache2==1.0.0
-logutils==0.3.5
-Mako==1.0.7
-MarkupSafe==1.0
-mccabe==0.2.1
-mock==2.0.0
-monasca-statsd==1.1.0
-monotonic==1.4
-mox3==0.25.0
-msgpack==0.5.6
-munch==2.2.0
-netaddr==0.7.18
-netifaces==0.10.6
-openstackdocstheme==1.20.0
-openstacksdk==0.12.0
-os-api-ref==1.5.0
-os-client-config==1.29.0
-os-service-types==1.2.0
-os-testr==1.0.0
-os-win==3.0.0
-osc-lib==1.10.0
-oslo.cache==1.29.0
-oslo.concurrency==3.26.0
-oslo.config==5.2.0
-oslo.context==2.19.2
-oslo.db==4.27.0
-oslo.i18n==3.15.3
-oslo.log==3.36.0
-oslo.messaging==5.29.0
-oslo.middleware==3.31.0
-oslo.policy==1.30.0
-oslo.reports==1.18.0
-oslo.rootwrap==5.8.0
-oslo.serialization==2.18.0
-oslo.service==1.24.0
-oslo.upgradecheck==0.1.0
-oslo.utils==3.33.0
-oslo.versionedobjects==1.31.2
-oslotest==3.2.0
-packaging==17.1
-paramiko==2.4.1
-Paste==2.0.2
-PasteDeploy==1.5.0
-pbr==2.0.0
-pecan==1.0.0
-pep8==1.5.7
-pika-pool==0.1.3
-pika==0.10.0
-Pillow==5.0.0
-prettytable==0.7.2
-psutil==5.4.3
-pyasn1==0.4.2
-pycadf==2.7.0
-pycparser==2.18
-pyflakes==0.8.1
-Pygments==2.2.0
-pyinotify==0.9.6
-PyNaCl==1.2.1
-pyparsing==2.2.0
-pyperclip==1.6.0
-python-dateutil==2.7.0
-python-designateclient==2.7.0
-python-editor==1.0.3
-python-keystoneclient==3.15.0
-python-memcached==1.56
-python-mimeparse==1.6.0
-python-neutronclient==6.7.0
-python-subunit==1.2.0
-pytz==2018.3
-PyYAML==3.12
-reno==2.7.0
-repoze.lru==0.7
-requests-mock==1.2.0
-requests==2.14.2
-requestsexceptions==1.4.0
-restructuredtext-lint==1.1.3
-rfc3986==1.1.0
-Routes==2.4.1
-simplejson==3.13.2
-six==1.10.0
-smmap2==2.0.3
-snowballstemmer==1.2.1
-Sphinx==1.6.5
-sphinxcontrib-blockdiag==1.5.5
-sphinxcontrib-httpdomain==1.6.1
-sphinxcontrib-websupport==1.0.1
-sqlalchemy-migrate==0.11.0
-SQLAlchemy==1.0.10
-sqlparse==0.2.4
-statsd==3.2.2
-stestr==2.0.0
-stevedore==1.20.0
-suds-jurko==0.6
-tempest==17.1.0
-Tempita==0.5.2
-tenacity==4.4.0
-testresources==2.0.1
-testscenarios==0.4
-testtools==2.2.0
-tooz==1.58.0
-traceback2==1.4.0
-unittest2==1.1.0
-urllib3==1.22
-vine==1.1.4
-voluptuous==0.11.1
-waitress==1.1.0
-webcolors==1.8.1
-WebOb==1.7.1
-WebTest==2.0.27
-Werkzeug==0.9
-wrapt==1.10.11
-zake==0.1.6
diff --git a/requirements.txt b/requirements.txt
index 35f59ac7..f64b1380 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -44,7 +44,8 @@ oslo.i18n>=3.15.3 # Apache-2.0
oslo.context>=2.19.2 # Apache-2.0
oslo.policy>=1.30.0 # Apache-2.0
Werkzeug>=0.9 # BSD License
-python-memcached>=1.56 # PSF
+python-memcached>=1.56;python_version=='2.7' # PSF
+python-memcached>=1.58;python_version>='3.4' # PSF
tooz>=1.58.0 # Apache-2.0
debtcollector>=1.2.0 # Apache-2.0
os-win>=3.0.0 # Apache-2.0
diff --git a/test-requirements.txt b/test-requirements.txt
index da11a6a6..896745df 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -15,7 +15,8 @@ testscenarios>=0.4 # Apache-2.0/BSD
WebTest>=2.0.27 # MIT
tempest>=17.1.0 # Apache-2.0
# Bandit security code scanner
-bandit>=1.1.0 # Apache-2.0
+bandit>=1.1.0,<1.6.3;python_version=='2.7' # Apache-2.0
+bandit>=1.1.0;python_version>='3.5' # Apache-2.0
zake>=0.1.6 # Apache-2.0
doc8>=0.6.0 # Apache-2.0
Pygments>=2.2.0 # BSD license
diff --git a/tox.ini b/tox.ini
index 6d3f8415..62985fca 100644
--- a/tox.ini
+++ b/tox.ini
@@ -199,10 +199,3 @@ exclude = .venv,.git,.tox,dist,doc,*lib/python*,*egg,build,tools,.ropeproject
[hacking]
local-check-factory = designate.hacking.checks.factory
import_exceptions = designate.i18n
-
-[testenv:lower-constraints]
-basepython = python3
-deps =
- -c{toxinidir}/lower-constraints.txt
- -r{toxinidir}/test-requirements.txt
- -r{toxinidir}/requirements.txt