We are stoked to announce the release of: designate 18.0.0: DNS as a Service This release is part of the caracal release series. The source is available from: https://opendev.org/openstack/designate Download the package from: https://tarballs.openstack.org/designate/ Please report issues through: https://bugs.launchpad.net/designate/+bugs For more details, please see below. Changes in designate 17.0.0.0rc1..18.0.0 ---------------------------------------- 2be754cb reno: Update master for unmaintained/xena f258d0f0 reno: Update master for unmaintained/wallaby 3215f42e reno: Update master for unmaintained/victoria 4258633a Add catalog zone support to devstack plugin f540b879 reno: Update master for unmaintained/yoga 75e0b548 Removed unused function and improved Zone Master coverage 60a6ceed Add support for catalog zones cb47b4e0 Make edgegrid-python optional f7ab684d Stop using deprecated zake coordination driver 002005a4 Cleanup Heartbeat Emitter abstraction code 755efb1f Improve Dyntext coverage and removed unusable code cc5d53fc Update python classifier in setup.cfg 2b6b8da8 Improved notification unit test coverage 5c0ef757 Remove unused validation function ddef40c9 Cleanup cross function / unit imports 2e2b6524 Increase minimum test coverage to 97% 21ae2fb4 Improve Scheduler coverage 16e2433d Added basic fake network coverage ff70036b Improve NS1 test coverage 39a8c8f1 Improved V2 controller coverage 571d902c Improved pool move test coverage 57f2e367 Restructure testing af940fb6 Increase minimum test coverage to 96% 8733f8f8 Add new API for zone move f5a03427 Add upgrade test coverage d90691f3 Improved service coverage 2ffc4902 Cleanup Central tests 7067155a Improved Notifications coverage db5766e8 Standardized Service unit tests 21f95128 Improved worker rpcapi coverage 41b4903b Improve API Controllers coverage 4501b779 Fix incorrect test IP range being used by zonefiles 060a17ac Fix occasional failure in Service tests e720d8d5 Cleanup context code 47df39d6 Fix FloatingIP ttl not allowing zero f424245d Improved producer task test coverage f83ebe6a Remove unused rpc calls b5b9e990 Cleaned up rpc loggingutils 0a7ef99d Remove unused ZoneLock a6b42a50 Improved Manage coverage a924b096 Add missing worker delete_zone test f5aa399f Fix RPC tests ff498b85 Improved dnsutils coverage df57620f Cleaned up quota implementation ced07eee Improved MDNS Handler test coverage c0fa4aa7 Remove executable flag from impl_dynect.py 604e10a5 Removed Python 2 compatibility bytes handling 61468308 Improved Zone Export coverage f94164f2 Remove executable flag from recordset.py da6751f6 Improved DNSMiddlware test coverage 9211866b Add shard id to zone and recordset representation 54d2d2cf Fix Producer shard range ignoring the last shard ac8fc0a8 Add better get_ip_address coverage 27ffc68f Increase minimum test coverage to 95% 8054bba0 Improved coordination coverage 98823bc0 Add basic profiler test coverage 9a626ef1 Improved RPC coverage bc0b7045 Improved api root test coverage 28d6f2cc Fix config loading in test notifications 4aa3a056 Add context hard_delete coverage 0085ad6d Remove unused base functions 1f045ee6 Add charset and engine parameters to alembic create tables 12362a23 Add basic storage test to test config overrides efaeb908 Remove devstack support for suse aae83d09 Fix bug with new zone default values being ignored 1fb207f8 Improved adapter base coverage 2e9d1f0c Increase minimum test coverage to 94% c83b097e Improved admin api coverage 16798494 Make sqlalchemy-2x tests voting again 923f2966 Fix producer unit tests occasionally failing e7a16033 Require correct project context for quota operations 71941e49 Remove code for oslo.context<4.0.0 b1dfe627 Use super().setUp() for APIv2AdapterTest 5c88c503 Improve object fields coverage and fixed error handling 9328297c Fix coverage issues with greenlet 35a66e3d Fix Zuul warnings with regexps 30d8c708 Disable tox sqlalchemy tests until fixed in oslo 2eeba9ea Increase minimum test coverage to 93% ff314525 Improve worker test coverage bfa594f8 Add RecoverShard test coverage cc0431ba Standardize all configuration loading 68fc2852 pyupgrade changes for Python3.8+ 7ef4c01e Allow base_uri override for tests 825e01a3 Use test addresses for all unit testing 0b9635dd Improved dynect backend coverage 0f7e2c70 Increase minimum test coverage to 92% 71475ab2 Remove unused server object af6469c1 Improved Objects Adapters testing 83985fea Improve pdns coverage 1b6546e1 Improve bind coverage and fixed minor bug d7e6368e Add missing newline in mdns release note 951f3f1f Remove python-memcached indirectly used 1969478d Remove unused debtcollector ef464034 Removed unused storage_driver config 329e292c Removed deprecated mdns config 57da282b Drop unused os-win aa4f5dcf Improved objects coverage 87e0779d Add basic NS test coverage 613669de Add basic SOA test coverage 5809159e Add clean_zonefile to BIND9 pool.yaml doc 24a58fce Fix python shebang bab61c18 Improve middleware coverage 6baa33e3 Add manage tlds test coverage a9f9ffcc Add recordset api test coverage dc70b921 Remove legacy unused devstack code b2280388 Add release note about max_request_body_size bd726d75 Always run all tests when changing default config 2868db4f Remove deprecated designate-agent ecaff9e6 Fix AXFR loop when updating secondary zone 79aac2b2 Prevent XFR from being used on PRIMARY zones aaed9787 Fix bug with designate-manage pool update losing existing record data c0a55728 Add middleware to limit request body size to api-paste d6de3cf4 Update master for stable/2023.2 Diffstat (except docs and test files) ------------------------------------- .coveragerc | 1 + .zuul.yaml | 19 +- api-ref/source/dns-api-v2-zone-tasks.inc | 55 +- api-ref/source/parameters.yaml | 7 + .../samples/zones/poolmove-zone-request.json | 3 + .../notification_handler/sample.py | 2 +- contrib/designate-ext-samplehandler/setup.py | 2 +- contrib/djbdns/tinydns.init | 110 -- contrib/djbdns/tinydns.service | 44 - contrib/dns_dump_dnspy.py | 2 +- contrib/dns_dump_hex_to_text.py | 2 +- contrib/dns_dump_raw.py | 2 +- contrib/dns_dump_server.py | 2 +- contrib/zoneextractor.py | 2 +- designate/agent/handler.py | 258 ---- designate/agent/service.py | 86 -- designate/api/admin/__init__.py | 7 +- designate/api/admin/app.py | 7 +- .../api/admin/controllers/extensions/zones.py | 2 +- designate/api/admin/controllers/root.py | 7 +- designate/api/admin/views/base.py | 18 +- designate/api/middleware.py | 24 +- designate/api/service.py | 14 +- designate/api/v2/__init__.py | 6 +- designate/api/v2/app.py | 7 +- designate/api/v2/controllers/errors.py | 2 +- designate/api/v2/controllers/floatingips.py | 15 +- designate/api/v2/controllers/limits.py | 4 +- designate/api/v2/controllers/quotas.py | 9 +- designate/api/v2/controllers/rest.py | 18 +- designate/api/v2/controllers/root.py | 9 +- designate/api/v2/controllers/zones/__init__.py | 27 +- designate/api/v2/controllers/zones/recordsets.py | 10 +- .../api/v2/controllers/zones/tasks/__init__.py | 5 +- .../api/v2/controllers/zones/tasks/abandon.py | 2 +- .../api/v2/controllers/zones/tasks/exports.py | 6 +- .../api/v2/controllers/zones/tasks/imports.py | 3 +- .../api/v2/controllers/zones/tasks/pool_move.py | 66 ++ designate/api/v2/patches.py | 3 +- designate/api/versions.py | 9 +- designate/api/wsgi.py | 7 +- designate/backend/__init__.py | 2 +- designate/backend/agent.py | 173 --- designate/backend/agent_backend/base.py | 55 - designate/backend/agent_backend/impl_bind9.py | 137 --- .../backend/agent_backend/impl_denominator.py | 242 ---- designate/backend/agent_backend/impl_djbdns.py | 333 ------ designate/backend/agent_backend/impl_fake.py | 53 - designate/backend/agent_backend/impl_gdnsd.py | 240 ---- designate/backend/agent_backend/impl_knot2.py | 215 ---- designate/backend/agent_backend/impl_msdns.py | 111 -- designate/backend/base.py | 7 +- designate/backend/impl_akamai_v2.py | 10 +- designate/backend/impl_bind9.py | 17 +- designate/backend/impl_designate.py | 4 +- designate/backend/impl_dynect.py | 153 +-- designate/backend/impl_infoblox/__init__.py | 2 +- designate/backend/impl_infoblox/connector.py | 7 +- designate/backend/impl_infoblox/ibexceptions.py | 6 +- .../backend/impl_infoblox/object_manipulator.py | 6 +- designate/backend/impl_ns1.py | 58 +- designate/backend/impl_nsd4.py | 11 +- designate/backend/impl_pdns4.py | 9 +- designate/backend/private_codes.py | 90 -- designate/central/rpcapi.py | 40 +- designate/central/service.py | 230 +++- designate/cmd/agent.py | 47 - designate/cmd/api.py | 4 +- designate/cmd/central.py | 1 - designate/cmd/manage.py | 2 +- designate/cmd/mdns.py | 1 - designate/cmd/producer.py | 4 +- designate/cmd/sink.py | 1 - designate/cmd/worker.py | 4 +- designate/common/constants.py | 15 + designate/common/decorators/lock.py | 2 +- designate/common/decorators/notification.py | 2 +- designate/common/decorators/rpc.py | 33 +- designate/common/keystone.py | 5 +- designate/common/policies/zone.py | 19 + designate/common/profiler.py | 2 +- designate/conf/__init__.py | 14 - designate/conf/agent.py | 89 -- designate/conf/bind9.py | 66 -- designate/conf/central.py | 5 - designate/conf/denominator.py | 45 - designate/conf/djbdns.py | 68 -- designate/conf/gdnsd.py | 51 - designate/conf/knot2.py | 46 - designate/conf/mdns.py | 18 +- designate/conf/msdns.py | 35 - designate/conf/producer.py | 2 - designate/conf/worker.py | 2 - designate/context.py | 48 +- designate/coordination.py | 4 +- designate/dnsmiddleware.py | 52 +- designate/dnsutils.py | 101 +- designate/exceptions.py | 10 +- designate/hacking/checks.py | 2 +- designate/heartbeat_emitter.py | 8 +- designate/loggingutils.py | 43 - designate/manage/base.py | 2 +- designate/manage/database.py | 6 +- designate/manage/pool.py | 12 +- designate/manage/tlds.py | 30 +- designate/mdns/handler.py | 72 +- designate/mdns/service.py | 19 +- designate/network_api/__init__.py | 3 +- designate/network_api/base.py | 8 +- designate/network_api/fake.py | 15 +- designate/network_api/neutron.py | 5 +- designate/notification_handler/base.py | 10 +- designate/notification_handler/fake.py | 10 +- designate/notification_handler/neutron.py | 9 +- designate/notification_handler/nova.py | 13 +- designate/notifications.py | 61 +- designate/objects/__init__.py | 2 +- designate/objects/adapters/__init__.py | 1 + designate/objects/adapters/api_v2/base.py | 30 +- designate/objects/adapters/api_v2/floating_ip.py | 2 +- .../objects/adapters/api_v2/pool_ns_record.py | 2 +- designate/objects/adapters/api_v2/recordset.py | 13 +- .../objects/adapters/api_v2/service_status.py | 9 +- designate/objects/adapters/api_v2/shared_zone.py | 10 +- .../objects/adapters/api_v2/validation_error.py | 2 +- designate/objects/adapters/api_v2/zone.py | 9 +- designate/objects/adapters/api_v2/zone_export.py | 6 +- designate/objects/adapters/api_v2/zone_import.py | 8 +- .../adapters/api_v2/zone_transfer_accept.py | 8 +- .../adapters/api_v2/zone_transfer_request.py | 2 +- designate/objects/adapters/base.py | 14 +- designate/objects/adapters/yaml/base.py | 2 +- designate/objects/adapters/yaml/pool.py | 3 + .../objects/adapters/yaml/pool_catalog_zone.py | 35 + designate/objects/base.py | 45 +- designate/objects/fields.py | 222 ++-- designate/objects/floating_ip.py | 4 +- designate/objects/pool.py | 2 + .../objects/{server.py => pool_catalog_zone.py} | 29 +- designate/objects/record.py | 2 +- designate/objects/recordset.py | 19 +- designate/objects/rrdata_txt.py | 2 +- designate/objects/service_status.py | 2 +- designate/objects/tenant.py | 2 +- designate/objects/tld.py | 2 +- designate/objects/tsigkey.py | 19 +- designate/objects/validation_error.py | 19 +- designate/objects/zone.py | 9 +- designate/objects/zone_export.py | 15 +- designate/objects/zone_import.py | 15 +- designate/objects/zone_master.py | 28 +- designate/objects/zone_transfer_accept.py | 2 +- designate/objects/zone_transfer_request.py | 3 +- designate/plugin.py | 12 +- designate/policy.py | 5 +- designate/producer/service.py | 16 +- designate/producer/tasks.py | 33 +- designate/quota/__init__.py | 5 +- designate/quota/base.py | 45 +- designate/quota/impl_noop.py | 10 + designate/quota/impl_storage.py | 17 +- designate/rpc.py | 13 +- designate/scheduler/base.py | 14 +- designate/scheduler/filters/attribute_filter.py | 1 - designate/scheduler/filters/default_pool_filter.py | 8 +- designate/scheduler/filters/fallback_filter.py | 13 +- .../filters/in_doubt_default_pool_filter.py | 13 +- designate/schema.py | 2 +- designate/service.py | 36 +- designate/sink/service.py | 18 +- designate/storage/sql.py | 9 +- designate/storage/sqlalchemy/__init__.py | 325 ++++- designate/storage/sqlalchemy/alembic.ini | 2 +- designate/storage/sqlalchemy/alembic/env.py | 38 +- .../versions/0bcf910ea823_add_zone_attributes.py | 5 +- .../alembic/versions/304d41c3847a_add_services.py | 5 +- .../versions/9099de8ae11c_add_catalog_zones.py | 37 + .../alembic/versions/b20189fd288e_shared_zone.py | 4 +- .../alembic/versions/c9f427f7180a_liberty.py | 83 +- .../versions/d04819112169_new_pools_tables.py | 25 +- designate/storage/sqlalchemy/base.py | 8 +- designate/storage/sqlalchemy/tables.py | 18 +- designate/storage/sqlalchemy/utils.py | 6 +- .../api/admin}/__init__.py | 8 +- .../api/admin/extensions}/__init__.py | 0 .../api/admin}/extensions/test_quotas.py | 62 +- .../api/admin}/extensions/test_reports.py | 25 +- .../api}/test_middleware.py | 87 +- .../{test_api => functional/api}/test_service.py | 6 +- .../test_v2 => functional/api/v2}/__init__.py | 8 +- .../test_v2 => functional/api/v2}/test_api.py | 7 +- .../api/v2}/test_blacklists.py | 17 +- .../api/v2}/test_floatingips.py | 7 +- .../api/v2}/test_hostheaders.py | 6 +- .../api/v2}/test_import_export.py | 32 +- .../test_v2 => functional/api/v2}/test_limits.py | 20 +- .../test_v2 => functional/api/v2}/test_pools.py | 20 +- .../test_v2 => functional/api/v2}/test_quotas.py | 6 +- .../api/v2}/test_service_status.py | 10 +- .../api/v2}/test_shared_zones.py | 6 +- .../test_v2 => functional/api/v2}/test_tlds.py | 14 +- .../test_v2 => functional/api/v2}/test_tsigkeys.py | 14 +- .../api/v2/test_zone_recordsets.py} | 124 +- .../api/v2}/test_zone_transfers.py | 17 +- .../test_v2 => functional/api/v2}/test_zones.py | 110 +- .../extensions => functional/central}/__init__.py | 0 .../central}/test_basic.py | 1238 +++++++++----------- .../central}/test_service.py | 336 +++++- .../manage}/__init__.py | 0 .../manage}/test_database.py | 10 +- .../manage}/test_pool.py | 13 +- .../manage}/test_update_pool.py | 12 +- .../{test_manage => functional/mdns}/__init__.py | 0 .../{test_mdns => functional/mdns}/test_handler.py | 146 ++- .../{test_mdns => functional/mdns}/test_service.py | 10 +- .../notification_handler}/__init__.py | 0 .../notification_handler}/test_base.py | 8 +- .../notification_handler}/test_neutron.py | 39 +- .../notification_handler}/test_nova.py | 56 +- .../producer}/__init__.py | 0 .../producer}/test_service.py | 23 +- .../producer}/test_tasks.py | 23 +- .../{test_quota => functional/quota}/__init__.py | 0 .../{test_quota => functional/quota}/test_quota.py | 27 +- .../quota}/test_storage.py | 28 +- .../{test_storage => functional}/test_storage.py | 257 +++- .../{unit => functional}/test_upgrade_checks.py | 8 +- .../worker}/__init__.py | 0 .../worker}/test_notify.py | 8 +- .../nova/compute.instance.create.end-2.json | 2 +- .../nova/compute.instance.create.end.json | 2 +- .../nova/compute.instance.create.start.json | 2 +- .../nova/compute.instance.delete.start.json | 2 +- .../nova/compute.instance.shutdown.end.json | 2 +- .../nova/compute.instance.shutdown.start.json | 2 +- .../nova/network.floating_ip.allocate.json | 2 +- .../nova/network.floating_ip.associate.json | 2 +- .../nova/network.floating_ip.deallocate.json | 2 +- .../nova/network.floating_ip.disassociate.json | 2 +- .../nova/scheduler.run_instance.end.json | 2 +- .../nova/scheduler.run_instance.scheduled.json | 2 +- .../nova/scheduler.run_instance.start.json | 2 +- .../resources/tlds/tlds_list_with_descriptions | 5 + .../resources/tlds/tlds_list_with_extra_fields | 5 + .../resources/tlds/tlds_list_with_invalid_tlds | 6 + .../resources/zonefiles/malformed_example.com.zone | 14 +- .../resources/zonefiles/noorigin_example.com.zone | 14 +- .../resources/zonefiles/nosoa_example.com.zone | 14 +- .../resources/zonefiles/zerosoa_example.com.zone | 21 + .../test_lock_decorator.py | 0 .../unit/notification_handler/test_neutron.py | 142 +++ ...test_yaml_adapters.py => test_adapters_yaml.py} | 10 +- .../unit/objects/test_rrdata_ns.py} | 26 +- .../storage/impl_sqlalchemy/test_sqlalchemy.py | 10 +- .../unit/{test_central => }/test_notifications.py | 282 +++-- designate/utils.py | 32 +- designate/worker/processing.py | 7 +- designate/worker/rpcapi.py | 12 +- designate/worker/service.py | 16 +- designate/worker/tasks/base.py | 10 +- designate/worker/tasks/zone.py | 82 +- devstack/designate_plugins/backend-agent | 103 -- devstack/designate_plugins/backend-agent-fake | 55 - devstack/designate_plugins/backend-agent-knot2 | 130 -- devstack/designate_plugins/backend-agent-msdns | 116 -- devstack/designate_plugins/backend-akamai-v2 | 2 +- devstack/designate_plugins/backend-bind9 | 76 +- devstack/networking_test.py | 665 ----------- devstack/networking_test_monitor_tc.sh | 3 - devstack/plugin.sh | 10 - devstack/settings | 4 +- devstack/statsd_mock_server.py | 62 - devstack/upgrade/settings | 4 +- devstack/upgrade/shutdown.sh | 3 +- devstack/upgrade/upgrade.sh | 3 +- .../admin/backends/sample_yaml_snippets/agent.yaml | 15 - .../admin/backends/sample_yaml_snippets/bind.yaml | 1 + etc/designate/api-paste.ini | 11 +- etc/designate/pools.yaml.sample | 9 + ...it-tuning-for-zone-import-6d806b32c668c9c9.yaml | 10 + .../add-catalog-zone-support-8e9c14c3f01e00fc.yaml | 18 + .../notes/edgegrid-optional-ab7662a9e71612d3.yaml | 5 + ...enforce-utf8-tables-mysql-274b5c3c1afe4b3b.yaml | 6 + .../remove-deprecated-agent-1ef95b8608e2a41b.yaml | 6 + ...e-deprecated-mdns-options-d720efab5ab275d6.yaml | 9 + ...ted-storage-driver-option-e3b5e3448e81c8cb.yaml | 4 + .../notes/unused-rpc-calls-7df4dcbcc19c6f60.yaml | 11 + .../notes/zone-pool-move-7bb8e1f0839c3c0d.yaml | 10 + releasenotes/source/2023.2.rst | 6 + releasenotes/source/index.rst | 1 + releasenotes/source/victoria.rst | 2 +- releasenotes/source/wallaby.rst | 2 +- releasenotes/source/xena.rst | 2 +- releasenotes/source/yoga.rst | 2 +- requirements.txt | 4 - setup.cfg | 18 +- test-requirements.txt | 3 +- tools/install_venv.py | 2 +- tools/install_venv_common.py | 4 +- tox.ini | 2 +- 429 files changed, 10605 insertions(+), 10329 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index e5152959..f61ee967 100644 --- a/requirements.txt +++ b/requirements.txt @@ -45 +44,0 @@ oslo.policy>=3.7.0 # Apache-2.0 -python-memcached>=1.56 # PSF @@ -47,2 +45,0 @@ tooz>=1.58.0 # Apache-2.0 -debtcollector>=1.19.0 # Apache-2.0 -os-win>=4.1.0 # Apache-2.0 @@ -50 +46,0 @@ futurist>=1.2.0 # Apache-2.0 -edgegrid-python>=1.1.1 # Apache-2.0 diff --git a/test-requirements.txt b/test-requirements.txt index 673ad81b..597740ee 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -18 +17,0 @@ bandit>=1.1.0 # Apache-2.0 -zake>=0.1.6 # Apache-2.0 @@ -21,0 +21,2 @@ pymemcache!=1.3.0,>=1.2.9 # Apache 2.0 License +PyMySQL>=0.8.0 # MIT License +edgegrid-python>=1.1.1 # Apache-2.0