diff -Nru designate-10.0.0/AUTHORS designate-10.0.1/AUTHORS --- designate-10.0.0/AUTHORS 2020-05-13 04:43:48.000000000 -0600 +++ designate-10.0.1/AUTHORS 2021-07-26 04:17:55.000000000 -0600 @@ -10,6 +10,7 @@ Alok Jani Andreas Jaeger Andreas Jaeger +Andrew Bogott Andrew Ruthven Andrew Spiers Andrey Perminov @@ -100,6 +101,7 @@ John Schwarz Jordan Cazamias JordanP +Jorge Niedbalski Julien Danjou KATO Tomoyuki Kai Zhang @@ -251,6 +253,7 @@ vishal mahajan wangqi wengjiangang +wu.chunyang zhang.lei zhangdebo zhangyanxian diff -Nru designate-10.0.0/ChangeLog designate-10.0.1/ChangeLog --- designate-10.0.0/ChangeLog 2020-05-13 04:43:48.000000000 -0600 +++ designate-10.0.1/ChangeLog 2021-07-26 04:17:55.000000000 -0600 @@ -1,10 +1,21 @@ CHANGES ======= +10.0.1 +------ + +* Update zones masters using pool target masters +* Fix pdns4 devstack plugin +* Drop lower-constraints test +* pdns4 backend: check if zone exists before attempting delete +* Fix lower-constraints test not constraining properly +* fix database sync always get the wrong value + 10.0.0 ------ * Fix designate-sink shutdown issue +* Update TOX\_CONSTRAINTS\_FILE for stable/ussuri * Update .gitreview for stable/ussuri 10.0.0.0rc1 diff -Nru designate-10.0.0/debian/changelog designate-10.0.1/debian/changelog --- designate-10.0.0/debian/changelog 2020-05-15 20:32:59.000000000 -0600 +++ designate-10.0.1/debian/changelog 2021-09-01 13:02:15.000000000 -0600 @@ -1,3 +1,10 @@ +designate (1:10.0.1-0ubuntu0.20.04.1~cloud0) bionic; urgency=medium + + * New upstream release for the Ubuntu Cloud Archive. + * Refreshed patches + + -- Nicolas Bock Wed, 01 Sep 2021 19:02:15 +0000 + designate (1:10.0.0-0ubuntu0.20.04.1~cloud0) bionic-ussuri; urgency=medium * New upstream release for the Ubuntu Cloud Archive. diff -Nru designate-10.0.0/debian/patches/disable-edgegrid.patch designate-10.0.1/debian/patches/disable-edgegrid.patch --- designate-10.0.0/debian/patches/disable-edgegrid.patch 2020-05-13 14:50:55.000000000 -0600 +++ designate-10.0.1/debian/patches/disable-edgegrid.patch 2021-09-01 13:02:15.000000000 -0600 @@ -3,16 +3,23 @@ Author: James Page Forwarded: not-needed ---- a/designate.egg-info/requires.txt -+++ b/designate.egg-info/requires.txt -@@ -45,4 +45,3 @@ - os-win>=3.0.0 - monasca-statsd>=1.4.0 - futurist>=1.2.0 +Index: designate-10.0.1/designate.egg-info/requires.txt +=================================================================== +--- designate-10.0.1.orig/designate.egg-info/requires.txt ++++ designate-10.0.1/designate.egg-info/requires.txt +@@ -8,7 +8,6 @@ WebOb>=1.7.1 + Werkzeug>=0.9 + debtcollector>=1.2.0 + dnspython3!=1.13.0,!=1.14.0,>=1.12.0 -edgegrid-python>=1.1.1 ---- a/requirements.txt -+++ b/requirements.txt -@@ -49,4 +49,3 @@ + eventlet>=0.25.1 + futurist>=1.2.0 + greenlet>=0.4.10 +Index: designate-10.0.1/requirements.txt +=================================================================== +--- designate-10.0.1.orig/requirements.txt ++++ designate-10.0.1/requirements.txt +@@ -49,4 +49,3 @@ debtcollector>=1.2.0 # Apache-2.0 os-win>=3.0.0 # Apache-2.0 monasca-statsd>=1.4.0 # Apache-2.0 futurist>=1.2.0 # Apache-2.0 diff -Nru designate-10.0.0/debian/patches/monkey-patch-original-current-thread.patch designate-10.0.1/debian/patches/monkey-patch-original-current-thread.patch --- designate-10.0.0/debian/patches/monkey-patch-original-current-thread.patch 2020-05-13 14:50:55.000000000 -0600 +++ designate-10.0.1/debian/patches/monkey-patch-original-current-thread.patch 2021-09-01 13:02:15.000000000 -0600 @@ -14,10 +14,10 @@ designate/cmd/manage.py | 6 ++++++ 2 files changed, 12 insertions(+) -diff --git a/designate/cmd/__init__.py b/designate/cmd/__init__.py -index 806716bc..3a7edfa9 100644 ---- a/designate/cmd/__init__.py -+++ b/designate/cmd/__init__.py +Index: designate-10.0.1/designate/cmd/__init__.py +=================================================================== +--- designate-10.0.1.orig/designate/cmd/__init__.py ++++ designate-10.0.1/designate/cmd/__init__.py @@ -16,3 +16,9 @@ import eventlet @@ -28,10 +28,10 @@ +import __original_module_threading as orig_threading # noqa +import threading # noqa +orig_threading.current_thread.__globals__['_active'] = threading._active -diff --git a/designate/cmd/manage.py b/designate/cmd/manage.py -index 08cc472c..bc8e8f90 100644 ---- a/designate/cmd/manage.py -+++ b/designate/cmd/manage.py +Index: designate-10.0.1/designate/cmd/manage.py +=================================================================== +--- designate-10.0.1.orig/designate/cmd/manage.py ++++ designate-10.0.1/designate/cmd/manage.py @@ -29,6 +29,12 @@ from designate import utils from designate import version @@ -45,6 +45,3 @@ CONF = designate.conf.CONF --- -2.25.1 - diff -Nru designate-10.0.0/debian/.pc/.quilt_patches designate-10.0.1/debian/.pc/.quilt_patches --- designate-10.0.0/debian/.pc/.quilt_patches 1969-12-31 17:00:00.000000000 -0700 +++ designate-10.0.1/debian/.pc/.quilt_patches 2021-09-01 13:02:15.000000000 -0600 @@ -0,0 +1 @@ +patches diff -Nru designate-10.0.0/debian/.pc/.quilt_series designate-10.0.1/debian/.pc/.quilt_series --- designate-10.0.0/debian/.pc/.quilt_series 1969-12-31 17:00:00.000000000 -0700 +++ designate-10.0.1/debian/.pc/.quilt_series 2021-09-01 13:02:15.000000000 -0600 @@ -0,0 +1 @@ +series diff -Nru designate-10.0.0/debian/.pc/.version designate-10.0.1/debian/.pc/.version --- designate-10.0.0/debian/.pc/.version 1969-12-31 17:00:00.000000000 -0700 +++ designate-10.0.1/debian/.pc/.version 2021-09-01 13:02:15.000000000 -0600 @@ -0,0 +1 @@ +2 diff -Nru designate-10.0.0/designate/backend/impl_bind9.py designate-10.0.1/designate/backend/impl_bind9.py --- designate-10.0.0/designate/backend/impl_bind9.py 2020-05-13 04:43:10.000000000 -0600 +++ designate-10.0.1/designate/backend/impl_bind9.py 2021-07-26 04:17:04.000000000 -0600 @@ -127,6 +127,43 @@ LOG.warning('RNDC call failure: %s', e) raise + def update_zone(self, context, zone): + """ + Update a DNS zone. + + This will execute a rndc modzone as the zone + already exists but masters might need to be refreshed. + + :param context: Security context information. + :param zone: the DNS zone. + """ + LOG.debug('Update Zone') + + masters = [] + for master in self.masters: + host = master['host'] + port = master['port'] + masters.append('%s port %s' % (host, port)) + + # Ensure different MiniDNS instances are targeted for AXFRs + random.shuffle(masters) + + view = 'in %s' % self._view if self._view else '' + + rndc_op = [ + 'modzone', + '%s %s { type slave; masters { %s;}; file "slave.%s%s"; };' % + (zone['name'].rstrip('.'), view, '; '.join(masters), zone['name'], + zone['id']), + ] + + try: + self._execute_rndc(rndc_op) + except exceptions.Backend as e: + LOG.warning("Error updating zone: %s", e) + pass + super().update_zone(context, zone) + def _execute_rndc(self, rndc_op): """Execute rndc diff -Nru designate-10.0.0/designate/backend/impl_pdns4.py designate-10.0.1/designate/backend/impl_pdns4.py --- designate-10.0.0/designate/backend/impl_pdns4.py 2020-05-13 04:43:10.000000000 -0600 +++ designate-10.0.1/designate/backend/impl_pdns4.py 2021-07-26 04:17:04.000000000 -0600 @@ -106,10 +106,17 @@ 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 -Nru designate-10.0.0/designate/manage/pool.py designate-10.0.1/designate/manage/pool.py --- designate-10.0.0/designate/manage/pool.py 2020-05-13 04:43:10.000000000 -0600 +++ designate-10.0.1/designate/manage/pool.py 2021-07-26 04:17:04.000000000 -0600 @@ -23,6 +23,7 @@ from designate import exceptions from designate import rpc from designate import objects +from designate import policy from designate.central import rpcapi as central_rpcapi from designate.manage import base from designate.objects.adapters import DesignateAdapter @@ -43,6 +44,30 @@ rpc.init(cfg.CONF) self.central_api = central_rpcapi.CentralAPI() + def _update_zones(self, pool): + LOG.info("Updating zone masters for pool: {}".format(pool.id)) + + def __get_masters_from_pool(pool): + masters = [] + for target in pool.targets: + for master in target.get("masters", []): + masters.append({'host': master['host'], + 'port': master['port']}) + return masters + + policy.init() + + self.context.all_tenants = True + zones = self.central_api.find_zones( + self.context, + criterion={'pool_id': pool.id}) + + for zone in zones: + zone.masters = objects.ZoneMasterList().from_list( + __get_masters_from_pool(pool)) + self.central_api.update_zone(self.context, + zone) + @base.args('--file', help='The path to the file the yaml output should be ' 'written to', default='/etc/designate/pools.yaml') @@ -140,6 +165,9 @@ output_msg.append("Update Pool: %s" % pool) else: pool = self.central_api.update_pool(self.context, pool) + # Bug: Changes in the pool targets should trigger a + # zone masters update LP: #1879798. + self._update_zones(pool) except exceptions.PoolNotFound: pool = DesignateAdapter.parse('YAML', xpool, objects.Pool()) diff -Nru designate-10.0.0/designate/storage/impl_sqlalchemy/migrate_repo/versions/070_liberty.py designate-10.0.1/designate/storage/impl_sqlalchemy/migrate_repo/versions/070_liberty.py --- designate-10.0.0/designate/storage/impl_sqlalchemy/migrate_repo/versions/070_liberty.py 2020-05-13 04:43:10.000000000 -0600 +++ designate-10.0.1/designate/storage/impl_sqlalchemy/migrate_repo/versions/070_liberty.py 2021-07-26 04:17:04.000000000 -0600 @@ -21,10 +21,12 @@ 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 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 -Nru designate-10.0.0/designate/tests/test_manage/__init__.py designate-10.0.1/designate/tests/test_manage/__init__.py --- designate-10.0.0/designate/tests/test_manage/__init__.py 1969-12-31 17:00:00.000000000 -0700 +++ designate-10.0.1/designate/tests/test_manage/__init__.py 2021-07-26 04:17:04.000000000 -0600 @@ -0,0 +1,5 @@ +from designate.tests import TestCase + + +class DesignateManageTestCase(TestCase): + pass diff -Nru designate-10.0.0/designate/tests/test_manage/test_update_pool.py designate-10.0.1/designate/tests/test_manage/test_update_pool.py --- designate-10.0.0/designate/tests/test_manage/test_update_pool.py 1969-12-31 17:00:00.000000000 -0700 +++ designate-10.0.1/designate/tests/test_manage/test_update_pool.py 2021-07-26 04:17:04.000000000 -0600 @@ -0,0 +1,65 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +from oslo_log import log as logging + +import mock +from designate.tests.test_manage import DesignateManageTestCase +from designate.manage.pool import PoolCommands +from designate.tests import fixtures +from designate import objects + +LOG = logging.getLogger(__name__) + + +class UpdatePoolTestCase(DesignateManageTestCase): + def setUp(self): + super(DesignateManageTestCase, self).setUp() + self.stdlog = fixtures.StandardLogging() + self.useFixture(self.stdlog) + + def hydrate_pool_targets(self, targets): + pool_targets = objects.PoolTargetList() + masters = objects.PoolTargetMasterList() + for target in targets: + masters.append(target) + target = objects.PoolTarget(masters=masters) + target.masters = masters + pool_targets.append(target) + return pool_targets + + def test_update_pools_zones(self): + values = dict( + name='example.com.', + email='info@example.com', + type='PRIMARY' + ) + + zone = self.central_service.create_zone( + self.admin_context, zone=objects.Zone.from_dict(values)) + + # Ensure the correct NS Records are in place + pool = self.central_service.get_pool( + self.admin_context, zone.pool_id) + + pool.targets = self.hydrate_pool_targets([objects.PoolTargetMaster( + pool_target_id=pool.id, + host="127.0.0.1", + port="53")]) + + command = PoolCommands() + command.context = self.admin_context + command.central_api = self.central_service + + with mock.patch.object(self.central_service, + "update_zone") as mock_update_zone: + command._update_zones(pool) + mock_update_zone.assert_called_once() diff -Nru designate-10.0.0/designate/tests/unit/backend/test_bind9.py designate-10.0.1/designate/tests/unit/backend/test_bind9.py --- designate-10.0.0/designate/tests/unit/backend/test_bind9.py 2020-05-13 04:43:10.000000000 -0600 +++ designate-10.0.1/designate/tests/unit/backend/test_bind9.py 2021-07-26 04:17:04.000000000 -0600 @@ -66,6 +66,18 @@ ) @mock.patch.object(impl_bind9.Bind9Backend, '_execute_rndc') + def test_update_zone(self, mock_execute): + with fixtures.random_seed(0): + self.backend.update_zone(self.admin_context, self.zone) + + mock_execute.assert_called_with( + [ + 'modzone', + 'example.com { type slave; masters { 192.168.1.1 port 53; 192.168.1.2 port 35;}; file "slave.example.com.cca7908b-dad4-4c50-adba-fb67d4c556e8"; };' # noqa + ] + ) + + @mock.patch.object(impl_bind9.Bind9Backend, '_execute_rndc') def test_create_zone_with_view(self, mock_execute): self.target['options'].append( {'key': 'view', 'value': 'guest'}, diff -Nru designate-10.0.0/designate/tests/unit/backend/test_pdns4.py designate-10.0.1/designate/tests/unit/backend/test_pdns4.py --- designate-10.0.0/designate/tests/unit/backend/test_pdns4.py 2020-05-13 04:43:10.000000000 -0600 +++ designate-10.0.1/designate/tests/unit/backend/test_pdns4.py 2021-07-26 04:17:04.000000000 -0600 @@ -285,6 +285,28 @@ 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 @@ '%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 -Nru designate-10.0.0/designate.egg-info/pbr.json designate-10.0.1/designate.egg-info/pbr.json --- designate-10.0.0/designate.egg-info/pbr.json 2020-05-13 04:43:48.000000000 -0600 +++ designate-10.0.1/designate.egg-info/pbr.json 2021-07-26 04:17:55.000000000 -0600 @@ -1 +1 @@ -{"git_version": "0d52d836", "is_release": true} \ No newline at end of file +{"git_version": "b967e9f7", "is_release": true} \ No newline at end of file diff -Nru designate-10.0.0/designate.egg-info/PKG-INFO designate-10.0.1/designate.egg-info/PKG-INFO --- designate-10.0.0/designate.egg-info/PKG-INFO 2020-05-13 04:43:48.000000000 -0600 +++ designate-10.0.1/designate.egg-info/PKG-INFO 2021-07-26 04:17:55.000000000 -0600 @@ -1,6 +1,6 @@ Metadata-Version: 1.2 Name: designate -Version: 10.0.0 +Version: 10.0.1 Summary: DNS as a Service Home-page: https://docs.openstack.org/designate/latest/ Author: OpenStack diff -Nru designate-10.0.0/designate.egg-info/requires.txt designate-10.0.1/designate.egg-info/requires.txt --- designate-10.0.0/designate.egg-info/requires.txt 2020-05-13 04:43:48.000000000 -0600 +++ designate-10.0.1/designate.egg-info/requires.txt 2021-07-26 04:17:55.000000000 -0600 @@ -1,17 +1,32 @@ Babel!=2.4.0,>=2.3.4 -eventlet>=0.25.1 Flask!=0.11,>=0.10 -greenlet>=0.4.10 Jinja2>=2.10 +Paste>=2.0.2 +PasteDeploy>=1.5.0 +SQLAlchemy!=1.1.5,!=1.1.6,!=1.1.7,!=1.1.8,>=1.0.10 +WebOb>=1.7.1 +Werkzeug>=0.9 +debtcollector>=1.2.0 +dnspython3!=1.13.0,!=1.14.0,>=1.12.0 +edgegrid-python>=1.1.1 +eventlet>=0.25.1 +futurist>=1.2.0 +greenlet>=0.4.10 jsonschema>=2.6.0 keystoneauth1>=3.4.0 keystonemiddleware>=4.17.0 +monasca-statsd>=1.4.0 netaddr>=0.7.18 -oslo.config>=5.2.0 +os-win>=3.0.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>=9.5.0 oslo.middleware>=3.31.0 -oslo.log>=3.36.0 +oslo.policy>=1.30.0 oslo.reports>=1.18.0 oslo.rootwrap>=5.8.0 oslo.serialization!=2.19.1,>=2.18.0 @@ -19,30 +34,15 @@ oslo.upgradecheck>=0.1.0 oslo.utils>=3.33.0 oslo.versionedobjects>=1.31.2 -Paste>=2.0.2 -PasteDeploy>=1.5.0 pbr!=2.1.0,>=2.0.0 pecan!=1.0.2,!=1.0.3,!=1.0.4,!=1.2,>=1.0.0 python-designateclient>=2.7.0 +python-memcached>=1.56 python-neutronclient>=6.7.0 requests>=2.14.2 -tenacity>=4.4.0 six>=1.10.0 -SQLAlchemy!=1.1.5,!=1.1.6,!=1.1.7,!=1.1.8,>=1.0.10 sqlalchemy-migrate>=0.11.0 stevedore>=1.20.0 suds-jurko>=0.6 -WebOb>=1.7.1 -dnspython3!=1.13.0,!=1.14.0,>=1.12.0 -oslo.db>=4.27.0 -oslo.i18n>=3.15.3 -oslo.context>=2.19.2 -oslo.policy>=1.30.0 -Werkzeug>=0.9 -python-memcached>=1.56 +tenacity>=4.4.0 tooz>=1.58.0 -debtcollector>=1.2.0 -os-win>=3.0.0 -monasca-statsd>=1.4.0 -futurist>=1.2.0 -edgegrid-python>=1.1.1 diff -Nru designate-10.0.0/designate.egg-info/SOURCES.txt designate-10.0.1/designate.egg-info/SOURCES.txt --- designate-10.0.0/designate.egg-info/SOURCES.txt 2020-05-13 04:43:48.000000000 -0600 +++ designate-10.0.1/designate.egg-info/SOURCES.txt 2021-07-26 04:17:55.000000000 -0600 @@ -9,7 +9,6 @@ babel.cfg designate.sublime-project ipa-requirements.txt -lower-constraints.txt requirements.txt setup.cfg setup.py @@ -527,6 +526,8 @@ designate/tests/test_central/__init__.py designate/tests/test_central/test_decorator.py designate/tests/test_central/test_service.py +designate/tests/test_manage/__init__.py +designate/tests/test_manage/test_update_pool.py designate/tests/test_mdns/__init__.py designate/tests/test_mdns/test_handler.py designate/tests/test_mdns/test_notify.py diff -Nru designate-10.0.0/devstack/designate_plugins/backend-pdns4 designate-10.0.1/devstack/designate_plugins/backend-pdns4 --- designate-10.0.0/devstack/designate_plugins/backend-pdns4 2020-05-13 04:43:10.000000000 -0600 +++ designate-10.0.1/devstack/designate_plugins/backend-pdns4 2021-07-26 04:17:04.000000000 -0600 @@ -32,25 +32,6 @@ # 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 < /dev/null <